", then run "git rebase --continue".
+You can instead skip this commit: run "git rebase --skip".
+To abort and get back to the state before "git rebase", run "git rebase --abort".
+```
+
+以上内容是在告诉我们有合并冲突存在,并给出了冲突所在的文件名。在编辑器中打开该文件,可以在某处发现类似如下形式的内容:
+
+```
+<<<<<<< HEAD
+For help with any issues, email us at support@webhost.us.
+=======
+Need help? Email support@webhost.us.
+>>>>>>> Commit #1
+```
+
+`<<<<<<< HEAD` 标记了合并冲突的起始行,直至 `>>>>>>> Commit #1` 标记的结束行,中间通过 `=======` 分隔开冲突双方。其中 `HEAD` 部分为QMK主干上的版本,标记了提交日志的部分为当前分支的本地提交。
+
+由于Git存储的是*文件差异部分*而非整个文件,所以当Git无法在文件中找到一个变更发生前的内容时,就无法知道如何去进行文件变更,重新编辑一下可以解决问题。在更改完成后,保存文件。
+
+```
+Need help? Email support@webhost.us.
+```
+
+之后,执行:
+
+```
+git add conflicting_file_1.txt
+git rebase --continue
+```
+
+Git即会记录对文件冲突做出的变更,并继续处理剩余的提交,直至全部完成。
diff --git a/docs/zh-cn/newbs_git_resynchronize_a_branch.md b/docs/zh-cn/newbs_git_resynchronize_a_branch.md
new file mode 100644
index 00000000000..3f38138f697
--- /dev/null
+++ b/docs/zh-cn/newbs_git_resynchronize_a_branch.md
@@ -0,0 +1,76 @@
+# 重新同步已失去同步状态的Git分支
+
+
+
+假设你在自己的 `master` 分支之上有提交,并且想和QMK仓库进行同步,可以通过 `git pull` 拉取QMK的 `master` 分支到你的库,但同时Github也会提醒你当前分支相比 `qmk:master` 有几个领先的提交,会在你向QMK发起pr时造成麻烦。
+
+?> 本文中的场景基于[在你Fork的主干上:频繁更新,不要提交](zh-cn/newbs_git_using_your_master_branch.md)一文。如果你对那篇文章不熟悉,请先阅读它,再回来继续。
+
+## 备份你在自己的主干分支上的所有变更(可选)
+
+不会有人想把有用的成果弄丢的。如果你想将你的 `master` 分支上的变更另存一份,简便的方法是直接创建一个当前“脏” `master` 分支的副本:
+
+```
+git branch old_master master
+```
+
+现在 `master` 分支拥有了一个副本分支 `old_master`。
+
+## 重新同步分支
+
+现在可以重新同步 `master` 分支了,这里,我们将QMK仓库设置为Git的远程仓库。通过执行 `git remote -v` 可以确认远程仓库配置,输出信息应类似于:
+
+```
+QMKuser ~/qmk_firmware (master)
+$ git remote -v
+origin https://github.com//qmk_firmware.git (fetch)
+origin https://github.com//qmk_firmware.git (push)
+upstream https://github.com/qmk/qmk_firmware.git (fetch)
+upstream https://github.com/qmk/qmk_firmware.git (push)
+```
+
+如果你只能看到一个仓库:
+
+```
+QMKuser ~/qmk_firmware (master)
+$ git remote -v
+origin https://github.com/qmk/qmk_firmware.git (fetch)
+origin https://github.com/qmk/qmk_firmware.git (push)
+```
+
+通过如下命令添加新的远程仓库:
+
+```
+git remote add upstream https://github.com/qmk/qmk_firmware.git
+```
+
+然后,重新将 `origin` 远程仓库设置为自己的fork:
+
+```
+git remote set-url origin https://github.com//qmk_firmware.git
+```
+
+在两个远程仓库配置完毕后,需要从QMK的 upstream 仓库中获取到更新,执行:
+
+```
+git fetch upstream
+```
+
+此时,重新同步你的分支到QMK的版本:
+
+```
+git reset --hard upstream/master
+```
+
+以上操作会更新你的本地仓库,而你的Github远程仓库仍然处于未同步状态,通过推送,可以让其进入已同步状态。可以通过如下命令来指引Git强行覆盖掉那些仅在你远程仓库中存在的提交:
+
+```
+git push --force-with-lease
+```
+
+!> **不要**在其它使用者也会提交的分支上执行 `git push --force-with-lease`,否则会覆盖掉他人的提交。
+
+此时你的Github fork,本地文件副本,以及QMK仓库就是一致的了。之后再进行变更([在分支上!](zh-cn/newbs_git_using_your_master_branch.md#making-changes))和提交。
diff --git a/docs/zh-cn/newbs_git_using_your_master_branch.md b/docs/zh-cn/newbs_git_using_your_master_branch.md
new file mode 100644
index 00000000000..2a83fc21396
--- /dev/null
+++ b/docs/zh-cn/newbs_git_using_your_master_branch.md
@@ -0,0 +1,79 @@
+# 在你Fork的主干上:频繁更新,不要提交
+
+
+
+我们强烈推荐所有QMK开发者,无论在哪里做什么改动,频繁更新你的 `master` 分支,但***不要***在其上提交。相对地,将你所有的改动提交到开发分支上并提交一个pull request。
+
+为了减少冲突 — 多人同时编辑同一个文件 — 保持你的 `master` 分支更新到最新,并在新创建的分支上进行开发。
+
+## 更新master分支
+
+为了保持 `master` 更新到最新,推荐将QMK固件仓库("repo")设置为git远程仓库。打开Git命令行界面并键入:
+
+```
+git remote add upstream https://github.com/qmk/qmk_firmware.git
+```
+
+?> 名称 `upstream` 部分可以任意,这里给的是常用的;你可以将QMK远程仓库名称改成你想要的。Git的 `remote` 命令语法为 `git remote add `, `` 是远程仓库的简写名称,这个名称可以在很多Git命令中使用,包括但不限于 `fetch`,`pull` 及 `push`,以指定目标远程仓库。
+
+要验证是否添加成功,可以执行 `git remote -v`,输出应该类似于:
+
+```
+$ git remote -v
+origin https://github.com//qmk_firmware.git (fetch)
+origin https://github.com//qmk_firmware.git (push)
+upstream https://github.com/qmk/qmk_firmware.git (fetch)
+upstream https://github.com/qmk/qmk_firmware.git (push)
+```
+
+在以上操作完成后,可以通过执行 `git fetch upstream` 来检查仓库是否有更新。该命令从QMK仓库拉取的分支(branches)及标签(tags) — 统称为“refs(引用)” —现在也被称作 `upstream`(上游)。此时我们可以比对自己fork版本的 `origin` 与QMK维护的分支的差异了。
+
+要更新你的fork的master分支,执行以下指令,每一行结束都需要按回车:
+
+```
+git checkout master
+git fetch upstream
+git pull upstream master
+git push origin master
+```
+
+以上操作会切换到 `master` 分支,从QMK仓库拉取refs,下载QMK `master` 分支的当前版本,并上传至你的fork中。
+
+## 进行编辑 :id=making-changes
+
+要进行编辑,通过如下命令创建一个新分支:
+
+```
+git checkout -b dev_branch
+git push --set-upstream origin dev_branch
+```
+
+以上操作会创建 `dev_branch` 新分支,检出(check out)并保存到你的fork中。`--set-upstream` 参数用于告知git使用你的fork仓库来处理 `dev_branch` 分支下的 `git push` 及 `git pull` 命令,且仅需要在第一次执行push命令时指定,之后再次执行 `git push` 或是 `git pull` 都无需加入该参数了。
+
+?> 在 `git push` 时,可以使用 `-u` 替代 `--set-upstram` — `-u` 为 `--set-upsream` 参数的别名。
+
+你可以任意命名该分支,但仍建议对分支起一个可以描述将在该分支下要做的工作的名称。
+
+默认情况下 `git checkout -b` 会基于你当前检出的分支作为新分支的基准。可以在后面追加已存在但未检出的分支名来指定新分支的基准:
+
+```
+git checkout -b dev_branch master
+```
+
+此时你便有了一个开发用分支,可以打开编辑器并进行你期望的变更了。通常推荐提交大量的小规模提交(commit),这样在需要时会更容易地定位并回滚造成问题的提交。若要提交更改,编辑并保存要更新的文件,并将其添加到*暂存区(staged area)*,然后提交到分支中:
+
+```
+git add path/to/updated_file
+git commit -m "My commit message."
+```
+
+`git add` 会将更改后的文件放到Git的*暂存区*,也称作Git的“装载区”。这里留存着即将通过 `git commit` 所提交并保存到仓库中的变更。请使用确切的描述来填写提交日志,以便于快速了解改动内容。
+
+?> 如果更改了多个文件,可以通过 `git add -- path/to/file1 path/to/file2 ...` 来添加所有项目。
+
+## 发布变更
+
+最后一步为上传你的变更到你的fork中。通过执行 `git push`,Git将发布 `dev_branch` 分支的所有变更至你的fork中。
From 97b861d104a006619d4563c4fc6cbe7acc3e3fe2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=ADctor=20Pont?=
Date: Fri, 22 Apr 2022 09:38:16 +0200
Subject: [PATCH 34/65] [Keyboard] Fix Pegasus Hoof (2013) layout, matrix and
pin assignment (#16042)
---
keyboards/bpiphany/pegasushoof/2013/2013.h | 67 ++++++-----
keyboards/bpiphany/pegasushoof/2013/matrix.c | 114 +++++++++----------
2 files changed, 90 insertions(+), 91 deletions(-)
diff --git a/keyboards/bpiphany/pegasushoof/2013/2013.h b/keyboards/bpiphany/pegasushoof/2013/2013.h
index 7a4d7f0b586..f43fdcf92c0 100644
--- a/keyboards/bpiphany/pegasushoof/2013/2013.h
+++ b/keyboards/bpiphany/pegasushoof/2013/2013.h
@@ -21,21 +21,21 @@ along with this program. If not, see .
#include "quantum.h"
#define LAYOUT( \
- KG6, KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0, KN5, KN7, KP7, \
- KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2, KR4, KC4, KE4, \
- KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3, KQ4, KC5, KE5, \
- KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
- KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
- KP4, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \
- ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
- /* 0 */ { KC_NO , KC_NO , KC0 , KC_NO , KC_NO , KF0 , KC_NO , KC_NO , KC_NO , KJ0 , KK0 , KC_NO , KM0 , KN0 , KO0 , KC_NO , KQ0 , KR0 }, \
- /* 1 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , KM1 , KC_NO , KO1 , KP1 , KC_NO , KC_NO }, \
- /* 2 */ { KC_NO , KB2 , KC_NO , KD2 , KC_NO , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , KC_NO , KO2 , KC_NO , KC_NO , KC_NO }, \
- /* 3 */ { KA3 , KB3 , KC_NO , KC_NO , KC_NO , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , KC_NO , KO3 , KC_NO , KC_NO , KC_NO }, \
- /* 4 */ { KC_NO , KC_NO , KC4 , KC_NO , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , KM4 , KC_NO , KO4 , KP4 , KQ4 , KR4 }, \
- /* 5 */ { KC_NO , KC_NO , KC5 , KC_NO , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , KM5 , KN5 , KO5 , KP5 , KC_NO , KC_NO }, \
- /* 6 */ { KC_NO , KC_NO , KC6 , KC_NO , KC_NO , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , KL6 , KC_NO , KN6 , KO6 , KC_NO , KQ6 , KC_NO }, \
- /* 7 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KF7 , KG7 , KH7 , KI7 , KJ7 , KK7 , KL7 , KM7 , KN7 , KC_NO , KP7 , KC_NO , KC_NO } \
+ KJ6, KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0, KC7, KC5, KA5, \
+ KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2, KL4, KO4, KQ4, \
+ KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3, KK4, KO7, KQ7, \
+ KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6, KB1, \
+ KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0, KN3, KO6, \
+ KA4, KP2, KC6, KK6, KC0, KM3, KD0, KA1, KO0, KK0, KL0 \
+ ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
+ /* 0 */ { KC_NO, KB0, KC0, KD0, KC_NO, KF0, KG0, KC_NO, KC_NO, KC_NO, KK0, KL0, KC_NO, KC_NO, KO0, KC_NO, KC_NO, KR0 }, \
+ /* 1 */ { KA1, KB1, KC_NO, KD1, KE1, KF1, KG1, KH1, KI1, KJ1, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ /* 2 */ { KC_NO, KB2, KC_NO, KD2, KE2, KF2, KG2, KH2, KI2, KJ2, KC_NO, KC_NO, KC_NO, KN2, KC_NO, KP2, KC_NO, KR2 }, \
+ /* 3 */ { KC_NO, KB3, KC_NO, KD3, KE3, KF3, KG3, KH3, KI3, KJ3, KC_NO, KC_NO, KM3, KN3, KC_NO, KC_NO, KC_NO, KR3 }, \
+ /* 4 */ { KA4, KB4, KC_NO, KD4, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KC_NO, KC_NO, KO4, KC_NO, KQ4, KR4 }, \
+ /* 5 */ { KA5, KC_NO, KC5, KD5, KE5, KF5, KG5, KH5, KI5, KJ5, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KR5 }, \
+ /* 6 */ { KC_NO, KB6, KC6, KC_NO, KE6, KF6, KG6, KH6, KI6, KJ6, KK6, KC_NO, KC_NO, KC_NO, KO6, KC_NO, KC_NO, KR6 }, \
+ /* 7 */ { KA7, KB7, KC7, KD7, KE7, KF7, KG7, KH7, KI7, KJ7, KC_NO, KC_NO, KC_NO, KC_NO, KO7, KC_NO, KQ7, KR7 } \
}
#define LAYOUT_tkl_ansi( \
@@ -45,15 +45,15 @@ along with this program. If not, see .
KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO1, \
KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KB3, KC6, \
KP4, KD2, KN6, KQ6, KN0, KA3, KM0, KP1, KC0, KQ0, KR0 \
- ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
- /* 0 */ { KC_NO , KC_NO , KC0 , KC_NO , KC_NO , KF0 , KC_NO , KC_NO , KC_NO , KJ0 , KK0 , KC_NO , KM0 , KN0 , KO0 , KC_NO , KQ0 , KR0 }, \
- /* 1 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , KM1 , KC_NO , KO1 , KP1 , KC_NO , KC_NO }, \
- /* 2 */ { KC_NO , KB2 , KC_NO , KD2 , KC_NO , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , KC_NO , KO2 , KC_NO , KC_NO , KC_NO }, \
- /* 3 */ { KA3 , KB3 , KC_NO , KC_NO , KC_NO , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , KC_NO , KO3 , KC_NO , KC_NO , KC_NO }, \
- /* 4 */ { KC_NO , KC_NO , KC4 , KC_NO , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , KM4 , KC_NO , KO4 , KP4 , KQ4 , KR4 }, \
- /* 5 */ { KC_NO , KC_NO , KC5 , KC_NO , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , KM5 , KN5 , KO5 , KP5 , KC_NO , KC_NO }, \
- /* 6 */ { KC_NO , KC_NO , KC6 , KC_NO , KC_NO , KF6 , KG6 , KC_NO , KI6 , KJ6 , KK6 , KL6 , KC_NO , KN6 , KO6 , KC_NO , KQ6 , KC_NO }, \
- /* 7 */ { KC_NO , KC_NO , KC_NO , KC_NO , KC_NO , KF7 , KG7 , KH7 , KI7 , KJ7 , KK7 , KL7 , KM7 , KN7 , KC_NO , KP7 , KC_NO , KC_NO } \
+ ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
+ /* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KC_NO, KC_NO, KC_NO, KJ0, KK0, KC_NO, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
+ /* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
+ /* 2 */ { KC_NO, KB2, KC_NO, KD2, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KC_NO, KO2, KC_NO, KC_NO, KC_NO }, \
+ /* 3 */ { KA3, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KC_NO, KO3, KC_NO, KC_NO, KC_NO }, \
+ /* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
+ /* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
+ /* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KC_NO, KI6, KJ6, KK6, KL6, KC_NO, KN6, KO6, KC_NO, KQ6, KC_NO }, \
+ /* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KM7, KN7, KC_NO, KP7, KC_NO, KC_NO } \
}
#define LAYOUT_tkl_jis( \
@@ -63,15 +63,15 @@ along with this program. If not, see .
KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6, KO3, KO1, \
KB2, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0, KL0, KB3, KC6, \
KP4, KD2, KN6, KG0, KQ6, KH0, KI0, KN0, KM0, KP1, KC0, KQ0, KR0 \
- ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
- /* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KG0, KH0, KI0, KJ0, KK0, KL0, KM0, KN0, KO0, KC_NO, KQ0, KR0 }, \
- /* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO }, \
- /* 2 */ { KC_NO, KB2, KC_NO, KD2, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KC_NO, KO2, KC_NO, KC_NO, KC_NO }, \
- /* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KC_NO, KO3, KC_NO, KC_NO, KC_NO }, \
- /* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 }, \
- /* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO }, \
- /* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KC_NO, KI6, KJ6, KK6, KL6, KC_NO, KN6, KO6, KC_NO, KQ6, KC_NO }, \
- /* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KK7, KL7, KO7, KP7, KC_NO, KC_NO } \
+ ) { /* 00-A 01-B 02-C 03-D 04-E 05-F 06-G 07-H 08-I 09-J 10-K 11-L 12-M 13-N 14-O 15-P 16-Q 17-R */ \
+ /* 0 */ { KC_NO, KC_NO, KC0, KC_NO, KC_NO, KF0, KG0, KH0, KI0, KJ0, KK0, KL0, KM0, KN0, KO0, KC_NO, KQ0, KR0 },\
+ /* 1 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KG1, KH1, KI1, KJ1, KK1, KL1, KM1, KC_NO, KO1, KP1, KC_NO, KC_NO },\
+ /* 2 */ { KC_NO, KB2, KC_NO, KD2, KC_NO, KF2, KG2, KH2, KI2, KJ2, KK2, KL2, KM2, KC_NO, KO2, KC_NO, KC_NO, KC_NO },\
+ /* 3 */ { KC_NO, KB3, KC_NO, KC_NO, KC_NO, KF3, KG3, KH3, KI3, KJ3, KK3, KL3, KM3, KC_NO, KO3, KC_NO, KC_NO, KC_NO },\
+ /* 4 */ { KC_NO, KC_NO, KC4, KC_NO, KE4, KF4, KG4, KH4, KI4, KJ4, KK4, KL4, KM4, KC_NO, KO4, KP4, KQ4, KR4 },\
+ /* 5 */ { KC_NO, KC_NO, KC5, KC_NO, KE5, KF5, KG5, KH5, KI5, KJ5, KK5, KL5, KM5, KN5, KO5, KP5, KC_NO, KC_NO },\
+ /* 6 */ { KC_NO, KC_NO, KC6, KC_NO, KC_NO, KF6, KG6, KC_NO, KI6, KJ6, KK6, KL6, KC_NO, KN6, KO6, KC_NO, KQ6, KC_NO },\
+ /* 7 */ { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KF7, KG7, KH7, KI7, KJ7, KK7, KL7, KK7, KL7, KO7, KP7, KC_NO, KC_NO } \
}
inline void ph_caps_led_on(void) { DDRC |= (1<<6); PORTC &= ~(1<<6); }
@@ -79,4 +79,3 @@ inline void ph_caps_led_off(void) { DDRC &= ~(1<<6); PORTC &= ~(1<<6); }
inline void ph_sclk_led_on(void) { DDRC |= (1<<5); PORTC &= ~(1<<5); }
inline void ph_sclk_led_off(void) { DDRC &= ~(1<<5); PORTC &= ~(1<<5); }
-
diff --git a/keyboards/bpiphany/pegasushoof/2013/matrix.c b/keyboards/bpiphany/pegasushoof/2013/matrix.c
index a55cba7afd3..ed56067dca6 100644
--- a/keyboards/bpiphany/pegasushoof/2013/matrix.c
+++ b/keyboards/bpiphany/pegasushoof/2013/matrix.c
@@ -35,12 +35,12 @@ static void select_row(uint8_t col);
__attribute__ ((weak))
void matrix_init_kb(void) {
- matrix_init_user();
+ matrix_init_user();
}
__attribute__ ((weak))
void matrix_scan_kb(void) {
- matrix_scan_user();
+ matrix_scan_user();
}
__attribute__ ((weak))
@@ -66,10 +66,10 @@ void matrix_init(void)
/* Column output pins */
DDRD |= 0b01111011;
/* Row input pins */
- DDRC &= ~0b10000000;
- DDRB &= ~0b01111111;
- PORTC |= 0b10000000;
- PORTB |= 0b01111111;
+ DDRC &= (unsigned char) ~0b00000000;
+ DDRB &= (unsigned char) ~0b11111111;
+ PORTC |= 0b00000000;
+ PORTB |= 0b11111111;
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
@@ -135,72 +135,72 @@ void matrix_print(void)
static matrix_row_t read_cols(void)
{
return
- (PINB & (1 << 5) ? 0 : 1 << 0) |
- (PINC & (1 << 7) ? 0 : 1 << 1) |
- (PINB & (1 << 4) ? 0 : 1 << 2) |
- (PINB & (1 << 6) ? 0 : 1 << 3) |
- (PINB & (1 << 1) ? 0 : 1 << 4) |
- (PINB & (1 << 0) ? 0 : 1 << 5) |
- (PINB & (1 << 3) ? 0 : 1 << 6) |
- (PINB & (1 << 2) ? 0 : 1 << 7);
+ (PINB & (1 << 5) ? 0 : (matrix_row_t) 1 << 0) |
+ (PINB & (1 << 7) ? 0 : (matrix_row_t) 1 << 1) |
+ (PINB & (1 << 4) ? 0 : (matrix_row_t) 1 << 2) |
+ (PINB & (1 << 6) ? 0 : (matrix_row_t) 1 << 3) |
+ (PINB & (1 << 1) ? 0 : (matrix_row_t) 1 << 4) |
+ (PINB & (1 << 2) ? 0 : (matrix_row_t) 1 << 5) |
+ (PINB & (1 << 3) ? 0 : (matrix_row_t) 1 << 6) |
+ (PINB & (1 << 0) ? 0 : (matrix_row_t) 1 << 7);
}
static void select_row(uint8_t col)
{
switch (col) {
case 0:
- PORTD = (PORTD & ~0b01111011) | 0b00110011;
- break;
- case 1:
- PORTD = (PORTD & ~0b01111011) | 0b01110000;
- break;
- case 2:
PORTD = (PORTD & ~0b01111011) | 0b00010011;
break;
- case 3:
- PORTD = (PORTD & ~0b01111011) | 0b01101000;
- break;
- case 4:
- PORTD = (PORTD & ~0b01111011) | 0b00001011;
- break;
- case 5:
- PORTD = (PORTD & ~0b01111011) | 0b00111011;
- break;
- case 6:
- PORTD = (PORTD & ~0b01111011) | 0b01111000;
- break;
- case 7:
- PORTD = (PORTD & ~0b01111011) | 0b01100001;
- break;
- case 8:
- PORTD = (PORTD & ~0b01111011) | 0b01101001;
- break;
- case 9:
- PORTD = (PORTD & ~0b01111011) | 0b01110001;
- break;
- case 10:
- PORTD = (PORTD & ~0b01111011) | 0b01101010;
- break;
- case 11:
- PORTD = (PORTD & ~0b01111011) | 0b01100010;
- break;
- case 12:
- PORTD = (PORTD & ~0b01111011) | 0b01111001;
- break;
- case 13:
- PORTD = (PORTD & ~0b01111011) | 0b01100000;
- break;
- case 14:
+ case 1:
PORTD = (PORTD & ~0b01111011) | 0b01000011;
break;
- case 15:
+ case 2:
+ PORTD = (PORTD & ~0b01111011) | 0b01100000;
+ break;
+ case 3:
+ PORTD = (PORTD & ~0b01111011) | 0b01111001;
+ break;
+ case 4:
+ PORTD = (PORTD & ~0b01111011) | 0b01100010;
+ break;
+ case 5:
+ PORTD = (PORTD & ~0b01111011) | 0b01101010;
+ break;
+ case 6:
+ PORTD = (PORTD & ~0b01111011) | 0b01110001;
+ break;
+ case 7:
+ PORTD = (PORTD & ~0b01111011) | 0b01101001;
+ break;
+ case 8:
+ PORTD = (PORTD & ~0b01111011) | 0b01100001;
+ break;
+ case 9:
+ PORTD = (PORTD & ~0b01111011) | 0b01111000;
+ break;
+ case 10:
PORTD = (PORTD & ~0b01111011) | 0b00011011;
break;
- case 16:
+ case 11:
PORTD = (PORTD & ~0b01111011) | 0b00100011;
break;
- case 17:
+ case 12:
PORTD = (PORTD & ~0b01111011) | 0b00101011;
break;
+ case 13:
+ PORTD = (PORTD & ~0b01111011) | 0b01110000;
+ break;
+ case 14:
+ PORTD = (PORTD & ~0b01111011) | 0b00001011;
+ break;
+ case 15:
+ PORTD = (PORTD & ~0b01111011) | 0b01101000;
+ break;
+ case 16:
+ PORTD = (PORTD & ~0b01111011) | 0b00000011;
+ break;
+ case 17:
+ PORTD = (PORTD & ~0b01111011) | 0b00111011;
+ break;
}
}
From d8b9796a32b9e7105e0af485d697886f230c094f Mon Sep 17 00:00:00 2001
From: toinux
Date: Fri, 22 Apr 2022 09:41:54 +0200
Subject: [PATCH 35/65] [Keymap] Toinux's crkbd keymap and userspace (#16437)
---
keyboards/crkbd/keymaps/toinux/config.h | 122 +++++++++++
keyboards/crkbd/keymaps/toinux/glcdfont.c | 232 ++++++++++++++++++++
keyboards/crkbd/keymaps/toinux/keycodes.h | 49 +++++
keyboards/crkbd/keymaps/toinux/keymap.c | 250 ++++++++++++++++++++++
keyboards/crkbd/keymaps/toinux/oled.c | 112 ++++++++++
keyboards/crkbd/keymaps/toinux/oled.h | 71 ++++++
keyboards/crkbd/keymaps/toinux/rgb.c | 68 ++++++
keyboards/crkbd/keymaps/toinux/rules.mk | 9 +
users/toinux/keymap_qwerty_fr.h | 158 ++++++++++++++
9 files changed, 1071 insertions(+)
create mode 100644 keyboards/crkbd/keymaps/toinux/config.h
create mode 100644 keyboards/crkbd/keymaps/toinux/glcdfont.c
create mode 100644 keyboards/crkbd/keymaps/toinux/keycodes.h
create mode 100644 keyboards/crkbd/keymaps/toinux/keymap.c
create mode 100644 keyboards/crkbd/keymaps/toinux/oled.c
create mode 100644 keyboards/crkbd/keymaps/toinux/oled.h
create mode 100644 keyboards/crkbd/keymaps/toinux/rgb.c
create mode 100644 keyboards/crkbd/keymaps/toinux/rules.mk
create mode 100644 users/toinux/keymap_qwerty_fr.h
diff --git a/keyboards/crkbd/keymaps/toinux/config.h b/keyboards/crkbd/keymaps/toinux/config.h
new file mode 100644
index 00000000000..e7a18800d8e
--- /dev/null
+++ b/keyboards/crkbd/keymaps/toinux/config.h
@@ -0,0 +1,122 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+#define MASTER_LEFT
+// #define MASTER_RIGHT
+// #define EE_HANDS
+
+//#define TAPPING_FORCE_HOLD
+//#define TAPPING_TERM 100
+
+#ifdef RGBLIGHT_ENABLE
+ #define RGBLIGHT_EFFECT_BREATHING
+ // #define RGBLIGHT_EFFECT_RAINBOW_MOOD
+ // #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+ #define RGBLIGHT_EFFECT_SNAKE
+ #define RGBLIGHT_EFFECT_KNIGHT
+ #define RGBLIGHT_EFFECT_CHRISTMAS
+ #define RGBLIGHT_EFFECT_STATIC_GRADIENT
+ #define RGBLIGHT_EFFECT_RGB_TEST
+ #define RGBLIGHT_EFFECT_ALTERNATING
+ #define RGBLIGHT_EFFECT_TWINKLE
+ #define RGBLIGHT_LIMIT_VAL 120
+ #define RGBLIGHT_HUE_STEP 10
+ #define RGBLIGHT_SAT_STEP 17
+ #define RGBLIGHT_VAL_STEP 17
+#endif
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+# define RGB_MATRIX_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# define RGB_MATRIX_VAL_STEP 8
+# define RGB_MATRIX_SPD_STEP 10
+
+/* Enable the animations you want/need. You may need to enable only a small number of these because *
+ * they take up a lot of space. Enable and confirm that you can still successfully compile your firmware. */
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+// # define ENABLE_RGB_MATRIX_ALPHAS_MODS
+// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+// # define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+// # define ENABLE_RGB_MATRIX_BREATHING
+// # define ENABLE_RGB_MATRIX_BAND_SAT
+// # define ENABLE_RGB_MATRIX_BAND_VAL
+// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+// # define ENABLE_RGB_MATRIX_CYCLE_ALL
+// # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+// # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+// # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+// # define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+// # define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+// # define ENABLE_RGB_MATRIX_DUAL_BEACON
+// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+// # define ENABLE_RGB_MATRIX_RAINDROPS
+// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// # define ENABLE_RGB_MATRIX_HUE_BREATHING
+// # define ENABLE_RGB_MATRIX_HUE_PENDULUM
+// # define ENABLE_RGB_MATRIX_HUE_WAVE
+// # define ENABLE_RGB_MATRIX_PIXEL_RAIN
+// # define ENABLE_RGB_MATRIX_PIXEL_FLOW
+// # define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+# define ENABLE_RGB_MATRIX_SPLASH
+// # define ENABLE_RGB_MATRIX_MULTISPLASH
+// # define ENABLE_RGB_MATRIX_SOLID_SPLASH
+// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
+
+#define OLED_FONT_H "keyboards/crkbd/keymaps/toinux/glcdfont.c"
+
+#define SPLIT_LAYER_STATE_ENABLE
+// #define SPLIT_LED_STATE_ENABLE
+
+#define LAYER_STATE_16BIT
diff --git a/keyboards/crkbd/keymaps/toinux/glcdfont.c b/keyboards/crkbd/keymaps/toinux/glcdfont.c
new file mode 100644
index 00000000000..74cce5a9527
--- /dev/null
+++ b/keyboards/crkbd/keymaps/toinux/glcdfont.c
@@ -0,0 +1,232 @@
+// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
+// See gfxfont.h for newer custom bitmap font info.
+
+#include "progmem.h"
+
+// Standard ASCII 5x7 font
+const unsigned char font[] PROGMEM = {
+ 0x24, 0x7E, 0x24, 0x24, 0x7E, 0x24,
+ 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
+ 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
+ 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
+ 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
+ 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
+ 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
+ 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
+ 0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
+ 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
+ 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
+ 0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
+ 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
+ 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
+ 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
+ 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
+ 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
+ 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
+ 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
+ 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
+ 0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
+ 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
+ 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
+ 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
+ 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
+ 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
+ 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
+ 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
+ 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
+ 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
+ 0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
+ 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
+ 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
+ 0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
+ 0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
+ 0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
+ 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
+ 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
+ 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
+ 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
+ 0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
+ 0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
+ 0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
+ 0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
+ 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
+ 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
+ 0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
+ 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
+ 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
+ 0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
+ 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
+ 0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
+ 0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
+ 0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
+ 0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
+ 0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
+ 0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
+ 0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
+ 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
+ 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
+ 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
+ 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
+ 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
+ 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
+ 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
+ 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
+ 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
+ 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
+ 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
+ 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
+ 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
+ 0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
+ 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
+ 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
+ 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
+ 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
+ 0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
+ 0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
+ 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
+ 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
+ 0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
+ 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
+ 0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
+ 0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
+ 0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
+ 0x20, 0xD4, 0x54, 0x78, 0x40, 0x00,
+ 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
+ 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
+ 0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
+ 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x28, 0x00,
+ 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
+ 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
+ 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
+ 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
+ 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
+ 0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
+ 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
+ 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
+ 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
+ 0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
+ 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
+ 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
+ 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
+ 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
+ 0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
+ 0x4C, 0x50, 0x50, 0x50, 0x3C, 0x00,
+ 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
+ 0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
+ 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
+ 0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
+ 0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
+ 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
+ 0x83, 0xC3, 0xC3, 0xC3, 0x9B, 0x03,
+ 0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
+ 0x36, 0x32, 0x32, 0x32, 0x32, 0x32,
+ 0x32, 0xE6, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xFE,
+ 0xFF, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x80, 0x80, 0x80, 0x80, 0x9E, 0x81,
+ 0x80, 0x9E, 0x80, 0x80, 0x80, 0x80,
+ 0xFF, 0xEF, 0xD7, 0x0F, 0xDF, 0xDF,
+ 0xDF, 0xDF, 0x0F, 0xD7, 0xEF, 0xFF,
+ 0x01, 0x11, 0x29, 0xF1, 0x21, 0x21,
+ 0x21, 0x21, 0xF1, 0x29, 0x11, 0x01,
+ 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xEF,
+ 0xDF, 0xBF, 0x7F, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFE, 0xFC, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xFC, 0x02, 0x01,
+ 0x01, 0x01, 0x01, 0x01, 0x09, 0x11,
+ 0x21, 0x41, 0x81, 0x01, 0x01, 0x01,
+ 0x01, 0x02, 0xFC, 0x00, 0x00, 0x00,
+ 0x3E, 0xFF, 0xF8, 0xF8, 0xFF, 0x3E,
+ 0x00, 0xE0, 0xF0, 0xF0, 0xF0, 0xE0,
+ 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x63,
+ 0x07, 0x7F, 0x7F, 0x07, 0x7F, 0x7F,
+ 0x08, 0x08, 0x7F, 0x3E, 0x1C, 0x08,
+ 0x08, 0x1C, 0x3E, 0x7F, 0x08, 0x08,
+ 0x63, 0x7F, 0x7F, 0x63, 0x7F, 0x3E,
+ 0x1F, 0x3F, 0x63, 0x63, 0x3F, 0x1F,
+ 0x73, 0x3B, 0x1F, 0x1F, 0x3B, 0x73,
+ 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x8F, 0x8C, 0x0C, 0x0C, 0x0F, 0x0C,
+ 0x8C, 0xAC, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x83, 0x82, 0x82, 0x9E, 0x88,
+ 0x84, 0x82, 0x81, 0x80, 0x80, 0x80,
+ 0xFF, 0xEF, 0xD7, 0xE0, 0xF7, 0xF7,
+ 0xF7, 0xF7, 0xE0, 0xD7, 0xEF, 0xFF,
+ 0x00, 0x10, 0x28, 0x1F, 0x08, 0x08,
+ 0x08, 0x08, 0x1F, 0x28, 0x10, 0x00,
+ 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xEF,
+ 0xF7, 0xFB, 0xFD, 0xFE, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x20, 0x10,
+ 0x08, 0x04, 0x02, 0x01, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
+ 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
+ 0xFF, 0xFF, 0xBD, 0x81, 0x81, 0x00,
+ 0x63, 0x7F, 0x7F, 0x63, 0x7F, 0x3E,
+ 0x3E, 0x7F, 0x77, 0x77, 0x77, 0x77,
+ 0x08, 0x08, 0x7F, 0x3E, 0x1C, 0x08,
+ 0x08, 0x1C, 0x3E, 0x7F, 0x08, 0x08,
+ 0x7F, 0x7F, 0x03, 0x03, 0x7F, 0x7F,
+ 0x1C, 0x1C, 0x1C, 0x1C, 0x7F, 0x7F,
+ 0x03, 0x7F, 0x7F, 0x63, 0x7F, 0x1F,
+ 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xD9, 0x99, 0x9B, 0x9E, 0x9E, 0x9B,
+ 0x99, 0xD9, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFC, 0xFD, 0xFD, 0xE1, 0xF7,
+ 0xFB, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0x7F, 0xBF, 0xDF, 0xE1, 0xFF, 0xFF,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x80, 0x40, 0x3C, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x3F, 0x7F, 0xFF,
+ 0xFF, 0x1F, 0xDF, 0xDF, 0xC3, 0xF7,
+ 0xEF, 0xDF, 0xBF, 0x7F, 0xFF, 0xFF,
+ 0xFF, 0x7F, 0x3F, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x3F, 0x40, 0x80,
+ 0x00, 0xE0, 0x20, 0x20, 0x3C, 0x08,
+ 0x10, 0x20, 0x40, 0x80, 0x00, 0x00,
+ 0x80, 0x40, 0x3F, 0x00, 0x00, 0x00,
+ 0x00, 0x7F, 0xE3, 0xE3, 0x7F, 0x00,
+ 0x00, 0x07, 0x0F, 0x0F, 0x0F, 0x07,
+ 0x1C, 0x3E, 0x77, 0x63, 0x63, 0x63,
+ 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x63,
+ 0x08, 0x08, 0x7F, 0x3E, 0x1C, 0x08,
+ 0x08, 0x1C, 0x3E, 0x7F, 0x08, 0x08,
+ 0x7F, 0x7F, 0x03, 0x03, 0x7F, 0x7F,
+ 0x7F, 0x7F, 0x03, 0x03, 0x7F, 0x7F,
+ 0x3E, 0x7F, 0x63, 0x63, 0x63, 0x63,
+ 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
diff --git a/keyboards/crkbd/keymaps/toinux/keycodes.h b/keyboards/crkbd/keymaps/toinux/keycodes.h
new file mode 100644
index 00000000000..7d812f5c74b
--- /dev/null
+++ b/keyboards/crkbd/keymaps/toinux/keycodes.h
@@ -0,0 +1,49 @@
+/* Copyright 2022 toinux
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+enum crkbd_layers {
+ _BASE,
+ _GAMING,
+ _GAMING2,
+ _ACCENTS,
+ _LOWER,
+ _RAISE,
+ _FUN,
+ _NAV,
+ _MOUSE,
+ _ADJUST
+};
+
+#define CTRLSC LCTL_T(KC_ESC)
+#define QUORCTL RCTL_T(KC_QUOT)
+#define MOSCLN LT(_MOUSE,KC_SCLN)
+#define ACCENTS LT(_ACCENTS,KC_RALT)
+#define FUN LT(_FUN,KC_SPC)
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+#define SPCNAV LT(_NAV,KC_SPC)
+#define SFTENT MT(MOD_RSFT,KC_ENT)
+#define TABLGUI LGUI_T(KC_TAB)
+#define BASE DF(_BASE)
+#define GAMING DF(_GAMING)
+#define GAMING2 MO(_GAMING2)
+
+#define SC_F1 LSFT(LCTL(KC_F1))
+#define SC_F2 LSFT(LCTL(KC_F2))
+#define SC_F3 LSFT(LCTL(KC_F3))
+#define SC_F4 LSFT(LCTL(KC_F4))
diff --git a/keyboards/crkbd/keymaps/toinux/keymap.c b/keyboards/crkbd/keymaps/toinux/keymap.c
new file mode 100644
index 00000000000..ae3de00b79b
--- /dev/null
+++ b/keyboards/crkbd/keymaps/toinux/keymap.c
@@ -0,0 +1,250 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2022 @toinux
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+#include "users/toinux/keymap_qwerty_fr.h"
+#include "keycodes.h"
+
+#ifdef OLED_ENABLE
+#include "oled.h"
+#endif
+
+// TEMPLATE
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | | | | | | | | | | | | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | | | | | | | | | | | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | | | | | | | | | | | | |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | | | | | | | |
+// `--------------------------' `--------------------------'
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+// Base
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// |Tab/LGui| Q | W | E | R | T | | Y | U | I | O | P | Bksp |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | CtrlSc | A | S | D | F | G | | H | J | K | L | ;/Mous | '/Rctl |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | Shift | Z | X | C | V | B | | N | M | , | . | / | SftEnT |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | LALT | LOWER |Spc/FUN | | Spc/NAV| RAISE |ACCENTS |
+// `--------------------------' `--------------------------'
+ [_BASE] = LAYOUT_split_3x6_3(
+ TABLGUI, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ CTRLSC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MOSCLN, QUORCTL,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFTENT,
+ KC_LALT, LOWER, FUN, SPCNAV, RAISE, ACCENTS
+
+ ),
+
+// Gaming
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | Esc | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | Ctrl | A | S | D | F | G | | H | J | K | L | ;/Mous | ' |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | Shift | Z | X | C | V | B | | N | M | , | . | / | SftEnT |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | LALT |GAMING2 | Space | | Spc/NAV| RAISE |ACCENTS |
+// `--------------------------' `--------------------------'
+ [_GAMING] = LAYOUT_split_3x6_3(
+ KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
+ KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MOSCLN, KC_QUOT,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SFTENT,
+ KC_LALT, GAMING2, KC_SPC, SPCNAV, RAISE, ACCENTS
+
+ ),
+
+// Gaming 2
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | Tab | 1 | 2 | 3 | 4 | 5 | | | | | | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | Ctrl | 6 | 7 | 8 | 9 | 0 | | | | | | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | LGui | Base | | Vol- | Vol+ | Mute | | | | | | | |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | | | | | | | |
+// `--------------------------' `--------------------------'
+ [_GAMING2] = LAYOUT_split_3x6_3(
+ KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_LCTL, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ KC_LGUI, BASE, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______
+
+ ),
+
+// Accents, see http://marin.jb.free.fr/qwerty-fr/
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | | â | é | è | ê | € | | û | ù | î | ô | œ | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | à | æ | ë | | « | | » | ü | ï | ö | ° | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | à | | ç | | | | | | | | | |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | | | | | | | |
+// `--------------------------' `--------------------------'
+ [_ACCENTS] = LAYOUT_split_3x6_3(
+ _______, QF_ACIR, QF_EACU, QF_EGRV, QF_ECIR, QF_EURO, QF_UCIR, QF_UGRV, QF_ICIR, QF_OCIR, QF_OE, _______,
+ _______, QF_AGRV, QF_AE, QF_EDIA, _______, QF_LDAQ, QF_RDAQ, QF_UDIA, QF_IDIA, QF_ODIA, QF_DEG, _______,
+ _______, QF_AGRV, _______, QF_CCED, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+
+ ),
+
+// Lower
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | SC_F1 | SC_F2 | SC_F3 | SC_F4 | | | | _ | + | { | } | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | Gaming | | Vol- | Vol+ | Mute | | | | | | | |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | | | | | | | |
+// `--------------------------' `--------------------------'
+ [_LOWER] = LAYOUT_split_3x6_3(
+ KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
+ _______, SC_F1, SC_F2, SC_F3, SC_F4, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
+ _______, GAMING, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______
+
+ ),
+
+// Raise
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | | | | | | | | - | = | [ | ] | \ |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | | | | | | | | | | | | |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | | | | | | | |
+// `--------------------------' `--------------------------'
+ [_RAISE] = LAYOUT_split_3x6_3(
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
+ _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______
+
+ ),
+
+// Functions and keypad
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | | F1 | F2 | F2 | F4 | | | | 7 | 8 | 9 | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | F5 | F6 | F7 | F8 | | | | 4 | 5 | 6 | - | / |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | F9 | F10 | F11 | F12 | | | | 1 | 2 | 3 | + | * |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | | | | | = | 0 | . |
+// `--------------------------' `--------------------------'
+ [_FUN] = LAYOUT_split_3x6_3(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_P7, KC_P8, KC_P9, XXXXXXX, _______,
+ _______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, XXXXXXX, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PSLS,
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, XXXXXXX, KC_P1, KC_P2, KC_P3, KC_PPLS, KC_PAST,
+ _______, _______, _______, KC_PENT, KC_P0, KC_PDOT
+
+ ),
+
+// Navigation and function keys
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | | F1 | F2 | F2 | F4 | | | | Pg Up | Up | Pg Dn | Ins | Del |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | F5 | F6 | F7 | F8 | | | Home | Left | Down | Right | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | F9 | F10 | F11 | F12 | | | Space | End | | | | |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | | | | | | | |
+// `--------------------------' `--------------------------'
+ [_NAV] = LAYOUT_split_3x6_3(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_INS, KC_DEL,
+ _______, KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX,
+ _______, KC_F9, KC_F10, KC_F11, KC_F12, XXXXXXX, KC_SPC, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, _______,
+ _______, _______, _______, _______, _______, _______
+
+ ),
+
+// Mouse
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | | | Wh up | Ms up | Wh dn | | | | | | | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | | Ms lft | Ms dn | Ms rgt | | | | btn1 | btn3 | btn2 | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | | | Wh lft | | Wh rgt | | | | | | | | |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | | | | | | | |
+// `--------------------------' `--------------------------'
+ [_MOUSE] = LAYOUT_split_3x6_3(
+ _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______,
+ _______, _______, KC_WH_L, _______, KC_WH_R, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______
+
+ ),
+
+// Adjust
+// ,-----------------------------------------------------. ,-----------------------------------------------------.
+// | Reset | | | | | Print | | Num | Caps | Scroll | | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | On/Off | Hue ↑ | Sat ↑ | Brght ↑| | | | | | | | | |
+// |--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+// | Cycle | Hue ↓ | Sat ↓ | Brght ↓| | | | | | | | | |
+// `--------+--------+--------+--------+--------+--------+--------. .--------+--------+--------+--------+--------+--------+--------'
+// | | | | | | | |
+// `--------------------------' `--------------------------'
+ [_ADJUST] = LAYOUT_split_3x6_3(
+ RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PSCR, KC_NLCK, KC_CAPS, KC_SCRL, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+ _______, _______, _______, _______, _______, _______
+ )
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+
+#ifdef OLED_ENABLE
+ if (record->event.pressed) {
+ set_keylog(keycode, record);
+ }
+#endif // OLED_ENABLE
+
+ switch (keycode) {
+ case FUN:
+ if (!host_keyboard_led_state().num_lock) {
+ tap_code(KC_NUMLOCK);
+ }
+ return true;
+ break;
+ }
+ return true;
+}
+
+void keyboard_post_init_user(void) {
+#if defined(RGBLIGHT_ENABLE) || defined(RGB_MATRIX_ENABLE)
+ rgb_matrix_mode_noeeprom(RGB_MATRIX_SOLID_COLOR);
+ rgb_matrix_sethsv_noeeprom(HSV_OFF);
+#endif
+}
diff --git a/keyboards/crkbd/keymaps/toinux/oled.c b/keyboards/crkbd/keymaps/toinux/oled.c
new file mode 100644
index 00000000000..df2a693d8d8
--- /dev/null
+++ b/keyboards/crkbd/keymaps/toinux/oled.c
@@ -0,0 +1,112 @@
+/* Copyright 2022 @toinux
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+
+#include QMK_KEYBOARD_H
+#include "keycodes.h"
+#include "oled.h"
+
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ if (!is_keyboard_master()) {
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+ }
+ return rotation;
+}
+
+
+void oled_render_mod_status(void) {
+
+ const uint8_t modifiers = get_mods() | get_oneshot_mods();
+
+ for (uint8_t i = 0; i < 2; i++) {
+ oled_set_cursor(9,i);
+ oled_write_P(gui_icon[(modifiers & MOD_MASK_GUI) ? 1 : 0][i], false);
+ oled_write_P(ctrl_icon[(modifiers & MOD_MASK_CTRL) ? 1 : 0][i], false);
+ oled_set_cursor(9,i+2);
+ oled_write_P(alt_icon[(modifiers & MOD_MASK_ALT) ? 1 : 0][i], false);
+ oled_write_P(shift_icon[(modifiers & MOD_MASK_SHIFT) ? 1 : 0][i], false);
+ }
+
+}
+
+void oled_render_layer_state(void) {
+
+ char c = 0x9F - get_highest_layer(layer_state|default_layer_state);
+
+ oled_set_cursor(20,0);
+ oled_write_char(0X00, false);
+
+ oled_set_cursor(20,1);
+ oled_write_char(c, false);
+ c += 32;
+ oled_set_cursor(20,2);
+ oled_write_char(c, false);
+ c += 32;
+ oled_set_cursor(20,3);
+ oled_write_char(c, false);
+
+}
+
+void oled_render_led_state(void) {
+ // oled_advance_page(false) instead of oled_write_ln_P to not break OLED_TIMEOUT
+ oled_write_P(PSTR("NUM"), host_keyboard_led_state().num_lock);
+ oled_advance_page(false);
+ oled_write_P(PSTR("CAP"), host_keyboard_led_state().caps_lock);
+ oled_advance_page(false);
+ oled_write_P(PSTR("SCL"), host_keyboard_led_state().scroll_lock);
+ oled_advance_page(false);
+}
+
+uint8_t last_row = 0;
+uint8_t last_col = 0;
+
+void set_keylog(uint16_t keycode, keyrecord_t *record) {
+ last_row = record->event.key.row;
+ last_col = record->event.key.col;
+}
+
+void oled_render_keylog(void) {
+ oled_write_char(last_row + '0', false);
+ oled_write_char('x', false);
+ oled_write_char(last_col + '0', false);
+}
+
+void oled_render_logo(void) {
+ static const char PROGMEM kpu_logo[][3] = {
+ {0x82, 0x83, 0},
+ {0x80, 0x81, 0},
+ {0xa0, 0xa1, 0},
+ {0xc0, 0xc1, 0}
+ };
+ for (uint8_t i = 0; i < 4; i++) {
+ oled_write_ln_P(kpu_logo[i], false);
+ }
+
+}
+
+bool oled_task_user(void) {
+ if (is_keyboard_master ()) {
+ oled_render_led_state();
+ oled_render_keylog();
+ oled_render_mod_status();
+ oled_render_layer_state();
+ } else {
+ oled_render_logo();
+ oled_scroll_right();
+ oled_scroll_set_speed(4);
+ }
+ return false;
+}
diff --git a/keyboards/crkbd/keymaps/toinux/oled.h b/keyboards/crkbd/keymaps/toinux/oled.h
new file mode 100644
index 00000000000..30be16e602f
--- /dev/null
+++ b/keyboards/crkbd/keymaps/toinux/oled.h
@@ -0,0 +1,71 @@
+/* Copyright 2022 @toinux
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+static const char PROGMEM ctrl_icon[2][2][4] = {
+ {
+ // off
+ {0x93, 0x94, 0x95, 0},
+ {0xB3, 0xB4, 0xB5, 0},
+ },
+ {
+ // on
+ {0x8F ,0x90, 0x91, 0},
+ {0xAF ,0xB0, 0xB1, 0},
+ }
+};
+
+static const char PROGMEM shift_icon[2][2][4] = {
+ {
+ // off
+ {0xD3, 0xD4, 0xB5, 0},
+ {0xA8, 0xA9, 0xD5, 0},
+ },
+ {
+ // on
+ {0xCF ,0xD0, 0xB1, 0},
+ {0xC8 ,0xC9, 0xD1, 0},
+ }
+};
+
+static const char PROGMEM gui_icon[2][2][4] = {
+ {
+ // off
+ {0x92, 0x8C, 0x8D, 0},
+ {0xB2, 0xAC, 0xAD, 0},
+ },
+ {
+ // on
+ {0x8E ,0x8A, 0x8B, 0},
+ {0xAE ,0xAA, 0xAB, 0},
+ }
+};
+
+static const char PROGMEM alt_icon[2][2][4] = {
+ {
+ // off
+ {0xB2, 0xCC, 0xCD, 0},
+ {0xD2, 0x88, 0x89, 0},
+ },
+ {
+ // on
+ {0xAE ,0xCA, 0xCB, 0},
+ {0xCE ,0x86, 0x87, 0},
+ }
+};
+
+void set_keylog(uint16_t keycode, keyrecord_t *record);
diff --git a/keyboards/crkbd/keymaps/toinux/rgb.c b/keyboards/crkbd/keymaps/toinux/rgb.c
new file mode 100644
index 00000000000..2c5de3b0a7b
--- /dev/null
+++ b/keyboards/crkbd/keymaps/toinux/rgb.c
@@ -0,0 +1,68 @@
+/* Copyright 2022 @toinux
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+
+#include QMK_KEYBOARD_H
+#include "keycodes.h"
+
+static const char gaming_leds[] = {18, 22, 19, 16};
+static const char gaming2_leds[] = {23, 18, 17, 10, 9, 22, 19, 16, 11, 8};
+static const char nav_leds[] = {38, 43, 44, 46};
+static const char fun_leds[] = {45, 44, 37, 46, 43, 38, 47, 42, 39, 40};
+static const char mouse_leds[] = {11, 16, 17, 19};
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color(26, RGB_RED);
+ }
+ switch(get_highest_layer(layer_state|default_layer_state)) {
+ case _GAMING:
+ if (is_keyboard_master()) {
+ for (uint8_t i = 0; i < 4; i++) {
+ rgb_matrix_set_color(gaming_leds[i], RGB_RED);
+ }
+ }
+ break;
+ case _GAMING2:
+ if (is_keyboard_master()) {
+ for (uint8_t i = 0; i < 10; i++) {
+ rgb_matrix_set_color(gaming2_leds[i], RGB_GREEN);
+ }
+ }
+ break;
+ case _NAV:
+ for (uint8_t i = 0; i < 4; i++) {
+ rgb_matrix_set_color(nav_leds[i], RGB_BLUE);
+ }
+ break;
+ case _FUN:
+ for (uint8_t i = 0; i < 10; i++) {
+ rgb_matrix_set_color(fun_leds[i], RGB_GREEN);
+ }
+ break;
+ case _ADJUST:
+ rgb_matrix_set_color(6, RGB_RED);
+ break;
+ case _MOUSE:
+ if (is_keyboard_master()) {
+ for (uint8_t i = 0; i < 4; i++) {
+ rgb_matrix_set_color(mouse_leds[i], RGB_PURPLE);
+ }
+ }
+ break;
+
+ }
+}
diff --git a/keyboards/crkbd/keymaps/toinux/rules.mk b/keyboards/crkbd/keymaps/toinux/rules.mk
new file mode 100644
index 00000000000..07c98a08f80
--- /dev/null
+++ b/keyboards/crkbd/keymaps/toinux/rules.mk
@@ -0,0 +1,9 @@
+MOUSEKEY_ENABLE = yes # Mouse keys
+RGBLIGHT_ENABLE = no
+RGB_MATRIX_ENABLE = yes
+OLED_ENABLE = yes
+OLED_DRIVER = SSD1306
+LTO_ENABLE = yes
+BOOTLOADER = atmel-dfu
+
+SRC += ./oled.c ./rgb.c
diff --git a/users/toinux/keymap_qwerty_fr.h b/users/toinux/keymap_qwerty_fr.h
new file mode 100644
index 00000000000..3110ee984fe
--- /dev/null
+++ b/users/toinux/keymap_qwerty_fr.h
@@ -0,0 +1,158 @@
+/* Copyright 2022
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+// keymap adapted for http://marin.jb.free.fr/qwerty-fr/
+
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ` │ ¹ │ ² │ ³ │ ê │ € │ ^ │ ŷ │ û │ î │ ô │ – │ ≠ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ â │ é │ è │ ® │ π │ ¥ │ ù │ î │ ò │ œ │ « │ » │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ à │ æ │ ë │ ε │ α │ ÿ │ ü │ ï │ ö │ ¶ │ ´ │ ¦ │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ ≤ │ ä │ × │ ç │ ω │ ß │ ñ │ µ │ ¸ │ ° │ ʕ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define QF_DGRV RALT(KC_GRV) // ` (dead)
+#define QF_SUP1 RALT(KC_1) // ¹
+#define QF_SUP2 RALT(KC_2) // ²
+#define QF_SUP3 RALT(KC_3) // ³
+#define QF_ECIR RALT(KC_4) // ê
+#define QF_EURO RALT(KC_5) // €
+#define QF_DCIR RALT(KC_6) // ^ (dead)
+#define QF_YCIR RALT(KC_7) // ŷ
+#define QF_UCIR RALT(KC_8) // û
+#define QF_ICIR RALT(KC_9) // î
+#define QF_OCIR RALT(KC_0) // ô
+#define QF_DASH RALT(KC_MINUS) // –
+#define QF_NEQL RALT(KC_EQUAL) // ≠
+// Row 2
+#define QF_ACIR RALT(KC_Q) // â
+#define QF_EACU RALT(KC_W) // é
+#define QF_EGRV RALT(KC_E) // è
+#define QF_REGD RALT(KC_R) // ®
+#define QF_PI RALT(KC_T) // π
+#define QF_YEN RALT(KC_Y) // ¥
+#define QF_UGRV RALT(KC_U) // ù
+#define QF_IGRV RALT(KC_I) // ì
+#define QF_OGRV RALT(KC_O) // ò
+#define QF_OE RALT(KC_P) // œ
+#define QF_LDAQ RALT(KC_LBRC) // «
+#define QF_RDAQ RALT(KC_RBRC) // »
+// Row 3
+#define QF_AGRV RALT(KC_A) // à
+#define QF_AE RALT(KC_S) // æ
+#define QF_EDIA RALT(KC_D) // ë
+#define QF_EPSL RALT(KC_F) // ε
+#define QF_ALPH RALT(KC_G) // α
+#define QF_YDIA RALT(KC_H) // ÿ
+#define QF_UDIA RALT(KC_J) // ü
+#define QF_IDIA RALT(KC_K) // ï
+#define QF_ODIA RALT(KC_L) // ö
+#define QF_PILC RALT(KC_SCLN) // ¶
+#define QF_ACUT RALT(KC_QUOT) // ´ (dead)
+#define QF_BRKP RALT(KC_BSLS) // ¦
+// Row 4
+#define QF_LTEQ RALT(KC_NUBS) // ≤
+#define QF_ADIA RALT(KC_Z) // ä
+#define QF_MUL RALT(KC_X) // ×
+#define QF_CCED RALT(KC_C) // ç
+#define QF_OMEG RALT(KC_V) // ω
+#define QF_SS RALT(KC_B) // ß
+#define QF_NTIL RALT(KC_N) // ñ
+#define QF_MICR RALT(KC_M) // µ
+#define QF_CEDL RALT(KC_COMM) // ¸ (dead)
+#define QF_DEG RALT(KC_DOT) // °
+#define QF_VOPH RALT(KC_SLSH) // ʕ
+// Row 5
+#define QF_NBSP RALT(KC_SPC) // (non-breaking space)
+
+
+/* Shift+AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ~ │ ¡ │ ˝ │ ¯ │ Ê │ £ │ ˇ │ Ŷ │ Û │ Î │ Ô │ — │ ± │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │  │ É │ È │ © │ Π │ ¤ │ Ù │ Ì │ Ò │ Œ │ “ │ ” │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ │
+ * │ │ À │ Æ │ Ë │ Δ │ β │ Ÿ │ Ü │ Ï │ ö │ § │ ¨ │ ø │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤
+ * │ │ ≥ │ Ä │ ÷ │ Ç │ Ω │ þ │ Ñ │ Σ │ ˛ │ ˚ │ ¿ │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define QF_DTIL S(RALT(KC_GRV)) // ~ (dead)
+#define QF_IEXL S(RALT(KC_1)) // ¡
+#define QF_DACU S(RALT(KC_2)) // ˝ (dead)
+#define QF_MACR S(RALT(KC_3)) // ¯ (dead)
+#define QF_ECIU S(RALT(KC_4)) // Ê
+#define QF_PND S(RALT(KC_5)) // £
+#define QF_CARN S(RALT(KC_6)) // ˇ (dead)
+#define QF_YCIU S(RALT(KC_7)) // Ŷ
+#define QF_UCIU S(RALT(KC_8)) // Û
+#define QF_ICIU S(RALT(KC_9)) // Î
+#define QF_OCIO S(RALT(KC_0)) // Ô
+#define QF_NDSH S(RALT(KC_MINUS)) // —
+#define QF_PLMN S(RALT(KC_EQUAL)) // ±
+// Row 2
+#define QF_ACIU S(RALT(KC_Q)) // Â
+#define QF_ECUU S(RALT(KC_W)) // É
+#define QF_EGRU S(RALT(KC_E)) // È
+#define QF_COPY S(RALT(KC_R)) // ©
+#define QF_PIU S(RALT(KC_T)) // Π
+#define QF_CURR S(RALT(KC_Y)) // ¤
+#define QF_UGRU S(RALT(KC_U)) // Ù
+#define QF_IGRU S(RALT(KC_I)) // Ì
+#define QF_OGRU S(RALT(KC_O)) // Ò
+#define QF_OEU S(RALT(KC_P)) // Œ
+#define QF_LDQU S(RALT(KC_LBRC)) // “
+#define QF_RDQU S(RALT(KC_RBRC)) // ”
+// Row 3
+#define QF_AGRU S(RALT(KC_A)) // À
+#define QF_AEU S(RALT(KC_S)) // Æ
+#define QF_EDIU S(RALT(KC_D)) // Ë
+#define QF_DELT S(RALT(KC_F)) // Δ
+#define QF_BETA S(RALT(KC_G)) // β
+#define QF_YDIU S(RALT(KC_H)) // Ÿ
+#define QF_UDIU S(RALT(KC_J)) // Ü
+#define QF_IDIU S(RALT(KC_K)) // Ï
+#define QF_ODIU S(RALT(KC_L)) // Ö
+#define QF_SECT S(RALT(KC_SCLN)) // §
+#define QF_DIAE S(RALT(KC_QUOT)) // ¨ (dead)
+#define QF_OSTR S(RALT(KC_BSLS)) // ø
+// Row 4
+#define QF_GTEQ S(RALT(KC_NUBS)) // ≥
+#define QF_ADIU S(RALT(KC_Z)) // Ä
+#define QF_DIV S(RALT(KC_X)) // ÷
+#define QF_CCDU S(RALT(KC_C)) // Ç
+#define QF_OMEU S(RALT(KC_V)) // Ω
+#define QF_THRN S(RALT(KC_B)) // þ
+#define QF_NTIU S(RALT(KC_N)) // Ñ
+#define QF_SIGM S(RALT(KC_M)) // Σ
+#define QF_OGON S(RALT(KC_COMM)) // ˛ (dead)
+#define QF_RNGA S(RALT(KC_DOT)) // ˚ (dead)
+#define QF_IQUE S(RALT(KC_SLSH)) // ¿
From d64ec7cb19708082b168b3cd7f7f6016c650accf Mon Sep 17 00:00:00 2001
From: "E.Iosifidis"
Date: Fri, 22 Apr 2022 10:55:25 +0300
Subject: [PATCH 36/65] [Keymap] Addition of new keymap for the anavi macropad8
keyboard (#16910)
* Creation of Visual Studio Code keymap
* Add files via upload
---
.../anavi/macropad8/keymaps/vscode/config.h | 19 ++++
.../anavi/macropad8/keymaps/vscode/keymap.c | 103 ++++++++++++++++++
2 files changed, 122 insertions(+)
create mode 100644 keyboards/anavi/macropad8/keymaps/vscode/config.h
create mode 100644 keyboards/anavi/macropad8/keymaps/vscode/keymap.c
diff --git a/keyboards/anavi/macropad8/keymaps/vscode/config.h b/keyboards/anavi/macropad8/keymaps/vscode/config.h
new file mode 100644
index 00000000000..dd687cad58f
--- /dev/null
+++ b/keyboards/anavi/macropad8/keymaps/vscode/config.h
@@ -0,0 +1,19 @@
+/* Copyright 2021 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#define LAYER_STATE_8BIT
diff --git a/keyboards/anavi/macropad8/keymaps/vscode/keymap.c b/keyboards/anavi/macropad8/keymaps/vscode/keymap.c
new file mode 100644
index 00000000000..be6ac07f584
--- /dev/null
+++ b/keyboards/anavi/macropad8/keymaps/vscode/keymap.c
@@ -0,0 +1,103 @@
+ /* Copyright 2022 Efthimis Iosifidis
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _BASIC,
+ _FN,
+};
+
+
+#define KC_X0 LT(_FN, KC_ESC)
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* _BASIC Layer
+ * ,-------------------------------------.
+ * | Toggle | Toggle | | |
+ * | Block | Line | Undo | Redo |
+ * | Comment | Comment | | |
+ * |---------+---------+--------+---------+
+ * | | | | TO |
+ * | Cut | Copy | Paste | _FN |
+ * | | | | |
+ * `-------------------------------------'
+ */
+ [_BASIC] = LAYOUT_ortho_2x4(
+ RCS(KC_A), C(KC_SLASH), C(KC_Z), C(KC_Y),
+ C(KC_X), C(KC_C), C(KC_V), TO(_FN)
+ ),
+/* _FN Layer
+ * ,--------------------------------------------.
+ * | RGB | RGB | RGB | RGB |
+ * | Toggle | Mode | Mode | Snake |
+ * | | Forward | Reverse | Mode |
+ * |-----------+-----------+-----------+---------+
+ * | | Cycle | Toggle | TO |
+ * | BackLight | BackLight | BackLight | _BASIC |
+ * | Toggle | Levels | | |
+ * `--------------------------------------------'
+ */
+ [_FN] = LAYOUT_ortho_2x4(
+ RGB_TOG, RGB_MOD, RGB_M_R, RGB_M_SN,
+ BL_TOGG, BL_STEP, BL_BRTG, TO(_BASIC)
+ )
+};
+
+#ifdef OLED_ENABLE
+oled_rotation_t oled_init_user(oled_rotation_t rotation) {
+ return OLED_ROTATION_180; // flips the display 180 degrees if offhand
+}
+
+
+bool oled_task_user(void) {
+ // Host Keyboard Layer Status
+ oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false);
+ oled_write_P(PSTR("Active layer: "), false);
+
+ switch (get_highest_layer(layer_state)) {
+ case _BASIC:
+ oled_write_ln_P(PSTR("Basic"), false);
+ break;
+ case _FN:
+ oled_write_ln_P(PSTR("FN"), false);
+ break;
+ default:
+ // Or use the write_ln shortcut over adding '\n' to the end of your string
+ oled_write_ln_P(PSTR("N/A"), false);
+ }
+
+
+ // Host Keyboard LED Status
+ led_t led_state = host_keyboard_led_state();
+ oled_write_P(PSTR("Num Lock: "), false);
+ oled_write_ln_P(led_state.num_lock ? PSTR("On") : PSTR("Off"), false);
+ oled_write_P(PSTR("Caps Lock: "), false);
+ oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false);
+ oled_write_P(PSTR("Backlit: "), false);
+ oled_write_ln_P(is_backlight_enabled() ? PSTR("On") : PSTR("Off"), false);
+#ifdef RGBLIGHT_ENABLE
+ static char rgbStatusLine1[26] = {0};
+ snprintf(rgbStatusLine1, sizeof(rgbStatusLine1), "RGB Mode: %d", rgblight_get_mode());
+ oled_write_ln(rgbStatusLine1, false);
+ static char rgbStatusLine2[26] = {0};
+ snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
+ oled_write_ln(rgbStatusLine2, false);
+#endif
+ return false;
+}
+#endif
From 56b125ad77d3a06ad3f04e12113adbe7a969c54c Mon Sep 17 00:00:00 2001
From: DL Ford
Date: Fri, 22 Apr 2022 01:16:33 -0700
Subject: [PATCH 37/65] Add Dactyl_Manuform/3x5_3 (#16238)
---
.../handwired/dactyl_manuform/3x5_3/3x5_3.c | 66 +++
.../handwired/dactyl_manuform/3x5_3/3x5_3.h | 37 ++
.../handwired/dactyl_manuform/3x5_3/config.h | 56 +++
.../handwired/dactyl_manuform/3x5_3/info.json | 48 +++
.../3x5_3/keymaps/dlford/config.h | 106 +++++
.../3x5_3/keymaps/dlford/features/caps_word.c | 76 ++++
.../3x5_3/keymaps/dlford/features/caps_word.h | 36 ++
.../3x5_3/keymaps/dlford/keymap.c | 385 ++++++++++++++++++
.../3x5_3/keymaps/dlford/rules.mk | 17 +
.../handwired/dactyl_manuform/3x5_3/rules.mk | 25 ++
.../dactyl_manuform/dactyl_manuform.h | 2 +
keyboards/handwired/dactyl_manuform/readme.md | 33 +-
12 files changed, 877 insertions(+), 10 deletions(-)
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.c
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/config.h
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/info.json
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/config.h
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/features/caps_word.c
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/features/caps_word.h
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/keymap.c
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/rules.mk
create mode 100644 keyboards/handwired/dactyl_manuform/3x5_3/rules.mk
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.c b/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.c
new file mode 100644
index 00000000000..2bd1aefadb5
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.c
@@ -0,0 +1,66 @@
+/*
+Copyright 2021 @dlford
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#include "3x5_3.h"
+
+#ifdef RGB_MATRIX_ENABLE
+
+// LED Layout
+// Columns
+// 0 1 2 3 4 5 6 7 8 9 10 11
+// Physical (Center: 133)
+// 20 41 61 81 102 122 143 163 183 204 224 244
+// Rows Physical (Center: 54)
+// 17 12 11 06 05 23 24 29 30 35 0 21
+// 16 13 10 07 04 22 25 28 31 34 1 43
+// 15 14 09 08 03 21 26 27 32 33 2 64
+// 02 01 00 18 19 20 3 85
+
+led_config_t g_led_config = { {
+ // Key matrix to LED index
+ // Left 1-18
+ {17, 12, 11, 6, 5},
+ {16, 13, 10, 7, 4},
+ {15, 14, 9, 8, 3},
+ {NO_LED, NO_LED, 2, 1, 0},
+ // Right 1-18
+ {23, 24, 29, 30, 35},
+ {22, 25, 28, 31, 34},
+ {21, 26, 27, 32, 33},
+ {18, 19, 20, NO_LED, NO_LED},
+}, {
+ // LED index to physical position
+ // Left 1-18
+ {122,85},{102,85},{81,85},{102,64},{102,43},{102,21},
+ {81,21},{81,43},{81,64},{61,64},{61,43},{61,21},
+ {41,21},{41,43},{41,64},{20,64},{20,43},{20,21},
+ // Right 1-18
+ {143,85},{163,85},{183,85},{163,64},{163,43},{163,21},
+ {183,21},{183,43},{183,64},{204,64},{204,43},{204,21},
+ {224,21},{224,43},{224,64},{244,64},{244,43},{244,21}
+}, {
+ // LED index to flag
+ // Left 1-18
+ 4,4,4,4,4,4,
+ 4,4,4,4,4,4,
+ 4,4,4,4,4,4,
+ // Right 1-18
+ 4,4,4,4,4,4,
+ 4,4,4,4,4,4,
+ 4,4,4,4,4,4
+} };
+
+#endif
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h b/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
new file mode 100644
index 00000000000..f9a843d7d69
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
@@ -0,0 +1,37 @@
+/*
+Copyright 2021 @dlford
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#pragma once
+
+#include "dactyl_manuform.h"
+
+#define LAYOUT_split_3x5_3(\
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L32, L33, L34, R30, R31, R32 \
+ ) \
+ { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { KC_NO, KC_NO, L32, L33, L34 }, \
+ \
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, R32, KC_NO, KC_NO }, \
+}
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/config.h b/keyboards/handwired/dactyl_manuform/3x5_3/config.h
new file mode 100644
index 00000000000..e417599a40f
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/config.h
@@ -0,0 +1,56 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+Copyright 2021 @dlford
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+#define PRODUCT_ID 0x3536
+#define DEVICE_VER 0x0003
+#ifdef MANUFACTURER
+ #undef MANUFACTURER
+#endif
+#define MANUFACTURER DLFord
+#define PRODUCT Dactyl Minidox (3x5+3)
+
+// Communication
+// #define USE_I2C
+#define USE_SERIAL
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 5
+
+// wiring of each half
+#define MATRIX_COL_PINS { C6, D7, E6, B4, B5 }
+#define MATRIX_ROW_PINS { B1, B3, B2, B6 }
+
+#define DIODE_DIRECTION ROW2COL
+
+// WS2812 RGB LED strip input and number of LEDs
+#define RGB_DI_PIN D3
+#define DRIVER_LED_TOTAL 36
+#define RGB_MATRIX_SPLIT { 18, 18 }
+#define RGB_MATRIX_CENTER { 133, 54 }
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#undef LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#undef LOCKING_RESYNC_ENABLE
+
+/* Enables This makes it easier for fast typists to use dual-function keys */
+#undef PERMISSIVE_HOLD
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/info.json b/keyboards/handwired/dactyl_manuform/3x5_3/info.json
new file mode 100644
index 00000000000..47642262212
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/info.json
@@ -0,0 +1,48 @@
+{
+ "keyboard_name": "Dactyl Manuform 3x5_3",
+ "url": "https://www.dlford.io/keyboard-build-guide-per-key-rgb-leds/",
+ "maintainer": "dlford",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "x": 0, "y": 0 },
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 0, "y": 1 },
+ { "x": 1, "y": 1 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 0, "y": 2 },
+ { "x": 1, "y": 2 },
+ { "x": 2, "y": 2 },
+ { "x": 3, "y": 2 },
+ { "x": 4, "y": 2 },
+ { "x": 2, "y": 3 },
+ { "x": 3, "y": 3 },
+ { "x": 4, "y": 3 },
+
+ { "x": 10, "y": 0 },
+ { "x": 11, "y": 0 },
+ { "x": 12, "y": 0 },
+ { "x": 13, "y": 0 },
+ { "x": 14, "y": 0 },
+ { "x": 10, "y": 1 },
+ { "x": 11, "y": 1 },
+ { "x": 12, "y": 1 },
+ { "x": 13, "y": 1 },
+ { "x": 14, "y": 1 },
+ { "x": 10, "y": 2 },
+ { "x": 11, "y": 2 },
+ { "x": 12, "y": 2 },
+ { "x": 13, "y": 2 },
+ { "x": 14, "y": 2 },
+ { "x": 10, "y": 3 },
+ { "x": 11, "y": 3 },
+ { "x": 12, "y": 3 }
+ ]
+ }
+ }
+}
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/config.h b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/config.h
new file mode 100644
index 00000000000..fac93539596
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/config.h
@@ -0,0 +1,106 @@
+/*
+Copyright 2012 Jun Wako
+Copyright 2021 @dlford
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+//#define USE_MATRIX_I2C
+
+/* Select hand configuration */
+
+// #define MASTER_LEFT
+// #define MASTER_RIGHT
+#define EE_HANDS // ./util/docker_build.sh crkbd:dlford:dfu-split-[left|right] (or avrdude-split[left|right])
+
+#define TAPPING_TOGGLE 2 // number of taps to toggle TT
+#define TAPPING_TERM_PER_KEY // milliseconds from tap to hold for mod tap per key
+#define IGNORE_MOD_TAP_INTERRUPT // ignore hold mod if another tap occurs within tapping term
+#define PERMISSIVE_HOLD_PER_KEY // activate mod top hold earlier if another key is pressed AND released per key
+#define TAPPING_FORCE_HOLD_PER_KEY // disable double tap hold key repeat per key
+#undef MOUSEKEY_INTERVAL
+#undef MOUSEKEY_DELAY
+#undef MOUSEKEY_TIME_TO_MAX
+#undef MOUSEKEY_MAX_SPEED
+#undef MOUSEKEY_WHEEL_DELAY
+#define MK_KINETIC_SPEED
+#define MOUSEKEY_DELAY 100
+#define MOUSEKEY_INTERVAL 35
+#define MOUSEKEY_MOVE_DELTA 5
+#define MOUSEKEY_INITIAL_SPEED 1
+#define MOUSEKEY_DECELERATED_SPEED 10
+#define MOUSEKEY_BASE_SPEED 1200
+#define MOUSEKEY_ACCELERATED_SPEED 4800
+
+#ifdef RGB_MATRIX_ENABLE
+// # define RGB_DISABLE_TIMEOUT 300000 // number of milliseconds to wait until disabling effects
+// # define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+# define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+# define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
+# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
+# define RGB_MATRIX_HUE_STEP 8
+# define RGB_MATRIX_SAT_STEP 8
+# define RGB_MATRIX_VAL_STEP 8
+# define RGB_MATRIX_SPD_STEP 10
+
+// Enable animations
+// # define ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue speed is hue for secondary hue
+// # define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom speed controls how much gradient changes
+// # define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT // Static gradient left to right speed controls how much gradient changes
+// # define ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+// # define ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
+// # define ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
+// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
+// # define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
+// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
+// # define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+// # define ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+// # define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+// # define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+// # define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
+// # define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
+// # define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+// # define ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+// # define ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
+// # define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+// # define ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+// # define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
+// # define ENABLE_RGB_MATRIX_HUE_BREATHING // Hue shifts up a slight ammount at the same time then shifts back
+// # define ENABLE_RGB_MATRIX_HUE_PENDULUM // Hue shifts up a slight ammount in a wave to the right then back to the left
+# define ENABLE_RGB_MATRIX_HUE_WAVE // Hue shifts up a slight ammount and then back down in a wave to the right
+// # define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Required for the following two effects
+// # define ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
+// # define ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
+// # define RGB_MATRIX_KEYPRESSES // reacts to keypresses, required for the remaining effects
+// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue pulses keys hit to shifted hue then fades to current hue
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
+// # define ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
+// # define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
+#endif
+
+// Features I don't want, remove to save space
+// #define NO_ACTION_ONESHOT // Used by caps word
+#define NO_ACTION_FUNCTION
+#define NO_ACTION_MACRO
+#define NO_USB_STARTUP_CHECK
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/features/caps_word.c b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/features/caps_word.c
new file mode 100644
index 00000000000..ee295c73050
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/features/caps_word.c
@@ -0,0 +1,76 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/caps-word
+
+#include "caps_word.h"
+bool caps_word_enabled = false;
+
+bool process_caps_word(uint16_t keycode, keyrecord_t* record) {
+ static bool shifted = false;
+
+ if (!caps_word_enabled) {
+ // Pressing both shift keys at the same time enables caps word.
+ if (((get_mods() | get_oneshot_mods()) & MOD_MASK_SHIFT)
+ == MOD_MASK_SHIFT) {
+ clear_mods();
+ clear_oneshot_mods();
+ shifted = false;
+ caps_word_enabled = true;
+ return false;
+ }
+ return true;
+ }
+
+ if (!record->event.pressed) { return true; }
+
+ if (!((get_mods() | get_oneshot_mods()) & ~MOD_MASK_SHIFT)) {
+ switch (keycode) {
+ case QK_MOD_TAP ... QK_MOD_TAP_MAX:
+ case QK_LAYER_TAP ... QK_LAYER_TAP_MAX:
+ // Earlier return if this has not been considered tapped yet.
+ if (record->tap.count == 0) { return true; }
+ // Get the base tapping keycode of a mod- or layer-tap key.
+ keycode &= 0xff;
+ }
+
+ switch (keycode) {
+ // Letter keys should be shifted.
+ case KC_A ... KC_Z:
+ if (!shifted) { register_code(KC_LSFT); }
+ shifted = true;
+ return true;
+
+ // Keycodes that continue caps word but shouldn't get shifted.
+ case KC_1 ... KC_0:
+ case KC_BSPC:
+ case KC_MINS:
+ case KC_UNDS:
+ if (shifted) { unregister_code(KC_LSFT); }
+ shifted = false;
+ return true;
+
+ // Any other keycode disables caps word.
+ }
+ }
+
+ // Disable caps word.
+ caps_word_enabled = false;
+ if (shifted) { unregister_code(KC_LSFT); }
+ shifted = false;
+ return true;
+}
+
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/features/caps_word.h b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/features/caps_word.h
new file mode 100644
index 00000000000..a609a325443
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/features/caps_word.h
@@ -0,0 +1,36 @@
+// Copyright 2021 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//
+// Caps Word, activated by pressing both shift keys at the same time.
+//
+// This library implements "Caps Word", which is like conventional Caps Lock,
+// but automatically disables itself at the end of the word. This is useful for
+// typing all-caps identifiers like `MOD_MASK_ALT`.
+//
+// Caps Word is activated by pressing the left and right shift keys at the same
+// time. This way you don't need a dedicated key for using Caps Word. I've
+// tested that this works as expected with one-shot mods and Space Cadet Shift.
+// If your shift keys are mod-taps, activate Caps Word by holding both shift
+// mod-tap keys until the tapping term, release them, then begin typing.
+//
+// For full documentation, see
+// https://getreuer.info/posts/keyboards/caps-word
+
+#pragma once
+
+#include QMK_KEYBOARD_H
+
+bool process_caps_word(uint16_t keycode, keyrecord_t* record);
+extern bool caps_word_enabled;
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/keymap.c b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/keymap.c
new file mode 100644
index 00000000000..b403c2ce3b2
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/keymap.c
@@ -0,0 +1,385 @@
+/*
+Copyright 2019 @foostan
+Copyright 2020 Drashna Jaelre <@drashna>
+Copyright 2021 @dlford
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+#include "features/caps_word.h"
+
+// Layers
+enum layers {
+ _QWERTY = 0,
+ _COLEMAK,
+ _NAVIGATION,
+ _SPECIAL,
+ _MOUSE,
+};
+
+static uint16_t default_animation = RGB_MATRIX_CYCLE_SPIRAL;
+static int default_speed = 50;
+static uint16_t secondary_animation = RGB_MATRIX_HUE_WAVE;
+static int secondary_speed = 150;
+static bool is_macro_recording = false;
+
+// Init
+void keyboard_post_init_user(void) {
+ rgb_matrix_sethsv_noeeprom(HSV_PURPLE);
+ rgb_matrix_mode_noeeprom(default_animation);
+ rgb_matrix_set_speed_noeeprom(default_speed);
+}
+
+// Permissive hold per key
+bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LT(3, KC_SPC):
+ return true; // Enable permissive hold
+ case LT(2, KC_TAB):
+ return true;
+ default:
+ return false; // Disable permissive hold
+ }
+}
+
+// Tapping force hold per key
+bool get_tapping_force_hold(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case LT(3, KC_SPC):
+ return true; // Enable force hold
+ case LT(2, KC_TAB):
+ return true;
+ default:
+ return false; // Disable force hold
+ }
+}
+
+// Tapping term per key
+uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case C_S_T(KC_E):
+ case C_S_T(KC_I):
+ return 215;
+ default:
+ return 190;
+ }
+}
+
+// RGB timeout
+#define RGB_CUSTOM_TIMEOUT 5 // in minutes
+static uint16_t idle_timer = 0;
+static uint8_t halfmin_counter = 0;
+static bool led_on = true;
+void matrix_scan_user(void) {
+ if (is_keyboard_master()) {
+ // idle_timer needs to be set one time
+ if (idle_timer == 0) idle_timer = timer_read();
+
+ if (led_on && timer_elapsed(idle_timer) > 30000) {
+ halfmin_counter++;
+ idle_timer = timer_read();
+ }
+
+ if (led_on && halfmin_counter >= RGB_CUSTOM_TIMEOUT * 2) {
+ rgb_matrix_disable_noeeprom();
+ led_on = false;
+ halfmin_counter = 0;
+ }
+ }
+}
+
+// Macros
+enum macro_events {
+ M_KEYMAP = SAFE_RANGE,
+ M_COMM,
+ M_DOT,
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ // RGB resume
+ if (is_keyboard_master()) {
+ if (record->event.pressed) {
+ if (led_on == false) {
+ rgb_matrix_enable_noeeprom();
+ led_on = true;
+ }
+ idle_timer = timer_read();
+ halfmin_counter = 0;
+ }
+ }
+
+ // Caps word
+ if (!process_caps_word(keycode, record)) { return false; }
+
+ // Macros
+ const uint8_t mods = get_mods();
+ static uint8_t backstepCounter = 0;
+ static bool keyDown = false;
+ switch (keycode) {
+ case M_KEYMAP:
+ if (record->event.pressed) {
+ SEND_STRING("https://raw.githubusercontent.com/dlford/qmk_firmware/master/keyboards/crkbd/keymaps/dlford/legends.svg");
+ }
+ return false;
+ case M_COMM:
+ if (record->event.pressed) {
+ if ((mods & MOD_BIT(KC_LCTL)) && (mods & MOD_BIT(KC_LSFT) && (mods & MOD_BIT(KC_LALT)))) {
+ backstepCounter = 1;
+ clear_mods();
+ SEND_STRING("<>");
+ } else if ((mods & MOD_BIT(KC_LCTL)) && (mods & MOD_BIT(KC_LALT))) {
+ backstepCounter = 1;
+ clear_mods();
+ SEND_STRING("()");
+ } else if ((mods & MOD_BIT(KC_LCTL)) && (mods & MOD_BIT(KC_LSFT))) {
+ backstepCounter = 2;
+ clear_mods();
+ SEND_STRING("{};");
+ } else if (mods & MOD_BIT(KC_LCTL)) {
+ backstepCounter = 1;
+ clear_mods();
+ SEND_STRING("{}");
+ } else if ((mods & MOD_BIT(KC_LALT)) && (mods & MOD_BIT(KC_LSFT))) {
+ backstepCounter = 2;
+ clear_mods();
+ SEND_STRING("[];");
+ } else if (mods & MOD_BIT(KC_LALT)) {
+ backstepCounter = 1;
+ clear_mods();
+ SEND_STRING("[]");
+ } else {
+ keyDown = true;
+ register_code(KC_COMM);
+ return true;
+ }
+ if (backstepCounter) {
+ while (backstepCounter > 0) {
+ tap_code(KC_LEFT);
+ backstepCounter--;
+ }
+ set_mods(mods);
+ }
+ } else {
+ if (keyDown) {
+ unregister_code(KC_COMM);
+ keyDown = false;
+ return true;
+ }
+ }
+ return false;
+ case M_DOT:
+ if (record->event.pressed) {
+ if (mods & MOD_BIT(KC_LCTL)) {
+ clear_mods();
+ SEND_STRING("=>");
+ } else if (mods & MOD_BIT(KC_LALT)) {
+ clear_mods();
+ SEND_STRING("->");
+ } else {
+ keyDown = true;
+ register_code(KC_DOT);
+ return true;
+ }
+ } else {
+ if (keyDown) {
+ unregister_code(KC_DOT);
+ keyDown = false;
+ return true;
+ }
+ }
+ set_mods(mods);
+ return false;
+ }
+
+ return true;
+}
+
+// RGB Layers (Enable animations in config.h)
+layer_state_t layer_state_set_user(layer_state_t state) {
+ switch (get_highest_layer(state)) {
+ case _SPECIAL:
+ rgb_matrix_sethsv_noeeprom(HSV_ORANGE);
+ rgb_matrix_set_speed_noeeprom(secondary_speed);
+ rgb_matrix_mode_noeeprom(secondary_animation);
+ break;
+ case _NAVIGATION:
+ rgb_matrix_sethsv_noeeprom(HSV_BLUE);
+ rgb_matrix_set_speed_noeeprom(secondary_speed);
+ rgb_matrix_mode_noeeprom(secondary_animation);
+ break;
+ case _MOUSE:
+ rgb_matrix_sethsv_noeeprom(HSV_GREEN);
+ rgb_matrix_set_speed_noeeprom(secondary_speed);
+ rgb_matrix_mode_noeeprom(secondary_animation);
+ break;
+ default:
+ rgb_matrix_sethsv_noeeprom(HSV_PURPLE);
+ rgb_matrix_set_speed_noeeprom(default_speed);
+ rgb_matrix_mode_noeeprom(default_animation);
+ break;
+ }
+ return state;
+}
+
+// Dynamic Macro Recording Backlight
+void dynamic_macro_record_start_user(void) {
+ is_macro_recording = true;
+}
+
+void dynamic_macro_record_end_user(int8_t direction) {
+ is_macro_recording = false;
+}
+
+// Indicators
+void rgb_matrix_indicators_user(void) {
+ if (host_keyboard_led_state().caps_lock || caps_word_enabled) {
+ // Left master
+ rgb_matrix_set_color(3, RGB_RED);
+ // Right master
+ rgb_matrix_set_color(21, RGB_RED);
+ }
+ if (is_macro_recording) {
+ // Left master
+ rgb_matrix_set_color(4, RGB_ORANGE);
+ // Right master
+ rgb_matrix_set_color(22, RGB_ORANGE);
+ }
+ if (default_layer_state - 1 == _COLEMAK) {
+ // Left master
+ rgb_matrix_set_color(5, RGB_GREEN);
+ // Right master
+ rgb_matrix_set_color(23, RGB_GREEN);
+ }
+}
+
+// Quantum keys / Abbreviations
+enum custom_keycodes {
+ VVV = KC_TRNS,
+ XXX = KC_NO,
+ CSA_Q = MEH_T(KC_Q),
+ CSA_F1 = MEH_T(KC_F1),
+ CSA_1 = MEH_T(KC_1),
+ CA_W = LCA_T(KC_W),
+ CA_F2 = LCA_T(KC_F2),
+ CA_2 = LCA_T(KC_2),
+ CS_E = C_S_T(KC_E),
+ CS_F = C_S_T(KC_F),
+ CS_I = C_S_T(KC_I),
+ CS_U = C_S_T(KC_U),
+ CS_F3 = C_S_T(KC_F3),
+ CS_3 = C_S_T(KC_3),
+ CS_F8 = C_S_T(KC_F8),
+ CS_8 = C_S_T(KC_8),
+ CA_O = LCA_T(KC_O),
+ CA_Y = LCA_T(KC_Y),
+ CA_F9 = LCA_T(KC_F9),
+ CA_9 = LCA_T(KC_9),
+ CSA_P = MEH_T(KC_P),
+ CSA_SCLN = MEH_T(KC_SCLN),
+ CSA_F10 = MEH_T(KC_F10),
+ CSA_0 = MEH_T(KC_0),
+ LGUI_A = LGUI_T(KC_A),
+ LGUI_FIND = LGUI_T(KC_FIND),
+ LGUI_GRV = LGUI_T(KC_GRV),
+ LALT_S = LALT_T(KC_S),
+ LALT_R = LALT_T(KC_R),
+ LALT_HOME = LALT_T(KC_HOME),
+ LCTL_D = LCTL_T(KC_D),
+ LCTL_S = LCTL_T(KC_S),
+ LCTL_PGUP = LCTL_T(KC_PGUP),
+ LCTL_LBRC = LCTL_T(KC_LBRC),
+ LSFT_F = LSFT_T(KC_F),
+ _LSFT_T = LSFT_T(KC_T),
+ LSFT_PGDN = LSFT_T(KC_PGDN),
+ LSFT_RBRC = LSFT_T(KC_RBRC),
+ RSFT_J = RSFT_T(KC_J),
+ RSFT_N = RSFT_T(KC_N),
+ RSFT_DOWN = RSFT_T(KC_DOWN),
+ RSFT_MINS = RSFT_T(KC_MINS),
+ RCTL_K = RCTL_T(KC_K),
+ RCTL_E = RCTL_T(KC_E),
+ RCTL_UP = RCTL_T(KC_UP),
+ RCTL_EQL = RCTL_T(KC_EQL),
+ RALT_L = RALT_T(KC_L),
+ RALT_I = RALT_T(KC_I),
+ RALT_RGHT = RALT_T(KC_RGHT),
+ RALT_BSLS = RALT_T(KC_BSLS),
+ RGUI_SCLN = RGUI_T(KC_SCLN),
+ RGUI_O = RGUI_T(KC_O),
+ RGUI_F11 = RGUI_T(KC_F11),
+ RGUI_QUOT = RGUI_T(KC_QUOT),
+ LT3_SPC = LT(3,KC_SPC),
+ LT2_TAB = LT(2,KC_TAB),
+ DF_QWERTY = DF(0),
+ DF_COLEMAK = DF(1),
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_QWERTY] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ CSA_Q, CA_W, CS_E, KC_R, KC_T, KC_Y, KC_U, CS_I, CA_O, CSA_P,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ LGUI_A, LALT_S, LCTL_D, LSFT_F, KC_G, KC_H, RSFT_J, RCTL_K, RALT_L, RGUI_SCLN,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, M_COMM, M_DOT, KC_SLSH,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, LT3_SPC, KC_BSPC, KC_DEL, LT2_TAB, KC_ENT
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+ [_COLEMAK] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ CSA_Q, CA_W, CS_F, KC_P, KC_G, KC_J, KC_L, CS_U, CA_Y, CSA_SCLN,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ LGUI_A, LALT_R, LCTL_S, _LSFT_T, KC_D, KC_H, RSFT_N, RCTL_E, RALT_I, RGUI_O,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, M_COMM, M_DOT, KC_SLSH,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ KC_ESC, LT3_SPC, KC_BSPC, KC_DEL, LT2_TAB, KC_ENT
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+ [_NAVIGATION] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ CSA_F1, CA_F2, CS_F3, KC_F4, KC_F5, KC_F6, KC_F7, CS_F8, CA_F9, CSA_F10,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ LGUI_FIND,LALT_HOME,LCTL_PGUP,LSFT_PGDN,KC_END, KC_LEFT,RSFT_DOWN,RCTL_UP,RALT_RGHT,RGUI_F11,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ DF_QWERTY,DF_COLEMAK,KC_VOLD, KC_VOLU, RESET, KC_MUTE, KC_MPLY, KC_MPRV, KC_MNXT, KC_F12,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ VVV, TG(4), VVV, VVV, VVV, VVV
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+ [_SPECIAL] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ CSA_1, CA_2, CS_3, KC_4, KC_5, KC_6, KC_7, CS_8, CA_9, CSA_0,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ LGUI_GRV,KC_LALT,LCTL_LBRC,LSFT_RBRC,KC_LPRN, KC_RPRN,RSFT_MINS,RCTL_EQL,RALT_BSLS,RGUI_QUOT,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ KC_TILD, KC_CAPS, KC_LCBR, KC_RCBR,TG(_MOUSE), EEP_RST, KC_UNDS, KC_PLUS, KC_PIPE, KC_DQUO,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ VVV, VVV, VVV, VVV, TG(4), VVV
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+ [_MOUSE] = LAYOUT_split_3x5_3(
+ //|--------------------------------------------| |--------------------------------------------|
+ KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, DM_REC1, KC_WSTP, KC_ACL2, KC_ACL1, KC_ACL0, KC_WFWD,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, DM_PLY1, KC_WREF, KC_BTN1, KC_BTN2, KC_BTN3, KC_WBAK,
+ //|--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------|
+ M_KEYMAP,KC_BTN3, KC_BTN2, KC_BTN1, XXX, XXX, XXX, XXX, XXX, XXX,
+ //|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
+ VVV, TG(4), VVV, VVV, TG(4), VVV
+ // |--------+--------+--------| |--------+--------+--------|
+ ),
+};
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/rules.mk b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/rules.mk
new file mode 100644
index 00000000000..f40ace96060
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/dlford/rules.mk
@@ -0,0 +1,17 @@
+# Includes
+SRC += features/caps_word.c
+
+# Build Options
+# change yes to no to disable
+#
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+DYNAMIC_MACRO_ENABLE = yes # Create macros on the fly
+RGB_MATRIX_DRIVER = WS2812
+INDICATOR_LIGHTS = yes # Enable indicator lights for caps lock, etc.
+# TAP_DANCE_ENABLE = yes # Send different keycodes if tapped multiple times
+# KEY_OVERRIDE_ENABLE = yes # Override key combos
+# COMBO_ENABLE = yes # Custom key combos
+
+LTO_ENABLE = yes
+RGBLIGHT_SUPPORTED = yes
+RGB_MATRIX_SUPPORTED = yes
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/rules.mk b/keyboards/handwired/dactyl_manuform/3x5_3/rules.mk
new file mode 100644
index 00000000000..12812870e37
--- /dev/null
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/rules.mk
@@ -0,0 +1,25 @@
+# Build Options
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina
+
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = yes # Audio output
+
+RGB_MATRIX_ENABLE = yes # Enable WS2812 RGB matrix
+RGB_MATRIX_DRIVER = WS2812
+SPLIT_KEYBOARD = yes
+
+RGBLIGHT_SUPPORTED = yes
+RGB_MATRIX_SUPPORTED = yes
+
+LAYOUTS = split_3x5_3
diff --git a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h
index d304814d7d8..c339370f8b4 100644
--- a/keyboards/handwired/dactyl_manuform/dactyl_manuform.h
+++ b/keyboards/handwired/dactyl_manuform/dactyl_manuform.h
@@ -22,6 +22,8 @@
# include "6x6_kinesis.h"
#elif defined(KEYBOARD_handwired_dactyl_manuform_6x7)
# include "6x7.h"
+#elif defined(KEYBOARD_handwired_dactyl_manuform_3x5_3)
+# include "3x5_3.h"
#elif defined(KEYBOARD_handwired_dactyl_manuform_dmote_62key)
# include "62key.h"
#endif
diff --git a/keyboards/handwired/dactyl_manuform/readme.md b/keyboards/handwired/dactyl_manuform/readme.md
index da4ac2ad685..560562f5442 100644
--- a/keyboards/handwired/dactyl_manuform/readme.md
+++ b/keyboards/handwired/dactyl_manuform/readme.md
@@ -1,9 +1,8 @@
-Dactyl Manuform (4x5, 5x6, 5x7, 6x6, 6x7)
-======
+# Dactyl Manuform (4x5, 5x6, 5x7, 6x6, 6x7)
+
the [Dactyl-Manuform](https://github.com/tshort/dactyl-keyboard) is a split curved keyboard based on the design of [adereth dactyl](https://github.com/adereth/dactyl-keyboard) and thumb cluster design of the [manuform](https://geekhack.org/index.php?topic=46015.0) keyboard, the hardware is similar to the let's split keyboard. all information needed for making one is in the first link.

-
## First Time Setup
Download or clone the `qmk_firmware` repo and navigate to its top level directory. Once your build environment is setup, you'll be able to generate the default .hex using:
@@ -15,6 +14,7 @@ $ make handwired/dactyl_manuform/YOUR_LAYOUT:YOUR_KEYMAP_NAME
```
example:
+
```
$ make handwired/dactyl_manuform/4x5:default
```
@@ -27,21 +27,24 @@ dactyl_manuform_YOUR_LAYOUT_YOUR_KEYMAP_NAME.hex
For more information on customizing keymaps, take a look at the primary documentation for [Customizing Your Keymap](/docs/faq_keymap.md) in the main readme.md.
-
## Keymaps
### [Keymaps 4x5](/keyboards/handwired/dactyl_manuform/4x5/keymaps/)
#### Default
+
Simple QWERTY layout with 3 Layers.
+
#### Dvorak
### [Keymaps 5x6](/keyboards/handwired/dactyl_manuform/5x6/keymaps/)
#### Default
+
Just a copy of the Impstyle keymap. Feel free to adjust it.
#### Impstyle
+
A simple QWERTY keymap with 3 Layers. Both sides are connected via serial and the Left ist the master.
### [Keymaps 5x6_5](/keyboards/handwired/dactyl_manuform/5x6_5/keymaps/)
@@ -56,32 +59,43 @@ Similar to Default but adds support for the [Via](https://www.caniusevia.com/) k
some keys to accomodate that constraint.
### [Keymaps 5x7 aka almost Ergodox](/keyboards/handwired/dactyl_manuform/5x7/keymaps/)
+
#### Default
+
Keymap of Loligagger from geekhack.
### [Keymaps 6x6](/keyboards/handwired/dactyl_manuform/6x6/keymaps/)
#### Default
+
Simple QWERTY layout with 3 Layers.
### [Keymaps 6x7](/keyboards/handwired/dactyl_manuform/6x7/keymaps/)
#### Default
+
Simple QWERTY layout with 3 Layers.
+### [Keymaps 3x5_3](/keyboards/handwired/dactyl_manuform/3x5_3/keymaps/)
+
+#### Dlford
+
+QWERTY/Colemak layout with per key RGB and other features
+
## Required Hardware
Apart from diodes and key switches for the keyboard matrix in each half, you
will need:
-* 2 Arduino Pro Micros. You can find these on AliExpress for ≈3.50USD each.
-* 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 1 TRS cable
+- 2 Arduino Pro Micros. You can find these on AliExpress for ≈3.50USD each.
+- 2 TRRS sockets and 1 TRRS cable, or 2 TRS sockets and 1 TRS cable
Alternatively, you can use any sort of cable and socket that has at least 3
wires. If you want to use I2C to communicate between halves, you will need a
cable with at least 4 wires and 2x 4.7kΩ pull-up resistors
## Optional Hardware
+
A speaker can be hooked-up to either side to the `5` (`C6`) pin and `GND`, and turned on via `AUDIO_ENABLE`.
## Wiring
@@ -114,7 +128,6 @@ the keymaps in here are for the 4x5 layout of the keyboard only.
To flash your firmware take a look at: [Flashing Instructions and Bootloader Information](https://docs.qmk.fm/#/flashing)
-
## Choosing which board to plug the USB cable into (choosing Master)
Because the two boards are identical, the firmware has logic to differentiate the left and right board.
@@ -132,6 +145,7 @@ If you always plug the usb cable into the left board, nothing extra is needed as
### Setting the right hand as master
If you always plug the usb cable into the right board, add an extra flag to your `config.h`
+
```
#define MASTER_RIGHT
```
@@ -146,6 +160,7 @@ half is left handed or right handed. This makes it so that the same firmware
file will run on both hands instead of having to flash left and right handed
versions of the firmware to each half. To flash the EEPROM file for the left
half run:
+
```
make handwired/dactyl_promicro:default:dfu-split-left
make handwired/dactyl_promicro:default:dfu-split-right
@@ -159,9 +174,7 @@ layout and the right half with a Colemak layout using bootmagic's default layout
Then if you connect the left half to a computer by USB the keyboard will use QWERTY and Colemak when the
right half is connected.
-
-Notes on Using Pro Micro 3.3V
------------------------------
+## Notes on Using Pro Micro 3.3V
Do update the `F_CPU` parameter in `rules.mk` to `8000000` which reflects
the frequency on the 3.3V board.
From 802095097616abfa9ef9e91419fbbda2dcdf65e1 Mon Sep 17 00:00:00 2001
From: Daniel Weeks <29613475+xanimos@users.noreply.github.com>
Date: Fri, 22 Apr 2022 01:19:06 -0700
Subject: [PATCH 38/65] Added massdrop/ctrl:xanimos keymap (#16187)
Co-authored-by: xanimos
---
.../massdrop/ctrl/keymaps/xanimos/config.h | 132 ++++++
.../ctrl/keymaps/xanimos/config_led.c | 97 +++++
.../massdrop/ctrl/keymaps/xanimos/keymap.c | 410 ++++++++++++++++++
.../massdrop/ctrl/keymaps/xanimos/keymap.h | 129 ++++++
.../massdrop/ctrl/keymaps/xanimos/readme.md | 200 +++++++++
.../massdrop/ctrl/keymaps/xanimos/rules.mk | 14 +
6 files changed, 982 insertions(+)
create mode 100644 keyboards/massdrop/ctrl/keymaps/xanimos/config.h
create mode 100644 keyboards/massdrop/ctrl/keymaps/xanimos/config_led.c
create mode 100644 keyboards/massdrop/ctrl/keymaps/xanimos/keymap.c
create mode 100644 keyboards/massdrop/ctrl/keymaps/xanimos/keymap.h
create mode 100644 keyboards/massdrop/ctrl/keymaps/xanimos/readme.md
create mode 100644 keyboards/massdrop/ctrl/keymaps/xanimos/rules.mk
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/config.h b/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
new file mode 100644
index 00000000000..37987340cee
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/config.h
@@ -0,0 +1,132 @@
+/* Copyright 2022 Daniel Weeks (@xanimos)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+
+#define MODS_SHIFT (get_mods() & MOD_MASK_SHIFT)
+#define MODS_CTRL (get_mods() & MOD_MASK_CTRL)
+#define MODS_ALT (get_mods() & MOD_MASK_ALT)
+
+// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT) // Key combination that allows the use of magic commands (useful for debugging)
+
+// #define NO_DEBUG // Disable debugging
+// #define NO_PRINT // Disable printing/debugging using hid_listen
+// #define NO_ACTION_LAYER // Disable layers
+// #define NO_ACTION_TAPPING // Disable tap dance and other tapping features
+// #define NO_ACTION_ONESHOT // Disable one-shot modifiers
+// #define NO_ACTION_MACRO // Disable old style macro handling: MACRO() & action_get_macro
+#define TERMINAL_HELP
+#define MOUSEKEY_INTERVAL 20
+#define MOUSEKEY_DELAY 0
+#define MOUSEKEY_TIME_TO_MAX 60
+#define MOUSEKEY_MAX_SPEED 10
+#define MOUSEKEY_WHEEL_DELAY 0
+#define FORCE_NKRO // NKRO by default requires to be turned on, this forces it on during keyboard startup regardless of EEPROM setting. NKRO can still be turned off but will be turned on again if the keyboard reboots.
+// #define QMK_KEYS_PER_SCAN 4 // Allows sending more than one key per scan. By default, only one key event gets sent via process_record() per scan. This has little impact on most typing, but if you're doing a lot of chords, or your scan rate is slow to begin with, you can have some delay in processing key events. Each press and release is a separate event. For a keyboard with 1ms or so scan times, even a very fast typist isn't going to produce the 500 keystrokes a second needed to actually get more than a few ms of delay from this. But if you're doing chording on something with 3-4ms scan times? You probably want this.
+// #define STRICT_LAYER_RELEASE // Force a key release to be evaluated using the current layer stack instead of remembering which layer it came from (used for advanced cases)
+// #define LOCKING_SUPPORT_ENABLE // Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
+// #define LOCKING_RESYNC_ENABLE // Tries to keep switch state consistent with keyboard LED state
+#define TAPPING_TERM 200 // How long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too
+// #define TAPPING_TERM_PER_KEY // Enables handling for per key TAPPING_TERM settings
+// #define RETRO_TAPPING // Tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
+#define TAPPING_TOGGLE 2 // How many taps before triggering the toggle
+// #define PERMISSIVE_HOLD // Makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the TAPPING_TERM. See Permissive Hold for details
+// #define IGNORE_MOD_TAP_INTERRUPT // Makes it possible to do rolling combos (zx) with keys that convert to other keys on hold, by enforcing the TAPPING_TERM for both keys. See Mod tap interrupt for details
+// #define TAPPING_FORCE_HOLD // Makes it possible to use a dual role key as modifier shortly after having been tapped. See Hold after tap. Breaks any Tap Toggle functionality (TT or the One Shot Tap Toggle)
+// #define LEADER_TIMEOUT 300 // How long before the leader key times out. If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the LEADER_PER_KEY_TIMING option, which resets the timeout after each key is tapped.
+// #define LEADER_PER_KEY_TIMING // Sets the timer for leader key chords to run on each key press rather than overall
+// #define LEADER_KEY_STRICT_KEY_PROCESSING // Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
+// #define ONESHOT_TIMEOUT 300 // How long before oneshot times out
+// #define ONESHOT_TAP_TOGGLE 2 // How many taps before oneshot toggle is triggered
+// #define COMBO_COUNT 2 // Set this to the number of combos that you're using in the Combo feature.
+// #define COMBO_TERM 200 // How long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
+// #define TAP_CODE_DELAY 100 // Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
+// #define TAP_HOLD_CAPS_DELAY 80 // Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPSLOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
+
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+// #define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_ALPHAS_MODS // Sets the default mode, if none has been set
+// #define RGBLIGHT_HUE_STEP 12 // Units to step when in/decreasing hue
+// #define RGBLIGHT_SAT_STEP 25 // Units to step when in/decreasing saturation
+// #define RGBLIGHT_VAL_STEP 12 // Units to step when in/decreasing value (brightness)
+// #define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
+// #define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+// #define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
+// #define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
+// #define RGBLIGHT_ANIMATIONS // Run RGB animations
+// #define RGBLIGHT_ANIMATIONS // Enable all additional animation modes.
+// #define RGBLIGHT_EFFECT_ALTERNATING // Enable alternating animation mode.
+#define RGBLIGHT_EFFECT_BREATHING // Enable breathing animation mode.
+// #define RGBLIGHT_EFFECT_CHRISTMAS // Enable christmas animation mode.
+#define RGBLIGHT_EFFECT_KNIGHT // Enable knight animation mode.
+// #define RGBLIGHT_EFFECT_RAINBOW_MOOD // Enable rainbow mood animation mode.
+// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL // Enable rainbow swirl animation mode.
+// #define RGBLIGHT_EFFECT_RGB_TEST // Enable RGB test animation mode.
+#define RGBLIGHT_EFFECT_SNAKE // Enable snake animation mode.
+// #define RGBLIGHT_EFFECT_STATIC_GRADIENT // Enable static gradient mode.
+
+// #define RGBLIGHT_EFFECT_BREATHE_CENTER // If defined, used to calculate the curve for the breathing animation. Valid values are 1.0 to 2.7
+// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // The maximum brightness for the breathing mode. Valid values are 1 to 255
+// #define RGBLIGHT_EFFECT_CHRISTMAS_INTERVAL 1000 // How long to wait between light changes for the "Christmas" animation, in milliseconds
+// #define RGBLIGHT_EFFECT_CHRISTMAS_STEP 2 // The number of LEDs to group the red/green colors by for the "Christmas" animation
+#define RGBLIGHT_EFFECT_KNIGHT_LED_NUM RGBLED_NUM // The number of LEDs to have the "Knight" animation travel
+#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 3 // The number of LEDs to light up for the "Knight" animation
+#define RGBLIGHT_EFFECT_KNIGHT_OFFSET 0 // The number of LEDs to start the "Knight" animation from the start of the strip by
+// #define RGBLIGHT_RAINBOW_SWIRL_RANGE 255 // Range adjustment for the rainbow swirl effect to get different swirls
+#define RGBLIGHT_EFFECT_SNAKE_LENGTH 4 // The number of LEDs to light up for the "Snake" animation
+
+// This list in in the correct mode order. Next mode is the following line, previous mode is previous line. Loops around.
+// #undef ENABLE_RGB_MATRIX_SOLID_COLOR // Static single hue, no speed support
+// #undef ENABLE_RGB_MATRIX_ALPHAS_MODS // Static dual hue, speed is hue for secondary hue
+// #undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN // Static gradient top to bottom, speed controls how much gradient changes
+#undef ENABLE_RGB_MATRIX_BREATHING // Single hue brightness cycling animation
+#undef ENABLE_RGB_MATRIX_BAND_SAT // Single hue band fading saturation scrolling left to right
+#undef ENABLE_RGB_MATRIX_BAND_VAL // Single hue band fading brightness scrolling left to right
+#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT // Single hue 3 blade spinning pinwheel fades saturation
+#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL // Single hue 3 blade spinning pinwheel fades brightness
+#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT // Single hue spinning spiral fades saturation
+#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL // Single hue spinning spiral fades brightness
+// #undef ENABLE_RGB_MATRIX_CYCLE_ALL // Full keyboard solid hue cycling through full gradient
+#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT // Full gradient scrolling left to right
+#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN // Full gradient scrolling top to bottom
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN // Full gradient scrolling out to in
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL // Full dual gradients scrolling out to in
+// #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON // Full gradent Chevron shapped scrolling left to right
+#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL // Full gradient spinning pinwheel around center of keyboard
+#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL // Full gradient spinning spiral around center of keyboard
+#undef ENABLE_RGB_MATRIX_DUAL_BEACON // Full gradient spinning around center of keyboard
+#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON // Full tighter gradient spinning around center of keyboard
+#undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS // Full dual gradients spinning two halfs of keyboard
+// #undef ENABLE_RGB_MATRIX_RAINDROPS // Randomly changes a single key's hue
+// #undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS // Randomly changes a single key's hue and saturation
+// =================================================== Requires RGB_MATRIX_FRAMEBUFFER_EFFECTS =============================================================
+// #undef ENABLE_RGB_MATRIX_TYPING_HEATMAP // How hot is your WPM!
+// #undef ENABLE_RGB_MATRIX_DIGITAL_RAIN // That famous computer simulation
+// =================================================== RGB_MATRIX_KEYPRESSES OR RGB_MATRIX_KEYRELEASES =====================================================
+// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE // Static single hue, pulses keys hit to shifted hue then fades to current hue
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE // Pulses keys hit to hue & value then fades value out
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE // Hue & value pulse near a single key hit then fades value out
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE // Hue & value pulse near multiple key hits then fades value out
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS // Hue & value pulse the same column and row of a single key hit then fades value out
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS // Hue & value pulse the same column and row of multiple key hits then fades value out
+// #undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS // Hue & value pulse away on the same column and row of a single key hit then fades value out
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS // Hue & value pulse away on the same column and row of multiple key hits then fades value out
+// #undef ENABLE_RGB_MATRIX_SPLASH // Full gradient & value pulse away from a single key hit then fades value out
+#undef ENABLE_RGB_MATRIX_MULTISPLASH // Full gradient & value pulse away from multiple key hits then fades value out
+// #undef ENABLE_RGB_MATRIX_SOLID_SPLASH // Hue & value pulse away from a single key hit then fades value out
+#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH // Hue & value pulse away from multiple key hits then fades value out
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/config_led.c b/keyboards/massdrop/ctrl/keymaps/xanimos/config_led.c
new file mode 100644
index 00000000000..650b31477cb
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/config_led.c
@@ -0,0 +1,97 @@
+/* Copyright 2022 Daniel Weeks (@xanimos)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#ifdef RGB_MATRIX_ENABLE
+#include "ctrl.h"
+
+#include "md_rgb_matrix.h"
+#include "rgb_matrix.h"
+#include "config_led.h"
+
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7 },
+ { 16, 17, 18, 19, 20, 21, 22, 23 },
+ { 33, 34, 35, 36, 37, 38, 39, 40 },
+ { 50, 51, 52, 53, 54, 55, 56, 57 },
+ { 63, 64, 65, 66, 67, 68, 69, 70 },
+ { 76, 77, 78, 79, 80, 81, 82, 83 },
+ { 8, 9, 10, 11, 12, 13, 14, 15 },
+ { 24, 25, 26, 27, 28, 29, 30, 31 },
+ { 41, 42, 43, 44, 45, 46, 47, 48 },
+ { 58, 59, 60, 61, 62, 75, 49, 32 },
+ { 71, 72, 73, 74, 84, 85, 86, NO_LED }
+}, {
+ // KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS
+ { 7, 5 }, { 31, 5 }, { 43, 5 }, { 55, 5 }, { 67, 5 }, { 85, 5 }, { 97, 5 }, { 109, 5 },
+ { 121, 5 }, { 139, 5 }, { 151, 5 }, { 163, 5 }, { 175, 5 }, { 193, 5 }, { 205, 5 }, { 217, 5 },
+ // KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP
+ { 7, 20 }, { 19, 20 }, { 31, 20 }, { 43, 20 }, { 55, 20 }, { 67, 20 }, { 79, 20 }, { 91, 20 },
+ { 103, 20 }, { 115, 20 }, { 127, 20 }, { 139, 20 }, { 151, 20 }, { 169, 20 }, { 193, 20 }, { 205, 20 },
+ { 217, 20 },
+ // KC_TAB, KC_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
+ { 10, 30 }, { 25, 30 }, { 37, 30 }, { 49, 30 }, { 61, 30 }, { 73, 30 }, { 85, 30 }, { 97, 30 },
+ { 109, 30 }, { 121, 30 }, { 133, 30 }, { 145, 30 }, { 157, 30 }, { 172, 30 }, { 193, 30 }, { 205, 30 },
+ { 217, 30 },
+ // 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
+ { 11, 39 }, { 28, 39 }, { 40, 39 }, { 52, 39 }, { 64, 39 }, { 76, 39 }, { 88, 39 }, { 100, 39 },
+ { 112, 39 }, { 124, 39 }, { 136, 39 }, { 148, 39 }, { 168, 39 },
+ // 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
+ { 14, 49 }, { 34, 49 }, { 46, 49 }, { 58, 49 }, { 70, 49 }, { 82, 49 }, { 94, 49 }, { 106, 49 },
+ { 118, 49 }, { 130, 49 }, { 142, 49 }, { 165, 49 }, { 205, 49 },
+ // KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ { 8, 59 }, { 23, 59 }, { 38, 59 }, { 83, 59 }, { 129, 59 }, { 144, 59 }, { 159, 59 }, { 174, 59 },
+ { 193, 59 }, { 205, 59 }, { 217, 59 },
+ // Underglow / Border
+ { 224, 64 }, { 204, 64 }, { 186, 64 }, { 167, 64 }, { 149, 64 }, { 130, 64 }, { 112, 64 }, { 94, 64 },
+ { 75, 64 }, { 57, 64 }, { 38, 64 }, { 20, 64 }, { 0, 64 }, { 0, 47 }, { 0, 32 }, { 0, 17 },
+ { 0, 0 }, { 20, 0 }, { 38, 0 }, { 57, 0 }, { 75, 0 }, { 94, 0 }, { 112, 0 }, { 130, 0 },
+ { 149, 0 }, { 167, 0 }, { 186, 0 }, { 204, 0 }, { 224, 0 }, { 224, 17 }, { 224, 32 }, { 224, 47 }
+}, {
+ // KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS
+ 1, 4, 4, 4, 4, 1, 1, 1,
+ 1, 4, 4, 4, 4, 1, 1, 1,
+ // 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
+ 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 1, 1, 1,
+ 1,
+ // KC_TAB, KC_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
+ 1, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 1, 1,
+ 1,
+ // 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
+ 1, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 1,
+ // 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
+ 1, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 1, 1,
+ // KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ 1, 1, 1, 4, 1, 1, 1, 1,
+ 1, 1, 1,
+ // Underglow / Border
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2
+} };
+
+
+#ifdef USB_LED_INDICATOR_ENABLE
+void rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {
+ md_rgb_matrix_indicators_advanced(led_min, led_max);
+}
+#endif // USB_LED_INDICATOR_ENABLE
+
+#endif
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/keymap.c b/keyboards/massdrop/ctrl/keymaps/xanimos/keymap.c
new file mode 100644
index 00000000000..c7bc285eda9
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/keymap.c
@@ -0,0 +1,410 @@
+/* Copyright 2022 Daniel Weeks (@xanimos)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "keymap.h"
+
+static uint16_t idle_timer; // Idle LED timeout timer
+static uint8_t idle_second_counter; // Idle LED seconds counter, counts seconds not milliseconds
+static uint8_t key_event_counter; // This counter is used to check if any keys are being held
+
+static const char * sendstring_commands[] = {
+ "git init",
+ "git clone ",
+ "git add ",
+ "git diff ",
+ "git reset --soft ",
+ "git branch --list",
+ "git checkout ",
+ "git remote add ",
+ "git fetch ",
+ "git pull",
+ "git pull upstream ",
+ "git push",
+ "git push -u origin ",
+ "git push --force-with-lease",
+ "git commit ",
+ "git commit -m \": [TFS-]\"",
+ "git status",
+ "git log",
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_KL] = LAYOUT(
+ // ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 PRINT SCLCK PAUSE
+ KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK,RCS(KC_M),
+ // ~ 1 2 3 4 5 6 7 8 9 0 - = BCKSP INS HOME PGUP
+ KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL, KC_BSPC, KC_INS , KC_HOME, KC_PGUP,
+ // TAB Q W E R T Y U I O P [ ] \ DEL END PGDN
+ KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN,
+ // CAPS A S D F G H J K L ; ' ENTER
+ 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 ,
+ // SHIFT Z X C V B N M , . / RSHIFT UP
+ KC_LSPO, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSPC, KC_UP ,
+ // CTRL GUI ALT SPACE RALT MENU RGUI RCTRL LEFT DOWN RIGHT
+ KC_LCTRL, KC_LGUI, KC_LALT, KC_SPC, TD(TD_FN_SWITCH), KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [_FL] = LAYOUT(
+ // ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 PRINT SCLCK PAUSE
+ _______, ROUT_TG, ROUT_FM, ROUT_VD, ROUT_VI, _______, _______, _______, _______, _______, _______, KC_WAKE, KC_SLEP, KC_PAUS, _______, KC_MUTE,
+ // ~ 1 2 3 4 5 6 7 8 9 0 - = BCKSP INS HOME PGUP
+ RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPLY, KC_VOLU,
+ // TAB Q W E R T Y U I O P [ ] \ DEL END PGDN
+ _______, RGB_MOD, RGB_SPI, RGB_VAI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD,
+ // CAPS A S D F G H J K L ; ' ENTER
+ _______,RGB_RMOD, RGB_SPD, RGB_VAD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
+ // SHIFT Z X C V B N M , . / RSHIFT UP
+ _______, _______, _______,COPY_ALL, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, TOG_NPD, KC_BRIU,
+ // CTRL GUI ALT SPACE RALT MENU RGUI RCTRL LEFT DOWN RIGHT
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, _______
+ ),
+ [_GL] = LAYOUT(
+ // ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 PRINT SCLCK PAUSE
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // ~ 1 2 3 4 5 6 7 8 9 0 - = BCKSP INS HOME PGUP
+ G_INIT, G_CLONE, G_REMTE, G_RESET, G_PSFWL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // TAB Q W E R T Y U I O P [ ] \ DEL END PGDN
+ _______, G_PUPST, G_PULL, G_PSORG, G_PUSH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // CAPS A S D F G H J K L ; ' ENTER
+ _______, G_ADD, G_STAT, G_DIFF, G_FETCH, _______, _______, _______, _______, _______, _______, _______, _______,
+ // SHIFT Z X C V B N M , . / RSHIFT UP
+ _______, G_LOG, G_CHECK, G_COMM, G_COMSG, G_BRANH, _______, _______, _______, _______, _______, _______, _______,
+ // CTRL GUI ALT SPACE RALT MENU RGUI RCTRL LEFT DOWN RIGHT
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ [_NUMPAD] = LAYOUT(
+ // ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 PRINT SCLCK PAUSE
+ TOG_NPD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // ~ 1 2 3 4 5 6 7 8 9 0 - = BCKSP INS HOME PGUP
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // TAB Q W E R T Y U I O P [ ] \ DEL END PGDN
+ _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, _______, _______, _______,
+ // CAPS A S D F G H J K L ; ' ENTER
+ _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______,
+ // SHIFT Z X C V B N M , . / RSHIFT UP
+ _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PDOT, _______, _______, _______, _______,
+ // CTRL GUI ALT SPACE RALT MENU RGUI RCTRL LEFT DOWN RIGHT
+ _______, _______, _______, KC_P0, _______, _______, _______, _______, _______, _______, _______
+ ),
+ /*
+ [X] = LAYOUT(
+ // ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 PRINT SCLCK PAUSE
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // ~ 1 2 3 4 5 6 7 8 9 0 - = BCKSP INS HOME PGUP
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // TAB Q W E R T Y U I O P [ ] \ DEL END PGDN
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // CAPS A S D F G H J K L ; ' ENTER
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // SHIFT Z X C V B N M , . / RSHIFT UP
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ // CTRL GUI ALT SPACE RALT MENU RGUI RCTRL LEFT DOWN RIGHT
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ ),
+ */
+};
+
+#define __OFF__ {0, 0, 0}
+
+const uint8_t PROGMEM ledmap[][DRIVER_LED_TOTAL][3] = {
+ [_FL] = {
+ // These remain on base layer rgb to see adjustments ;)
+ // |----------------------------------|
+ // _______, ROUT_TG, ROUT_FM, ROUT_VD, ROUT_VI, _______, _______, _______, _______, _______, _______, KC_WAKE, KC_SLEP, KC_PAUS, _______, KC_MUTE,
+ __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, YELLOW, YELLOW, ORANGE, __OFF__, GOLD,
+ // RGB_TOG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MSTP, KC_MPLY, KC_VOLU,
+ GOLD, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, RED, SPRING, ORANGE,
+ // _______, RGB_MOD, RGB_SPI, RGB_VAI, RGB_HUI, RGB_SAI, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MNXT, KC_VOLD,
+ __OFF__, ORANGE, GREEN, AZURE, GOLDEN, MAGENT, __OFF__, AZURE, AZURE, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, TEAL, TEAL, ORANGE,
+ // _______,RGB_RMOD, RGB_SPD, RGB_VAD, RGB_HUD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______,
+ __OFF__, ORANGE, GREEN, AZURE, GOLDEN, MAGENT, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, _______, _______,COPY_ALL, _______, MD_BOOT, NK_TOGG, _______, _______, _______, _______, TO(_NUMPAD), KC_BRIU,
+ __OFF__, __OFF__, __OFF__, CORAL, __OFF__, RED, TURQ, __OFF__, __OFF__, __OFF__, __OFF__, CYAN, SPRING,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_BRID, _______
+ __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, SPRING, __OFF__
+ },
+ [_GL] = {
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__,
+ // G_INIT, G_CLONE, G_REMTE, G_RESET, G_PSFWL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ AZURE, CHART, CHART, RED, CORAL, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, G_PUPST, G_PULL, G_PSORG, G_PUSH, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ __OFF__, BLUE, PURPLE, MAGENT, PINK, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, G_ADD, G_STAT, G_DIFF, G_FETCH, _______, _______, _______, _______, _______, _______, _______, _______,
+ __OFF__, SPRING, GREEN, TURQ, TEAL, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, G_LOG, G_CHECK, G_COMM, G_COMSG, G_BRANH, _______, _______, _______, _______, _______, _______, _______,
+ __OFF__, CYAN, GOLDEN, YELLOW, GOLD, CHART, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+ __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__
+ },
+ [_NUMPAD] = {
+ // TO(_KL), _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RED, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, _______, _______, _______, _______, _______, _______, _______, _______,
+ __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, GREEN, GREEN, GREEN, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______, _______,
+ __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, TURQ, TURQ, TURQ, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PDOT, _______, _______, _______,
+ __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, CYAN, CYAN, CYAN, AZURE, __OFF__, __OFF__, __OFF__, __OFF__,
+ // _______, _______, _______, KC_P0, _______, _______, _______, _______, _______, _______, _______
+ __OFF__, __OFF__, __OFF__, CYAN, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__, __OFF__
+ },
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+ // Enable or disable debugging
+ debug_enable = false;
+ debug_matrix = false;
+ debug_keyboard = false;
+ debug_mouse = false;
+
+ idle_second_counter = 0; // Counter for number of seconds keyboard has been idle.
+ key_event_counter = 0; // Counter to determine if keys are being held, neutral at 0.
+ rgb_time_out_seconds = RGB_DEFAULT_TIME_OUT; // RGB timeout initialized to its default configure in keymap.h
+ rgb_time_out_enable = false; // Disable RGB timeout by default. Enable using toggle key.
+ rgb_time_out_user_value = false; // Has to have the same initial value as rgb_time_out_enable.
+ rgb_enabled_flag = true; // Initially, keyboard RGB is enabled. Change to false config.h initializes RGB disabled.
+ rgb_time_out_fast_mode_enabled = false; // RGB timeout fast mode disabled initially.
+ rgb_time_out_saved_flag = rgb_matrix_get_flags(); // Save RGB matrix state for when keyboard comes back from ide.
+};
+
+void keyboard_post_init_user(void) {
+ rgb_matrix_enable();
+}
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+ if(rgb_time_out_enable && rgb_enabled_flag) {
+ // If the key event counter is not zero then some key was pressed down but not released, thus reset the timeout counter.
+ if (key_event_counter) {
+ idle_second_counter = 0;
+ } else if (timer_elapsed(idle_timer) > MILLISECONDS_IN_SECOND) {
+ idle_second_counter++;
+ idle_timer = timer_read();
+ }
+
+ if (idle_second_counter >= rgb_time_out_seconds) {
+ rgb_time_out_saved_flag = rgb_matrix_get_flags();
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ rgb_enabled_flag = false;
+ idle_second_counter = 0;
+ }
+ }
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ static uint32_t key_timer;
+
+ // Increment key event counter for every press and decrement for every release.
+ if (record->event.pressed) {
+ key_event_counter++;
+
+ } else {
+ key_event_counter--;
+ }
+
+ if (rgb_time_out_enable) {
+ idle_timer = timer_read();
+ // Reset the seconds counter. Without this, something like press> leave x seconds> press, would be x seconds on the effective counter not 0 as it should.
+ idle_second_counter = 0;
+ if (!rgb_enabled_flag) {
+ rgb_matrix_enable_noeeprom();
+ rgb_matrix_set_flags(rgb_time_out_saved_flag);
+ rgb_enabled_flag = true;
+ }
+ }
+
+ switch (keycode) {
+ case MD_BOOT:
+ if (record->event.pressed) {
+ key_timer = timer_read32();
+ } else {
+ if (timer_elapsed32(key_timer) >= 500) {
+ reset_keyboard();
+ }
+ }
+ return false;
+ }
+
+ if (record->event.pressed) {
+ switch (keycode) {
+ case RGB_TOG:
+ rgb_time_out_enable = rgb_time_out_user_value;
+ switch (rgb_matrix_get_flags()) {
+ case LED_FLAG_ALL: {
+ rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER: {
+ rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
+ rgb_matrix_set_color_all(0, 0, 0);
+ }
+ break;
+ case LED_FLAG_UNDERGLOW: {
+ // This line is for LED idle timer. It disables the toggle so you can turn off LED completely if you like
+ rgb_time_out_enable = false;
+ rgb_matrix_set_flags(LED_FLAG_NONE);
+ rgb_matrix_disable_noeeprom();
+ }
+ break;
+ default: {
+ rgb_matrix_set_flags(LED_FLAG_ALL);
+ rgb_matrix_enable_noeeprom();
+ }
+ break;
+ }
+ return false;
+ // ======================================================== CUSTOM KEYCOADS BELOW ========================================================
+ case COPY_ALL:
+ // Selects all and text and copy
+ SEND_STRING(SS_LCTRL("ac"));
+ return false;
+ case ROUT_TG:
+ // Toggle idle LED timeout on or off
+ rgb_time_out_enable = !rgb_time_out_enable;
+ rgb_time_out_user_value = rgb_time_out_enable;
+ return false;
+ case ROUT_VI:
+ // Increase idle LED timeout value in seconds
+ // Only increase if current value is lower than RGB_TIME_OUT_MAX. Don't care what value the result will be
+ // Modity RGB_TIME_OUT_STEP for bigger or smaller increments
+ if (!rgb_time_out_fast_mode_enabled && rgb_time_out_seconds <= RGB_TIME_OUT_MAX) {
+ rgb_time_out_seconds += RGB_TIME_OUT_STEP;
+ }
+ return false;
+ case ROUT_VD:
+ // Decrease idle LED timeout value in seconds
+ // Only decrease if current value is higher than minimum value and the result is larger than zero
+ // Modity RGB_TIME_OUT_STEP for bigger or smaller decrements
+ if (!rgb_time_out_fast_mode_enabled && rgb_time_out_seconds > RGB_TIME_OUT_MIN) {
+ rgb_time_out_seconds -= RGB_TIME_OUT_STEP;
+ }
+ return false;
+ case ROUT_FM:
+ if (rgb_time_out_fast_mode_enabled) {
+ rgb_time_out_seconds = rgb_time_out_saved_seconds;
+ } else {
+ rgb_time_out_saved_seconds = rgb_time_out_seconds;
+ rgb_time_out_seconds = RGB_FAST_MODE_TIME_OUT;
+ }
+ rgb_time_out_fast_mode_enabled = !rgb_time_out_fast_mode_enabled;
+ return false;
+ case G_INIT ... G_LOG:
+ send_string_with_delay(sendstring_commands[keycode - G_INIT], 5);
+ return false;
+ case TOG_NPD:
+ if (get_highest_layer(layer_state) != _NUMPAD) {
+ layer_move(_NUMPAD);
+ } else {
+ layer_move(_KL);
+ }
+ return false;
+ }
+ }
+ return true;
+}
+
+void set_layer_color(int layer) {
+ if (layer == 0) { return; }
+ for (int i = 0; i < DRIVER_LED_TOTAL; i++) {
+ HSV hsv = {
+ .h = pgm_read_byte(&ledmap[layer][i][0]),
+ .s = pgm_read_byte(&ledmap[layer][i][1]),
+ .v = pgm_read_byte(&ledmap[layer][i][2]),
+ };
+ if (hsv.h || hsv.s || hsv.v) {
+ RGB rgb = hsv_to_rgb(hsv);
+ float f = (float)rgb_matrix_config.hsv.v / UINT8_MAX;
+ rgb_matrix_set_color(i, f * rgb.r, f * rgb.g, f * rgb.b);
+ continue;
+ }
+ if(layer == _FL && i <= 4 && i >= 1) {
+ continue; // Leave RGB for F1-F4 of function layer to adjust RGB settings
+ }
+
+ rgb_matrix_set_color(i, 0, 0, 0);
+ }
+}
+
+void rgb_matrix_indicators_user(void) {
+ if (disable_layer_color ||
+ rgb_matrix_get_flags() == LED_FLAG_NONE ||
+ rgb_matrix_get_flags() == LED_FLAG_UNDERGLOW) {
+ return;
+ }
+ set_layer_color(get_highest_layer(layer_state));
+}
+
+
+
+td_state_t cur_dance(qk_tap_dance_state_t *state) {
+ if (state->pressed && !state->interrupted) {
+ if (state->count == 1) { return TD_SINGLE_HOLD; }
+ return TD_DOUBLE_HOLD;
+ }
+ return TD_UNKNOWN;
+}
+
+static td_tap_t fn_tap_state = {
+ .is_press_action = true,
+ .state = TD_NONE
+};
+
+void fn_tap_finished(qk_tap_dance_state_t *state, void *user_data) {
+ fn_tap_state.state = cur_dance(state);
+ switch (fn_tap_state.state) {
+ case TD_SINGLE_HOLD:
+ // set function layer
+ layer_move(_FL);
+ break;
+ case TD_DOUBLE_HOLD:
+ // set git layer
+ layer_move(_GL);
+ break;
+ case TD_UNKNOWN:
+ register_code(KC_APP);
+ break;
+ default:
+ break;
+ }
+}
+
+void fn_tap_reset(qk_tap_dance_state_t *state, void *user_data) {
+ switch (fn_tap_state.state) {
+ case TD_UNKNOWN:
+ unregister_code(KC_APP);
+ break;
+ case TD_DOUBLE_HOLD:
+ case TD_SINGLE_HOLD:
+ // Set default layer if we didn't activate numpad layer in function
+ if (get_highest_layer(layer_state) != _NUMPAD) {
+ layer_move(_KL);
+ }
+ break;
+ break;
+ default:
+ break;
+ }
+ fn_tap_state.state = TD_NONE;
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+ [TD_FN_SWITCH] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, fn_tap_finished, fn_tap_reset)
+};
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/keymap.h b/keyboards/massdrop/ctrl/keymaps/xanimos/keymap.h
new file mode 100644
index 00000000000..4f5238e7021
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/keymap.h
@@ -0,0 +1,129 @@
+/* Copyright 2022 Daniel Weeks (@xanimos)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+#include
+#include
+
+#define MILLISECONDS_IN_SECOND 1000
+
+// These are just to make it neater to use builtin HSV values in the keymap
+#define RED {HSV_RED}
+#define CORAL {HSV_CORAL}
+#define ORANGE {HSV_ORANGE}
+#define GOLDEN {HSV_GOLDENROD}
+#define GOLD {HSV_GOLD}
+#define YELLOW {HSV_YELLOW}
+#define CHART {HSV_CHARTREUSE}
+#define GREEN {HSV_GREEN}
+#define SPRING {HSV_SPRINGGREEN}
+#define TURQ {HSV_TURQUOISE}
+#define TEAL {HSV_TEAL}
+#define CYAN {HSV_CYAN}
+#define AZURE {HSV_AZURE}
+#define BLUE {HSV_BLUE}
+#define PURPLE {HSV_PURPLE}
+#define MAGENT {HSV_MAGENTA}
+#define PINK {HSV_PINK}
+
+//========================================================== CONFIGURABLE DEFAULTS ==========================================================
+#define RGB_DEFAULT_TIME_OUT 30
+#define RGB_FAST_MODE_TIME_OUT 3
+#define RGB_TIME_OUT_MAX 600
+#define RGB_TIME_OUT_MIN 10
+#define RGB_TIME_OUT_STEP 10
+
+extern rgb_config_t rgb_matrix_config;
+bool disable_layer_color;
+
+bool rgb_enabled_flag; // Current LED state flag. If false then LED is off.
+bool rgb_time_out_enable; // Idle LED toggle enable. If false then LED will not turn off after idle timeout.
+bool rgb_time_out_fast_mode_enabled; // Enable flag for RGB timeout fast mode
+bool rgb_time_out_user_value; // This holds the toggle value set by user with ROUT_TG. It's necessary as RGB_TOG changes timeout enable.
+uint16_t rgb_time_out_seconds; // Idle LED timeout value, in seconds not milliseconds
+uint16_t rgb_time_out_saved_seconds; // The saved user config for RGB timeout period
+led_flags_t rgb_time_out_saved_flag; // Store LED flag before timeout so it can be restored when LED is turned on again.
+
+enum layout_names {
+ _KL=0, // Keys Layout: The main keyboard layout that has all the characters
+ _FL, // Function Layout: The function key activated layout with default functions and some added ones
+ _GL, // GIT Layout: GIT shortcuts and macros
+ _NUMPAD, // Numpad Layout: Adds a numpad to the keys
+};
+
+// Tap Dance keycodes
+enum td_keycodes {
+ TD_FN_SWITCH = 0
+};
+
+// Define a type containing as many tapdance states as you need
+typedef enum {
+ TD_NONE,
+ TD_UNKNOWN,
+ TD_SINGLE_HOLD,
+ TD_DOUBLE_HOLD
+} td_state_t;
+
+typedef struct {
+ bool is_press_action;
+ td_state_t state;
+} td_tap_t;
+
+// Declare your tapdance functions:
+
+// Function to determine the current tapdance state
+td_state_t cur_dance(qk_tap_dance_state_t *state);
+
+// `finished` and `reset` functions for each tapdance keycode
+void fn_tap_finished(qk_tap_dance_state_t *state, void *user_data);
+void fn_tap_reset(qk_tap_dance_state_t *state, void *user_data);
+
+enum ctrl_keycodes {
+ MD_BOOT = SAFE_RANGE, // Restart into bootloader after hold timeout
+ ROUT_TG, // Timeout Toggle. Toggle idle LED time out on or off
+ ROUT_VI, // Timeout Value Increase. Increase idle time out before LED disabled
+ ROUT_VD, // Timeout Value Decrease. Decrease idle time out before LED disabled
+ ROUT_FM, // RGB timeout fast mode toggle
+ TOG_NPD, // Toggle Numpad On/Off
+ COPY_ALL, // Copy all text using ctrl(a+c)
+};
+
+enum string_macro_keycodes {
+ // The start of this enum should always be equal to end of ctrl_keycodes + 1
+ G_INIT = COPY_ALL + 1, // git init
+ G_CLONE, // git clone
+ G_ADD, // git add
+ G_DIFF, // git diff
+ G_RESET, // git reset --soft
+ G_BRANH, // git branch list
+ G_CHECK, // git checkout
+ G_REMTE, // git remote add
+ G_FETCH, // git fetch
+ G_PULL, // git pull
+ G_PUPST, // git pull upstream
+ G_PUSH, // git push
+ G_PSORG, // git push -u origin
+ G_PSFWL, // git push --force-with-lease
+ G_COMM, // git commit
+ G_COMSG, // git commit -m ": [TFS-]"
+ G_STAT, // git status
+ G_LOG, // git log
+};
+
+
+
+
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/readme.md b/keyboards/massdrop/ctrl/keymaps/xanimos/readme.md
new file mode 100644
index 00000000000..1ba87a97bcc
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/readme.md
@@ -0,0 +1,200 @@
+# Massdrop Ctrl Xanimos
+
+This keymap is the one I use on my MD CTRL, as a professional software engineer I like to make things my own. I'm also up for spreading the love.
+Massdrop has had a pretty bad rap with qmk the past but recently it's not too bad once you put a little pizzazz into it.
+
+I started with the Endgame keymap and have re-written most of and expanded upon it.
+
+## Layers
+
+### Typing Layer
+
+_I physically switched around my RALT and Menu keys as my personal preference. The label is still in default location but you can see they are mapped to my liking._
+
+ ```
+ __________ ___________________________________________ ___________________________________________ ___________________________________________ ________________________________
+ | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 | | PRINT | SCLCK | PAUSE |
+ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | KC_ESC | | KC_F1 | KC_F2 | KC_F3 | KC_F4 | | KC_F5 | KC_F6 | KC_F7 | KC_F8 | | KC_F9 | KC_F10 | KC_F11 | KC_F12 | | KC_PSCR | KC_SLCK | RCS(M) |
+ |__________| |__________|__________|__________|__________| |__________|__________|__________|__________| |__________|__________|__________|__________| |__________|__________|__________|
+ ____________________________________________________________________________________________________________________________________________________________________ ________________________________
+ | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BCKSP | | INS | HOME | PGUP |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | KC_GRV | KC_1 | KC_2 | KC_3 | KC_4 | KC_5 | KC_6 | KC_7 | KC_8 | KC_9 | KC_0 | KC_MINS | KC_EQL | KC_BSPC | | KC_INS | KC_HOME | KC_PGUP |
+ |__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_____________________| |__________|__________|__________|
+ | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | | DEL | END | PGDN |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | KC_TAB | KC_Q | KC_W | KC_E | KC_R | KC_T | KC_Y | KC_U | KC_I | KC_O | KC_P | KC_LBRC | KC_RBRC | KC_BSLS | | KC_DEL | KC_END | KC_PGDN |
+ |_______________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|________________| |__________|__________|__________|
+ | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ |
+ | 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 |
+ |_________________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_________________________| __________
+ | SHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ |
+ | KC_LSPO | KC_Z | KC_X | KC_C | KC_V | KC_B | KC_N | KC_M | KC_COMM | KC_DOT | KC_SLSH | KC_RSPC | | KC_UP |
+ |____________________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_________________________________| __________|__________|__________
+ | CTRL | GUI | ALT | SPACE | RALT | MENU | RGUI | RCTRL | | LEFT | DOWN | RIGHT |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | KC_LCTRL | KC_LGUI | KC_LALT | KC_SPC | FN_SWTCH | KC_RALT | KC_RGUI | KC_RCTL | | KC_LEFT | KC_DOWN | KC_RGHT |
+ |_____________|_____________|_____________|_________________________________________________________________|______________|_____________|_____________|_____________| |__________|__________|__________|
+
+ ```
+
+### Function Layer
+
+ ```
+ __________ ___________________________________________ ___________________________________________ ___________________________________________ ________________________________
+ | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 | | PRINT | SCLCK | PAUSE |
+ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | | ROUT_TG | ROUT_RM | ROUT_VD | ROUT_VI | | | | | | | | KC_WAKE | KC_SLEP | | | KC_PAUS | | KC_MUTE |
+ |__________| |__________|__________|__________|__________| |__________|__________|__________|__________| |__________|__________|__________|__________| |__________|__________|__________|
+ ____________________________________________________________________________________________________________________________________________________________________ ________________________________
+ | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BCKSP | | INS | HOME | PGUP |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | | | | | | | | | | | | | | | KC_MSTP | KC_MPLY | KC_VOLU |
+ |__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_____________________| |__________|__________|__________|
+ | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | | DEL | END | PGDN |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | RGB_MOD | RGB_SPI | RBG_VAI | RGB_HUI | | | | | | | | | | | KC_MPRV | KC_MNXT | KC_VOLD |
+ |_______________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|________________| |__________|__________|__________|
+ | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ |
+ | | RGB_RMOD | RGB_SPD | RGB_VAD | RGB_HUD | | | | | | | | |
+ |_________________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_________________________| __________
+ | SHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ |
+ | | | | COPY_ALL | | MD_BOOT | NK_TOGG | | | | | TOGGLE_NUMPAD | | KC_BRIU |
+ |____________________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_________________________________| __________|__________|__________
+ | CTRL | GUI | ALT | SPACE | RALT | MENU | RGUI | RCTRL | | LEFT | DOWN | RIGHT |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | | | | | | | | | | KC_BRID | |
+ |_____________|_____________|_____________|_________________________________________________________________|______________|_____________|_____________|_____________| |__________|__________|__________|
+
+ ```
+
+### Git Layer
+
+ ```
+ __________ ___________________________________________ ___________________________________________ ___________________________________________ ________________________________
+ | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 | | PRINT | SCLCK | PAUSE |
+ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | | | | | | | | | | | | | | | | | | | |
+ |__________| |__________|__________|__________|__________| |__________|__________|__________|__________| |__________|__________|__________|__________| |__________|__________|__________|
+ ____________________________________________________________________________________________________________________________________________________________________ ________________________________
+ | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BCKSP | | INS | HOME | PGUP |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | G_INIT | G_CLONE | G_REMTE | G_RESET | G_PSFWL | | | | | | | | | | | | | |
+ |__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_____________________| |__________|__________|__________|
+ | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | | DEL | END | PGDN |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | G_PUPST | G_PULL | G_PSORG | G_PUSH | | | | | | | | | | | | | |
+ |_______________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|________________| |__________|__________|__________|
+ | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ |
+ | | G_ADD | G_STAT | G_DIFF | G_FETCH | | | | | | | | |
+ |_________________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_________________________| __________
+ | SHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ |
+ | | G_LOG | G_CHECK | G_COMM | G_COMSG | G_BRANH | | | | | | | | |
+ |____________________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_________________________________| __________|__________|__________
+ | CTRL | GUI | ALT | SPACE | RALT | MENU | RGUI | RCTRL | | LEFT | DOWN | RIGHT |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | | | | | | | | | | | |
+ |_____________|_____________|_____________|_________________________________________________________________|______________|_____________|_____________|_____________| |__________|__________|__________|
+
+ ```
+
+ - These are the strings that are dumped/keyed in for each associated keycode
+ ```
+ G_INIT "git init"
+ G_CLONE "git clone "
+ G_ADD "git add "
+ G_DIFF "git diff "
+ G_RESET "git reset --soft "
+ G_BRANH "git branch --list"
+ G_CHECK "git checkout "
+ G_REMTE "git remote add "
+ G_FETCH "git fetch "
+ G_PULL "git pull"
+ G_PUPST "git pull upstream "
+ G_PUSH "git push"
+ G_PSORG "git push -u origin "
+ G_PSFWL "git push --force-with-lease"
+ G_COMM "git commit "
+ G_COMSG "git commit -m \": [TFS-]\""
+ G_STAT "git status"
+ G_LOG "git log"
+ ```
+
+### Numpad Layer
+
+*activated via the __Function Layer__ and stays active until you escape*
+ ```
+ __________ ___________________________________________ ___________________________________________ ___________________________________________ ________________________________
+ | ESC | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 | | PRINT | SCLCK | PAUSE |
+ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | TOG_NPD | | | | | | | | | | | | | | | | | | | |
+ |__________| |__________|__________|__________|__________| |__________|__________|__________|__________| |__________|__________|__________|__________| |__________|__________|__________|
+ ____________________________________________________________________________________________________________________________________________________________________ ________________________________
+ | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | BCKSP | | INS | HOME | PGUP |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | | | | | | | | | | | | | | | | | |
+ |__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_____________________| |__________|__________|__________|
+ | TAB | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ | | DEL | END | PGDN |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | | | | | | KC_P7 | KC_P8 | KC_P9 | | | | | | | | | |
+ |_______________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|________________| |__________|__________|__________|
+ | CAPS | A | S | D | F | G | H | J | K | L | ; | ' | ENTER |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ |
+ | | | | | | | KC_P4 | KC_P5 | KC_P6 | | | | |
+ |_________________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_________________________| __________
+ | SHIFT | Z | X | C | V | B | N | M | , | . | / | RSHIFT | | UP |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ |
+ | | | | | | KC_P1 | KC_P2 | KC_P3 | KC_PDOT | | | | | |
+ |____________________|__________|__________|__________|__________|__________|__________|__________|__________|__________|__________|_________________________________| __________|__________|__________
+ | CTRL | GUI | ALT | SPACE | RALT | MENU | RGUI | RCTRL | | LEFT | DOWN | RIGHT |
+ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ------ | ------ | ------ |
+ | | | | KC_P0 | | | | | | | | |
+ |_____________|_____________|_____________|_________________________________________________________________|______________|_____________|_____________|_____________| |__________|__________|__________|
+
+ ```
+
+## Features
+
+These are the features currently used by this keymap:
+
+### RGB Time Out
+
+This allows setting a dynamic timeout for RGB to turn off. The following is supported:
+
+1. Restores on the first click of any key.
+2. Restores to its previous state before timeout. i.e. if it was edge only before timeout it will restore to edge only, same for all modes.
+3. Doesn't interfere with RGB modes. You can set keyboard to All, Edge Only or Off and timeout will not interfere with these modes.
+4. The time before RGB is turned off is dynamically adjustable using keycodes ROUT_VI to increase, ROUT_VD to decrease. They have a 10 second steps by default. Minimum value 10 seconds by default and maximum is 10 minutes.
+5. Can be toggled on or off dyncamically with the ROUT_TG keycode.
+6. Can be put in fast mode using ROUT_FM, for movie watching purposes. Default value is 3 seconds. Note that fast mode disabled ROUT_VD and ROUT_VI so to use them again you have to toggle fast mode off with ROUT_FM. It doesn't impact ROUT_TG and ROUT_TG will remember if fast mode was enabled when toggled back on, so it doesn't disable fast mode on its own, only ROUT_FM can disable or enable fast mode.
+
+### Tapdance Keys
+
+Created a tapdance setup to use the same key to switch between the layers, aka a function key. ;)
+
+Layers are temporary while holding the function key down.
+ - Single tap and hold: Activates the Function Layer.
+ - Double tap and hold: Activates the Git Layer.
+
+### Numpad
+
+Activated in the *Function Layer* by holding down the fn key and pressing the toggle key (RSHIFT). The keeps the layer activated without needing to hold the fn key anymore.
+To leave the numpad layer press the ESC key or hold and let go of the fn key.
+
+### Space Cadet Shift
+
+The typing layer is setup to use the [Space Cadet Shift](https://docs.qmk.fm/#/feature_space_cadet). As a software engineer this is massively useful :)
+
+_Sorry ISO users, you'll need to configure it for your own setup or disable it._
+
+## Credits
+
+ - [endgame](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop/ctrl/keymaps/endgame) by [ash0x0](https://github.com/ash0x0)
+ For the base keymap I started with.
\ No newline at end of file
diff --git a/keyboards/massdrop/ctrl/keymaps/xanimos/rules.mk b/keyboards/massdrop/ctrl/keymaps/xanimos/rules.mk
new file mode 100644
index 00000000000..43a312ce4e6
--- /dev/null
+++ b/keyboards/massdrop/ctrl/keymaps/xanimos/rules.mk
@@ -0,0 +1,14 @@
+# RGBLIGHT_ENABLE = no # Not for MD boards. This is here in case you forget.
+COMMAND_ENABLE = no # Commands for debug and configuration
+# AUTO_SHIFT_ENABLE = yes # Auto Shift
+NKRO_ENABLE = yes # USB Nkey Rollover
+DYNAMIC_MACRO_ENABLE = no # Dynamic macro recording and play
+MOUSEKEY_ENABLE = no # Enable mouse control keycodes. Increases firmware size.
+TAP_DANCE_ENABLE = yes # Enable tap dance keys
+CONSOLE_ENABLE = no # Enable debugging console. Increases firmware size.
+SRC += config_led.c # Used to add files to the compilation/linking list.
+EXTRAKEY_ENABLE = yes # Audio control and System control
+TERMINAL_ENABLE = no
+# RAW_ENABLE = yes # Raw HID has not yet been implemented for this keyboard
+# COMBO_ENABLE # Key combo feature
+# LEADER_ENABLE # Enable leader key chording
From d9737349769a8bd2198733a81c1c74bd7db82c3a Mon Sep 17 00:00:00 2001
From: jack <0x6A73@pm.me>
Date: Fri, 22 Apr 2022 05:50:11 -0600
Subject: [PATCH 39/65] Fix id67 RGB Matrix (#16916)
---
keyboards/idobao/id67/id67.c | 2 +-
keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/keyboards/idobao/id67/id67.c b/keyboards/idobao/id67/id67.c
index 5f4ff39ae2c..8d27298625c 100644
--- a/keyboards/idobao/id67/id67.c
+++ b/keyboards/idobao/id67/id67.c
@@ -56,6 +56,6 @@ led_config_t g_led_config = { {
__attribute__ ((weak))
void rgb_matrix_indicators_user(void) {
if (host_keyboard_led_state().caps_lock) {
- rgb_matrix_set_color(ID67_CAPS_LOCK_KEY_INDEX, 0xFF, 0xFF, 0xFF);
+ rgb_matrix_set_color(23, 0xFF, 0xFF, 0xFF);
}
}
diff --git a/keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c b/keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c
index 62fd4cfa8f7..2a42295b97a 100644
--- a/keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c
+++ b/keyboards/idobao/id67/keymaps/vinorodrigues/keymap.c
@@ -121,7 +121,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
if (host_keyboard_led_state().caps_lock) {
if (isRGBOff) {
- rgb_matrix_set_color(ID67_CAPS_LOCK_KEY_INDEX, v, v, v); // white
+ rgb_matrix_set_color(23, v, v, v); // white
} else {
// Caps Lock key/LED
if (timer_elapsed(recording_timer) > 500) {
@@ -129,7 +129,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
recording_timer = timer_read();
}
if (isCapsBlink) {
- rgb_matrix_set_color(ID67_CAPS_LOCK_KEY_INDEX, v, v, v); // white
+ rgb_matrix_set_color(23, v, v, v); // white
}
// Alpha keys/LEDs
@@ -144,7 +144,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
uint8_t g = 0;
uint8_t b = 0;
- if ((g_led_config.flags[ID67_CAPS_LOCK_KEY_INDEX] & LED_FLAG_LAYER_IND) != 0) {
+ if ((g_led_config.flags[23] & LED_FLAG_LAYER_IND) != 0) {
switch (current_layer) {
case LAYER_1: b = v; break; // blue
case LAYER_2: g = v; break; // green
@@ -152,7 +152,7 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
}
- rgb_matrix_set_color(ID67_CAPS_LOCK_KEY_INDEX, r, g, b); // off
+ rgb_matrix_set_color(23, r, g, b); // off
}
// Layer indicator stuff
From 857178e779f8215e0aec0e1eb40cb86e735092de Mon Sep 17 00:00:00 2001
From: Felix Jen
Date: Sat, 23 Apr 2022 15:56:58 -0500
Subject: [PATCH 40/65] [Keyboard] Add Rooboard 65 (#15294)
Co-authored-by: Drashna Jaelre
Co-authored-by: Joel Challis
Co-authored-by: Ryan
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
---
.../skippys_custom_pcs/rooboard65/config.h | 117 ++++++++++++++++++
.../skippys_custom_pcs/rooboard65/info.json | 83 +++++++++++++
.../rooboard65/keymaps/default/keymap.c | 40 ++++++
.../rooboard65/keymaps/via/keymap.c | 58 +++++++++
.../rooboard65/keymaps/via/rules.mk | 1 +
.../skippys_custom_pcs/rooboard65/readme.md | 27 ++++
.../rooboard65/rooboard65.c | 14 +++
.../rooboard65/rooboard65.h | 32 +++++
.../skippys_custom_pcs/rooboard65/rules.mk | 23 ++++
9 files changed, 395 insertions(+)
create mode 100644 keyboards/skippys_custom_pcs/rooboard65/config.h
create mode 100644 keyboards/skippys_custom_pcs/rooboard65/info.json
create mode 100644 keyboards/skippys_custom_pcs/rooboard65/keymaps/default/keymap.c
create mode 100644 keyboards/skippys_custom_pcs/rooboard65/keymaps/via/keymap.c
create mode 100644 keyboards/skippys_custom_pcs/rooboard65/keymaps/via/rules.mk
create mode 100644 keyboards/skippys_custom_pcs/rooboard65/readme.md
create mode 100644 keyboards/skippys_custom_pcs/rooboard65/rooboard65.c
create mode 100644 keyboards/skippys_custom_pcs/rooboard65/rooboard65.h
create mode 100644 keyboards/skippys_custom_pcs/rooboard65/rules.mk
diff --git a/keyboards/skippys_custom_pcs/rooboard65/config.h b/keyboards/skippys_custom_pcs/rooboard65/config.h
new file mode 100644
index 00000000000..f0618407712
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/rooboard65/config.h
@@ -0,0 +1,117 @@
+/*
+Copyright 2021
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x36B6 // Skippys Custom PCs
+#define PRODUCT_ID 0x0002 // Rooboard65
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER FJLabs
+#define PRODUCT Rooboard65
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+#define MATRIX_ROW_PINS { F0, F1, F4, F5, F6 }
+#define MATRIX_COL_PINS { C7, C6, B6, B5, B4, D7, D6, D4, D5, D3, D2, B3, B2, B1, D1 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Define RGB Underglow */
+#define RGB_DI_PIN F7
+#define RGBLED_NUM 68
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_LIMIT_VAL 96
+#define RGB_VAL_STEP 12
+#define RGBLIGHT_DEFAULT_SPD 144
+#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL
+/* #define RGBLIGHT_LAYER_BLINK*/
+
+/* Define less important options */
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
diff --git a/keyboards/skippys_custom_pcs/rooboard65/info.json b/keyboards/skippys_custom_pcs/rooboard65/info.json
new file mode 100644
index 00000000000..3f195fc7c7d
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/rooboard65/info.json
@@ -0,0 +1,83 @@
+{
+ "keyboard_name": "Rooboard65",
+ "url": "https://www.fjlaboratories.com/",
+ "maintainer": "FJLabs",
+ "layouts": {
+ "LAYOUT_65_ansi": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0, "w": 2},
+ {"x": 15, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+ {"x": 15, "y": 1},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+ {"x": 15, "y": 2},
+
+ {"x": 0, "y": 3, "w": 2.25},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.25},
+ {"x": 1.25, "y": 4, "w": 1.25},
+ {"x": 2.5, "y": 4, "w": 1.25},
+ {"x": 3.75, "y": 4, "w": 6.25},
+ {"x": 10, "y": 4},
+ {"x": 11, "y": 4},
+ {"x": 12, "y": 4},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/skippys_custom_pcs/rooboard65/keymaps/default/keymap.c b/keyboards/skippys_custom_pcs/rooboard65/keymaps/default/keymap.c
new file mode 100644
index 00000000000..96c2351e89e
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/rooboard65/keymaps/default/keymap.c
@@ -0,0 +1,40 @@
+/*
+Copyright 2021
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_65_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_LAYER1] = LAYOUT_65_ansi(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_TRNS,
+ KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+
+};
\ No newline at end of file
diff --git a/keyboards/skippys_custom_pcs/rooboard65/keymaps/via/keymap.c b/keyboards/skippys_custom_pcs/rooboard65/keymaps/via/keymap.c
new file mode 100644
index 00000000000..3e071bd079f
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/rooboard65/keymaps/via/keymap.c
@@ -0,0 +1,58 @@
+/*
+Copyright 2021
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_65_ansi(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_DEL,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
+ ),
+
+ [_LAYER1] = LAYOUT_65_ansi(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
+ KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE, RESET, KC_TRNS,
+ KC_TRNS, RGB_SPI, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER2] = LAYOUT_65_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER3] = LAYOUT_65_ansi(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+};
diff --git a/keyboards/skippys_custom_pcs/rooboard65/keymaps/via/rules.mk b/keyboards/skippys_custom_pcs/rooboard65/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/rooboard65/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/skippys_custom_pcs/rooboard65/readme.md b/keyboards/skippys_custom_pcs/rooboard65/readme.md
new file mode 100644
index 00000000000..63f8217fc8c
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/rooboard65/readme.md
@@ -0,0 +1,27 @@
+# FJLabs Rooboard65
+
+The following is the QMK Firmware for the FJLabs Rooboard65 PCB, a universal tray mount 65% hotswap PCB with per key RGB LED's.
+
+The PCB will feature:
+* Kailh Hotswap sockets
+* QMK & VIA compatibility
+* Per-Key RGB LED's
+
+---
+
+* Keyboard Maintainer: FJLabs
+* Hardware Supported: Rooboard65
+
+Make example for this keyboard (after setting up your build environment):
+
+ make skippys_custom_pcs/rooboard65:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
\ No newline at end of file
diff --git a/keyboards/skippys_custom_pcs/rooboard65/rooboard65.c b/keyboards/skippys_custom_pcs/rooboard65/rooboard65.c
new file mode 100644
index 00000000000..a97cc2307b6
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/rooboard65/rooboard65.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2021
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#include "rooboard65.h"
diff --git a/keyboards/skippys_custom_pcs/rooboard65/rooboard65.h b/keyboards/skippys_custom_pcs/rooboard65/rooboard65.h
new file mode 100644
index 00000000000..434d1566881
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/rooboard65/rooboard65.h
@@ -0,0 +1,32 @@
+/*
+Copyright 2021
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* TF60 ANSI Keymap Definitions */
+#define LAYOUT_65_ansi( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2D, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3C, K3D, K3E, \
+ K40, K41, K42, K45, K49, K4A, K4B, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K2E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, KC_NO, K2D, K1E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, KC_NO, K3C, K3D, K3E }, \
+ { K40, K41, K42, KC_NO, KC_NO, K45, KC_NO, KC_NO, KC_NO, K49, K4A, K4B, K4C, K4D, K4E } \
+}
diff --git a/keyboards/skippys_custom_pcs/rooboard65/rules.mk b/keyboards/skippys_custom_pcs/rooboard65/rules.mk
new file mode 100644
index 00000000000..a1a32c1e926
--- /dev/null
+++ b/keyboards/skippys_custom_pcs/rooboard65/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+LAYOUTS = 65_ansi
From c2bf039893c6f6f1692c5e470be635436634969c Mon Sep 17 00:00:00 2001
From: Albert Y <76888457+filterpaper@users.noreply.github.com>
Date: Sun, 24 Apr 2022 10:00:54 +0800
Subject: [PATCH 41/65] [Keyboard] Add missing KC_QUOT (#16925)
---
keyboards/a_dux/keymaps/default/keymap.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/keyboards/a_dux/keymaps/default/keymap.c b/keyboards/a_dux/keymaps/default/keymap.c
index b58c9d447f9..c15b596f8fa 100644
--- a/keyboards/a_dux/keymaps/default/keymap.c
+++ b/keyboards/a_dux/keymaps/default/keymap.c
@@ -9,7 +9,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split_3x5_2(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
+ KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
LT(3,KC_TAB), KC_LSFT, KC_SPC, LT(1,KC_ENT)
),
From e1f6fa579af8eb9f0799f8fe9ba7a8947d1c2c69 Mon Sep 17 00:00:00 2001
From: Ryan
Date: Sun, 24 Apr 2022 23:01:29 +1000
Subject: [PATCH 42/65] gergoplex: small cleanup (#16928)
---
keyboards/gboards/gergoplex/gergoplex.h | 29 ++++++++++++-------------
keyboards/gboards/gergoplex/rules.mk | 22 +++++++++++++------
2 files changed, 29 insertions(+), 22 deletions(-)
diff --git a/keyboards/gboards/gergoplex/gergoplex.h b/keyboards/gboards/gergoplex/gergoplex.h
index 507072a3761..eda21d2a94f 100644
--- a/keyboards/gboards/gergoplex/gergoplex.h
+++ b/keyboards/gboards/gergoplex/gergoplex.h
@@ -21,8 +21,8 @@
extern i2c_status_t mcp23018_status;
#define I2C_TIMEOUT 1000
-#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
-#define CPU_16MHz 0x00
+
+#define XXX KC_NO
// I2C aliases and register addresses (see "mcp23018.md")
#define I2C_ADDR 0x20 // 0b0100000
@@ -41,16 +41,15 @@ uint8_t init_mcp23018(void);
L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
L30, L31, L32, R30, R31, R32 \
- ) \
- { \
- {L04, L14, L24, KC_NO}, \
- {L03, L13, L23, L32}, \
- {L02, L12, L22, L31}, \
- {L01, L11, L21, L30}, \
- {L00, L10, L20, KC_NO}, \
- {R00, R10, R20, KC_NO}, \
- {R01, R11, R21, R30}, \
- {R02, R12, R22, R31}, \
- {R03, R13, R23, R32}, \
- {R04, R14, R24, KC_NO}, \
- }
+) { \
+ { L04, L14, L24, XXX }, \
+ { L03, L13, L23, L32 }, \
+ { L02, L12, L22, L31 }, \
+ { L01, L11, L21, L30 }, \
+ { L00, L10, L20, XXX }, \
+ { R00, R10, R20, XXX }, \
+ { R01, R11, R21, R30 }, \
+ { R02, R12, R22, R31 }, \
+ { R03, R13, R23, R32 }, \
+ { R04, R14, R24, XXX } \
+}
diff --git a/keyboards/gboards/gergoplex/rules.mk b/keyboards/gboards/gergoplex/rules.mk
index e557d9f39a9..5cd5a7721c4 100644
--- a/keyboards/gboards/gergoplex/rules.mk
+++ b/keyboards/gboards/gergoplex/rules.mk
@@ -1,15 +1,23 @@
+# MCU name
MCU = atmega32u4
+# Bootloader selection
BOOTLOADER = atmel-dfu
-CUSTOM_MATRIX = yes
-MOUSEKEY_ENABLE = yes # Mouse keys
-COMBO_ENABLE = yes
-EXTRAKEY_ENABLE = yes
-CONSOLE_ENABLE = no
-NKRO_ENABLE = yes # Enable N-Key Rollover
-COMMAND_ENABLE = yes
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+COMBO_ENABLE = yes
+CUSTOM_MATRIX = yes
LAYOUTS = split_3x5_3
From 0369fb004719abbde4904174de7ffff9ceb6717a Mon Sep 17 00:00:00 2001
From: tuvietnamm <64471705+tuvietnamm@users.noreply.github.com>
Date: Mon, 25 Apr 2022 15:08:11 +1000
Subject: [PATCH 43/65] Fix backslash bug (#16935)
---
keyboards/chickenman/ciel/ciel.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/keyboards/chickenman/ciel/ciel.h b/keyboards/chickenman/ciel/ciel.h
index ea2b566d98b..0f898f97c8f 100644
--- a/keyboards/chickenman/ciel/ciel.h
+++ b/keyboards/chickenman/ciel/ciel.h
@@ -54,7 +54,7 @@
k400, k401, k402, k407, k411, k413, k414 \
) { \
{ k000, k001, k002, k003, k004, k005, k006, k007, k008, k009, k010, k011, k012, k013, k014 }, \
- { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, KC_NO, k414 }, \
+ { k100, k101, k102, k103, k104, k105, k106, k107, k108, k109, k110, k111, k112, KC_NO, k114 }, \
{ k200, k201, k202, k203, k204, k205, k206, k207, k208, k209, k210, k211, KC_NO, k213, KC_NO}, \
{ k300, KC_NO, k302, k303, k304, k305, k306, k307, k308, k309, k310, k311, KC_NO, k313, k314 }, \
{ k400, k401, k402, KC_NO, KC_NO, KC_NO, KC_NO, k407, KC_NO, KC_NO, KC_NO, k411, KC_NO, k413, k414 } \
From 73688057f483e8e38cc970e5fe3ab0d04fa2217e Mon Sep 17 00:00:00 2001
From: Ryan
Date: Mon, 25 Apr 2022 19:30:20 +1000
Subject: [PATCH 44/65] Add missing dead key LUTs for sendstring headers
(#16929)
---
quantum/keymap_extras/keymap_br_abnt2.h | 4 ++--
quantum/keymap_extras/keymap_italian.h | 10 ++++-----
quantum/keymap_extras/sendstring_belgian.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_bepo.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_br_abnt2.h | 20 ++++++++++++++++++
.../sendstring_canadian_multilingual.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_croatian.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_czech.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_danish.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_dvorak_fr.h | 19 +++++++++++++++++
quantum/keymap_extras/sendstring_estonian.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_finnish.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_fr_ch.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_french.h | 20 ++++++++++++++++++
.../keymap_extras/sendstring_french_afnor.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_french_osx.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_german.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_german_ch.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_german_osx.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_hungarian.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_icelandic.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_latvian.h | 21 +++++++++++++++++++
quantum/keymap_extras/sendstring_norwegian.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_portuguese.h | 20 ++++++++++++++++++
.../sendstring_portuguese_osx_iso.h | 20 ++++++++++++++++++
.../keymap_extras/sendstring_serbian_latin.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_slovak.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_slovenian.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_spanish.h | 20 ++++++++++++++++++
.../keymap_extras/sendstring_spanish_dvorak.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_swedish.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_turkish_f.h | 20 ++++++++++++++++++
quantum/keymap_extras/sendstring_turkish_q.h | 20 ++++++++++++++++++
.../sendstring_us_international.h | 2 +-
34 files changed, 628 insertions(+), 8 deletions(-)
diff --git a/quantum/keymap_extras/keymap_br_abnt2.h b/quantum/keymap_extras/keymap_br_abnt2.h
index e91718013a1..b5892183bed 100644
--- a/quantum/keymap_extras/keymap_br_abnt2.h
+++ b/quantum/keymap_extras/keymap_br_abnt2.h
@@ -87,8 +87,8 @@
#define BR_SCLN KC_SLSH // ;
#define BR_SLSH KC_INT1 // /
// Numpad
-#define BR_PDOT KC_PCMM // .
-#define BR_PCMM KC_PDOT // ,
+#define BR_PDOT KC_PCMM // .
+#define BR_PCMM KC_PDOT // ,
/* Shifted symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
diff --git a/quantum/keymap_extras/keymap_italian.h b/quantum/keymap_extras/keymap_italian.h
index be495f85ba8..ece60d06b7e 100644
--- a/quantum/keymap_extras/keymap_italian.h
+++ b/quantum/keymap_extras/keymap_italian.h
@@ -140,12 +140,12 @@
* └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
*/
// Row 2
-#define IT_EURO ALGR(IT_E) // €
-#define IT_LBRC ALGR(IT_EGRV) // [
-#define IT_RBRC ALGR(IT_PLUS) // ]
+#define IT_EURO ALGR(IT_E) // €
+#define IT_LBRC ALGR(IT_EGRV) // [
+#define IT_RBRC ALGR(IT_PLUS) // ]
// Row 3
-#define IT_AT ALGR(IT_OGRV) // @
-#define IT_HASH ALGR(IT_AGRV) // #
+#define IT_AT ALGR(IT_OGRV) // @
+#define IT_HASH ALGR(IT_AGRV) // #
/* Shift+AltGr symbols
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
diff --git a/quantum/keymap_extras/sendstring_belgian.h b/quantum/keymap_extras/sendstring_belgian.h
index 5e7218a2fa7..34ca9514c81 100644
--- a/quantum/keymap_extras/sendstring_belgian.h
+++ b/quantum/keymap_extras/sendstring_belgian.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_bepo.h b/quantum/keymap_extras/sendstring_bepo.h
index 8119cd9f540..0f0d5a2111e 100644
--- a/quantum/keymap_extras/sendstring_bepo.h
+++ b/quantum/keymap_extras/sendstring_bepo.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_br_abnt2.h b/quantum/keymap_extras/sendstring_br_abnt2.h
index f2946e54b86..1ca2d285924 100644
--- a/quantum/keymap_extras/sendstring_br_abnt2.h
+++ b/quantum/keymap_extras/sendstring_br_abnt2.h
@@ -43,6 +43,26 @@ const uint8_t ascii_to_shift_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 0, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_canadian_multilingual.h b/quantum/keymap_extras/sendstring_canadian_multilingual.h
index 3679a98c14a..92b588c82e4 100644
--- a/quantum/keymap_extras/sendstring_canadian_multilingual.h
+++ b/quantum/keymap_extras/sendstring_canadian_multilingual.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_croatian.h b/quantum/keymap_extras/sendstring_croatian.h
index 67f75992aea..bf51c81a884 100644
--- a/quantum/keymap_extras/sendstring_croatian.h
+++ b/quantum/keymap_extras/sendstring_croatian.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_czech.h b/quantum/keymap_extras/sendstring_czech.h
index 94879dfd4ec..6693999f517 100644
--- a/quantum/keymap_extras/sendstring_czech.h
+++ b/quantum/keymap_extras/sendstring_czech.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0),
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_danish.h b/quantum/keymap_extras/sendstring_danish.h
index 0ec5b108a57..6923063ce2c 100644
--- a/quantum/keymap_extras/sendstring_danish.h
+++ b/quantum/keymap_extras/sendstring_danish.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_dvorak_fr.h b/quantum/keymap_extras/sendstring_dvorak_fr.h
index 98d0577afa7..2f4f2817949 100644
--- a/quantum/keymap_extras/sendstring_dvorak_fr.h
+++ b/quantum/keymap_extras/sendstring_dvorak_fr.h
@@ -42,6 +42,25 @@ const uint8_t ascii_to_shift_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 0, 1, 0, 0, 0),
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
diff --git a/quantum/keymap_extras/sendstring_estonian.h b/quantum/keymap_extras/sendstring_estonian.h
index 24d853fb596..9ea2ab3f8ff 100644
--- a/quantum/keymap_extras/sendstring_estonian.h
+++ b/quantum/keymap_extras/sendstring_estonian.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_finnish.h b/quantum/keymap_extras/sendstring_finnish.h
index cf23483843f..197836ba83d 100644
--- a/quantum/keymap_extras/sendstring_finnish.h
+++ b/quantum/keymap_extras/sendstring_finnish.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_fr_ch.h b/quantum/keymap_extras/sendstring_fr_ch.h
index 2acce5663b6..160a2efb055 100644
--- a/quantum/keymap_extras/sendstring_fr_ch.h
+++ b/quantum/keymap_extras/sendstring_fr_ch.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_french.h b/quantum/keymap_extras/sendstring_french.h
index ab65f28eb7a..a37a5d314bd 100644
--- a/quantum/keymap_extras/sendstring_french.h
+++ b/quantum/keymap_extras/sendstring_french.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_french_afnor.h b/quantum/keymap_extras/sendstring_french_afnor.h
index 690daaaf020..1408634a266 100644
--- a/quantum/keymap_extras/sendstring_french_afnor.h
+++ b/quantum/keymap_extras/sendstring_french_afnor.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_french_osx.h b/quantum/keymap_extras/sendstring_french_osx.h
index 6cadbac1532..cc9b857cd00 100644
--- a/quantum/keymap_extras/sendstring_french_osx.h
+++ b/quantum/keymap_extras/sendstring_french_osx.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_german.h b/quantum/keymap_extras/sendstring_german.h
index 3445a0e5fb7..69c7dd996ed 100644
--- a/quantum/keymap_extras/sendstring_german.h
+++ b/quantum/keymap_extras/sendstring_german.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_german_ch.h b/quantum/keymap_extras/sendstring_german_ch.h
index 1e1327c511d..b8f74712470 100644
--- a/quantum/keymap_extras/sendstring_german_ch.h
+++ b/quantum/keymap_extras/sendstring_german_ch.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_german_osx.h b/quantum/keymap_extras/sendstring_german_osx.h
index 03f54da2afa..d25c8c09958 100644
--- a/quantum/keymap_extras/sendstring_german_osx.h
+++ b/quantum/keymap_extras/sendstring_german_osx.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_hungarian.h b/quantum/keymap_extras/sendstring_hungarian.h
index 29dc3ccb8c0..9169ba25575 100644
--- a/quantum/keymap_extras/sendstring_hungarian.h
+++ b/quantum/keymap_extras/sendstring_hungarian.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_icelandic.h b/quantum/keymap_extras/sendstring_icelandic.h
index 867eb8743c8..b25a4e76e7a 100644
--- a/quantum/keymap_extras/sendstring_icelandic.h
+++ b/quantum/keymap_extras/sendstring_icelandic.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_latvian.h b/quantum/keymap_extras/sendstring_latvian.h
index 61f788693ce..bd73a01e484 100644
--- a/quantum/keymap_extras/sendstring_latvian.h
+++ b/quantum/keymap_extras/sendstring_latvian.h
@@ -19,9 +19,30 @@
#pragma once
#include "keymap_latvian.h"
+#include "quantum.h"
// clang-format off
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 1, 0, 0, 0, 0, 1),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_norwegian.h b/quantum/keymap_extras/sendstring_norwegian.h
index d3478f8301f..28813da51f4 100644
--- a/quantum/keymap_extras/sendstring_norwegian.h
+++ b/quantum/keymap_extras/sendstring_norwegian.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_portuguese.h b/quantum/keymap_extras/sendstring_portuguese.h
index bec9b2c680c..37db5f97aab 100644
--- a/quantum/keymap_extras/sendstring_portuguese.h
+++ b/quantum/keymap_extras/sendstring_portuguese.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_portuguese_osx_iso.h b/quantum/keymap_extras/sendstring_portuguese_osx_iso.h
index 1799347f307..f4ac1b37afe 100644
--- a/quantum/keymap_extras/sendstring_portuguese_osx_iso.h
+++ b/quantum/keymap_extras/sendstring_portuguese_osx_iso.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 0, 1, 0, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_serbian_latin.h b/quantum/keymap_extras/sendstring_serbian_latin.h
index 40e2a9ea0c2..7e19a62595c 100644
--- a/quantum/keymap_extras/sendstring_serbian_latin.h
+++ b/quantum/keymap_extras/sendstring_serbian_latin.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_slovak.h b/quantum/keymap_extras/sendstring_slovak.h
index f48d30dcb14..c94cca1379f 100644
--- a/quantum/keymap_extras/sendstring_slovak.h
+++ b/quantum/keymap_extras/sendstring_slovak.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_slovenian.h b/quantum/keymap_extras/sendstring_slovenian.h
index adf7ea47db9..117af7e76d6 100644
--- a/quantum/keymap_extras/sendstring_slovenian.h
+++ b/quantum/keymap_extras/sendstring_slovenian.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_spanish.h b/quantum/keymap_extras/sendstring_spanish.h
index b984a6f463e..680e99ef4ef 100644
--- a/quantum/keymap_extras/sendstring_spanish.h
+++ b/quantum/keymap_extras/sendstring_spanish.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_spanish_dvorak.h b/quantum/keymap_extras/sendstring_spanish_dvorak.h
index 87d582491c1..ccf94582473 100644
--- a/quantum/keymap_extras/sendstring_spanish_dvorak.h
+++ b/quantum/keymap_extras/sendstring_spanish_dvorak.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_swedish.h b/quantum/keymap_extras/sendstring_swedish.h
index 8b07d423019..d4513429927 100644
--- a/quantum/keymap_extras/sendstring_swedish.h
+++ b/quantum/keymap_extras/sendstring_swedish.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_turkish_f.h b/quantum/keymap_extras/sendstring_turkish_f.h
index 8d6dc778fd9..cabd5c5dc5c 100644
--- a/quantum/keymap_extras/sendstring_turkish_f.h
+++ b/quantum/keymap_extras/sendstring_turkish_f.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_turkish_q.h b/quantum/keymap_extras/sendstring_turkish_q.h
index 1a409c1e03f..986f0223333 100644
--- a/quantum/keymap_extras/sendstring_turkish_q.h
+++ b/quantum/keymap_extras/sendstring_turkish_q.h
@@ -63,6 +63,26 @@ const uint8_t ascii_to_altgr_lut[16] PROGMEM = {
KCLUT_ENTRY(0, 0, 0, 1, 1, 1, 1, 0)
};
+const uint8_t ascii_to_dead_lut[16] PROGMEM = {
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0),
+ KCLUT_ENTRY(1, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 0, 0),
+ KCLUT_ENTRY(0, 0, 0, 0, 0, 0, 1, 0)
+};
+
const uint8_t ascii_to_keycode_lut[128] PROGMEM = {
// NUL SOH STX ETX EOT ENQ ACK BEL
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
diff --git a/quantum/keymap_extras/sendstring_us_international.h b/quantum/keymap_extras/sendstring_us_international.h
index 53a5891fb14..d1694ff0f0f 100644
--- a/quantum/keymap_extras/sendstring_us_international.h
+++ b/quantum/keymap_extras/sendstring_us_international.h
@@ -14,7 +14,7 @@
* along with this program. If not, see .
*/
-// Sendstring lookup tables for UK layouts
+// Sendstring lookup tables for US International layouts
#pragma once
From 14d6c0b441e093d730a1a393715d8bf2bcbab471 Mon Sep 17 00:00:00 2001
From: Ryan
Date: Wed, 27 Apr 2022 00:09:47 +1000
Subject: [PATCH 45/65] dactyl_manuform/3x5_3: fix layout (#16944)
---
.../handwired/dactyl_manuform/3x5_3/3x5_3.h | 33 ++++----
.../handwired/dactyl_manuform/3x5_3/info.json | 80 ++++++++++---------
.../handwired/dactyl_manuform/3x5_3/rules.mk | 4 +-
3 files changed, 63 insertions(+), 54 deletions(-)
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h b/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
index f9a843d7d69..7db11618cf9 100644
--- a/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/3x5_3.h
@@ -14,24 +14,25 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
+
#pragma once
#include "dactyl_manuform.h"
-#define LAYOUT_split_3x5_3(\
- L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
- L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
- L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
- L32, L33, L34, R30, R31, R32 \
- ) \
- { \
- { L00, L01, L02, L03, L04 }, \
- { L10, L11, L12, L13, L14 }, \
- { L20, L21, L22, L23, L24 }, \
- { KC_NO, KC_NO, L32, L33, L34 }, \
- \
- { R00, R01, R02, R03, R04 }, \
- { R10, R11, R12, R13, R14 }, \
- { R20, R21, R22, R23, R24 }, \
- { R30, R31, R32, KC_NO, KC_NO }, \
+#define XXX KC_NO
+
+#define LAYOUT_split_3x5_3( \
+ L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \
+ L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \
+ L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, \
+ L32, L33, L34, R30, R31, R32 \
+) { \
+ { L00, L01, L02, L03, L04 }, \
+ { L10, L11, L12, L13, L14 }, \
+ { L20, L21, L22, L23, L24 }, \
+ { XXX, XXX, L32, L33, L34 }, \
+ { R00, R01, R02, R03, R04 }, \
+ { R10, R11, R12, R13, R14 }, \
+ { R20, R21, R22, R23, R24 }, \
+ { R30, R31, R32, XXX, XXX } \
}
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/info.json b/keyboards/handwired/dactyl_manuform/3x5_3/info.json
index 47642262212..abf23aa45db 100644
--- a/keyboards/handwired/dactyl_manuform/3x5_3/info.json
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/info.json
@@ -3,45 +3,51 @@
"url": "https://www.dlford.io/keyboard-build-guide-per-key-rgb-leds/",
"maintainer": "dlford",
"layouts": {
- "LAYOUT": {
+ "LAYOUT_split_3x5_3": {
"layout": [
- { "x": 0, "y": 0 },
- { "x": 1, "y": 0 },
- { "x": 2, "y": 0 },
- { "x": 3, "y": 0 },
- { "x": 4, "y": 0 },
- { "x": 0, "y": 1 },
- { "x": 1, "y": 1 },
- { "x": 2, "y": 1 },
- { "x": 3, "y": 1 },
- { "x": 4, "y": 1 },
- { "x": 0, "y": 2 },
- { "x": 1, "y": 2 },
- { "x": 2, "y": 2 },
- { "x": 3, "y": 2 },
- { "x": 4, "y": 2 },
- { "x": 2, "y": 3 },
- { "x": 3, "y": 3 },
- { "x": 4, "y": 3 },
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
- { "x": 10, "y": 0 },
- { "x": 11, "y": 0 },
- { "x": 12, "y": 0 },
- { "x": 13, "y": 0 },
- { "x": 14, "y": 0 },
- { "x": 10, "y": 1 },
- { "x": 11, "y": 1 },
- { "x": 12, "y": 1 },
- { "x": 13, "y": 1 },
- { "x": 14, "y": 1 },
- { "x": 10, "y": 2 },
- { "x": 11, "y": 2 },
- { "x": 12, "y": 2 },
- { "x": 13, "y": 2 },
- { "x": 14, "y": 2 },
- { "x": 10, "y": 3 },
- { "x": 11, "y": 3 },
- { "x": 12, "y": 3 }
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+
+ {"x": 0, "y": 1},
+ {"x": 1, "y": 1},
+ {"x": 2, "y": 1},
+ {"x": 3, "y": 1},
+ {"x": 4, "y": 1},
+
+ {"x": 10, "y": 1},
+ {"x": 11, "y": 1},
+ {"x": 12, "y": 1},
+ {"x": 13, "y": 1},
+ {"x": 14, "y": 1},
+
+ {"x": 0, "y": 2},
+ {"x": 1, "y": 2},
+ {"x": 2, "y": 2},
+ {"x": 3, "y": 2},
+ {"x": 4, "y": 2},
+
+ {"x": 10, "y": 2},
+ {"x": 11, "y": 2},
+ {"x": 12, "y": 2},
+ {"x": 13, "y": 2},
+ {"x": 14, "y": 2},
+
+ {"x": 2, "y": 3},
+ {"x": 3, "y": 3},
+ {"x": 4, "y": 3},
+
+ {"x": 10, "y": 3},
+ {"x": 11, "y": 3},
+ {"x": 12, "y": 3}
]
}
}
diff --git a/keyboards/handwired/dactyl_manuform/3x5_3/rules.mk b/keyboards/handwired/dactyl_manuform/3x5_3/rules.mk
index 12812870e37..cdc7369c250 100644
--- a/keyboards/handwired/dactyl_manuform/3x5_3/rules.mk
+++ b/keyboards/handwired/dactyl_manuform/3x5_3/rules.mk
@@ -1,10 +1,12 @@
-# Build Options
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
+# Build Options
+# change yes to no to disable
+#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
From e99d6d582cd1ebdda35b2fda1cc170d6d24ad58b Mon Sep 17 00:00:00 2001
From: Ryan
Date: Thu, 28 Apr 2022 09:11:41 +1000
Subject: [PATCH 46/65] Add Ukrainian keymap header (#16947)
* Add Ukrainian keymap header
* Docs
---
docs/reference_keymap_extras.md | 1 +
quantum/keymap_extras/keymap_ukrainian.h | 134 +++++++++++++++++++++++
2 files changed, 135 insertions(+)
create mode 100644 quantum/keymap_extras/keymap_ukrainian.h
diff --git a/docs/reference_keymap_extras.md b/docs/reference_keymap_extras.md
index ae3d54e4de8..98be5c36698 100644
--- a/docs/reference_keymap_extras.md
+++ b/docs/reference_keymap_extras.md
@@ -74,6 +74,7 @@ These headers are located in [`quantum/keymap_extras/`](https://github.com/qmk/q
|Swedish Pro (macOS, ISO) |`keymap_swedish_pro_osx_iso.h` | |
|Turkish (F) |`keymap_turkish_f.h` |`sendstring_turkish_f.h` |
|Turkish (Q) |`keymap_turkish_q.h` |`sendstring_turkish_q.h` |
+|Ukrainian |`keymap_ukrainian.h` | |
There are also a few which are not quite language-specific, but useful if you are not using a QWERTY layout:
diff --git a/quantum/keymap_extras/keymap_ukrainian.h b/quantum/keymap_extras/keymap_ukrainian.h
new file mode 100644
index 00000000000..e5cd80f3d28
--- /dev/null
+++ b/quantum/keymap_extras/keymap_ukrainian.h
@@ -0,0 +1,134 @@
+/* Copyright 2022
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "keymap.h"
+
+// clang-format off
+
+/*
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ' │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ Й │ Ц │ У │ К │ Е │ Н │ Г │ Ш │ Щ │ З │ Х │ Ї │ \ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │ Ф │ І │ В │ А │ П │ Р │ О │ Л │ Д │ Ж │ Є │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │ │ Я │ Ч │ С │ М │ И │ Т │ Ь │ Б │ Ю │ . │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define UA_QUOT KC_GRV // '
+#define UA_1 KC_1 // 1
+#define UA_2 KC_2 // 2
+#define UA_3 KC_3 // 3
+#define UA_4 KC_4 // 4
+#define UA_5 KC_5 // 5
+#define UA_6 KC_6 // 6
+#define UA_7 KC_7 // 7
+#define UA_8 KC_8 // 8
+#define UA_9 KC_9 // 9
+#define UA_0 KC_0 // 0
+#define UA_MINS KC_MINS // -
+#define UA_EQL KC_EQL // =
+// Row 2
+#define UA_YOT KC_Q // Й
+#define UA_TSE KC_W // Ц
+#define UA_U KC_E // У
+#define UA_KA KC_R // К
+#define UA_E KC_T // Е
+#define UA_EN KC_Y // Н
+#define UA_HE KC_U // Г
+#define UA_SHA KC_I // Ш
+#define UA_SHCH KC_O // Щ
+#define UA_ZE KC_P // З
+#define UA_KHA KC_LBRC // Х
+#define UA_YI KC_RBRC // Ї
+#define UA_BSLS KC_BSLS // (backslash)
+// Row 3
+#define UA_EF KC_A // Ф
+#define UA_I KC_S // І
+#define UA_VE KC_D // В
+#define UA_A KC_F // А
+#define UA_PE KC_G // П
+#define UA_ER KC_H // Р
+#define UA_O KC_J // О
+#define UA_EL KC_K // Л
+#define UA_DE KC_L // Д
+#define UA_ZHE KC_SCLN // Ж
+#define UA_YE KC_QUOT // Є
+// Row 4
+#define UA_YA KC_Z // Я
+#define UA_CHE KC_X // Ч
+#define UA_ES KC_C // С
+#define UA_EM KC_V // М
+#define UA_Y KC_B // И
+#define UA_TE KC_N // Т
+#define UA_SOFT KC_M // Ь
+#define UA_BE KC_COMM // Б
+#define UA_YU KC_DOT // Ю
+#define UA_DOT KC_SLSH // .
+
+/* Shifted symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ ₴ │ ! │ " │ № │ ; │ % │ : │ ? │ * │ ( │ ) │ _ │ + │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ / │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │ │ │ │ │ │ │ │ │ │ │ , │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 1
+#define UA_HRYV S(UA_QUOT) // ₴
+#define UA_EXLM S(UA_1) // !
+#define UA_DQUO S(UA_2) // "
+#define UA_NUM S(UA_3) // №
+#define UA_SCLN S(UA_4) // ;
+#define UA_PERC S(UA_5) // %
+#define UA_COLN S(UA_6) // :
+#define UA_QUES S(UA_7) // ?
+#define UA_ASTR S(UA_8) // *
+#define UA_LPRN S(UA_9) // (
+#define UA_RPRN S(UA_0) // )
+#define UA_UNDS S(UA_MINS) // _
+#define UA_PLUS S(UA_EQL) // +
+// Row 2
+#define UA_SLSH S(UA_BSLS) // /
+// Row 4
+#define UA_COMM S(UA_DOT) // ,
+
+/* AltGr symbols
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ │ │ │ │ │ │ │ ґ │ │ │ │ │ │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │ │ │ │ │ │ │ │ │ │ │ │ │
+ * ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤
+ * │ │ │ │ │ │ │ │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
+ */
+// Row 2
+#define UA_GE ALGR(UA_HE) // ґ
From 0edc0c05e164e6205f353c4039eed579f38bbdb6 Mon Sep 17 00:00:00 2001
From: XScorpion2
Date: Thu, 28 Apr 2022 12:35:27 -0500
Subject: [PATCH 47/65] [Keyboard] Small fix for Sol3 with only a slave touch
bar (#16952)
---
keyboards/rgbkb/common/touch_encoder.c | 19 ++++++++++---------
1 file changed, 10 insertions(+), 9 deletions(-)
diff --git a/keyboards/rgbkb/common/touch_encoder.c b/keyboards/rgbkb/common/touch_encoder.c
index 1e6c54e8ebf..5f0e4f0ccad 100644
--- a/keyboards/rgbkb/common/touch_encoder.c
+++ b/keyboards/rgbkb/common/touch_encoder.c
@@ -244,12 +244,21 @@ void touch_encoder_update_slave(slave_touch_status_t slave_state) {
}
void touch_encoder_update(int8_t transaction_id) {
- if (!touch_initialized) return;
#if TOUCH_UPDATE_INTERVAL > 0
if (!timer_expired(timer_read(), touch_update_timer)) return;
touch_update_timer = timer_read() + TOUCH_UPDATE_INTERVAL;
#endif
+ if (is_keyboard_master()) {
+ slave_touch_status_t slave_state;
+ if (transaction_rpc_exec(transaction_id, sizeof(bool), &touch_disabled, sizeof(slave_touch_status_t), &slave_state)) {
+ if (memcmp(&touch_slave_state, &slave_state, sizeof(slave_touch_status_t)))
+ touch_encoder_update_slave(slave_state);
+ }
+ }
+
+ if (!touch_initialized) return;
+
read_register(QT_DETECTION_STATUS, &touch_raw[0], sizeof(touch_raw));
touch_processed[1] = touch_raw[1];
touch_processed[2] = touch_raw[2];
@@ -277,14 +286,6 @@ void touch_encoder_update(int8_t transaction_id) {
if ((touch_raw[0] & SLIDER_BIT) && touch_processed[3] != touch_raw[3]) {
touch_encoder_update_position();
}
-
- if (is_keyboard_master()) {
- slave_touch_status_t slave_state;
- if (transaction_rpc_exec(transaction_id, sizeof(bool), &touch_disabled, sizeof(slave_touch_status_t), &slave_state)) {
- if (memcmp(&touch_slave_state, &slave_state, sizeof(slave_touch_status_t)))
- touch_encoder_update_slave(slave_state);
- }
- }
}
void touch_encoder_calibrate(void) {
From a2a9611f18cb437c612f204bb004f6fddcdbea82 Mon Sep 17 00:00:00 2001
From: Felix Jen
Date: Thu, 28 Apr 2022 12:37:57 -0500
Subject: [PATCH 48/65] [Keyboard] Add Maker Keyboards Alexa Solder PCB
(#16943)
---
keyboards/lucid/alexa_solder/alexa_solder.c | 14 +++
keyboards/lucid/alexa_solder/alexa_solder.h | 32 ++++++
keyboards/lucid/alexa_solder/config.h | 103 ++++++++++++++++++
keyboards/lucid/alexa_solder/info.json | 86 +++++++++++++++
.../alexa_solder/keymaps/default/keymap.c | 39 +++++++
.../lucid/alexa_solder/keymaps/via/keymap.c | 57 ++++++++++
.../lucid/alexa_solder/keymaps/via/rules.mk | 1 +
keyboards/lucid/alexa_solder/readme.md | 13 +++
keyboards/lucid/alexa_solder/rules.mk | 21 ++++
9 files changed, 366 insertions(+)
create mode 100644 keyboards/lucid/alexa_solder/alexa_solder.c
create mode 100644 keyboards/lucid/alexa_solder/alexa_solder.h
create mode 100644 keyboards/lucid/alexa_solder/config.h
create mode 100644 keyboards/lucid/alexa_solder/info.json
create mode 100644 keyboards/lucid/alexa_solder/keymaps/default/keymap.c
create mode 100644 keyboards/lucid/alexa_solder/keymaps/via/keymap.c
create mode 100644 keyboards/lucid/alexa_solder/keymaps/via/rules.mk
create mode 100644 keyboards/lucid/alexa_solder/readme.md
create mode 100644 keyboards/lucid/alexa_solder/rules.mk
diff --git a/keyboards/lucid/alexa_solder/alexa_solder.c b/keyboards/lucid/alexa_solder/alexa_solder.c
new file mode 100644
index 00000000000..446e4f063ab
--- /dev/null
+++ b/keyboards/lucid/alexa_solder/alexa_solder.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2022
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#include "alexa_solder.h"
diff --git a/keyboards/lucid/alexa_solder/alexa_solder.h b/keyboards/lucid/alexa_solder/alexa_solder.h
new file mode 100644
index 00000000000..3c835dc943d
--- /dev/null
+++ b/keyboards/lucid/alexa_solder/alexa_solder.h
@@ -0,0 +1,32 @@
+/*
+Copyright 2022
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* Alexa Keymap Definitions */
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, K0E, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2E, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, \
+ K40, K41, K42, K43, K46, K48, K49, K4A, K4C, K4D, K4E \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
+ { K40, K41, K42, K43, KC_NO, KC_NO, K46, KC_NO, K48, K49, K4A, KC_NO, K4C, K4D, K4E } \
+}
diff --git a/keyboards/lucid/alexa_solder/config.h b/keyboards/lucid/alexa_solder/config.h
new file mode 100644
index 00000000000..63fd1f2e2d3
--- /dev/null
+++ b/keyboards/lucid/alexa_solder/config.h
@@ -0,0 +1,103 @@
+/*
+Copyright 2022
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7667 // Maker Keyboards
+#define PRODUCT_ID 0x0006 // Alexa
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER Maker Keyboards
+#define PRODUCT Alexa
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 15
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *å
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { F4, F1, F7, F6, F5 }
+#define MATRIX_COL_PINS { F0, B1, B2, B3, B7, D0, D1, D2, D3, D5, D7, B4, B5, B6, C6 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Define Indicator LED's */
+#define LED_CAPS_LOCK_PIN C7
+
+/* Define less important options */
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
diff --git a/keyboards/lucid/alexa_solder/info.json b/keyboards/lucid/alexa_solder/info.json
new file mode 100644
index 00000000000..319cb712065
--- /dev/null
+++ b/keyboards/lucid/alexa_solder/info.json
@@ -0,0 +1,86 @@
+{
+ "keyboard_name": "Alexa Solder",
+ "url": "http://www.makerkeyboards.com",
+ "maintainer": "Maker Keyboards",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"x": 0, "y": 0},
+ {"x": 1, "y": 0},
+ {"x": 2, "y": 0},
+ {"x": 3, "y": 0},
+ {"x": 4, "y": 0},
+ {"x": 5, "y": 0},
+ {"x": 6, "y": 0},
+ {"x": 7, "y": 0},
+ {"x": 8, "y": 0},
+ {"x": 9, "y": 0},
+ {"x": 10, "y": 0},
+ {"x": 11, "y": 0},
+ {"x": 12, "y": 0},
+ {"x": 13, "y": 0},
+ {"x": 14, "y": 0},
+ {"x": 15, "y": 0},
+
+ {"x": 0, "y": 1, "w": 1.5},
+ {"x": 1.5, "y": 1},
+ {"x": 2.5, "y": 1},
+ {"x": 3.5, "y": 1},
+ {"x": 4.5, "y": 1},
+ {"x": 5.5, "y": 1},
+ {"x": 6.5, "y": 1},
+ {"x": 7.5, "y": 1},
+ {"x": 8.5, "y": 1},
+ {"x": 9.5, "y": 1},
+ {"x": 10.5, "y": 1},
+ {"x": 11.5, "y": 1},
+ {"x": 12.5, "y": 1},
+ {"x": 13.5, "y": 1, "w": 1.5},
+ {"x": 15, "y": 1},
+
+ {"x": 0, "y": 2, "w": 1.75},
+ {"x": 1.75, "y": 2},
+ {"x": 2.75, "y": 2},
+ {"x": 3.75, "y": 2},
+ {"x": 4.75, "y": 2},
+ {"x": 5.75, "y": 2},
+ {"x": 6.75, "y": 2},
+ {"x": 7.75, "y": 2},
+ {"x": 8.75, "y": 2},
+ {"x": 9.75, "y": 2},
+ {"x": 10.75, "y": 2},
+ {"x": 11.75, "y": 2},
+ {"x": 12.75, "y": 2, "w": 2.25},
+ {"x": 15, "y": 2},
+
+ {"x": 0, "y": 3, "w": 1.25},
+ {"x": 1.25, "y": 3},
+ {"x": 2.25, "y": 3},
+ {"x": 3.25, "y": 3},
+ {"x": 4.25, "y": 3},
+ {"x": 5.25, "y": 3},
+ {"x": 6.25, "y": 3},
+ {"x": 7.25, "y": 3},
+ {"x": 8.25, "y": 3},
+ {"x": 9.25, "y": 3},
+ {"x": 10.25, "y": 3},
+ {"x": 11.25, "y": 3},
+ {"x": 12.25, "y": 3, "w": 1.75},
+ {"x": 14, "y": 3},
+ {"x": 15, "y": 3},
+
+ {"x": 0, "y": 4, "w": 1.25},
+ {"x": 1.25, "y": 4, "w": 1.25},
+ {"x": 2.5, "y": 4, "w": 1.25},
+ {"x": 3.75, "y": 4, "w": 2.25},
+ {"x": 6, "y": 4, "w": 1.25},
+ {"x": 7.25, "y": 4, "w": 2.75},
+ {"x": 10, "y": 4, "w": 1.25},
+ {"x": 11.25, "y":4, "w": 1.25},
+ {"x": 13, "y": 4},
+ {"x": 14, "y": 4},
+ {"x": 15, "y": 4}
+ ]
+ }
+ }
+}
diff --git a/keyboards/lucid/alexa_solder/keymaps/default/keymap.c b/keyboards/lucid/alexa_solder/keymaps/default/keymap.c
new file mode 100644
index 00000000000..89ab39deace
--- /dev/null
+++ b/keyboards/lucid/alexa_solder/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
+/*
+Copyright 2022
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_all(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_DEL, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUS, RESET, KC_PGUP, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ )
+};
diff --git a/keyboards/lucid/alexa_solder/keymaps/via/keymap.c b/keyboards/lucid/alexa_solder/keymaps/via/keymap.c
new file mode 100644
index 00000000000..bbf11418c78
--- /dev/null
+++ b/keyboards/lucid/alexa_solder/keymaps/via/keymap.c
@@ -0,0 +1,57 @@
+/*
+Copyright 2022
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_all(
+ KC_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_GRV,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_all(
+ KC_GESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_BSPC, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SLCK, KC_PAUSE,RESET, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MUTE,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT
+ ),
+
+ [_LAYER2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/lucid/alexa_solder/keymaps/via/rules.mk b/keyboards/lucid/alexa_solder/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/lucid/alexa_solder/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/lucid/alexa_solder/readme.md b/keyboards/lucid/alexa_solder/readme.md
new file mode 100644
index 00000000000..3a16e581782
--- /dev/null
+++ b/keyboards/lucid/alexa_solder/readme.md
@@ -0,0 +1,13 @@
+# Alexa Solder PCB by Lucid
+
+The following is the QMK Firmware for the Alexa *Solder* PCB for [MakerKeyboards](http://www.makerkeyboards.com).
+* Keyboard Maintainer: Lucid
+* Hardware Supported: Alexa
+
+Make example for this keyboard (after setting up your build environment):
+
+ make lucid/alexa_solder:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+Bootloader can be entered by pressing the reset button near the main microcontroller while the board is plugged in. Alternatively, it may be entered by holding the top-left-most switch and plugging in the PCB while held.
diff --git a/keyboards/lucid/alexa_solder/rules.mk b/keyboards/lucid/alexa_solder/rules.mk
new file mode 100644
index 00000000000..67f00abb1ef
--- /dev/null
+++ b/keyboards/lucid/alexa_solder/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
From 2275b35e924998645852ae5b85a982c369ebfd8c Mon Sep 17 00:00:00 2001
From: skeletonkbd <90203406+skeletonkbd@users.noreply.github.com>
Date: Fri, 29 Apr 2022 03:16:21 +0900
Subject: [PATCH 49/65] [Keyboard] Add SkeletonNumPad (#16753)
* add SkeletonNumPad keyboard
* fix
* fix
* fixed info.json
* Update keyboards/skeletonkbd/skeletonnumpad/rules.mk
Co-authored-by: Ryan
* Change RGBLIGHT_LIMIT_VAL
Co-authored-by: Ryan
---
keyboards/skeletonkbd/skeletonnumpad/config.h | 145 ++++++++++++++++++
.../skeletonkbd/skeletonnumpad/info.json | 10 ++
.../skeletonnumpad/keymaps/default/keymap.c | 56 +++++++
.../skeletonnumpad/keymaps/default/readme.md | 3 +
.../skeletonnumpad/keymaps/via/keymap.c | 55 +++++++
.../skeletonnumpad/keymaps/via/readme.md | 3 +
.../skeletonnumpad/keymaps/via/rules.mk | 1 +
.../skeletonkbd/skeletonnumpad/readme.md | 27 ++++
keyboards/skeletonkbd/skeletonnumpad/rules.mk | 18 +++
.../skeletonnumpad/skeletonnumpad.c | 17 ++
.../skeletonnumpad/skeletonnumpad.h | 42 +++++
11 files changed, 377 insertions(+)
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/config.h
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/info.json
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/keymaps/default/keymap.c
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/keymaps/default/readme.md
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/keymaps/via/keymap.c
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/keymaps/via/readme.md
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/keymaps/via/rules.mk
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/readme.md
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/rules.mk
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/skeletonnumpad.c
create mode 100644 keyboards/skeletonkbd/skeletonnumpad/skeletonnumpad.h
diff --git a/keyboards/skeletonkbd/skeletonnumpad/config.h b/keyboards/skeletonkbd/skeletonnumpad/config.h
new file mode 100644
index 00000000000..3e93068b5a2
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/config.h
@@ -0,0 +1,145 @@
+/*
+Copyright 2022 SkeletonKBD
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x736C
+#define PRODUCT_ID 0x6E70
+#define DEVICE_VER 0x0001
+#define MANUFACTURER SkeletonKBD
+#define PRODUCT SkeletonNumPad
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 4
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+ */
+#define MATRIX_ROW_PINS { B6, C6, C7, F7, F6 }
+#define MATRIX_COL_PINS { D6, D7, B4, B5 }
+#define UNUSED_PINS
+
+/* COL2ROW, ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/*
+ * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
+ */
+#define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
+
+//#define LED_NUM_LOCK_PIN B0
+//#define LED_CAPS_LOCK_PIN B1
+//#define LED_SCROLL_LOCK_PIN B2
+//#define LED_COMPOSE_PIN B3
+//#define LED_KANA_PIN B4
+
+//#define BACKLIGHT_PIN B7
+//#define BACKLIGHT_LEVELS 3
+//#define BACKLIGHT_BREATHING
+
+#define RGB_DI_PIN D4
+#ifdef RGB_DI_PIN
+# define RGBLED_NUM 17
+# define RGBLIGHT_HUE_STEP 8
+# define RGBLIGHT_SAT_STEP 8
+# define RGBLIGHT_VAL_STEP 8
+# define RGBLIGHT_LIMIT_VAL 120 /* The maximum brightness level */
+# define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
+# define RGBLIGHT_EFFECT_BREATHING
+# define RGBLIGHT_EFFECT_RAINBOW_MOOD
+# define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+# define RGBLIGHT_EFFECT_SNAKE
+# define RGBLIGHT_EFFECT_KNIGHT
+# define RGBLIGHT_EFFECT_CHRISTMAS
+# define RGBLIGHT_EFFECT_STATIC_GRADIENT
+# define RGBLIGHT_EFFECT_RGB_TEST
+# define RGBLIGHT_EFFECT_ALTERNATING
+/*== customize breathing effect ==*/
+/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
+//# define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
+/*==== use exp() and sin() ====*/
+//# define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
+//# define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
+#endif
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+//#define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+
+/* Bootmagic Lite key configuration */
+//#define BOOTMAGIC_LITE_ROW 0
+//#define BOOTMAGIC_LITE_COLUMN 0
diff --git a/keyboards/skeletonkbd/skeletonnumpad/info.json b/keyboards/skeletonkbd/skeletonnumpad/info.json
new file mode 100644
index 00000000000..62f3861e5ee
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/info.json
@@ -0,0 +1,10 @@
+{
+ "keyboard_name": "skeletonnumpad",
+ "url": "https://github.com/skeletonkbd/SkeletonNumPad",
+ "maintainer": "skeletonkbd",
+ "layouts": {
+ "LAYOUT_numpad_5x4": {
+ "layout": [{"label":"Num Lock", "x":0, "y":0}, {"label":"/", "x":1, "y":0}, {"label":"*", "x":2, "y":0}, {"label":"-", "x":3, "y":0}, {"label":"7", "x":0, "y":1}, {"label":"8", "x":1, "y":1}, {"label":"9", "x":2, "y":1}, {"label":"+", "x":3, "y":1, "h":2}, {"label":"4", "x":0, "y":2}, {"label":"5", "x":1, "y":2}, {"label":"6", "x":2, "y":2}, {"label":"1", "x":0, "y":3}, {"label":"2", "x":1, "y":3}, {"label":"3", "x":2, "y":3}, {"label":"Enter", "x":3, "y":3, "h":2}, {"label":"0", "x":0, "y":4, "w":2}, {"label":".", "x":2, "y":4}]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/skeletonkbd/skeletonnumpad/keymaps/default/keymap.c b/keyboards/skeletonkbd/skeletonnumpad/keymaps/default/keymap.c
new file mode 100644
index 00000000000..0f6bd59563f
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/keymaps/default/keymap.c
@@ -0,0 +1,56 @@
+/* Copyright 2022 SkeletonKBD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _L1,
+ _L2,
+ _L3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_numpad_5x4(
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+ [_L1] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_L2] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_L3] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
+
diff --git a/keyboards/skeletonkbd/skeletonnumpad/keymaps/default/readme.md b/keyboards/skeletonkbd/skeletonnumpad/keymaps/default/readme.md
new file mode 100644
index 00000000000..4a4ed5e7e99
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/keymaps/default/readme.md
@@ -0,0 +1,3 @@
+
+
+# The default keymap for skeletonnumpad
\ No newline at end of file
diff --git a/keyboards/skeletonkbd/skeletonnumpad/keymaps/via/keymap.c b/keyboards/skeletonkbd/skeletonnumpad/keymaps/via/keymap.c
new file mode 100644
index 00000000000..d6add70ce1f
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/keymaps/via/keymap.c
@@ -0,0 +1,55 @@
+/* Copyright 2022 SkeletonKBD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#include QMK_KEYBOARD_H
+
+// Defines names for use in layer keycodes and the keymap
+enum layer_names {
+ _BASE,
+ _L1,
+ _L2,
+ _L3
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [_BASE] = LAYOUT_numpad_5x4(
+ KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
+ ),
+ [_L1] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_L2] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [_L3] = LAYOUT_numpad_5x4(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+};
diff --git a/keyboards/skeletonkbd/skeletonnumpad/keymaps/via/readme.md b/keyboards/skeletonkbd/skeletonnumpad/keymaps/via/readme.md
new file mode 100644
index 00000000000..8ebc93b1f80
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/keymaps/via/readme.md
@@ -0,0 +1,3 @@
+
+
+# The default keymap for skeletonnumpad
diff --git a/keyboards/skeletonkbd/skeletonnumpad/keymaps/via/rules.mk b/keyboards/skeletonkbd/skeletonnumpad/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/skeletonkbd/skeletonnumpad/readme.md b/keyboards/skeletonkbd/skeletonnumpad/readme.md
new file mode 100644
index 00000000000..fc67c79e54f
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/readme.md
@@ -0,0 +1,27 @@
+# SkeletonNumPad
+
+
+
+Simple NumPad with acrylic case.
+
+- Keyboard Maintainer: [SkeletonKBD](https://github.com/skeletonkbd/SkeletonNumPad)
+- Hardware Supported: SkeletonNumPad
+- Hardware Availability: https://github.com/skeletonkbd/SkeletonNumPad
+
+Make example for this keyboard (after setting up your build environment):
+
+ make skeletonkbd/skeletonnumpad:default
+
+Flashing example for this keyboard:
+
+ make skeletonkbd/skeletonnumpad:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+- **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+- **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+- **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/skeletonkbd/skeletonnumpad/rules.mk b/keyboards/skeletonkbd/skeletonnumpad/rules.mk
new file mode 100644
index 00000000000..3ff392a61f5
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/rules.mk
@@ -0,0 +1,18 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = no # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/skeletonkbd/skeletonnumpad/skeletonnumpad.c b/keyboards/skeletonkbd/skeletonnumpad/skeletonnumpad.c
new file mode 100644
index 00000000000..38c78ca56e2
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/skeletonnumpad.c
@@ -0,0 +1,17 @@
+/* Copyright 2022 SkeletonKBD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include "skeletonnumpad.h"
diff --git a/keyboards/skeletonkbd/skeletonnumpad/skeletonnumpad.h b/keyboards/skeletonkbd/skeletonnumpad/skeletonnumpad.h
new file mode 100644
index 00000000000..9782090efed
--- /dev/null
+++ b/keyboards/skeletonkbd/skeletonnumpad/skeletonnumpad.h
@@ -0,0 +1,42 @@
+/* Copyright 2022 SkeletonKBD
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#pragma once
+
+#include "quantum.h"
+
+/* This is a shortcut to help you visually see your layout.
+ *
+ * The first section contains all of the arguments representing the physical
+ * layout of the board and position of the keys.
+ *
+ * The second converts the arguments into a two-dimensional array which
+ * represents the switch matrix.
+ */
+
+#define LAYOUT_numpad_5x4( \
+ K00, K01, K02, K03, \
+ K10, K11, K12, \
+ K20, K21, K22, K13, \
+ K30, K31, K32, \
+ K40, K42, K33 \
+) { \
+ { K00, K01, K02, K03 }, \
+ { K10, K11, K12, K13 }, \
+ { K20, K21, K22, KC_NO },\
+ { K30, K31, K32, K33 }, \
+ { K40, KC_NO, K42, KC_NO } \
+}
From ff4a6a2fd7301ad04dd89e6beadb1f36677215c3 Mon Sep 17 00:00:00 2001
From: Nicholas Granado
Date: Thu, 28 Apr 2022 23:58:22 -0700
Subject: [PATCH 50/65] [Keymap] Add keymap for kinesis advantage (#16862)
Co-authored-by: Drashna Jaelre
Co-authored-by: Ryan
---
keyboards/kinesis/keymaps/heatxsink/keymap.c | 228 ++++++++++++++++++
keyboards/kinesis/keymaps/heatxsink/readme.md | 165 +++++++++++++
keyboards/kinesis/keymaps/heatxsink/rules.mk | 5 +
3 files changed, 398 insertions(+)
create mode 100644 keyboards/kinesis/keymaps/heatxsink/keymap.c
create mode 100644 keyboards/kinesis/keymaps/heatxsink/readme.md
create mode 100644 keyboards/kinesis/keymaps/heatxsink/rules.mk
diff --git a/keyboards/kinesis/keymaps/heatxsink/keymap.c b/keyboards/kinesis/keymaps/heatxsink/keymap.c
new file mode 100644
index 00000000000..1f49c4622c8
--- /dev/null
+++ b/keyboards/kinesis/keymaps/heatxsink/keymap.c
@@ -0,0 +1,228 @@
+/* Copyright 2022 Nicholas Granado
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layer_names {
+ _DEFAULT,
+ _QWERTY,
+ _COLEMAK_MOD_DH,
+ _WORKMAN,
+ _KEYPAD,
+ _LAYERS,
+};
+
+#define DEFAULT DF(_DEFAULT)
+#define QWERTY TO(_QWERTY)
+#define CMMDH TO(_COLEMAK_MOD_DH)
+#define WM TO(_WORKMAN)
+#define KEYPAD TO(_KEYPAD)
+#define LAYERS OSL(_LAYERS)
+#define HCTLESC CTL_T(KC_ESC)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_DEFAULT] = LAYOUT(
+ // LHAND
+ KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,
+ KC_EQL ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,
+ KC_TAB ,_______,_______,_______,_______,_______,
+ HCTLESC,_______,_______,_______,_______,_______,
+ KC_LSPO,_______,_______,_______,_______,_______,
+ KC_GRV ,LAYERS ,KC_LEFT,KC_RGHT,
+ // LTHUMB
+ KC_LALT,KC_LCTL,
+ KC_HOME,
+ KC_BSPC,KC_DEL ,KC_END ,
+ // RHAND
+ KC_F9 ,KC_F10 ,KC_F11 ,KC_F12 ,KC_PSCR,KC_SLCK,KC_PAUS,KEYPAD ,RESET ,
+ KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_MINS,
+ _______,_______,_______,_______,_______,KC_BSLS,
+ _______,_______,_______,_______,_______,KC_QUOT,
+ _______,_______,_______,_______,_______,KC_RSPC,
+ KC_UP ,KC_DOWN,KC_LBRC,KC_RBRC,
+ // RTHUMB
+ KC_RCTL,KC_LGUI,
+ KC_PGUP,
+ KC_PGDN,KC_ENT ,KC_SPC
+ ),
+
+ [_QWERTY] = LAYOUT(
+ // LHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,
+ _______,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,
+ _______,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,
+ _______,_______,_______,_______,
+ // LTHUMB
+ _______,_______,
+ _______,
+ _______,_______,_______,
+ // RHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,_______,
+ KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN,_______,
+ KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_SLSH,_______,
+ _______,_______,_______,_______,
+ // RTHUMB
+ _______,_______,
+ _______,
+ _______,_______,_______
+ ),
+
+ [_COLEMAK_MOD_DH] = LAYOUT(
+ // LHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,KC_Q ,KC_W ,KC_F ,KC_P ,KC_B,
+ _______,KC_A ,KC_R ,KC_S ,KC_T ,KC_G,
+ _______,KC_Z ,KC_X ,KC_C ,KC_D ,KC_V,
+ _______,_______,_______,_______,
+ // LTHUMB
+ _______,_______,
+ _______,
+ _______,_______,_______,
+ // RHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ KC_J ,KC_L ,KC_U ,KC_Y ,KC_SCLN,_______,
+ KC_M ,KC_N ,KC_E ,KC_I ,KC_O ,_______,
+ KC_K ,KC_H ,KC_COMM,KC_DOT ,KC_SLSH,_______,
+ _______,_______,_______,_______,
+ // RTHUMB
+ _______,_______,
+ _______,
+ _______,_______,_______
+ ),
+
+ [_WORKMAN] = LAYOUT(
+ // LHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,KC_Q ,KC_D ,KC_R ,KC_W ,KC_B,
+ _______,KC_A ,KC_S ,KC_H ,KC_T ,KC_G,
+ _______,KC_Z ,KC_X ,KC_M ,KC_C ,KC_V,
+ _______,_______,_______,_______,
+ // LTHUMB
+ _______,_______,
+ _______,
+ _______,_______,_______,
+ // RHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ KC_J ,KC_F ,KC_U ,KC_P ,KC_SCLN,_______,
+ KC_Y ,KC_N ,KC_E ,KC_O ,KC_I ,_______,
+ KC_K ,KC_L ,KC_COMM,KC_DOT ,KC_SLSH,_______,
+ _______,_______,_______,_______,
+ // RTHUMB
+ _______,_______,
+ _______,
+ _______,_______,_______
+ ),
+
+ [_KEYPAD] = LAYOUT (
+ // LHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,_______,KC_MUTE,KC_VOLD,KC_VOLU,_______,
+ _______,KC_MSTP,KC_MPRV,KC_MPLY,KC_MNXT,KC_MSEL,
+ _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,
+ // LTHUMB
+ _______,_______,
+ _______,
+ _______,_______,_______,
+
+ // RHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,KC_NLCK,KC_PEQL,KC_PSLS,KC_PAST,_______,
+ _______,KC_P7, KC_P8, KC_P9, KC_PMNS,_______,
+ _______,KC_P4, KC_P5, KC_P6, KC_PPLS,_______,
+ _______,KC_P1, KC_P2, KC_P3, KC_PENT,_______,
+ KC_LPRN,KC_RPRN,KC_PDOT,KC_PENT,
+ // RTHUMB
+ _______,_______,
+ _______,
+ _______,KC_PENT,KC_P0
+ ),
+
+ [_LAYERS] = LAYOUT (
+ // LHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,QWERTY ,CMMDH ,WM ,KEYPAD ,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,
+ // LTHUMB
+ _______,_______,
+ _______,
+ _______,_______,_______,
+
+ // RHAND
+ _______,_______,_______,_______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,_______,_______,
+ _______,_______,_______,_______,
+ // RTHUMB
+ _______,_______,
+ _______,
+ _______,_______,_______
+ ),
+};
+
+layer_state_t layer_state_set_user(layer_state_t state) {
+ writePinHigh(LED_NUM_LOCK_PIN);
+ writePinHigh(LED_SCROLL_LOCK_PIN);
+ writePinHigh(LED_COMPOSE_PIN);
+ writePinHigh(LED_CAPS_LOCK_PIN);
+ switch (get_highest_layer(state)) {
+ case _QWERTY:
+ // Caps Lock Lit
+ writePinLow(LED_CAPS_LOCK_PIN);
+ break;
+ case _COLEMAK_MOD_DH:
+ // Num Lock Lit
+ writePinLow(LED_NUM_LOCK_PIN);
+ break;
+ case _WORKMAN:
+ // Scroll Lock Lit
+ writePinLow(LED_SCROLL_LOCK_PIN);
+ break;
+ case _KEYPAD:
+ // Compose Lit
+ writePinLow(LED_COMPOSE_PIN);
+ break;
+ case _LAYERS:
+ // All LEDs Lit
+ writePinLow(LED_SCROLL_LOCK_PIN);
+ writePinLow(LED_NUM_LOCK_PIN);
+ writePinLow(LED_CAPS_LOCK_PIN);
+ writePinLow(LED_COMPOSE_PIN);
+ break;
+ }
+ return state;
+}
+
+bool led_update_user(led_t led_state) {
+ // disable led_update_kb() so that we do not override layer indicators
+ return false;
+}
+
diff --git a/keyboards/kinesis/keymaps/heatxsink/readme.md b/keyboards/kinesis/keymaps/heatxsink/readme.md
new file mode 100644
index 00000000000..83a2b558549
--- /dev/null
+++ b/keyboards/kinesis/keymaps/heatxsink/readme.md
@@ -0,0 +1,165 @@
+# heatxsink's keymap for kinesis advantage w/ kinx
+
+## my keymap has three objectives ...
+1. Make it easy to add keyboard layouts (layers).
+2. Easy to swap between keyboard layouts (layers).
+3. Use LED indicators on the kinX controller to provide feedback as to what layer is selected.
+
+## layer description
+0. DEFAULT (function key row, number row, left/right gutter keys, and thumb keys)
+1. QWERTY
+2. CMMDH [Colemak Mod-DH](https://colemakmods.github.io/mod-dh/)
+3. WM [Workman](https://workmanlayout.org/)
+3. Keypad (number pad on the right, media keys on the left)
+
+## layers
+```
+Keymap: DEFAULT
+Description: keys separated by "/" tap for first, hold for second; uses Space Cadet Shifts
+
+ ,-------------------------------------------------------------------------------------------------------------------.
+ | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F8 | F9 | F10 | F12 | PSCR | SLCK | PAUS |KEYPAD| BOOT |
+ |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
+ | =+ | 1! | 2@ | 3# | 4$ | 5% | | 6^ | 7& | 8* | 9( | 0) | -_ |
+ |--------+------+------+------+------+------| +------+------+------+------+------+--------|
+ | Tab | | | | | | | | | | | | \| |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ |ESC/CTRL| | | | | | | | | | | | '" |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ |SC_Shift| | | | | | | | | | | |SC_Shift|
+ `--------+------+------+------+------+------' `------+------+------+------+------+--------'
+ | `~ |LAYERS| Left | Right| | Up | Down | [{ | ]} |
+ `---------------------------' `---------------------------'
+ ,-------------. ,-------------.
+ | ALT | CTRL | | CTRL | GUI |
+ ,------|------|------| |------+------+------.
+ | | | Home | | PgUp | | |
+ | BkSp | Del |------| |------|Return| Space|
+ | | | End | | PgDn | | |
+ `--------------------' `--------------------'
+
+Keymap: LAYERS
+Description: OSL that allows for easy switching between layers.
+
+ ,-------------------------------------------------------------------------------------------------------------------.
+ | | | | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
+ | |QWERTY|CMMDH |WM |KEYPAD| | | | | | | | |
+ |--------+------+------+------+------+------| +------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ `--------+------+------+------+------+------' `------+------+------+------+------+--------'
+ | | | | | | | | | |
+ `---------------------------' `---------------------------'
+ ,-------------. ,-------------.
+ | | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | | |
+ | | |------| |------| | |
+ | | | | | | | |
+ `--------------------' `--------------------'
+
+Keymap: QWERTY
+
+ ,-------------------------------------------------------------------------------------------------------------------.
+ | | | | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------| +------+------+------+------+------+--------|
+ | | Q | W | E | R | T | | Y | U | I | O | P | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | A | S | D | F | G | | H | J | K | L | ;: | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | Z | X | C | V | B | | N | M | ,. | .> | /? | |
+ `--------+------+------+------+------+------' `------+------+------+------+------+--------'
+ | | | | | | | | | |
+ `---------------------------' `---------------------------'
+ ,-------------. ,-------------.
+ | | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | | |
+ | | |------| |------| | |
+ | | | | | | | |
+ `--------------------' `--------------------'
+
+Keymap: CMMDH (Colemak Mod-DH)
+
+ ,-------------------------------------------------------------------------------------------------------------------.
+ | | | | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------| +------+------+------+------+------+--------|
+ | | Q | W | F | P | B | | J | L | U | Y | ;: | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | A | R | S | T | G | | M | N | E | I | O | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | Z | X | C | D | V | | K | H | ,. | .> | /? | |
+ `--------+------+------+------+------+------' `------+------+------+------+------+--------'
+ | | | | | | | | | |
+ `---------------------------' `---------------------------'
+ ,-------------. ,-------------.
+ | | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | | |
+ | | |------| |------| | |
+ | | | | | | | |
+ `--------------------' `--------------------'
+
+Keymap: WM (Workman)
+
+ ,-------------------------------------------------------------------------------------------------------------------.
+ | | | | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
+ | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------| +------+------+------+------+------+--------|
+ | | Q | D | R | W | B | | J | F | U | P | ;: | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | A | S | H | T | G | | Y | N | E | O | I | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | Z | X | M | C | V | | K | L | ,. | .> | /? | |
+ `--------+------+------+------+------+------' `------+------+------+------+------+--------'
+ | | | | | | | | | |
+ `---------------------------' `---------------------------'
+ ,-------------. ,-------------.
+ | | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | | |
+ | | |------| |------| | |
+ | | | | | | | |
+ `--------------------' `--------------------'
+
+Keymap: KEYPAD
+
+ ,-------------------------------------------------------------------------------------------------------------------.
+ | | | | | | | | | | | | | | | | |
+ |--------+------+------+------+------+------+---------------------------+------+------+------+------+------+--------|
+ | | | | | | | | |NUMLCK| = | / |PASTE | |
+ |--------+------+------+------+------+------| +------+------+------+------+------+--------|
+ | | | MUTE | VOL- | VOL+ | | | | 7 | 8 | 9 | - | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | STOP | PREV | PLAY | NEXT |SELECT| | | 4 | 5 | 6 | + | |
+ |--------+------+------+------+------+------| |------+------+------+------+------+--------|
+ | | | | | | | | | 1 | 2 | 3 | ENTER| |
+ `--------+------+------+------+------+------' `------+------+------+------+------+--------'
+ | | | | | | ( | ) | . | ENTER|
+ `---------------------------' `---------------------------'
+ ,-------------. ,-------------.
+ | | | | | |
+ ,------|------|------| |------+------+------.
+ | | | | | | | |
+ | | |------| |------|ENTER | 0 |
+ | | | | | | | |
+ `--------------------' `--------------------'
+```
+## requirements
+* K500 or K600 Kinesis Advantage MPC or Advantage 2.
+* [kinx project / stapelberg controller](https://github.com/kinx-project/kint)
+
+## shoutout(s)
+* `stapelberg` self explanitory
+* `jwon` for his LED indicator code
+* `tuesdayjohn` for how he did layers
+
diff --git a/keyboards/kinesis/keymaps/heatxsink/rules.mk b/keyboards/kinesis/keymaps/heatxsink/rules.mk
new file mode 100644
index 00000000000..f8c1a24ccac
--- /dev/null
+++ b/keyboards/kinesis/keymaps/heatxsink/rules.mk
@@ -0,0 +1,5 @@
+BOOTMAGIC_ENABLE = no
+MOUSEKEY_ENABLE = no
+EXTRAKEY_ENABLE = yes
+NKRO_ENABLE = yes
+SLEEP_LED_ENABLE = yes
From 3e9fec5dccb7eacfc2ccdadea0cda4cf4a3d623f Mon Sep 17 00:00:00 2001
From: Felix Jen
Date: Fri, 29 Apr 2022 02:06:49 -0500
Subject: [PATCH 51/65] [Keyboard] Solanis H87C/H88C Compatible Replacement
PCBs (#16942)
Co-authored-by: Ryan
---
keyboards/fjlabs/solanis/config.h | 116 ++++++++++++++++++
keyboards/fjlabs/solanis/info.json | 108 ++++++++++++++++
.../fjlabs/solanis/keymaps/default/keymap.c | 41 +++++++
keyboards/fjlabs/solanis/keymaps/via/keymap.c | 61 +++++++++
keyboards/fjlabs/solanis/keymaps/via/rules.mk | 1 +
keyboards/fjlabs/solanis/readme.md | 15 +++
keyboards/fjlabs/solanis/rules.mk | 21 ++++
keyboards/fjlabs/solanis/solanis.c | 14 +++
keyboards/fjlabs/solanis/solanis.h | 34 +++++
9 files changed, 411 insertions(+)
create mode 100644 keyboards/fjlabs/solanis/config.h
create mode 100644 keyboards/fjlabs/solanis/info.json
create mode 100644 keyboards/fjlabs/solanis/keymaps/default/keymap.c
create mode 100644 keyboards/fjlabs/solanis/keymaps/via/keymap.c
create mode 100644 keyboards/fjlabs/solanis/keymaps/via/rules.mk
create mode 100644 keyboards/fjlabs/solanis/readme.md
create mode 100644 keyboards/fjlabs/solanis/rules.mk
create mode 100644 keyboards/fjlabs/solanis/solanis.c
create mode 100644 keyboards/fjlabs/solanis/solanis.h
diff --git a/keyboards/fjlabs/solanis/config.h b/keyboards/fjlabs/solanis/config.h
new file mode 100644
index 00000000000..50649889fc4
--- /dev/null
+++ b/keyboards/fjlabs/solanis/config.h
@@ -0,0 +1,116 @@
+/*
+Copyright 2022
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7074 // FJLaboratories
+#define PRODUCT_ID 0x0017 // Solanis
+#define DEVICE_VER 0x0001 // Version 1
+#define MANUFACTURER FJLaboratories
+#define PRODUCT Solanis
+
+/* key matrix size */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 17
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ * ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *å
+*/
+
+// Checked with Eagle Schematic
+#define MATRIX_ROW_PINS { B4, B5, B6, C0, E1, E0 }
+#define MATRIX_COL_PINS { F2, F3, F4, F5, F6, F7, A0, A1, A2, A3, A4, A5, A6, A7, D5, D6, D7 }
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Define RGB */
+#define RGB_DI_PIN B7
+#define RGBLED_NUM 24
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLIGHT_LIMIT_VAL 172
+#define RGB_VAL_STEP 12
+
+/* Define less important options */
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
\ No newline at end of file
diff --git a/keyboards/fjlabs/solanis/info.json b/keyboards/fjlabs/solanis/info.json
new file mode 100644
index 00000000000..2963f672de8
--- /dev/null
+++ b/keyboards/fjlabs/solanis/info.json
@@ -0,0 +1,108 @@
+{
+ "keyboard_name": "Solanis",
+ "url": "http://www.fjlaboratories.com/",
+ "maintainer": "FJLabs",
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {"label":"Esc", "x":0, "y":0},
+ {"label":"F1", "x":1.25, "y":0},
+ {"label":"F2", "x":2.25, "y":0},
+ {"label":"F3", "x":3.25, "y":0},
+ {"label":"F4", "x":4.25, "y":0},
+ {"label":"F5", "x":5.5, "y":0},
+ {"label":"F6", "x":6.5, "y":0},
+ {"label":"F7", "x":7.5, "y":0},
+ {"label":"F8", "x":8.5, "y":0},
+ {"label":"F9", "x":9.75, "y":0},
+ {"label":"F10", "x":10.75, "y":0},
+ {"label":"F11", "x":11.75, "y":0},
+ {"label":"F12", "x":12.75, "y":0},
+ {"label":"F13", "x":14, "y":0},
+ {"label":"PrtSc", "x":15.25, "y":0},
+ {"label":"Scroll Lock", "x":16.25, "y":0},
+ {"label":"Pause", "x":17.25, "y":0},
+
+ {"label":"~", "x":0, "y":1.25},
+ {"label":"!", "x":1, "y":1.25},
+ {"label":"@", "x":2, "y":1.25},
+ {"label":"#", "x":3, "y":1.25},
+ {"label":"$", "x":4, "y":1.25},
+ {"label":"%", "x":5, "y":1.25},
+ {"label":"^", "x":6, "y":1.25},
+ {"label":"&", "x":7, "y":1.25},
+ {"label":"*", "x":8, "y":1.25},
+ {"label":"(", "x":9, "y":1.25},
+ {"label":")", "x":10, "y":1.25},
+ {"label":"_", "x":11, "y":1.25},
+ {"label":"+", "x":12, "y":1.25},
+ {"label":"Back Space", "x":13, "y":1.25},
+ {"label":"Back Space", "x":14, "y":1.25}
+ {"label":"Insert", "x":15.25, "y":1.25},
+ {"label":"Home", "x":16.25, "y":1.25},
+ {"label":"PgUp", "x":17.25, "y":1.25},
+
+ {"label":"Tab", "x":0, "y":2.25, "w":1.5},
+ {"label":"Q", "x":1.5, "y":2.25},
+ {"label":"W", "x":2.5, "y":2.25},
+ {"label":"E", "x":3.5, "y":2.25},
+ {"label":"R", "x":4.5, "y":2.25},
+ {"label":"T", "x":5.5, "y":2.25},
+ {"label":"Y", "x":6.5, "y":2.25},
+ {"label":"U", "x":7.5, "y":2.25},
+ {"label":"I", "x":8.5, "y":2.25},
+ {"label":"O", "x":9.5, "y":2.25},
+ {"label":"P", "x":10.5, "y":2.25},
+ {"label":"{", "x":11.5, "y":2.25},
+ {"label":"}", "x":12.5, "y":2.25},
+ {"label":"|", "x":13.5, "y":2.25, "w":1.5},
+ {"label":"Delete", "x":15.25, "y":2.25},
+ {"label":"End", "x":16.25, "y":2.25},
+ {"label":"PgDn", "x":17.25, "y":2.25},
+
+ {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
+ {"label":"A", "x":1.75, "y":3.25},
+ {"label":"S", "x":2.75, "y":3.25},
+ {"label":"D", "x":3.75, "y":3.25},
+ {"label":"F", "x":4.75, "y":3.25},
+ {"label":"G", "x":5.75, "y":3.25},
+ {"label":"H", "x":6.75, "y":3.25},
+ {"label":"J", "x":7.75, "y":3.25},
+ {"label":"K", "x":8.75, "y":3.25},
+ {"label":"L", "x":9.75, "y":3.25},
+ {"label":":", "x":10.75, "y":3.25},
+ {"label":"SQ", "x":11.75, "y":3.25},
+ {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
+
+ {"label":"Shift", "x":0, "y":4.25, "w":2.25},
+ {"label":"Z", "x":2.25, "y":4.25},
+ {"label":"X", "x":3.25, "y":4.25},
+ {"label":"C", "x":4.25, "y":4.25},
+ {"label":"V", "x":5.25, "y":4.25},
+ {"label":"B", "x":6.25, "y":4.25},
+ {"label":"N", "x":7.25, "y":4.25},
+ {"label":"M", "x":8.25, "y":4.25},
+ {"label":"<", "x":9.25, "y":4.25},
+ {"label":">", "x":10.25, "y":4.25},
+ {"label":"?", "x":11.25, "y":4.25},
+ {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
+ {"label":"Shift", "x":14, "y":4.25},
+ {"label":"\u2191", "x":16.25, "y":4.25},
+
+ {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
+ {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
+ {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
+ {"x":3.75, "y":5.25, "w":2.25},
+ {"x":6, "y":5.25, "w":1.25},
+ {"x":7.25, "y":5.25, "w":2.75},
+ {"label":"Alt", "x":10, "y":5.25, "w":1.25},
+ {"label":"Win", "x":11.25, "y":5.25, "w":1.25},
+ {"label":"Menu", "x":12.5, "y":5.25, "w":1.25},
+ {"label":"Ctrl", "x":13.75, "y":5.25, "w":1.25},
+ {"label":"\u2190", "x":15.25, "y":5.25},
+ {"label":"\u2193", "x":16.25, "y":5.25},
+ {"label":"\u2192", "x":17.25, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/fjlabs/solanis/keymaps/default/keymap.c b/keyboards/fjlabs/solanis/keymaps/default/keymap.c
new file mode 100644
index 00000000000..83f2cc220cf
--- /dev/null
+++ b/keyboards/fjlabs/solanis/keymaps/default/keymap.c
@@ -0,0 +1,41 @@
+/*
+Copyright 2022
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_DEL,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC,TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/fjlabs/solanis/keymaps/via/keymap.c b/keyboards/fjlabs/solanis/keymaps/via/keymap.c
new file mode 100644
index 00000000000..6bff23728f5
--- /dev/null
+++ b/keyboards/fjlabs/solanis/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/*
+Copyright 2022
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _LAYER0,
+ _LAYER1,
+ _LAYER2,
+ _LAYER3,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_LAYER0] = LAYOUT_all(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_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_DEL,
+ KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+
+ [_LAYER1] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+
+ [_LAYER3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
\ No newline at end of file
diff --git a/keyboards/fjlabs/solanis/keymaps/via/rules.mk b/keyboards/fjlabs/solanis/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/fjlabs/solanis/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/fjlabs/solanis/readme.md b/keyboards/fjlabs/solanis/readme.md
new file mode 100644
index 00000000000..93f5dd00211
--- /dev/null
+++ b/keyboards/fjlabs/solanis/readme.md
@@ -0,0 +1,15 @@
+# Solanis H87C/H88C Replacement PCBs by FJLaboratories
+
+The following is the QMK Firmware for the Solanis by [FJLaboratories](https://www.fjlaboratories.com/).
+* Keyboard Maintainer: FJLaboratories
+* Hardware Supported: Solanis
+
+Make example for this keyboard (after setting up your build environment):
+
+ make fjlabs/solanis:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+You can enter the bootloader by shorting the RST pads on the back of the PCB while the PCB is plugged into the computer.
diff --git a/keyboards/fjlabs/solanis/rules.mk b/keyboards/fjlabs/solanis/rules.mk
new file mode 100644
index 00000000000..a5745c34909
--- /dev/null
+++ b/keyboards/fjlabs/solanis/rules.mk
@@ -0,0 +1,21 @@
+# MCU name
+MCU = at90usb646
+
+# Processor frequency
+F_CPU = 8000000
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
diff --git a/keyboards/fjlabs/solanis/solanis.c b/keyboards/fjlabs/solanis/solanis.c
new file mode 100644
index 00000000000..3104ff485ed
--- /dev/null
+++ b/keyboards/fjlabs/solanis/solanis.c
@@ -0,0 +1,14 @@
+/*
+Copyright 2022
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+#include "solanis.h"
diff --git a/keyboards/fjlabs/solanis/solanis.h b/keyboards/fjlabs/solanis/solanis.h
new file mode 100644
index 00000000000..507f0870015
--- /dev/null
+++ b/keyboards/fjlabs/solanis/solanis.h
@@ -0,0 +1,34 @@
+/*
+Copyright 2022
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/* === All used matrix spots populated === */
+#define LAYOUT_all( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K3E, \
+ K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4C, K4D, K4F, \
+ K50, K51, K52, K54, K55, K58, K59, K5A, K5B, K5D, K5E, K5F, K5G \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, K0G }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, K1G }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, K2G }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, KC_NO, K3D, K3E, KC_NO, KC_NO }, \
+ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, KC_NO, K4C, K4D, KC_NO, K4F, KC_NO }, \
+ { K50, K51, K52, KC_NO, K54, K55, KC_NO, KC_NO, K58, K59, K5A, K5B, KC_NO, K5D, K5E, K5F, K5G } \
+}
From d84a1fb9a443c674fa7a7391b0065ae13324d2a4 Mon Sep 17 00:00:00 2001
From: Rucker Machine <98196480+RuckerMachine@users.noreply.github.com>
Date: Fri, 29 Apr 2022 01:13:26 -0700
Subject: [PATCH 52/65] [Keyboard] RM_Numpad: Fix layout bug (#16857)
Co-authored-by: jason
---
keyboards/rmkeebs/rm_numpad/info.json | 10 +++++-----
keyboards/rmkeebs/rm_numpad/keymaps/default/keymap.c | 8 ++++----
.../rmkeebs/rm_numpad/keymaps/split_plus/keymap.c | 4 ++--
keyboards/rmkeebs/rm_numpad/rm_numpad.h | 6 +++---
4 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/keyboards/rmkeebs/rm_numpad/info.json b/keyboards/rmkeebs/rm_numpad/info.json
index 0f60a8ec06d..9ad0ebd2864 100644
--- a/keyboards/rmkeebs/rm_numpad/info.json
+++ b/keyboards/rmkeebs/rm_numpad/info.json
@@ -18,19 +18,19 @@
{"label": "7", "x": 0, "y": 2.25},
{"label": "8", "x": 1, "y": 2.25},
{"label": "9", "x": 2, "y": 2.25},
- {"label": "+", "x": 3, "y": 2.25, "h": 2},
{"label": "4", "x": 0, "y": 3.25},
{"label": "5", "x": 1, "y": 3.25},
{"label": "6", "x": 2, "y": 3.25},
+ {"label": "+", "x": 3, "y": 2.25, "h": 2},
{"label": "1", "x": 0, "y": 4.25},
{"label": "2", "x": 1, "y": 4.25},
{"label": "3", "x": 2, "y": 4.25},
- {"label": "Enter", "x": 3, "y": 4.25, "h": 2},
{"label": "0", "x": 0, "y": 5.25, "w": 2},
- {"label": ".", "x": 2, "y": 5.25}
+ {"label": ".", "x": 2, "y": 5.25},
+ {"label": "Enter", "x": 3, "y": 4.25, "h": 2}
]
},
"LAYOUT_split_plus_6x4": {
@@ -58,10 +58,10 @@
{"label": "1", "x": 0, "y": 4.25},
{"label": "2", "x": 1, "y": 4.25},
{"label": "3", "x": 2, "y": 4.25},
- {"label": "Enter", "x": 3, "y": 4.25, "h": 2},
{"label": "0", "x": 0, "y": 5.25, "w": 2},
- {"label": ".", "x": 2, "y": 5.25}
+ {"label": ".", "x": 2, "y": 5.25},
+ {"label": "Enter", "x": 3, "y": 4.25, "h": 2}
]
},
"LAYOUT_ortho_6x4": {
diff --git a/keyboards/rmkeebs/rm_numpad/keymaps/default/keymap.c b/keyboards/rmkeebs/rm_numpad/keymaps/default/keymap.c
index 240442558c0..fef4324f19f 100644
--- a/keyboards/rmkeebs/rm_numpad/keymaps/default/keymap.c
+++ b/keyboards/rmkeebs/rm_numpad/keymaps/default/keymap.c
@@ -22,10 +22,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT_numpad_6x4(
KC_MPLY, KC_MPRV, KC_MNXT, KC_MUTE,
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
- KC_P7, KC_P8, KC_P9, KC_PPLS,
- KC_P4, KC_P5, KC_P6,
- KC_P1, KC_P2, KC_P3, KC_PENT,
- KC_P0, KC_PDOT
+ KC_P7, KC_P8, KC_P9,
+ KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
)
};
diff --git a/keyboards/rmkeebs/rm_numpad/keymaps/split_plus/keymap.c b/keyboards/rmkeebs/rm_numpad/keymaps/split_plus/keymap.c
index 84fa6b2a640..9c6939e4d6d 100644
--- a/keyboards/rmkeebs/rm_numpad/keymaps/split_plus/keymap.c
+++ b/keyboards/rmkeebs/rm_numpad/keymaps/split_plus/keymap.c
@@ -24,8 +24,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
KC_P7, KC_P8, KC_P9, KC_EQL,
KC_P4, KC_P5, KC_P6, KC_PPLS,
- KC_P1, KC_P2, KC_P3, KC_PENT,
- KC_P0, KC_PDOT
+ KC_P1, KC_P2, KC_P3,
+ KC_P0, KC_PDOT, KC_PENT
)
};
diff --git a/keyboards/rmkeebs/rm_numpad/rm_numpad.h b/keyboards/rmkeebs/rm_numpad/rm_numpad.h
index 93fa9392e1a..b66a8b8249a 100644
--- a/keyboards/rmkeebs/rm_numpad/rm_numpad.h
+++ b/keyboards/rmkeebs/rm_numpad/rm_numpad.h
@@ -48,7 +48,7 @@
k00, k01, k02, k03, \
k10, k11, k12, k13, \
k20, k21, k22, \
- k30, k31, k32, k24, \
+ k30, k31, k32, k24,\
k40, k41, k42, \
k51, k53, k44 \
) { \
@@ -114,8 +114,8 @@
k10, k11, k12, k13, \
k20, k21, k22, k23, \
k30, k31, k32, k33, \
- k40, k41, k42, k44, \
- k51, k53 \
+ k40, k41, k42, \
+ k51, k53, k44 \
) { \
{ k00, k01, k02, k03, ___ }, \
{ k10, k11, k12, k13, ___ }, \
From 28e1cfc27844f80cc430073585257ff63585016f Mon Sep 17 00:00:00 2001
From: jack <0x6A73@pm.me>
Date: Fri, 29 Apr 2022 04:45:56 -0600
Subject: [PATCH 53/65] Fix fjlabs/solanis (#16965)
---
keyboards/fjlabs/solanis/keymaps/default/keymap.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/keyboards/fjlabs/solanis/keymaps/default/keymap.c b/keyboards/fjlabs/solanis/keymaps/default/keymap.c
index 83f2cc220cf..62c7d01b673 100644
--- a/keyboards/fjlabs/solanis/keymaps/default/keymap.c
+++ b/keyboards/fjlabs/solanis/keymaps/default/keymap.c
@@ -16,11 +16,11 @@ along with this program. If not, see .
enum layers {
_LAYER0,
- _LAYER1,
+ _LAYER1
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
+
[_LAYER0] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[_LAYER1] = LAYOUT_all(
- KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC,TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
From b2d0dd2f32cfec21a745cb05f9f35e5dec4ffb8e Mon Sep 17 00:00:00 2001
From: Hunter Haugen
Date: Fri, 29 Apr 2022 15:56:04 -0700
Subject: [PATCH 54/65] [Keymap] Improve Pain27 default keymap readability
(#16956)
---
keyboards/wsk/pain27/keymaps/default/keymap.c | 51 ++++++++++++++-----
1 file changed, 37 insertions(+), 14 deletions(-)
diff --git a/keyboards/wsk/pain27/keymaps/default/keymap.c b/keyboards/wsk/pain27/keymaps/default/keymap.c
index 54098287efc..a1a92ea1bb1 100644
--- a/keyboards/wsk/pain27/keymaps/default/keymap.c
+++ b/keyboards/wsk/pain27/keymaps/default/keymap.c
@@ -1,18 +1,41 @@
+// Copyright 2020 Worldspawn (@worldspawn00)
+// Copyright 2022 Hunter Haugen (@hunner)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
#include QMK_KEYBOARD_H
+#define LCTL_Z MT(MOD_LCTL, KC_Z)
+#define LALT_X MT(MOD_LALT, KC_X)
+#define ONE_C LT(1, KC_C)
+#define TWO_V LT(2, KC_V)
+#define RGUI_B MT(MOD_RGUI, KC_B)
+#define RALT_N MT(MOD_RALT, KC_N)
+#define RCTL_M MT(MOD_RCTL, KC_M)
+#define LSFT_SPC MT(MOD_LSFT, KC_SPC)
+
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = LAYOUT(KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
- KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L,
- MT(MOD_LCTL, KC_Z), MT(MOD_LALT, KC_X), LT(1, KC_C), LT(2, KC_V), MT(MOD_RGUI,KC_B), MT(MOD_RALT, KC_N), MT(MOD_RCTL, KC_M), MT(MOD_LSFT, KC_SPC)),
- [1] = LAYOUT(KC_ESC, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_BSPC,
- KC_TAB, RGB_TOG, RGB_VAD, RGB_VAI, RGB_MOD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
- KC_LCTL, KC_LALT, KC_TRNS, MO(3), KC_RGUI, KC_RALT, KC_RCTL, KC_NO),
- [2] = LAYOUT(KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
- KC_GRV, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, KC_ENT,
- KC_LCTL, KC_LALT, MO(3), KC_TRNS, KC_COMM, KC_DOT, KC_SLSH, KC_NO),
- [3] = LAYOUT(KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
- KC_F11, KC_F12, RGB_SPD, RGB_SPI, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_DEL,
- KC_LCTL, KC_LALT, KC_TRNS, KC_TRNS, KC_RGUI, KC_RALT, KC_RCTL, KC_NO)
-
+ [0] = LAYOUT(
+ KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,
+ KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,
+ LCTL_Z , LALT_X , ONE_C , TWO_V , RGUI_B , RALT_N , RCTL_M ,
+ LSFT_SPC
+ ),
+ [1] = LAYOUT(
+ KC_ESC , KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_HOME, KC_PGDN, KC_PGUP, KC_END , KC_BSPC,
+ KC_TAB , RGB_TOG, RGB_VAD, RGB_VAI, RGB_MOD, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT,
+ KC_LCTL, KC_LALT, _______, MO(3) , KC_RGUI, KC_RALT, KC_RCTL,
+ XXXXXXX
+ ),
+ [2] = LAYOUT(
+ KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,
+ KC_GRV , KC_BSLS, KC_MINS, KC_EQL , KC_LBRC, KC_RBRC, KC_SCLN, KC_QUOT, KC_ENT ,
+ KC_LCTL, KC_LALT, MO(3) , _______, KC_COMM, KC_DOT , KC_SLSH,
+ XXXXXXX
+ ),
+ [3] = LAYOUT(
+ KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 ,
+ KC_F11 , KC_F12 , RGB_SPD, RGB_SPI, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, KC_DEL,
+ KC_LCTL, KC_LALT, _______, _______, KC_RGUI, KC_RALT, KC_RCTL,
+ XXXXXXX
+ )
};
-
From 8b668a24d65588d460488c811ef38bf23c44c283 Mon Sep 17 00:00:00 2001
From: ROYMEETSWORLD <63612683+ROYMEETSWORLD@users.noreply.github.com>
Date: Sun, 1 May 2022 13:59:51 -0400
Subject: [PATCH 55/65] [Keyboard] Add gameroyadvance (#16882)
Co-authored-by: Drashna Jaelre
Co-authored-by: Ryan
---
.../keystonecaps/gameroyadvance/config.h | 86 +++++++
.../gameroyadvance/gameroyadvance.c | 46 ++++
.../gameroyadvance/gameroyadvance.h | 104 +++++++++
.../keystonecaps/gameroyadvance/info.json | 216 ++++++++++++++++++
.../gameroyadvance/keymaps/default/config.h | 25 ++
.../gameroyadvance/keymaps/default/keymap.c | 45 ++++
.../keymaps/default_all/config.h | 25 ++
.../keymaps/default_all/keymap.c | 45 ++++
.../keystonecaps/gameroyadvance/readme.md | 30 +++
.../keystonecaps/gameroyadvance/rules.mk | 22 ++
10 files changed, 644 insertions(+)
create mode 100644 keyboards/keystonecaps/gameroyadvance/config.h
create mode 100644 keyboards/keystonecaps/gameroyadvance/gameroyadvance.c
create mode 100644 keyboards/keystonecaps/gameroyadvance/gameroyadvance.h
create mode 100644 keyboards/keystonecaps/gameroyadvance/info.json
create mode 100644 keyboards/keystonecaps/gameroyadvance/keymaps/default/config.h
create mode 100644 keyboards/keystonecaps/gameroyadvance/keymaps/default/keymap.c
create mode 100644 keyboards/keystonecaps/gameroyadvance/keymaps/default_all/config.h
create mode 100644 keyboards/keystonecaps/gameroyadvance/keymaps/default_all/keymap.c
create mode 100644 keyboards/keystonecaps/gameroyadvance/readme.md
create mode 100644 keyboards/keystonecaps/gameroyadvance/rules.mk
diff --git a/keyboards/keystonecaps/gameroyadvance/config.h b/keyboards/keystonecaps/gameroyadvance/config.h
new file mode 100644
index 00000000000..cce7904b917
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/config.h
@@ -0,0 +1,86 @@
+/*
+Copyright 2022 @RoyMeetsWorld
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0xFEED
+#define PRODUCT_ID 0x6060
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Keystone Caps
+#define PRODUCT Game Roy ADVANCE
+
+/* key matrix size */
+// Rows are doubled-up
+#define MATRIX_ROWS 10
+#define MATRIX_COLS 9
+
+/* key matrix pins */
+#define MATRIX_ROW_PINS { F5, F6, F7, B1, B3 }
+#define MATRIX_COL_PINS { D4, D0, D1, C6, D7, E6, F4, B2, B6 }
+#define MATRIX_ROW_PINS_RIGHT { D7, E6, B4, B5, B6 }
+#define MATRIX_COL_PINS_RIGHT { C6, D4, D0, D1, B1, F7, F4, F5, F6 }
+#define ENCODERS_PAD_A { B5 }
+#define ENCODERS_PAD_B { B4 }
+#define ENCODERS_PAD_A_RIGHT { B3 }
+#define ENCODERS_PAD_B_RIGHT { B2 }
+#define SOFT_SERIAL_PIN D2
+
+#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* number of backlight levels */
+
+#ifdef BACKLIGHT_PIN
+#define BACKLIGHT_LEVELS 3
+#endif
+
+/* Set 0 if debouncing isn't needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+
+
+#define QMK_KEYS_PER_SCAN 12
+
+#define RGB_DI_PIN C7
+#ifdef RGB_DI_PIN
+#define RGBLIGHT_EFFECT_BREATHING
+#define RGBLIGHT_EFFECT_RAINBOW_MOOD
+#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
+#define RGBLIGHT_EFFECT_SNAKE
+#define RGBLIGHT_EFFECT_KNIGHT
+#define RGBLIGHT_EFFECT_CHRISTMAS
+#define RGBLIGHT_EFFECT_STATIC_GRADIENT
+#define RGBLIGHT_EFFECT_RGB_TEST
+#define RGBLIGHT_EFFECT_ALTERNATING
+#define RGBLIGHT_EFFECT_TWINKLE
+#define RGBLED_NUM 0
+#define RGBLIGHT_HUE_STEP 8
+#define RGBLIGHT_SAT_STEP 8
+#define RGBLIGHT_VAL_STEP 8
+#define ENCODER_RESOLUTION 4
+#endif
diff --git a/keyboards/keystonecaps/gameroyadvance/gameroyadvance.c b/keyboards/keystonecaps/gameroyadvance/gameroyadvance.c
new file mode 100644
index 00000000000..797f4dba765
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/gameroyadvance.c
@@ -0,0 +1,46 @@
+/*
+Copyright 2022 @RoyMeetsWorld
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include "gameroyadvance.h"
+
+
+
+#ifdef ENCODER_ENABLE
+
+bool encoder_update_kb(uint8_t index, bool clockwise) {
+
+ if (!encoder_update_user(index, clockwise)) { return false; }
+
+ if (index == 0) {
+
+ if (clockwise) {
+
+ tap_code_delay(KC_VOLU, 10);
+
+ } else {
+
+ tap_code_delay(KC_VOLD, 10);
+
+ }
+
+ }
+
+ return true;
+
+}
+
+#endif
diff --git a/keyboards/keystonecaps/gameroyadvance/gameroyadvance.h b/keyboards/keystonecaps/gameroyadvance/gameroyadvance.h
new file mode 100644
index 00000000000..01cb32b5729
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/gameroyadvance.h
@@ -0,0 +1,104 @@
+/*
+Copyright 2022 @RoyMeetsWorld
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+#include "quantum.h"
+
+/**
+ * The layout macro for ANSI boards, with illustrative grid of a typical assignment.
+ * ┌───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───────┐
+ * │ESC│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ │ 7 │ 8 │ 9 │ 0 │ - │ + │ BACK │
+ * ┌─┴───┼───┼───┼───┼───┼───┼───┤┌───┬───┐ ┌───┬───┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤
+ * │ TAB │ Q │ W │ E │ R │ T │ Y ││F1 │F2 │ │F7 │F8 │ │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┘├───┼───┤ ├───┼───┤ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ CAPS │ A │ S │ D │ F │ G │ │F3 │F4 │ │F9 │F10│ │ H │ J │ K │ L │ ; │ ' │ Enter │
+ * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐ ├───┼───┤ ├───┼───┤ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤
+ * │ LSHIFT │ Z │ X │ C │ V │ B │ │F5 │F6 │ │F11│F12│ │ B │ N │ M │ , │ . │ / │ RSHIFT │
+ * ├────┬───┴┬──┴─┬─┴──┬┴───┼───┴┬┴───┼───┘ └───┼───┴┬┴───┼───┴───┴──┬┴───┼───┴┬────┬────│
+ * │LCTL│LGUI│LALT│ FN │ │SPC │MUTE│ │MUTE│SPCE│ │RALT│ FN │RGUI│RCTL│
+ * └────┴────┴────┴────┘ └────┼────┤ ├────┼────┘ └────┴────┴────┴────┘
+ * │ENTR│ │ENTR│
+ * └────┘ └────┘
+ */
+#define LAYOUT( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R07, \
+ L10, L11, L12, L13, L14, L15, L16, L17, L18, R10, R11, R12, R13, R14, R15, R16, R17, R18, R28, \
+ L20, L21, L22, L23, L24, L25, L27, L28, R20, R21, R22, R23, R24, R25, R26, R27, R38, \
+ L30, L31, L32, L33, L34, L35, L37, L38, R30, R31, R32, R33, R34, R35, R36, R37, R46, \
+ L40, L41, L42, L43, L45, L48, R40, R42, R43, R44, R45, R47, \
+ L47, R41 \
+) \
+{ \
+ { L00, L01, L02, L03, L04, L05, L06, KC_NO, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, L17, L18 }, \
+ { L20, L21, L22, L23, L24, L25, KC_NO, L27, L28 }, \
+ { L30, L31, L32, L33, L34, L35, KC_NO, L37, L38 }, \
+ { L40, L41, L42, L43, KC_NO, L45, KC_NO, L47, L48 }, \
+ { R00, R01, R02, R03, R04, R05, KC_NO, R07, KC_NO }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, R18 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27, R28 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37, R38 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47, KC_NO } \
+}
+
+/**
+ * The layout macro for split-key boards, with illustrative grid of a typical assignment.
+ *
+ * Backspace has two options with three distinct pads:
+ * - center pad (regular 2u backspace)
+ * - left pad + right pad (split backspace)
+ *
+ * You may wish to set the unused pad(s) to KC_NO or XXXXXX, as they will be ignored.
+ * ┌───────┐
+ * │ BACK │ (R07)
+ * └───────┘
+ * |
+ * ┌───┬───┬───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┐
+ * │ESC│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ │ 7 │ 8 │ 9 │ 0 │ - │ + │ \ │BCK│ (R06 R08)
+ * ┌─┴───┼───┼───┼───┼───┼───┼───┤┌───┬───┐ ┌───┬───┐ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
+ * │ TAB │ Q │ W │ E │ R │ T │ Y ││F1 │F2 │ │F7 │F8 │ │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┘├───┼───┤ ├───┼───┤ └┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
+ * │ CAPS │ A │ S │ D │ F │ G │ │F3 │F4 │ │F9 │F10│ │ H │ J │ K │ L │ ; │ ' │ Enter │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┐ ├───┼───┤ ├───┼───┤ ┌─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
+ * │LSFT│ \ │ Z │ X │ C │ V │ B │ │F5 │F6 │ │F11│F12│ │ B │ N │ M │ , │ . │ / │RSHIFT│PSC│
+ * ├────┼───┴┬──┴─┬─┴──┬┴───┼───┴┬┴───┼───┘ └───┼───┴┬┴───┼───┴───┴──┬┴───┼───┴┬────┬┴───│
+ * │LCTL│LGUI│LALT│ FN │ │SPC │MUTE│ │MUTE│SPCE│ │RALT│ FN │RGUI│RCTL│
+ * └────┴────┴────┴────┘ └────┼────┤ ├────┼────┘ └────┴────┴────┴────┘
+ * │ENTR│ │ENTR│
+ * └────┘ └────┘
+ */
+#define LAYOUT_all( \
+ L00, L01, L02, L03, L04, L05, L06, R00, R01, R02, R03, R04, R05, R06, R07, R08, \
+ L10, L11, L12, L13, L14, L15, L16, L17, L18, R10, R11, R12, R13, R14, R15, R16, R17, R18, R28, \
+ L20, L21, L22, L23, L24, L25, L27, L28, R20, R21, R22, R23, R24, R25, R26, R27, R38, \
+ L30, L44, L31, L32, L33, L34, L35, L37, L38, R30, R31, R32, R33, R34, R35, R36, R37, R46, R48, \
+ L40, L41, L42, L43, L45, L48, R40, R42, R43, R44, R45, R47, \
+ L47, R41 \
+) \
+{ \
+ { L00, L01, L02, L03, L04, L05, L06, KC_NO, KC_NO }, \
+ { L10, L11, L12, L13, L14, L15, L16, L17, L18 }, \
+ { L20, L21, L22, L23, L24, L25, KC_NO, L27, L28 }, \
+ { L30, L31, L32, L33, L34, L35, KC_NO, L37, L38 }, \
+ { L40, L41, L42, L43, L44, L45, KC_NO, L47, L48 }, \
+ { R00, R01, R02, R03, R04, R05, R06, R07, R08 }, \
+ { R10, R11, R12, R13, R14, R15, R16, R17, R18 }, \
+ { R20, R21, R22, R23, R24, R25, R26, R27, R28 }, \
+ { R30, R31, R32, R33, R34, R35, R36, R37, R38 }, \
+ { R40, R41, R42, R43, R44, R45, R46, R47, R48 } \
+}
diff --git a/keyboards/keystonecaps/gameroyadvance/info.json b/keyboards/keystonecaps/gameroyadvance/info.json
new file mode 100644
index 00000000000..f907de9326f
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/info.json
@@ -0,0 +1,216 @@
+{
+ "keyboard_name": "Game Roy ADVANCE",
+ "maintainer": "@RoyMeetsWorld",
+ "url": "https://keystonecaps.store/?product=game-roy-advance-game-pad-group-buy-preorder",
+ "layouts": {
+ "LAYOUT": {
+ "layout": [
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+
+ { "x": 13.75, "y": 0 },
+ { "x": 14.75, "y": 0 },
+ { "x": 15.75, "y": 0 },
+ { "x": 16.75, "y": 0 },
+ { "x": 17.75, "y": 0 },
+ { "x": 18.75, "y": 0 },
+ { "x": 19.75, "y": 0, "w": 2 },
+
+ { "x": 0.5, "y": 1, "w": 1.5 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+
+ { "x": 8.25, "y": 1 },
+ { "x": 9.25, "y": 1 },
+
+ { "x": 11, "y": 1 },
+ { "x": 12, "y": 1 },
+
+ { "x": 13.75, "y": 1 },
+ { "x": 14.75, "y": 1 },
+ { "x": 15.75, "y": 1 },
+ { "x": 16.75, "y": 1 },
+ { "x": 17.75, "y": 1 },
+ { "x": 18.75, "y": 1 },
+ { "x": 19.75, "y": 1 },
+ { "x": 20.75, "y": 1, "w": 1.5 },
+
+ { "x": 0.5, "y": 2, "w": 1.75 },
+ { "x": 2.25, "y": 2 },
+ { "x": 3.25, "y": 2 },
+ { "x": 4.25, "y": 2 },
+ { "x": 5.25, "y": 2 },
+ { "x": 6.25, "y": 2 },
+
+ { "x": 8.25, "y": 2 },
+ { "x": 9.25, "y": 2 },
+
+ { "x": 11, "y": 2 },
+ { "x": 12, "y": 2 },
+
+ { "x": 14, "y": 2 },
+ { "x": 15, "y": 2 },
+ { "x": 16, "y": 2 },
+ { "x": 17, "y": 2 },
+ { "x": 18, "y": 2 },
+ { "x": 19, "y": 2 },
+ { "x": 20, "y": 2, "w": 2.25 },
+
+ { "x": 0.5, "y": 3, "w": 2.25 },
+ { "x": 2.75, "y": 3 },
+ { "x": 3.75, "y": 3 },
+ { "x": 4.75, "y": 3 },
+ { "x": 5.75, "y": 3 },
+ { "x": 6.75, "y": 3 },
+
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+
+ { "x": 11, "y": 3 },
+ { "x": 12, "y": 3 },
+
+ { "x": 13.5, "y": 3 },
+ { "x": 14.5, "y": 3 },
+ { "x": 15.5, "y": 3 },
+ { "x": 16.5, "y": 3 },
+ { "x": 17.5, "y": 3 },
+ { "x": 18.5, "y": 3 },
+ { "x": 19.5, "y": 3, "w": 2.75 },
+
+ { "x": 1, "y": 4, "w": 1.25 },
+ { "x": 2.25, "y": 4, "w": 1.25 },
+ { "x": 3.5, "y": 4, "w": 1.25 },
+ { "x": 4.75, "y": 4, "w": 1.25 },
+
+ { "x": 7, "y": 4, "h": 1.5 },
+ { "x": 8, "y": 4 },
+
+ { "x": 12.25, "y": 4 },
+ { "x": 13.25, "y": 4, "h": 1.5 },
+
+ { "x": 16.75, "y": 4, "w": 1.25 },
+ { "x": 18, "y": 4, "w": 1.25 },
+ { "x": 19.25, "y": 4, "w": 1.25 },
+ { "x": 20.5, "y": 4, "w": 1.25 },
+
+ { "x": 8, "y": 5, "h": 1.5 },
+ { "x": 12.25, "y": 5, "h": 1.5 }
+ ] },
+ "LAYOUT_all": {
+ "layout": [
+ { "x": 1, "y": 0 },
+ { "x": 2, "y": 0 },
+ { "x": 3, "y": 0 },
+ { "x": 4, "y": 0 },
+ { "x": 5, "y": 0 },
+ { "x": 6, "y": 0 },
+ { "x": 7, "y": 0 },
+
+ { "x": 13.75, "y": 0 },
+ { "x": 14.75, "y": 0 },
+ { "x": 15.75, "y": 0 },
+ { "x": 16.75, "y": 0 },
+ { "x": 17.75, "y": 0 },
+ { "x": 18.75, "y": 0 },
+ { "x": 19.75, "y": 0 },
+ { "x": 22.75, "y": 0, "w": 2 },
+ { "x": 20.75, "y": 0 },
+
+ { "x": 0.5, "y": 1, "w": 1.5 },
+ { "x": 2, "y": 1 },
+ { "x": 3, "y": 1 },
+ { "x": 4, "y": 1 },
+ { "x": 5, "y": 1 },
+ { "x": 6, "y": 1 },
+ { "x": 7, "y": 1 },
+
+ { "x": 8.25, "y": 1 },
+ { "x": 9.25, "y": 1 },
+
+ { "x": 11, "y": 1 },
+ { "x": 12, "y": 1 },
+
+ { "x": 13.75, "y": 1 },
+ { "x": 14.75, "y": 1 },
+ { "x": 15.75, "y": 1 },
+ { "x": 16.75, "y": 1 },
+ { "x": 17.75, "y": 1 },
+ { "x": 18.75, "y": 1 },
+ { "x": 19.75, "y": 1 },
+ { "x": 20.75, "y": 1, "w": 1.5 },
+
+ { "x": 0.5, "y": 2, "w": 1.75 },
+ { "x": 2.25, "y": 2 },
+ { "x": 3.25, "y": 2 },
+ { "x": 4.25, "y": 2 },
+ { "x": 5.25, "y": 2 },
+ { "x": 6.25, "y": 2 },
+
+ { "x": 8.25, "y": 2 },
+ { "x": 9.25, "y": 2 },
+
+ { "x": 11, "y": 2 },
+ { "x": 12, "y": 2 },
+
+ { "x": 14, "y": 2 },
+ { "x": 15, "y": 2 },
+ { "x": 16, "y": 2 },
+ { "x": 17, "y": 2 },
+ { "x": 18, "y": 2 },
+ { "x": 19, "y": 2 },
+ { "x": 20, "y": 2, "w": 2.25 },
+
+ { "x": 0.5, "y": 3, "w": 1.75 },
+ { "x": 1.75, "y": 3 },
+ { "x": 2.75, "y": 3 },
+ { "x": 3.75, "y": 3 },
+ { "x": 4.75, "y": 3 },
+ { "x": 5.75, "y": 3 },
+ { "x": 6.75, "y": 3 },
+
+ { "x": 8.25, "y": 3 },
+ { "x": 9.25, "y": 3 },
+
+ { "x": 11, "y": 3 },
+ { "x": 12, "y": 3 },
+
+ { "x": 13.5, "y": 3 },
+ { "x": 14.5, "y": 3 },
+ { "x": 15.5, "y": 3 },
+ { "x": 16.5, "y": 3 },
+ { "x": 17.5, "y": 3 },
+ { "x": 18.5, "y": 3 },
+ { "x": 19.5, "y": 3, "w": 1.75 },
+ { "x": 21.25, "y": 3 },
+
+ { "x": 1, "y": 4, "w": 1.25 },
+ { "x": 2.25, "y": 4, "w": 1.25 },
+ { "x": 3.5, "y": 4, "w": 1.25 },
+ { "x": 4.75, "y": 4, "w": 1.25 },
+
+ { "x": 7, "y": 4, "h": 1.5 },
+ { "x": 8, "y": 4 },
+
+ { "x": 12.25, "y": 4 },
+ { "x": 13.25, "y": 4, "h": 1.5 },
+
+ { "x": 16.75, "y": 4, "w": 1.25 },
+ { "x": 18, "y": 4, "w": 1.25 },
+ { "x": 19.25, "y": 4, "w": 1.25 },
+ { "x": 20.5, "y": 4, "w": 1.25 },
+
+ { "x": 8, "y": 5, "h": 1.5 },
+ { "x": 12.25, "y": 5, "h": 1.5 }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/keyboards/keystonecaps/gameroyadvance/keymaps/default/config.h b/keyboards/keystonecaps/gameroyadvance/keymaps/default/config.h
new file mode 100644
index 00000000000..693d5684c11
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/keymaps/default/config.h
@@ -0,0 +1,25 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+Copyright 2018 Danny Nguyen
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+//#define USE_SERIAL
+#define EE_HANDS
\ No newline at end of file
diff --git a/keyboards/keystonecaps/gameroyadvance/keymaps/default/keymap.c b/keyboards/keystonecaps/gameroyadvance/keymaps/default/keymap.c
new file mode 100644
index 00000000000..268a158ee19
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/keymaps/default/keymap.c
@@ -0,0 +1,45 @@
+/*
+Copyright 2022 @RoyMeetsWorld
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_F1, KC_F2, KC_F7, KC_F8, 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_F3, KC_F4, KC_F9, KC_F10, 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_F5, KC_F6, KC_F11, KC_F12, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_SPC, KC_MUTE, KC_MUTE, KC_SPC, KC_RALT, MO(_FN), KC_RGUI, KC_RCTL,
+ KC_ENT, KC_ENT
+ ),
+
+ [_FN] = LAYOUT(
+ KC_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ )
+};
+
diff --git a/keyboards/keystonecaps/gameroyadvance/keymaps/default_all/config.h b/keyboards/keystonecaps/gameroyadvance/keymaps/default_all/config.h
new file mode 100644
index 00000000000..693d5684c11
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/keymaps/default_all/config.h
@@ -0,0 +1,25 @@
+/*
+This is the c configuration file for the keymap
+
+Copyright 2012 Jun Wako
+Copyright 2015 Jack Humbert
+Copyright 2018 Danny Nguyen
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#pragma once
+
+//#define USE_SERIAL
+#define EE_HANDS
\ No newline at end of file
diff --git a/keyboards/keystonecaps/gameroyadvance/keymaps/default_all/keymap.c b/keyboards/keystonecaps/gameroyadvance/keymaps/default_all/keymap.c
new file mode 100644
index 00000000000..a6adf3f9523
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/keymaps/default_all/keymap.c
@@ -0,0 +1,45 @@
+/*
+Copyright 2022 @RoyMeetsWorld
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include QMK_KEYBOARD_H
+
+enum layers {
+ _BASE,
+ _FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+ [_BASE] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC, KC_BSPC,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_F1, KC_F2, KC_F7, KC_F8, 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_F3, KC_F4, KC_F9, KC_F10, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
+ KC_LSFT, KC_BSLS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_F5, KC_F6, KC_F11, KC_F12, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_PSCR,
+ KC_LCTL, KC_LGUI, KC_LALT, MO(_FN), KC_SPC, KC_MUTE, KC_MUTE, KC_SPC, KC_RALT, MO(_FN), KC_RGUI, KC_RCTL,
+ KC_ENT, KC_ENT
+ ),
+
+ [_FN] = LAYOUT_all(
+ KC_TILD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
+ KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS
+ )
+};
+
diff --git a/keyboards/keystonecaps/gameroyadvance/readme.md b/keyboards/keystonecaps/gameroyadvance/readme.md
new file mode 100644
index 00000000000..cc733cea46e
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/readme.md
@@ -0,0 +1,30 @@
+# Game Roy ADVANCE
+
+
+
+
+A one-handed, expandable game pad designed to take your pc gaming to the next level. Designed by [Keystone Caps](https://keystonecaps.store).
+
+* Keyboard Maintainer: [RoyMeetsWorld](https://github.com/ROYMEETSWORLD)
+* Hardware Supported: Game Roy ADVANCE
+* Hardware Availability: [keystonecaps.store](https://keystonecaps.store)
+
+Make example for this keyboard (after setting up your build environment):
+
+ make keystonecaps/gameroyadvance:default
+
+Flashing example for this keyboard:
+
+ make keystonecaps/gameroyadvance: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 (Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB
+* **Keycode in layout**: Press the key mapped to `RESET` (FN + Escape by default)
+
+Special thanks to @tpstevens for all of his hard work in creating these firmware files from the mess that I had made.
diff --git a/keyboards/keystonecaps/gameroyadvance/rules.mk b/keyboards/keystonecaps/gameroyadvance/rules.mk
new file mode 100644
index 00000000000..be3b8b9a618
--- /dev/null
+++ b/keyboards/keystonecaps/gameroyadvance/rules.mk
@@ -0,0 +1,22 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = caterina # For Pro Micro
+# BOOTLOADER = qmk-dfu # For Elite-C
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+ENCODER_ENABLE = yes
+SPLIT_KEYBOARD = yes
\ No newline at end of file
From 66fc18c75646e77d9768803298777d39087577cf Mon Sep 17 00:00:00 2001
From: Ryan Skidmore
Date: Mon, 2 May 2022 20:34:44 +0100
Subject: [PATCH 56/65] keyboards/ryanskidmore: add rskeys100 keyboard (#15506)
* keyboards/ryanskidmore/rskeys100: add rskeys100 draft firmware
* keyboards/ryanskidmore/rskeys100: fix firmware
* ryanskidmore/rskeys100: fix remaining bugs
* keyboards/ryanskidmore/rskeys100: finishing touches on firmware
* keyboards/ryanskidmore/rskeys100: migrate from full replacement matrix scanning to lite, move rgb matrix enable call to keymap
* keyboards/ryanskidmore/rskeys100: remove undefines, clarify comments
* ryanskidmore/rskeys100: remove unused imports
* keyboards/ryanskidmore/rskeys100: pr feedback
---
keyboards/ryanskidmore/rskeys100/config.h | 85 ++++++++++++
keyboards/ryanskidmore/rskeys100/info.json | 121 ++++++++++++++++++
.../rskeys100/keymaps/default/keymap.c | 65 ++++++++++
.../rskeys100/keymaps/default/readme.md | 1 +
keyboards/ryanskidmore/rskeys100/matrix.c | 110 ++++++++++++++++
keyboards/ryanskidmore/rskeys100/readme.md | 22 ++++
keyboards/ryanskidmore/rskeys100/rskeys100.c | 30 +++++
keyboards/ryanskidmore/rskeys100/rskeys100.h | 22 ++++
keyboards/ryanskidmore/rskeys100/rules.mk | 23 ++++
9 files changed, 479 insertions(+)
create mode 100644 keyboards/ryanskidmore/rskeys100/config.h
create mode 100644 keyboards/ryanskidmore/rskeys100/info.json
create mode 100644 keyboards/ryanskidmore/rskeys100/keymaps/default/keymap.c
create mode 100644 keyboards/ryanskidmore/rskeys100/keymaps/default/readme.md
create mode 100644 keyboards/ryanskidmore/rskeys100/matrix.c
create mode 100644 keyboards/ryanskidmore/rskeys100/readme.md
create mode 100644 keyboards/ryanskidmore/rskeys100/rskeys100.c
create mode 100644 keyboards/ryanskidmore/rskeys100/rskeys100.h
create mode 100644 keyboards/ryanskidmore/rskeys100/rules.mk
diff --git a/keyboards/ryanskidmore/rskeys100/config.h b/keyboards/ryanskidmore/rskeys100/config.h
new file mode 100644
index 00000000000..9e036aa70db
--- /dev/null
+++ b/keyboards/ryanskidmore/rskeys100/config.h
@@ -0,0 +1,85 @@
+// Copyright 2021 Ryan Skidmore (@ryanskidmore, rskeys@ryanskidmore.co.uk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID 0x7273 // rs
+#define PRODUCT_ID 0x0064 // 100
+#define DEVICE_VER 0x0001 // rev 1
+#define MANUFACTURER ryanskidmore
+#define PRODUCT rsKeys100
+
+/* Key Matrix Sizes */
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 24
+
+/* Rows */
+#define ROW_A D4
+#define ROW_B C6
+#define ROW_C D7
+#define ROW_D E6
+#define ROW_E B4
+#define ROW_F B5
+
+/* Columns 0 - 20 (24 with dummy columns for shift registers) */
+#define SHR_LATCH B2
+#define SHR_CLOCK B3
+#define SHR_DATA B1
+#define SHR_COLS { 0x000001, 0x000002, 0x000004, 0x000008, 0x000010, 0x000020, 0x000040, 0x000080, 0x000100, 0x000200, 0x000400, 0x000800, 0x001000, 0x002000, 0x004000, 0x008000, 0x010000, 0x020000, 0x040000, 0x080000, 0x100000, 0x200000, 0x400000, 0x800000 }
+
+/* The shift registers on the matrix PCB output a signal on each column, which passes through the
+ * switch and a diode towards the row. The row is then connected to the AVR as an input. This means
+ * the diode direction is COL(umn) to ROW */
+#define DIODE_DIRECTION COL2ROW
+
+/* RGB Data Pin */
+#define RGB_DI_PIN C7
+/* The number of RGB LEDs connected */
+#define DRIVER_LED_TOTAL 105
+/* Set the maximum brightness to 110 to avoid going over 500 mA.
+ * At full brightness with all three indicator LEDs on, the power draw is about 450 mA. */
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 110
+/* Enable framebuffer effects */
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+/* Enable the cycle left right animation and set it as the startup mode */
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCE 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* Set the max power consumption for the keyboard, which is 500 mA. */
+#define USB_MAX_POWER_CONSUMPTION 500
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+#define FORCE_NKRO
+
+/* disable these deprecated features by default */
+#define NO_ACTION_MACRO
+#define NO_ACTION_FUNCTION
\ No newline at end of file
diff --git a/keyboards/ryanskidmore/rskeys100/info.json b/keyboards/ryanskidmore/rskeys100/info.json
new file mode 100644
index 00000000000..ed9898d4059
--- /dev/null
+++ b/keyboards/ryanskidmore/rskeys100/info.json
@@ -0,0 +1,121 @@
+{
+ "keyboard_name": "rskeys100",
+ "url": "",
+ "maintainer": "ryanskidmore",
+ "layouts": {
+ "LAYOUT_fullsize_iso": {
+ "layout": [
+ {"x":0, "y":0},
+ {"x":2, "y":0},
+ {"x":3, "y":0},
+ {"x":4, "y":0},
+ {"x":5, "y":0},
+ {"x":6.5, "y":0},
+ {"x":7.5, "y":0},
+ {"x":8.5, "y":0},
+ {"x":9.5, "y":0},
+ {"x":11, "y":0},
+ {"x":12, "y":0},
+ {"x":13, "y":0},
+ {"x":14, "y":0},
+ {"x":15.25, "y":0},
+ {"x":16.25, "y":0},
+ {"x":17.25, "y":0},
+
+ {"x":0, "y":1.25},
+ {"x":1, "y":1.25},
+ {"x":2, "y":1.25},
+ {"x":3, "y":1.25},
+ {"x":4, "y":1.25},
+ {"x":5, "y":1.25},
+ {"x":6, "y":1.25},
+ {"x":7, "y":1.25},
+ {"x":8, "y":1.25},
+ {"x":9, "y":1.25},
+ {"x":10, "y":1.25},
+ {"x":11, "y":1.25},
+ {"x":12, "y":1.25},
+ {"x":13, "y":1.25, "w":2},
+ {"x":15.25, "y":1.25},
+ {"x":16.25, "y":1.25},
+ {"x":17.25, "y":1.25},
+ {"x":18.5, "y":1.25},
+ {"x":19.5, "y":1.25},
+ {"x":20.5, "y":1.25},
+ {"x":21.5, "y":1.25},
+
+ {"x":0, "y":2.25, "w":1.5},
+ {"x":1.5, "y":2.25},
+ {"x":2.5, "y":2.25},
+ {"x":3.5, "y":2.25},
+ {"x":4.5, "y":2.25},
+ {"x":5.5, "y":2.25},
+ {"x":6.5, "y":2.25},
+ {"x":7.5, "y":2.25},
+ {"x":8.5, "y":2.25},
+ {"x":9.5, "y":2.25},
+ {"x":10.5, "y":2.25},
+ {"x":11.5, "y":2.25},
+ {"x":12.5, "y":2.25},
+ {"x":15.25, "y":2.25},
+ {"x":16.25, "y":2.25},
+ {"x":17.25, "y":2.25},
+ {"x":18.5, "y":2.25},
+ {"x":19.5, "y":2.25},
+ {"x":20.5, "y":2.25},
+ {"x":21.5, "y":2.25, "h": 2},
+
+ {"x":0, "y":3.25, "w":1.75},
+ {"x":1.75, "y":3.25},
+ {"x":2.75, "y":3.25},
+ {"x":3.75, "y":3.25},
+ {"x":4.75, "y":3.25},
+ {"x":5.75, "y":3.25},
+ {"x":6.75, "y":3.25},
+ {"x":7.75, "y":3.25},
+ {"x":8.75, "y":3.25},
+ {"x":9.75, "y":3.25},
+ {"x":10.75, "y":3.25},
+ {"x":11.75, "y":3.25},
+ {"x":12.75, "y":3.25},
+ {"x":13.75, "y":2.25, "w":1.25, "h":2},
+ {"x":18.5, "y":3.25},
+ {"x":19.5, "y":3.25},
+ {"x":20.5, "y":3.25},
+
+ {"x":0, "y":4.25, "w":1.25},
+ {"x":1.25, "y":4.25},
+ {"x":2.25, "y":4.25},
+ {"x":3.25, "y":4.25},
+ {"x":4.25, "y":4.25},
+ {"x":5.25, "y":4.25},
+ {"x":6.25, "y":4.25},
+ {"x":7.25, "y":4.25},
+ {"x":8.25, "y":4.25},
+ {"x":9.25, "y":4.25},
+ {"x":10.25, "y":4.25},
+ {"x":11.25, "y":4.25},
+ {"x":12.25, "y":4.25, "w":2.75},
+ {"x":16.25, "y":4.25},
+ {"x":18.5, "y":4.25},
+ {"x":19.5, "y":4.25},
+ {"x":20.5, "y":4.25},
+ {"x":21.5, "y":4.25, "h":2},
+
+ {"x":0, "y":5.25, "w":1.25},
+ {"x":1.25, "y":5.25, "w":1.25},
+ {"x":2.5, "y":5.25, "w":1.25},
+ {"x":3.75, "y":5.25, "w":6.25},
+ {"x":10, "y":5.25, "w":1.25},
+ {"x":11.25, "y":5.25, "w":1.25},
+ {"x":12.5, "y":5.25, "w":1.25},
+ {"x":13.75, "y":5.25, "w":1.25},
+ {"x":15.25, "y":5.25},
+ {"x":16.25, "y":5.25},
+ {"x":17.25, "y":5.25},
+ {"x":18.5, "y":5.25, "w":2},
+ {"x":20.5, "y":5.25}
+ ]
+ }
+ }
+}
diff --git a/keyboards/ryanskidmore/rskeys100/keymaps/default/keymap.c b/keyboards/ryanskidmore/rskeys100/keymaps/default/keymap.c
new file mode 100644
index 00000000000..37f2589760c
--- /dev/null
+++ b/keyboards/ryanskidmore/rskeys100/keymaps/default/keymap.c
@@ -0,0 +1,65 @@
+// Copyright 2021 Ryan Skidmore (@ryanskidmore, rskeys@ryanskidmore.co.uk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ * ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
+ * │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│
+ * └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘
+ * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
+ * │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
+ * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
+ * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │
+ * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐ Ent│ └───┴───┴───┘ ├───┼───┼───┤ + │
+ * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │ │ │ 4 │ 5 │ 6 │ │
+ * ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴────┤ ┌───┐ ├───┼───┼───┼───┤
+ * │Shft│ \ │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
+ * ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
+ * │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │
+ * └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
+ */
+ /* Default Layer */
+ [0] = LAYOUT_fullsize_iso(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, LT(1, KC_F12), KC_PSCR, KC_SLCK, KC_PAUS,
+
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_P4, KC_P5, KC_P6,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
+ ),
+ /* RGB Control Layer */
+ [1] = LAYOUT_fullsize_iso(
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAD, _______, _______, _______
+ ),
+};
+
+void keyboard_post_init_user(void) {
+ rgb_matrix_enable_noeeprom();
+}
+
+void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ /* We use RGB for the indicator RGB colours since we don't need to adjust the brightness.
+ * If any of the indicators are enabled, set the key to white. This overrides the active RGB
+ * matrix animation. */
+
+ if (host_keyboard_led_state().caps_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(73, 255, 255, 255);
+ }
+
+ if (host_keyboard_led_state().num_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(19, 255, 255, 255);
+ }
+
+ if (host_keyboard_led_state().scroll_lock) {
+ RGB_MATRIX_INDICATOR_SET_COLOR(14, 255, 255, 255);
+ }
+}
\ No newline at end of file
diff --git a/keyboards/ryanskidmore/rskeys100/keymaps/default/readme.md b/keyboards/ryanskidmore/rskeys100/keymaps/default/readme.md
new file mode 100644
index 00000000000..03357c206bb
--- /dev/null
+++ b/keyboards/ryanskidmore/rskeys100/keymaps/default/readme.md
@@ -0,0 +1 @@
+This is the default keymap (UK, ISO) for the rskeys100. The RGB control layer can be activated by holding the F12 key.
\ No newline at end of file
diff --git a/keyboards/ryanskidmore/rskeys100/matrix.c b/keyboards/ryanskidmore/rskeys100/matrix.c
new file mode 100644
index 00000000000..faefb29c84e
--- /dev/null
+++ b/keyboards/ryanskidmore/rskeys100/matrix.c
@@ -0,0 +1,110 @@
+/*
+Copyright 2014 Ralf Schmitt
+Modified by Ryan Skidmore (@ryanskidmore)
+to support the rskeys100.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+*/
+
+#include
+#include "matrix.h"
+#include
+#include "quantum.h"
+
+static const uint32_t col_values[24] = SHR_COLS;
+
+static uint8_t read_rows(void);
+static void select_col(uint8_t col);
+
+static void shift_pulse(void);
+static void shift_out_single(uint8_t value);
+static void shift_out(uint32_t value);
+
+void matrix_init_custom(void) {
+ setPinInput(ROW_A);
+ setPinInput(ROW_B);
+ setPinInput(ROW_C);
+ setPinInput(ROW_D);
+ setPinInput(ROW_E);
+ setPinInput(ROW_F);
+
+ setPinOutput(SHR_DATA);
+ setPinOutput(SHR_LATCH);
+ setPinOutput(SHR_CLOCK);
+}
+
+bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+ bool changed = false;
+
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ select_col(col);
+ _delay_us(1);
+ uint8_t rows = read_rows();
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ bool prev_bit = ((uint32_t)(current_matrix[row]) & (matrix_row_t)(1UL << col)) ? 1 : 0;
+ bool curr_bit = ((uint32_t)rows & (uint32_t)(1UL << row)) ? 1 : 0;
+ if (prev_bit != curr_bit) {
+ current_matrix[row] = (uint32_t)(current_matrix[row]) ^ (uint32_t)(1UL << col);
+ changed = true;
+ }
+ }
+ }
+
+ return changed;
+}
+
+static uint8_t read_rows(void) {
+ return (readPin(ROW_F) << 5)
+ | (readPin(ROW_E) << 4)
+ | (readPin(ROW_D) << 3)
+ | (readPin(ROW_C) << 2)
+ | (readPin(ROW_B) << 1)
+ | (readPin(ROW_A) );
+}
+
+static void select_col(uint8_t col) {
+ shift_out(col_values[col]);
+}
+
+static void shift_out(uint32_t value) {
+ writePinLow(SHR_LATCH);
+ uint8_t first_byte = (value >> 16) & 0xFF;
+ uint8_t second_byte = (value >> 8) & 0xFF;
+ uint8_t third_byte = (uint8_t)(value & 0xFF);
+
+ shift_out_single(first_byte);
+ shift_out_single(second_byte);
+ shift_out_single(third_byte);
+ writePinHigh(SHR_LATCH);
+ /* We delay here to prevent multiple consecutive keys being triggered with a single switch press */
+ _delay_us(10);
+}
+
+static void shift_out_single(uint8_t value) {
+ for (uint8_t i = 0; i < 8; i++) {
+ if (value & 0b10000000) {
+ writePinHigh(SHR_DATA);
+ } else {
+ writePinLow(SHR_DATA);
+ }
+
+ shift_pulse();
+ value = value << 1;
+ }
+}
+
+static inline void shift_pulse(void) {
+ writePinHigh(SHR_CLOCK);
+ writePinLow(SHR_CLOCK);
+}
\ No newline at end of file
diff --git a/keyboards/ryanskidmore/rskeys100/readme.md b/keyboards/ryanskidmore/rskeys100/readme.md
new file mode 100644
index 00000000000..4be465dbde5
--- /dev/null
+++ b/keyboards/ryanskidmore/rskeys100/readme.md
@@ -0,0 +1,22 @@
+# rskeys100
+
+The rskeys100 is a full size, 100% ISO keyboard with per-key RGB.
+
+* Keyboard Maintainer: [Ryan Skidmore](https://github.com/ryanskidmore)
+* Hardware Supported: The rskeys100 matrix PCB is the only supported PCB for the switch matrix. This PCB works with any
+Pro Micro or Pro Micro alternative as the daughterboard.
+* Hardware Availability: Coming soon
+
+Make example for this keyboard (after setting up your build environment):
+
+ make ryanskidmore/rskeys100:default
+
+Flashing example for this keyboard:
+
+ make ryanskidmore/rskeys100: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
+
+To enter the bootloader, press the `RESET` button on your daughterboard PCB while it's plugged in.
\ No newline at end of file
diff --git a/keyboards/ryanskidmore/rskeys100/rskeys100.c b/keyboards/ryanskidmore/rskeys100/rskeys100.c
new file mode 100644
index 00000000000..ec98ae62cc6
--- /dev/null
+++ b/keyboards/ryanskidmore/rskeys100/rskeys100.c
@@ -0,0 +1,30 @@
+// Copyright 2021 Ryan Skidmore (@ryanskidmore, rskeys@ryanskidmore.co.uk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "rskeys100.h"
+
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,NO_LED, 14, 15, 16,NO_LED,NO_LED,NO_LED,NO_LED},
+ { 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 24, 24, 23, 22, 21, 20, 19, 18, 17},
+ { 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60},
+ { 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66,NO_LED,NO_LED,NO_LED,NO_LED, 64, 63, 62,NO_LED},
+ { 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,NO_LED,NO_LED, 93,NO_LED, 94, 95, 96, 97},
+ { 117,NO_LED, 116, 115,NO_LED,NO_LED, 112,NO_LED,NO_LED,NO_LED, 109, 108, 107, 106, 105, 103, 102, 101,NO_LED, 99,NO_LED}
+ }, {
+ {0, 0}, {21, 0}, {32, 0}, {43, 0}, {53, 0}, {64, 0}, {75, 0}, {85, 0}, {96, 0}, {117, 0}, {128, 0}, {139, 0}, {149, 0}, {160, 0}, {171, 0}, {181, 0},
+ {0, 13}, {11, 13}, {21, 13}, {32, 13}, {42, 13}, {53, 13}, {64, 13}, {75, 13}, {85, 13}, {96, 13}, {107, 13}, {117, 13}, {128, 13}, {139, 13}, {160, 13}, {171, 13}, {181, 13}, {192, 13}, {203, 13}, {213, 13}, {224, 13},
+ {0, 26}, {11, 26}, {21, 26}, {32, 26}, {42, 26}, {53, 26}, {64, 26}, {75, 26}, {85, 26}, {96, 26}, {107, 26}, {117, 26}, {128, 26}, {149, 26}, {160, 26}, {171, 26}, {181, 26}, {192, 26}, {203, 26}, {213, 26}, {224, 26},
+ {0, 38}, {11, 38}, {21, 38}, {32, 38}, {42, 38}, {53, 38}, {64, 38}, {75, 38}, {85, 38}, {96, 38}, {117, 38}, {128, 38}, {149, 38}, {192, 38}, {203, 38}, {213, 38},
+ {0, 51}, {11, 51}, {21, 51}, {32, 51}, {42, 51}, {53, 51}, {64, 51}, {75, 51}, {85, 51}, {96, 51}, {107, 51}, {117, 51}, {139, 51}, {171, 51}, {192, 51}, {203, 51}, {213, 51}, {224, 51},
+ {0, 64}, {11, 64}, {21, 64}, {64, 64}, {107, 64}, {117, 64}, {128, 64}, {149, 64}, {160, 64}, {171, 64}, {181, 64}, {192, 64}, {213, 64}
+ }, {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+ } };
+#endif
\ No newline at end of file
diff --git a/keyboards/ryanskidmore/rskeys100/rskeys100.h b/keyboards/ryanskidmore/rskeys100/rskeys100.h
new file mode 100644
index 00000000000..d2974400653
--- /dev/null
+++ b/keyboards/ryanskidmore/rskeys100/rskeys100.h
@@ -0,0 +1,22 @@
+// Copyright 2021 Ryan Skidmore (@ryanskidmore, rskeys@ryanskidmore.co.uk)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "quantum.h"
+
+#define LAYOUT_fullsize_iso( \
+ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, K015, K016, \
+ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, K120, \
+ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219, K220, \
+ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K317, K318, K319, \
+ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K415, K417, K418, K419, K420, \
+ K500, K502, K503, K506, K510, K511, K512, K513, K514, K515, K516, K517, K519 \
+) { \
+ { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014, K015, K016, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, K117, K118, K119, K120, KC_NO, KC_NO, KC_NO }, \
+ { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, K217, K218, K219, K220, KC_NO, KC_NO, KC_NO }, \
+ { K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, KC_NO, KC_NO, K317, K318, K319, KC_NO, KC_NO, KC_NO, KC_NO }, \
+ { K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO, K415, KC_NO, K417, K418, K419, K420, KC_NO, KC_NO, KC_NO }, \
+ { K500, KC_NO, K502, K503, KC_NO, KC_NO, K506, KC_NO, KC_NO, KC_NO, K510, K511, K512, K513, K514, K515, K516, K517, KC_NO, K519, KC_NO, KC_NO, KC_NO, KC_NO } \
+}
diff --git a/keyboards/ryanskidmore/rskeys100/rules.mk b/keyboards/ryanskidmore/rskeys100/rules.mk
new file mode 100644
index 00000000000..62e3f427842
--- /dev/null
+++ b/keyboards/ryanskidmore/rskeys100/rules.mk
@@ -0,0 +1,23 @@
+# MCU name
+MCU = atmega32u4
+
+# Bootloader selection
+BOOTLOADER = atmel-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = no # Mouse keys
+EXTRAKEY_ENABLE = no # Audio control and System control
+CONSOLE_ENABLE = no # Console for debug
+COMMAND_ENABLE = yes # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+RGB_MATRIX_ENABLE = yes
+RGB_MATRIX_DRIVER = WS2812
+AUDIO_ENABLE = no # Audio output
+CUSTOM_MATRIX = lite
+
+SRC += matrix.c
\ No newline at end of file
From c03e18f728a8c56bbe49d2c319ae96decc3e48bb Mon Sep 17 00:00:00 2001
From: jonavin <71780717+Jonavin@users.noreply.github.com>
Date: Tue, 3 May 2022 06:22:10 -0400
Subject: [PATCH 57/65] Jonavin-kb67-Reduce mem usage (#16991)
Co-authored-by: Jonavin <=>
---
keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/config.h | 3 +++
keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c | 7 -------
keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rules.mk | 2 ++
3 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/config.h b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/config.h
index 9d842a79188..4955c0b136c 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/config.h
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/config.h
@@ -34,3 +34,6 @@
#define RGB_MATRIX_STARTUP_MODE RGB_MATRIX_SOLID_COLOR
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#endif
+
+// Reduce layers to 3 to save memory
+#define DYNAMIC_KEYMAP_LAYER_COUNT 3
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c
index 1b85354be53..98711fcd861 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/keymap.c
@@ -41,13 +41,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, KC_NO, KC_DEL, KC_INS, KC_NO, KC_NO, KC_NO, KC_P0, KC_00, KC_PDOT, KC_PSLS, _______, _______, _______,
_______, _______, _______, KC_BSPC, _______, _______, _______, _______, _______
),
- [_RAISE] = LAYOUT_65_ansi_blocker(
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
- _______, _______, _______, KC_SPC, _______, _______, _______, _______, _______
- ),
};
#ifdef RGB_MATRIX_ENABLE
diff --git a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rules.mk b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rules.mk
index 91153c75a37..c26db537eeb 100644
--- a/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rules.mk
+++ b/keyboards/kbdfans/kbd67/mkiirgb/keymaps/jonavin/rules.mk
@@ -1,8 +1,10 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
+CONSOLE_ENABLE = no
MOUSEKEY_ENABLE = no
TAP_DANCE_ENABLE = yes
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+EXTRAKEY_ENABLE = no
TD_LSFT_CAPSLOCK_ENABLE = yes
IDLE_TIMEOUT_ENABLE = yes
From 5e6f9dfc4d5f2dabbfe8e27b52624b4800310544 Mon Sep 17 00:00:00 2001
From: "E.Iosifidis"
Date: Wed, 4 May 2022 18:08:47 +0300
Subject: [PATCH 58/65] [Keymap] Introduced New layer & Improvements (#16921)
Co-authored-by: Ryan
---
.../anavi/macropad8/keymaps/vscode/keymap.c | 142 ++++++++++++++++--
1 file changed, 133 insertions(+), 9 deletions(-)
diff --git a/keyboards/anavi/macropad8/keymaps/vscode/keymap.c b/keyboards/anavi/macropad8/keymaps/vscode/keymap.c
index be6ac07f584..46d4a7d8b37 100644
--- a/keyboards/anavi/macropad8/keymaps/vscode/keymap.c
+++ b/keyboards/anavi/macropad8/keymaps/vscode/keymap.c
@@ -18,39 +18,72 @@
enum layers {
_BASIC,
+ _BRACKETS,
+ _SELECTORS,
_FN,
};
#define KC_X0 LT(_FN, KC_ESC)
+static char current_alpha_oled [12] = "None";
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* _BASIC Layer
* ,-------------------------------------.
* | Toggle | Toggle | | |
- * | Block | Line | Undo | Redo |
+ * | Block | Line | Undo | Search |
* | Comment | Comment | | |
* |---------+---------+--------+---------+
* | | | | TO |
- * | Cut | Copy | Paste | _FN |
+ * | Cut | Copy | Paste | _BASIC |
* | | | | |
- * `-------------------------------------'
+ * `-------------------------------------'
*/
[_BASIC] = LAYOUT_ortho_2x4(
- RCS(KC_A), C(KC_SLASH), C(KC_Z), C(KC_Y),
- C(KC_X), C(KC_C), C(KC_V), TO(_FN)
+ RCS(KC_A), LCTL(KC_SLASH), LCTL(KC_Z), LCTL(KC_F),
+ LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), TO(_BRACKETS)
+ ),
+/* _BRACKETS Layer
+ * ,-----------------------------------------.
+ * | | | | |
+ * | ( | [ | { | Bksp |
+ * | | | | |
+ * |---------+---------+--------+------------+
+ * | | | | TO |
+ * | Del | Copy | Paste | _SELECTORS |
+ * | | | | |
+ * `----------------------------------------'
+ */
+ [_BRACKETS] = LAYOUT_ortho_2x4(
+ S(KC_9), KC_LBRC, S(KC_LBRC), KC_BACKSPACE,
+ KC_DEL, C(KC_C), C(KC_V), TO(_SELECTORS)
+ ),
+/* _SELECTORS Layer
+* ,-------------------------------------.
+* | | | | |
+* | Select | Save | Undo | Bksp |
+* | All | | | |
+* |---------+---------+--------+---------+
+* | | | | TO |
+* | Cut | Copy | Paste | _FN |
+* | | | | |
+* `-------------------------------------'
+*/
+ [_SELECTORS] = LAYOUT_ortho_2x4(
+ C(KC_A), C(KC_S), C(KC_Z), KC_BACKSPACE,
+ C(KC_X), C(KC_C), C(KC_V), TO(_FN)
),
/* _FN Layer
* ,--------------------------------------------.
* | RGB | RGB | RGB | RGB |
* | Toggle | Mode | Mode | Snake |
- * | | Forward | Reverse | Mode |
+ * | | Forward | Reverse | Mode |
* |-----------+-----------+-----------+---------+
* | | Cycle | Toggle | TO |
- * | BackLight | BackLight | BackLight | _BASIC |
- * | Toggle | Levels | | |
- * `--------------------------------------------'
+ * | BackLight | BackLight | BackLight | _BASIC |
+ * | Toggle | Levels | Breathing | |
+ * `--------------------------------------------'
*/
[_FN] = LAYOUT_ortho_2x4(
RGB_TOG, RGB_MOD, RGB_M_R, RGB_M_SN,
@@ -63,6 +96,89 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (record->event.pressed) {
+ char string [33];
+ switch(keycode)
+ {
+ //First Layer with Basic Keys
+ case LCTL(KC_X):
+ strncpy(current_alpha_oled, "Cut", sizeof(current_alpha_oled));
+ break;
+ case LCTL(KC_F):
+ strncpy(current_alpha_oled, "Search", sizeof(current_alpha_oled));
+ break;
+ case LCTL(KC_Z):
+ strncpy(current_alpha_oled, "Undo", sizeof(current_alpha_oled));
+ break;
+ case LCTL(KC_C):
+ strncpy(current_alpha_oled, "Copy", sizeof(current_alpha_oled));
+ break;
+ case LCTL(KC_V):
+ strncpy(current_alpha_oled, "Paste", sizeof(current_alpha_oled));
+ break;
+ case RCS(KC_A):
+ strncpy(current_alpha_oled, "Block cmt.", sizeof(current_alpha_oled));
+ break;
+ case LCTL(KC_SLASH):
+ strncpy(current_alpha_oled, "Line cmt.", sizeof(current_alpha_oled));
+ break;
+ //Second Layer with Brackets
+ case S(KC_9):
+ strncpy(current_alpha_oled, "()", sizeof(current_alpha_oled));
+ break;
+ case KC_LBRC:
+ strncpy(current_alpha_oled, "[]", sizeof(current_alpha_oled));
+ break;
+ case S(KC_LBRC):
+ strncpy(current_alpha_oled, "{}", sizeof(current_alpha_oled));
+ break;
+ case KC_BACKSPACE:
+ strncpy(current_alpha_oled, "Backspace", sizeof(current_alpha_oled));
+ break;
+ case KC_DEL:
+ strncpy(current_alpha_oled, "Del", sizeof(current_alpha_oled));
+ break;
+ // Selector Layer keys
+ case C(KC_A):
+ strncpy(current_alpha_oled, "Select All", sizeof(current_alpha_oled));
+ break;
+ case C(KC_S):
+ strncpy(current_alpha_oled, "Save", sizeof(current_alpha_oled));
+ break;
+ // FN Layer keys
+ case RGB_TOG:
+ strncpy(current_alpha_oled, "RGB Toggle", sizeof(current_alpha_oled));
+ break;
+ case RGB_MOD:
+ strncpy(current_alpha_oled, "RGB Fwd", sizeof(current_alpha_oled));
+ break;
+ case RGB_M_R:
+ strncpy(current_alpha_oled, "RGB Rev", sizeof(current_alpha_oled));
+ break;
+ case RGB_MODE_SNAKE:
+ strncpy(current_alpha_oled, "RGB Snk", sizeof(current_alpha_oled));
+ break;
+ case BL_TOGG:
+ strncpy(current_alpha_oled, "BkLgt Tog", sizeof(current_alpha_oled));
+ break;
+ case BL_STEP:
+ strncpy(current_alpha_oled, "BkLgt Lvl", sizeof(current_alpha_oled));
+ break;
+ case BL_BRTG:
+ strncpy(current_alpha_oled, "BkLgt Brth", sizeof(current_alpha_oled));
+ break;
+ //FN Key keycodes
+ case TO(_BASIC) ... TO(_FN):
+ strncpy(current_alpha_oled, "Switcher", sizeof(current_alpha_oled));
+ break;
+ default:
+ strncpy(current_alpha_oled, itoa(keycode, string, 10), sizeof(current_alpha_oled));
+ break;
+ }
+ }
+ return true;
+}
bool oled_task_user(void) {
// Host Keyboard Layer Status
@@ -73,6 +189,12 @@ bool oled_task_user(void) {
case _BASIC:
oled_write_ln_P(PSTR("Basic"), false);
break;
+ case _BRACKETS:
+ oled_write_ln_P(PSTR("Brkts"), false);
+ break;
+ case _SELECTORS:
+ oled_write_ln_P(PSTR("Selct"), false);
+ break;
case _FN:
oled_write_ln_P(PSTR("FN"), false);
break;
@@ -90,6 +212,8 @@ bool oled_task_user(void) {
oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false);
oled_write_P(PSTR("Backlit: "), false);
oled_write_ln_P(is_backlight_enabled() ? PSTR("On") : PSTR("Off"), false);
+ oled_write_P(PSTR("Last Key: "), false);
+ oled_write_ln(current_alpha_oled, false);
#ifdef RGBLIGHT_ENABLE
static char rgbStatusLine1[26] = {0};
snprintf(rgbStatusLine1, sizeof(rgbStatusLine1), "RGB Mode: %d", rgblight_get_mode());
From 7608902794d94f0c833ac9f5ae0047a9403408a8 Mon Sep 17 00:00:00 2001
From: npspears <40127181+npspears@users.noreply.github.com>
Date: Wed, 4 May 2022 10:10:35 -0500
Subject: [PATCH 59/65] [Keyboard] Add per-key RGB for Quark LP RGB variants
(#16671)
Co-authored-by: Drashna Jaelre
---
keyboards/checkerboards/quark_lp/config.h | 69 +++++++++++++++++++--
keyboards/checkerboards/quark_lp/quark_lp.c | 22 +++++++
keyboards/checkerboards/quark_lp/rules.mk | 3 +-
3 files changed, 87 insertions(+), 7 deletions(-)
diff --git a/keyboards/checkerboards/quark_lp/config.h b/keyboards/checkerboards/quark_lp/config.h
index 78197d33a25..08f8c75b670 100644
--- a/keyboards/checkerboards/quark_lp/config.h
+++ b/keyboards/checkerboards/quark_lp/config.h
@@ -46,8 +46,7 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-// ws2812 options
-#define RGB_DI_PIN C2 // pin the DI on the ws2812 is hooked-up to
+// RGB Matrix
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
@@ -58,7 +57,65 @@
#define RGBLIGHT_EFFECT_RGB_TEST
#define RGBLIGHT_EFFECT_ALTERNATING
#define RGBLIGHT_EFFECT_TWINKLE
-#define RGBLED_NUM 14 // number of LEDs
-#define RGBLIGHT_HUE_STEP 12 // units to step when in/decreasing hue
-#define RGBLIGHT_SAT_STEP 12 // units to step when in/decresing saturation
-#define RGBLIGHT_VAL_STEP 12 // units to step when in/decreasing value (brightness)
+#define RGB_DI_PIN C2 // pin the DI on the ws2812 is hooked-up to
+#define RGBLED_NUM 51 // number of LEDs
+
+#ifdef RGB_MATRIX_ENABLE
+#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
+#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 125 // limits maximum brightness of LEDs to 125 out of 255. Higher may cause the controller to crash.
+#define RGB_MATRIX_HUE_STEP 8
+#define RGB_MATRIX_SAT_STEP 8
+#define RGB_MATRIX_VAL_STEP 8
+#define RGB_MATRIX_SPD_STEP 10
+
+// RGB Matrix Animation modes. Explicitly enabled
+// For full list of effects, see:
+// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
+#define ENABLE_RGB_MATRIX_ALPHAS_MODS
+#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
+#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_BREATHING
+#define ENABLE_RGB_MATRIX_BAND_SAT
+#define ENABLE_RGB_MATRIX_BAND_VAL
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
+#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_CYCLE_ALL
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#define ENABLE_RGB_MATRIX_DUAL_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
+#define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+#define ENABLE_RGB_MATRIX_HUE_BREATHING
+#define ENABLE_RGB_MATRIX_HUE_PENDULUM
+#define ENABLE_RGB_MATRIX_HUE_WAVE
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_FLOW
+#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
+// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
+// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#define ENABLE_RGB_MATRIX_SPLASH
+#define ENABLE_RGB_MATRIX_MULTISPLASH
+#define ENABLE_RGB_MATRIX_SOLID_SPLASH
+#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+#endif
diff --git a/keyboards/checkerboards/quark_lp/quark_lp.c b/keyboards/checkerboards/quark_lp/quark_lp.c
index bc9a192bf50..ff8f237a5be 100644
--- a/keyboards/checkerboards/quark_lp/quark_lp.c
+++ b/keyboards/checkerboards/quark_lp/quark_lp.c
@@ -15,3 +15,25 @@
*/
#include "quark_lp.h"
+
+#ifdef RGB_MATRIX_ENABLE
+led_config_t g_led_config = { {
+ // Key Matrix to LED Index
+ { 11, 10, 9, 8, 7, NO_LED, 6, NO_LED, 5, NO_LED, 4, 3, 2, 1, 0 },
+ { 12, 13, 14, 15, 16, NO_LED, 17, NO_LED, 18, NO_LED, 19, 20, 21, 22, 23 },
+ { 35, 34, 33, 32, 31, NO_LED, 30, NO_LED, 29, NO_LED, 28, 27, 26, 25, 24 },
+ { 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50 }
+}, {
+ // LED Index to Physical Position
+ { 244, 0 }, { 224, 0 }, { 203, 0 }, { 183, 0 }, { 163, 0 }, { 143, 0 }, { 122, 0 }, { 102, 0 }, { 81, 0 }, { 61, 0 }, { 41, 0 }, { 20, 0 },
+ { 20, 21 }, { 41, 21 }, { 61, 21 }, { 81, 21 }, { 102, 21 }, { 122, 21 }, { 143, 21 }, { 163, 21 }, { 183, 21 }, { 203, 21 }, { 224, 21 }, { 244, 21 },
+ { 244, 43 }, { 224, 43 }, { 203, 43 }, { 183, 43 }, { 163, 43 }, { 143, 43 }, { 122, 43 }, { 102, 43 }, { 81, 43 }, { 61, 43 }, { 41, 43 }, { 20, 43 },
+ { 20, 64 }, { 41, 64 }, { 61, 64 }, { 81, 64 }, { 102, 64 }, { 112, 64 }, { 122, 64 }, { 132, 64 }, { 143, 64 }, { 153, 64 }, { 163, 64 }, { 183, 64 }, { 203, 64 }, { 224, 64 }, { 244, 64 }
+}, {
+ // LED Index to Flag
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
+} };
+#endif
diff --git a/keyboards/checkerboards/quark_lp/rules.mk b/keyboards/checkerboards/quark_lp/rules.mk
index 155e14ca685..d5bf779f12c 100644
--- a/keyboards/checkerboards/quark_lp/rules.mk
+++ b/keyboards/checkerboards/quark_lp/rules.mk
@@ -14,5 +14,6 @@ CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
-RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
+RGB_MATRIX_ENABLE = yes
From 11e20fa0c9fbe60c1559659cb90ade8f5fb39c1f Mon Sep 17 00:00:00 2001
From: Mateusz Mojsiejuk
Date: Thu, 5 May 2022 04:55:47 +0200
Subject: [PATCH 60/65] Add missing dependency for qmk setup on Fedora (#17003)
---
util/install/fedora.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/util/install/fedora.sh b/util/install/fedora.sh
index e123447d3f8..b140438b424 100755
--- a/util/install/fedora.sh
+++ b/util/install/fedora.sh
@@ -8,7 +8,7 @@ _qmk_install() {
clang diffutils git gcc glibc-headers kernel-devel kernel-headers \
make unzip wget zip python3 avr-binutils avr-gcc avr-libc \
arm-none-eabi-binutils-cs arm-none-eabi-gcc-cs arm-none-eabi-newlib \
- avrdude dfu-programmer dfu-util hidapi
+ avrdude dfu-programmer dfu-util hidapi libusb1-devel
python3 -m pip install --user -r $QMK_FIRMWARE_DIR/requirements.txt
}
From 3fbf9dc2902d53940a1cb41d473dd63034f70839 Mon Sep 17 00:00:00 2001
From: Xelus22 <17491233+Xelus22@users.noreply.github.com>
Date: Thu, 5 May 2022 18:08:35 +1000
Subject: [PATCH 61/65] [Keyboard] RS60 Rev2 Addition (#16988)
---
keyboards/xelus/rs60/config.h | 36 +-----------
keyboards/xelus/rs60/readme.md | 3 +-
keyboards/xelus/rs60/rev1/config.h | 49 ++++++++++++++++
keyboards/xelus/rs60/rev1/rev1.c | 16 +++++
keyboards/xelus/rs60/rev1/rev1.h | 34 +++++++++++
keyboards/xelus/rs60/{ => rev1}/rules.mk | 0
keyboards/xelus/rs60/rev2/chconf.h | 30 ++++++++++
keyboards/xelus/rs60/rev2/config.h | 74 ++++++++++++++++++++++++
keyboards/xelus/rs60/rev2/halconf.h | 26 +++++++++
keyboards/xelus/rs60/rev2/mcuconf.h | 42 ++++++++++++++
keyboards/xelus/rs60/rev2/rev2.c | 16 +++++
keyboards/xelus/rs60/rev2/rev2.h | 34 +++++++++++
keyboards/xelus/rs60/rev2/rules.mk | 28 +++++++++
keyboards/xelus/rs60/rs60.h | 22 ++-----
14 files changed, 359 insertions(+), 51 deletions(-)
create mode 100644 keyboards/xelus/rs60/rev1/config.h
create mode 100644 keyboards/xelus/rs60/rev1/rev1.c
create mode 100644 keyboards/xelus/rs60/rev1/rev1.h
rename keyboards/xelus/rs60/{ => rev1}/rules.mk (100%)
create mode 100644 keyboards/xelus/rs60/rev2/chconf.h
create mode 100644 keyboards/xelus/rs60/rev2/config.h
create mode 100644 keyboards/xelus/rs60/rev2/halconf.h
create mode 100644 keyboards/xelus/rs60/rev2/mcuconf.h
create mode 100644 keyboards/xelus/rs60/rev2/rev2.c
create mode 100644 keyboards/xelus/rs60/rev2/rev2.h
create mode 100644 keyboards/xelus/rs60/rev2/rules.mk
diff --git a/keyboards/xelus/rs60/config.h b/keyboards/xelus/rs60/config.h
index ce0c2e1d027..52c27df6e84 100644
--- a/keyboards/xelus/rs60/config.h
+++ b/keyboards/xelus/rs60/config.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 Harrison Chan (Xelus)
+/* Copyright 2022 Harrison Chan (Xelus)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -13,37 +13,5 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-#pragma once
-// USB Device descriptor parameter
-#define VENDOR_ID 0x5845 // XE
-#define PRODUCT_ID 0x5253 // RS60
-#define DEVICE_VER 0x0001
-#define MANUFACTURER Xelus
-#define PRODUCT RS60
-
-/* key matrix size */
-#define MATRIX_ROWS 5
-#define MATRIX_COLS 14
-
-#define MATRIX_ROW_PINS { B3, B7, F0, F4, F1 }
-#define MATRIX_COL_PINS { E6, D5, D3, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4}
-#define UNUSED_PINS
-
-// COL2ROW or ROW2COL
-#define DIODE_DIRECTION COL2ROW
-
-// Set 0 if debouncing isn't needed
-#define DEBOUNCE 5
-
-// Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
-#define LOCKING_SUPPORT_ENABLE
-
-// Locking resynchronize hack
-#define LOCKING_RESYNC_ENABLE
-
-//Indicator
-#define LED_CAPS_LOCK_PIN B0
-
-//Force NKRO
-#define FORCE_NKRO
+#include "config_common.h"
diff --git a/keyboards/xelus/rs60/readme.md b/keyboards/xelus/rs60/readme.md
index 381aa9dc0d6..9e6d17eb86e 100644
--- a/keyboards/xelus/rs60/readme.md
+++ b/keyboards/xelus/rs60/readme.md
@@ -8,7 +8,8 @@
Make example for this keyboard (after setting up your build environment):
- make xelus/rs60:default
+ make xelus/rs60/rev1:default
+ make xelus/rs60/rev2:default
Reset your keyboard in 3 ways:
diff --git a/keyboards/xelus/rs60/rev1/config.h b/keyboards/xelus/rs60/rev1/config.h
new file mode 100644
index 00000000000..ce0c2e1d027
--- /dev/null
+++ b/keyboards/xelus/rs60/rev1/config.h
@@ -0,0 +1,49 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+// USB Device descriptor parameter
+#define VENDOR_ID 0x5845 // XE
+#define PRODUCT_ID 0x5253 // RS60
+#define DEVICE_VER 0x0001
+#define MANUFACTURER Xelus
+#define PRODUCT RS60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_ROW_PINS { B3, B7, F0, F4, F1 }
+#define MATRIX_COL_PINS { E6, D5, D3, F5, F6, F7, C7, C6, B6, B5, B4, D7, D6, D4}
+#define UNUSED_PINS
+
+// COL2ROW or ROW2COL
+#define DIODE_DIRECTION COL2ROW
+
+// Set 0 if debouncing isn't needed
+#define DEBOUNCE 5
+
+// Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
+#define LOCKING_SUPPORT_ENABLE
+
+// Locking resynchronize hack
+#define LOCKING_RESYNC_ENABLE
+
+//Indicator
+#define LED_CAPS_LOCK_PIN B0
+
+//Force NKRO
+#define FORCE_NKRO
diff --git a/keyboards/xelus/rs60/rev1/rev1.c b/keyboards/xelus/rs60/rev1/rev1.c
new file mode 100644
index 00000000000..d997ff979ee
--- /dev/null
+++ b/keyboards/xelus/rs60/rev1/rev1.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+ #include "rev1.h"
diff --git a/keyboards/xelus/rs60/rev1/rev1.h b/keyboards/xelus/rs60/rev1/rev1.h
new file mode 100644
index 00000000000..9b8e841de5c
--- /dev/null
+++ b/keyboards/xelus/rs60/rev1/rev1.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_60_ansi_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D } \
+}
diff --git a/keyboards/xelus/rs60/rules.mk b/keyboards/xelus/rs60/rev1/rules.mk
similarity index 100%
rename from keyboards/xelus/rs60/rules.mk
rename to keyboards/xelus/rs60/rev1/rules.mk
diff --git a/keyboards/xelus/rs60/rev2/chconf.h b/keyboards/xelus/rs60/rev2/chconf.h
new file mode 100644
index 00000000000..a9608a4c753
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2/chconf.h
@@ -0,0 +1,30 @@
+/* Copyright 2022 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/austin/chconf.h -r platforms/chibios/common/configs/chconf.h`
+ */
+
+#pragma once
+
+#define CH_CFG_ST_FREQUENCY 10000
+
+#define CH_CFG_OPTIMIZE_SPEED FALSE
+
+#define CH_CFG_USE_CONDVARS_TIMEOUT FALSE
+
+#include_next
diff --git a/keyboards/xelus/rs60/rev2/config.h b/keyboards/xelus/rs60/rev2/config.h
new file mode 100644
index 00000000000..cbda2089ef9
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2/config.h
@@ -0,0 +1,74 @@
+/* Copyright 2022 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+// USB Device descriptor parameter
+#define VENDOR_ID 0x5845 // XE
+#define PRODUCT_ID 0x5253 // RS60
+#define DEVICE_VER 0x0002
+#define MANUFACTURER Xelus
+#define PRODUCT RS60
+
+/* key matrix size */
+#define MATRIX_ROWS 5
+#define MATRIX_COLS 14
+
+#define MATRIX_ROW_PINS { B15, B14, B12, B1, B0 }
+#define MATRIX_COL_PINS { B13, A7, A6, A5, A4, A3, A2, B7, B6, B5, B4, B3, A15, A14 }
+#define UNUSED_PINS
+
+// COL2ROW or ROW2COL
+#define DIODE_DIRECTION COL2ROW
+
+// Set 0 if debouncing isn't needed
+#define DEBOUNCE 5
+
+// Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap
+#define LOCKING_SUPPORT_ENABLE
+
+// Locking resynchronize hack
+#define LOCKING_RESYNC_ENABLE
+
+//Indicator
+#define LED_CAPS_LOCK_PIN A1
+
+// I2C config
+#define I2C_DRIVER I2CD3
+#define I2C1_SCL_PIN B8
+#define I2C1_SDA_PIN B9
+#define I2C1_SCL_PAL_MODE 4
+#define I2C1_SDA_PAL_MODE 4
+#define I2C1_CLOCK_SPEED 400000
+#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
+
+// EEPROM config
+// 24LC32
+#define EXTERNAL_EEPROM_BYTE_COUNT 4096
+#define EXTERNAL_EEPROM_PAGE_SIZE 32
+#define EXTERNAL_EEPROM_ADDRESS_SIZE 2
+#define EXTERNAL_EEPROM_WRITE_TIME 5
+
+// More EEPROM for layers
+#define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR 4095
+
+// Hardware Defines
+#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP TRUE
+
+// HSE CLK
+#define STM32_HSECLK 16000000
+
+//Force NKRO
+#define FORCE_NKRO
diff --git a/keyboards/xelus/rs60/rev2/halconf.h b/keyboards/xelus/rs60/rev2/halconf.h
new file mode 100644
index 00000000000..b3e848852b5
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2/halconf.h
@@ -0,0 +1,26 @@
+/* Copyright 2022 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/acheron/austin/halconf.h -r platforms/chibios/common/configs/halconf.h`
+ */
+
+#pragma once
+
+#define HAL_USE_I2C TRUE
+
+#include_next
diff --git a/keyboards/xelus/rs60/rev2/mcuconf.h b/keyboards/xelus/rs60/rev2/mcuconf.h
new file mode 100644
index 00000000000..2ef15d07208
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2/mcuconf.h
@@ -0,0 +1,42 @@
+/* Copyright 2022 QMK
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+/*
+ * This file was auto-generated by:
+ * `qmk chibios-confmigrate -i keyboards/xelus/kangaroo/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
+ */
+
+#pragma once
+
+#include_next
+
+#undef STM32_PLLM_VALUE
+#undef STM32_PLLN_VALUE
+#undef STM32_PLLP_VALUE
+#undef STM32_PLLQ_VALUE
+#undef STM32_PPRE1
+#undef STM32_PPRE2
+
+// 64MHz core
+#define STM32_PLLM_VALUE 8
+#define STM32_PLLN_VALUE 168
+#define STM32_PLLP_VALUE 4
+#define STM32_PLLQ_VALUE 7
+#define STM32_PPRE1 STM32_PPRE1_DIV2
+#define STM32_PPRE2 STM32_PPRE1_DIV1
+
+#undef STM32_I2C_USE_I2C1
+#define STM32_I2C_USE_I2C1 TRUE
diff --git a/keyboards/xelus/rs60/rev2/rev2.c b/keyboards/xelus/rs60/rev2/rev2.c
new file mode 100644
index 00000000000..f51e262ea01
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2/rev2.c
@@ -0,0 +1,16 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+ #include "rev2.h"
diff --git a/keyboards/xelus/rs60/rev2/rev2.h b/keyboards/xelus/rs60/rev2/rev2.h
new file mode 100644
index 00000000000..9b8e841de5c
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2/rev2.h
@@ -0,0 +1,34 @@
+/* Copyright 2021 Harrison Chan (Xelus)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+#pragma once
+
+#include "quantum.h"
+
+#define XXX KC_NO
+
+#define LAYOUT_60_ansi_split_bs_rshift( \
+ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
+ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
+ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
+ K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
+ K40, K41, K42, K45, K49, K4A, K4C, K4D \
+) { \
+ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
+ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
+ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
+ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
+ { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D } \
+}
diff --git a/keyboards/xelus/rs60/rev2/rules.mk b/keyboards/xelus/rs60/rev2/rules.mk
new file mode 100644
index 00000000000..95c0f0bc604
--- /dev/null
+++ b/keyboards/xelus/rs60/rev2/rules.mk
@@ -0,0 +1,28 @@
+# MCU name
+MCU = STM32F401
+
+# Bootloader selection
+BOOTLOADER = stm32-dfu
+
+# Build Options
+# change yes to no to disable
+#
+BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
+MOUSEKEY_ENABLE = yes # Mouse keys
+EXTRAKEY_ENABLE = yes # Audio control and System control
+CONSOLE_ENABLE = yes # Console for debug
+COMMAND_ENABLE = no # Commands for debug and configuration
+NKRO_ENABLE = yes # Enable N-Key Rollover
+BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
+RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
+AUDIO_ENABLE = no # Audio output
+
+EEPROM_DRIVER = i2c
+
+# Save hid interface
+KEYBOARD_SHARED_EP = yes
+
+# Enter lower-power sleep mode when on the ChibiOS idle thread
+OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+
+LAYOUTS = 60_ansi_split_bs_rshift
diff --git a/keyboards/xelus/rs60/rs60.h b/keyboards/xelus/rs60/rs60.h
index 9b8e841de5c..81e4470db58 100644
--- a/keyboards/xelus/rs60/rs60.h
+++ b/keyboards/xelus/rs60/rs60.h
@@ -1,4 +1,4 @@
-/* Copyright 2021 Harrison Chan (Xelus)
+/* Copyright 2022 Harrison Chan (Xelus)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,18 +17,8 @@
#include "quantum.h"
-#define XXX KC_NO
-
-#define LAYOUT_60_ansi_split_bs_rshift( \
- K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K2D, \
- K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, \
- K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, \
- K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3B, K3C, K3D, \
- K40, K41, K42, K45, K49, K4A, K4C, K4D \
-) { \
- { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
- { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D }, \
- { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D }, \
- { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, XXX, K3B, K3C, K3D }, \
- { K40, K41, K42, XXX, XXX, K45, XXX, XXX, XXX, K49, K4A, XXX, K4C, K4D } \
-}
+#if defined(KEYBOARD_xelus_rs60_rev1)
+ #include "rev1.h"
+#elif defined(KEYBOARD_xelus_rs60_rev2)
+ #include "rev2.h"
+#endif
From 890dfebe8ddb971117d48031e4317d5387447b35 Mon Sep 17 00:00:00 2001
From: Josh Hinnebusch
Date: Thu, 5 May 2022 06:31:52 -0400
Subject: [PATCH 62/65] Add ibis PCB (#17001)
* initial ibis commit
* updates etc
* layout updates to fix mismatched keys
* Apply suggestions from code review
Co-authored-by: Joel Challis
* Update keyboards/hineybush/ibis/info.json
Co-authored-by: Joel Challis
* Update keyboards/hineybush/ibis/readme.md
Co-authored-by: Ryan
Co-authored-by: Joel Challis
Co-authored-by: Ryan
---
keyboards/hineybush/ibis/config.h | 20 +
keyboards/hineybush/ibis/info.json | 782 ++++++++++++++++++
.../hineybush/ibis/keymaps/default/keymap.c | 28 +
keyboards/hineybush/ibis/keymaps/via/keymap.c | 42 +
keyboards/hineybush/ibis/keymaps/via/rules.mk | 1 +
keyboards/hineybush/ibis/readme.md | 27 +
keyboards/hineybush/ibis/rules.mk | 1 +
7 files changed, 901 insertions(+)
create mode 100644 keyboards/hineybush/ibis/config.h
create mode 100644 keyboards/hineybush/ibis/info.json
create mode 100644 keyboards/hineybush/ibis/keymaps/default/keymap.c
create mode 100644 keyboards/hineybush/ibis/keymaps/via/keymap.c
create mode 100644 keyboards/hineybush/ibis/keymaps/via/rules.mk
create mode 100644 keyboards/hineybush/ibis/readme.md
create mode 100644 keyboards/hineybush/ibis/rules.mk
diff --git a/keyboards/hineybush/ibis/config.h b/keyboards/hineybush/ibis/config.h
new file mode 100644
index 00000000000..e8601cd54b2
--- /dev/null
+++ b/keyboards/hineybush/ibis/config.h
@@ -0,0 +1,20 @@
+// Copyright 2022 Josh Hinnebusch (@hineybush)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+/*
+ * Feature disable options
+ * These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
diff --git a/keyboards/hineybush/ibis/info.json b/keyboards/hineybush/ibis/info.json
new file mode 100644
index 00000000000..69960e13ab4
--- /dev/null
+++ b/keyboards/hineybush/ibis/info.json
@@ -0,0 +1,782 @@
+{
+ "manufacturer": "Hiney LLC",
+ "keyboard_name": "ibis",
+ "maintainer": "hineybush",
+ "bootloader": "atmel-dfu",
+ "diode_direction": "COL2ROW",
+ "features": {
+ "bootmagic": true,
+ "command": false,
+ "console": false,
+ "extrakey": true,
+ "mousekey": true,
+ "nkro": true
+ },
+ "matrix_pins": {
+ "cols": [
+ "F0",
+ "F1",
+ "F4",
+ "F5",
+ "F6",
+ "F7",
+ "B6",
+ "B5",
+ "D6",
+ "D4"
+ ],
+ "rows": [
+ "B0",
+ "B1",
+ "B2",
+ "B3",
+ "C7",
+ "C6",
+ "B4",
+ "D7",
+ "D5",
+ "D3"
+ ]
+ },
+ "processor": "atmega32u4",
+ "url": "",
+ "usb": {
+ "device_version": "1.0.0",
+ "pid": "0xEAA9",
+ "vid": "0x04D8"
+ },
+ "indicators": {
+ "num_lock": "B7",
+ "caps_lock": "D2"
+ },
+ "layouts": {
+ "LAYOUT_all": {
+ "layout": [
+ {
+ "matrix": [
+ 0,
+ 0
+ ],
+ "x": 2.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 0
+ ],
+ "x": 3.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 0,
+ 1
+ ],
+ "x": 4.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 1
+ ],
+ "x": 5.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 0,
+ 2
+ ],
+ "x": 6.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 2
+ ],
+ "x": 7.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 0,
+ 3
+ ],
+ "x": 8.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 3
+ ],
+ "x": 9.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 0,
+ 4
+ ],
+ "x": 10.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 4
+ ],
+ "x": 11.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 0,
+ 5
+ ],
+ "x": 12.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 5
+ ],
+ "x": 13.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 0,
+ 6
+ ],
+ "x": 14.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 6
+ ],
+ "x": 15.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 7
+ ],
+ "x": 16.5,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 3,
+ 7
+ ],
+ "x": 17.75,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 0,
+ 8
+ ],
+ "x": 19,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 8
+ ],
+ "x": 20,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 0,
+ 9
+ ],
+ "x": 21,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 1,
+ 9
+ ],
+ "x": 22,
+ "y": 1.25
+ },
+ {
+ "matrix": [
+ 2,
+ 0
+ ],
+ "x": 2.5,
+ "y": 2.25,
+ "w": 1.5
+ },
+ {
+ "matrix": [
+ 3,
+ 0
+ ],
+ "x": 4,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 1
+ ],
+ "x": 5,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 3,
+ 1
+ ],
+ "x": 6,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 2
+ ],
+ "x": 7,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 3,
+ 2
+ ],
+ "x": 8,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 3
+ ],
+ "x": 9,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 3,
+ 3
+ ],
+ "x": 10,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 4
+ ],
+ "x": 11,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 3,
+ 4
+ ],
+ "x": 12,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 5
+ ],
+ "x": 13,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 3,
+ 5
+ ],
+ "x": 14,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 6
+ ],
+ "x": 15,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 3,
+ 6
+ ],
+ "x": 16,
+ "y": 2.25,
+ "w": 1.5
+ },
+ {
+ "matrix": [
+ 5,
+ 7
+ ],
+ "x": 17.75,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 8
+ ],
+ "x": 19,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 3,
+ 8
+ ],
+ "x": 20,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 2,
+ 9
+ ],
+ "x": 21,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 3,
+ 9
+ ],
+ "x": 22,
+ "y": 2.25
+ },
+ {
+ "matrix": [
+ 4,
+ 0
+ ],
+ "x": 2.5,
+ "y": 3.25,
+ "w": 1.75
+ },
+ {
+ "matrix": [
+ 5,
+ 0
+ ],
+ "x": 4.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 4,
+ 1
+ ],
+ "x": 5.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 5,
+ 1
+ ],
+ "x": 6.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 4,
+ 2
+ ],
+ "x": 7.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 5,
+ 2
+ ],
+ "x": 8.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 4,
+ 3
+ ],
+ "x": 9.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 5,
+ 3
+ ],
+ "x": 10.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 4,
+ 4
+ ],
+ "x": 11.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 5,
+ 4
+ ],
+ "x": 12.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 4,
+ 5
+ ],
+ "x": 13.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 5,
+ 5
+ ],
+ "x": 14.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 4,
+ 6
+ ],
+ "x": 15.25,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 5,
+ 6
+ ],
+ "x": 15.25,
+ "y": 3.25,
+ "w": 2.25
+ },
+ {
+ "matrix": [
+ 4,
+ 8
+ ],
+ "x": 19,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 5,
+ 8
+ ],
+ "x": 20,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 4,
+ 9
+ ],
+ "x": 21,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 5,
+ 9
+ ],
+ "x": 22,
+ "y": 3.25
+ },
+ {
+ "matrix": [
+ 6,
+ 0
+ ],
+ "x": 2.5,
+ "y": 4.25,
+ "w": 1.25
+ },
+ {
+ "matrix": [
+ 7,
+ 0
+ ],
+ "x": 3.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 6,
+ 1
+ ],
+ "x": 4.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 7,
+ 1
+ ],
+ "x": 5.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 6,
+ 2
+ ],
+ "x": 6.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 7,
+ 2
+ ],
+ "x": 7.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 6,
+ 3
+ ],
+ "x": 8.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 7,
+ 3
+ ],
+ "x": 9.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 6,
+ 4
+ ],
+ "x": 10.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 7,
+ 4
+ ],
+ "x": 11.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 6,
+ 5
+ ],
+ "x": 12.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 7,
+ 5
+ ],
+ "x": 13.75,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 6,
+ 6
+ ],
+ "x": 14.75,
+ "y": 4.25,
+ "w": 1.75
+ },
+ {
+ "matrix": [
+ 7,
+ 6
+ ],
+ "x": 16.5,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 7,
+ 7
+ ],
+ "x": 17.75,
+ "y": 4.5
+ },
+ {
+ "matrix": [
+ 6,
+ 8
+ ],
+ "x": 19,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 7,
+ 8
+ ],
+ "x": 20,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 6,
+ 9
+ ],
+ "x": 21,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 7,
+ 9
+ ],
+ "x": 22,
+ "y": 4.25
+ },
+ {
+ "matrix": [
+ 8,
+ 0
+ ],
+ "x": 2.5,
+ "y": 5.25,
+ "w": 1.5
+ },
+ {
+ "matrix": [
+ 9,
+ 0
+ ],
+ "x": 4,
+ "y": 5.25
+ },
+ {
+ "matrix": [
+ 8,
+ 1
+ ],
+ "x": 5,
+ "y": 5.25,
+ "w": 1.5
+ },
+ {
+ "matrix": [
+ 8,
+ 3
+ ],
+ "x": 6.5,
+ "y": 5.25,
+ "w": 6.25
+ },
+ {
+ "matrix": [
+ 8,
+ 5
+ ],
+ "x": 12.75,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "matrix": [
+ 9,
+ 5
+ ],
+ "x": 14,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "matrix": [
+ 8,
+ 6
+ ],
+ "x": 15.25,
+ "y": 5.25,
+ "w": 1.25
+ },
+ {
+ "matrix": [
+ 9,
+ 6
+ ],
+ "x": 16.75,
+ "y": 5.5
+ },
+ {
+ "matrix": [
+ 9,
+ 7
+ ],
+ "x": 17.75,
+ "y": 5.5
+ },
+ {
+ "matrix": [
+ 8,
+ 8
+ ],
+ "x": 18.75,
+ "y": 5.5
+ },
+ {
+ "matrix": [
+ 9,
+ 8
+ ],
+ "x": 20,
+ "y": 5.25
+ },
+ {
+ "matrix": [
+ 8,
+ 9
+ ],
+ "x": 21,
+ "y": 5.25
+ },
+ {
+ "matrix": [
+ 9,
+ 9
+ ],
+ "x": 22,
+ "y": 5.25
+ }
+ ]
+ }
+ }
+}
diff --git a/keyboards/hineybush/ibis/keymaps/default/keymap.c b/keyboards/hineybush/ibis/keymaps/default/keymap.c
new file mode 100644
index 00000000000..46f0d0221e4
--- /dev/null
+++ b/keyboards/hineybush/ibis/keymaps/default/keymap.c
@@ -0,0 +1,28 @@
+// Copyright 2022 Josh Hinnebusch (@hineybush)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k17, k37, k08, k18, k09, k19, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k57, k28, k38, k29, k39, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k48, k58, k49, k59, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k77, k68, k78, k69, k79, \
+ k80, k90, k81, k83, k85, k95, k86, k96, k97, k88, k98, k89, k99 \ */
+
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_TRNS, KC_UP, KC_P1, KC_P2, KC_P3, KC_TRNS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RESET ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_MPLY, KC_LALT, KC_TRNS, KC_RGUI, KC_MPRV, KC_VOLD, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/hineybush/ibis/keymaps/via/keymap.c b/keyboards/hineybush/ibis/keymaps/via/keymap.c
new file mode 100644
index 00000000000..d406afb0523
--- /dev/null
+++ b/keyboards/hineybush/ibis/keymaps/via/keymap.c
@@ -0,0 +1,42 @@
+// Copyright 2022 Josh Hinnebusch (@hineybush)
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ /*
+ k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k17, k37, k08, k18, k09, k19, \
+ k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k36, k57, k28, k38, k29, k39, \
+ k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k56, k48, k58, k49, k59, \
+ k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k76, k77, k68, k78, k69, k79, \
+ k80, k90, k81, k83, k85, k95, k86, k96, k97, k88, k98, k89, k99 \ */
+
+ [0] = LAYOUT_all(
+ KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_BSPC, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PMNS,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PPLS,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, KC_TRNS, KC_UP, KC_P1, KC_P2, KC_P3, KC_TRNS,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_RGUI, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
+ ),
+ [1] = LAYOUT_all(
+ KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_PGUP, KC_NLCK, KC_PSLS, KC_PAST, KC_PAUS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RESET ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_LALT, KC_TRNS, KC_RGUI, KC_MPRV, KC_VOLD, KC_MNXT, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RESET ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RESET ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [3] = LAYOUT_all(
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RESET ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, RESET ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
diff --git a/keyboards/hineybush/ibis/keymaps/via/rules.mk b/keyboards/hineybush/ibis/keymaps/via/rules.mk
new file mode 100644
index 00000000000..1e5b99807cb
--- /dev/null
+++ b/keyboards/hineybush/ibis/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/hineybush/ibis/readme.md b/keyboards/hineybush/ibis/readme.md
new file mode 100644
index 00000000000..0c345e7c816
--- /dev/null
+++ b/keyboards/hineybush/ibis/readme.md
@@ -0,0 +1,27 @@
+# hineybush/ibis
+
+
+
+Duck Blackbird-layout PCB for the ibis keyboard.
+
+* Keyboard Maintainer: [Josh Hinnebusch](https://github.com/hineybush)
+* Hardware Supported: ibis
+* Hardware Availability: hiney.cc
+
+Make example for this keyboard (after setting up your build environment):
+
+ make hineybush/ibis:default
+
+Flashing example for this keyboard:
+
+ make hineybush/ibis:default:flash
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
+
+## Bootloader
+
+Enter the bootloader in 3 ways:
+
+* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
+* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
+* **Keycode in layout**: Press the key mapped to `RESET` if it is available
diff --git a/keyboards/hineybush/ibis/rules.mk b/keyboards/hineybush/ibis/rules.mk
new file mode 100644
index 00000000000..6e7633bfe01
--- /dev/null
+++ b/keyboards/hineybush/ibis/rules.mk
@@ -0,0 +1 @@
+# This file intentionally left blank
From 49267b135be6f333cf072f1cdb7f822d012bc4b3 Mon Sep 17 00:00:00 2001
From: Xelus22 <17491233+Xelus22@users.noreply.github.com>
Date: Fri, 6 May 2022 16:15:49 +1000
Subject: [PATCH 63/65] [Bug] Fix RS60 Rev2 I2C (#17015)
---
keyboards/xelus/rs60/rev2/config.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/keyboards/xelus/rs60/rev2/config.h b/keyboards/xelus/rs60/rev2/config.h
index cbda2089ef9..74258b1289a 100644
--- a/keyboards/xelus/rs60/rev2/config.h
+++ b/keyboards/xelus/rs60/rev2/config.h
@@ -46,7 +46,6 @@
#define LED_CAPS_LOCK_PIN A1
// I2C config
-#define I2C_DRIVER I2CD3
#define I2C1_SCL_PIN B8
#define I2C1_SDA_PIN B9
#define I2C1_SCL_PAL_MODE 4
From 8c23f87c5147f2a25784bc4501b40a5f7150b1f1 Mon Sep 17 00:00:00 2001
From: Ryan
Date: Fri, 6 May 2022 22:18:03 +1000
Subject: [PATCH 64/65] Ensure .hex file output for ARM Teensys (#17014)
---
builddefs/bootloader.mk | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/builddefs/bootloader.mk b/builddefs/bootloader.mk
index 226213297e7..1a53bfa6637 100644
--- a/builddefs/bootloader.mk
+++ b/builddefs/bootloader.mk
@@ -97,12 +97,18 @@ ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
BOOTLOADER_TYPE = halfkay
+ # Teensy 2.0
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 512
endif
+ # Teensy 2.0++
ifeq ($(strip $(MCU)), at90usb1286)
BOOTLOADER_SIZE = 1024
endif
+ # Teensy LC, 3.x
+ ifneq (,$(filter $(MCU_ORIG), MKL26Z64 MK20DX128 MK20DX256 MK66FX1M0))
+ FIRMWARE_FORMAT = hex
+ endif
endif
ifeq ($(strip $(BOOTLOADER)), caterina)
OPT_DEFS += -DBOOTLOADER_CATERINA
From 5acdb4c921cbe3d1b10f35fc46334c8df9fc4374 Mon Sep 17 00:00:00 2001
From: Doomsdayrs <38189170+Doomsdayrs@users.noreply.github.com>
Date: Fri, 6 May 2022 20:01:16 -0400
Subject: [PATCH 65/65] Sol3 fix rgb map (#17019)
* Fix for key -> LED mapping
* Revert whitespace changes
* Revert whitespace changes 2
Co-authored-by: theVDude
---
keyboards/rgbkb/sol3/rev1/rev1.c | 22 ++++++++++++----------
1 file changed, 12 insertions(+), 10 deletions(-)
diff --git a/keyboards/rgbkb/sol3/rev1/rev1.c b/keyboards/rgbkb/sol3/rev1/rev1.c
index 5dc156c94d1..c66e145e804 100644
--- a/keyboards/rgbkb/sol3/rev1/rev1.c
+++ b/keyboards/rgbkb/sol3/rev1/rev1.c
@@ -113,16 +113,18 @@ void matrix_slave_scan_kb() {
#ifdef RGB_MATRIX_ENABLE
// clang-format off
led_config_t g_led_config = { {
- { 41, 42, 43, 44, 45, 46, 47 },
- { 54, 53, 52, 51, 50, 49, 48 },
- { 55, 56, 57, 58, 59, 60, 61 },
- { 68, 67, 66, 65, 64, 63, 62 },
+ { 41, 42, 43, 44, 45, 46, 47, NO_LED },
+ { 54, 53, 52, 51, 50, 49, 48, NO_LED },
+ { 55, 56, 57, 58, 59, 60, 61, NO_LED },
+ { 68, 67, 66, 65, 64, 63, 62, NO_LED },
{ 69, 70, 71, 72, 73, 74, 75, 76 },
- { 119, 120, 121, 122, 123, 124, 125 },
- { 132, 131, 130, 129, 128, 127, 126 },
- { 133, 134, 135, 136, 137, 138, 139 },
- { 146, 145, 144, 143, 142, 141, 140 },
- { 147, 148, 149, 150, 151, 152, 153 }
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
+ { 119, 120, 121, 122, 123, 124, 125, NO_LED },
+ { 132, 131, 130, 129, 128, 127, 126, NO_LED },
+ { 133, 134, 135, 136, 137, 138, 139, NO_LED },
+ { 146, 145, 144, 143, 142, 141, 140, NO_LED },
+ { 147, 148, 149, 150, 151, 152, 153, 154 },
+ { NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED }
}, { // ALL XY VALUES DIVIDE BY 2, THEN ADD 5
{ 1, 6 }, { 1, 13 }, { 1, 19 }, { 1, 25 }, { 1, 31 }, { 1, 37 }, { 1, 43 }, { 1, 49 }, { 4, 52 }, { 11, 52 },
{ 17, 52 }, { 23, 52 }, { 29, 52 }, { 35, 52 }, { 41, 54 }, { 46, 57 }, { 52, 60 }, { 57, 63 }, { 62, 66 }, { 68, 69 },
@@ -284,4 +286,4 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
#endif
}
return true;
-};
\ No newline at end of file
+};