mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Compare commits
254 Commits
0.22.1
...
user-keyma
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0379d1f59e | ||
|
|
98013e25c6 | ||
|
|
a6521b8521 | ||
|
|
1e4f7aa029 | ||
|
|
adcc4d376c | ||
|
|
d7b44239c2 | ||
|
|
5c22706294 | ||
|
|
ba62db19e7 | ||
|
|
44062b5056 | ||
|
|
50844a8e67 | ||
|
|
56b6b28fe9 | ||
|
|
c2326c05c0 | ||
|
|
0189c485b9 | ||
|
|
935c894f83 | ||
|
|
211fbbd16d | ||
|
|
6876fbe51d | ||
|
|
38d6e9a75a | ||
|
|
aee2a9d696 | ||
|
|
e5b7685e7a | ||
|
|
39d0a14258 | ||
|
|
daabe2d8c5 | ||
|
|
0b7dba156c | ||
|
|
10cdd00751 | ||
|
|
72f93e7fc2 | ||
|
|
64bbeff57d | ||
|
|
80708a91ef | ||
|
|
ebac02a7b2 | ||
|
|
2337cd1186 | ||
|
|
7324650714 | ||
|
|
5b25a8aa32 | ||
|
|
67ff0defe2 | ||
|
|
ace510ffa0 | ||
|
|
837cae95ba | ||
|
|
999008f0eb | ||
|
|
2192098f57 | ||
|
|
cb9705428b | ||
|
|
538b79657e | ||
|
|
46dedfaaa4 | ||
|
|
c133bd1234 | ||
|
|
ca2d2a524f | ||
|
|
1a300d05bd | ||
|
|
18ef3da8e8 | ||
|
|
ae2703b69b | ||
|
|
052cc5df5d | ||
|
|
e82bc5355c | ||
|
|
0ad780f852 | ||
|
|
f5cd30458a | ||
|
|
e0c00c35ce | ||
|
|
d2892685c5 | ||
|
|
ca45416999 | ||
|
|
d2773c6d67 | ||
|
|
96c71b9b4c | ||
|
|
0e6d47e1e4 | ||
|
|
f6c70c40af | ||
|
|
81a3aa025c | ||
|
|
23a8f7f03b | ||
|
|
a46c7abd01 | ||
|
|
62ff02a101 | ||
|
|
032b039d0b | ||
|
|
0477160109 | ||
|
|
e22cb99bc4 | ||
|
|
391c0428c9 | ||
|
|
c67c9f1d98 | ||
|
|
b630df1aa7 | ||
|
|
999e721312 | ||
|
|
b5423b2e83 | ||
|
|
f536646235 | ||
|
|
ad4ecd6eb4 | ||
|
|
fa8940e5a6 | ||
|
|
527790b000 | ||
|
|
db8b74f016 | ||
|
|
81e086b387 | ||
|
|
0650f783b5 | ||
|
|
6dafcac713 | ||
|
|
509a2b40b7 | ||
|
|
77fe1298c7 | ||
|
|
20eb93e05c | ||
|
|
3665ae0441 | ||
|
|
6e6fff866e | ||
|
|
ad14a27cd3 | ||
|
|
e1630edef4 | ||
|
|
4345d34cf2 | ||
|
|
7ca652ce6d | ||
|
|
06d123de62 | ||
|
|
b768d74b2b | ||
|
|
69c1790dce | ||
|
|
63b48f5096 | ||
|
|
127560ae22 | ||
|
|
92873cc14f | ||
|
|
2a8b3a809d | ||
|
|
8f757eece8 | ||
|
|
aaebb0a231 | ||
|
|
9f31783249 | ||
|
|
a58f86812c | ||
|
|
22fbbbb1cc | ||
|
|
7603a464cd | ||
|
|
d33f9ec86b | ||
|
|
6e93b59f61 | ||
|
|
5485d5023e | ||
|
|
d9fa80c0b0 | ||
|
|
a638f6e5aa | ||
|
|
bc5d407bf7 | ||
|
|
f33881b1da | ||
|
|
997a6747ee | ||
|
|
1b7a538353 | ||
|
|
8813bdf5dd | ||
|
|
c23d873e1a | ||
|
|
b404d5e9e4 | ||
|
|
cfb4bb9b98 | ||
|
|
ab1e851e7d | ||
|
|
5626a9282c | ||
|
|
daea202bfd | ||
|
|
f214ee7f3a | ||
|
|
0edc68f7cd | ||
|
|
c5706ef791 | ||
|
|
fb0c64a567 | ||
|
|
0ecb03ad47 | ||
|
|
25c850e762 | ||
|
|
351b5cd2cd | ||
|
|
ca9664b1ac | ||
|
|
46c1e7351e | ||
|
|
17ae28f0e4 | ||
|
|
8d9c770a81 | ||
|
|
6eb2e43a8d | ||
|
|
2fad45132f | ||
|
|
538978b782 | ||
|
|
7e923580a5 | ||
|
|
0c4bd1ccdc | ||
|
|
4d994458f0 | ||
|
|
c10a46aa43 | ||
|
|
e3cbd8a965 | ||
|
|
2181da4b72 | ||
|
|
131bc92b77 | ||
|
|
4ebb065f94 | ||
|
|
9d3c0018c1 | ||
|
|
133be8759a | ||
|
|
9b429bd12d | ||
|
|
ee4e22d5ea | ||
|
|
f8884640b0 | ||
|
|
26b2288bde | ||
|
|
c0d7a43637 | ||
|
|
bd2a33fe77 | ||
|
|
9a5b631ed6 | ||
|
|
7f2f15bc1a | ||
|
|
4590b808da | ||
|
|
ef214e6a3c | ||
|
|
73ffa4594d | ||
|
|
e001c3349b | ||
|
|
d49edbcf14 | ||
|
|
5cc5270aaf | ||
|
|
abd432fd7a | ||
|
|
a26e1c8b63 | ||
|
|
8c52bab930 | ||
|
|
dc2315ad85 | ||
|
|
363dee82d8 | ||
|
|
5858efd6c9 | ||
|
|
e91bf4583f | ||
|
|
f543a44836 | ||
|
|
4ec3e239ba | ||
|
|
e56ea60058 | ||
|
|
4520a584e4 | ||
|
|
b5b900200f | ||
|
|
3d1b9e98a4 | ||
|
|
e55220dbe0 | ||
|
|
9b69921491 | ||
|
|
1c62cb7b42 | ||
|
|
4629d6a671 | ||
|
|
6dc482b197 | ||
|
|
22c576b40b | ||
|
|
fffea62005 | ||
|
|
cdff9b8da7 | ||
|
|
16ad362e67 | ||
|
|
05dfe9f9c5 | ||
|
|
2742935c54 | ||
|
|
8c92c0a59d | ||
|
|
4ce3a1c1e9 | ||
|
|
56a87efbac | ||
|
|
ef31109ad2 | ||
|
|
16f2a3e2f8 | ||
|
|
48b4ce6ddb | ||
|
|
cd095c817e | ||
|
|
6ba53f661a | ||
|
|
25df4ba6bd | ||
|
|
b5181e3d06 | ||
|
|
6129f5f68b | ||
|
|
652c5a9410 | ||
|
|
9f9ad95fb4 | ||
|
|
1fbd45a594 | ||
|
|
39fafdac0f | ||
|
|
4162d1f056 | ||
|
|
6b1b746f66 | ||
|
|
71d5d14c13 | ||
|
|
4767554562 | ||
|
|
d83ac7a124 | ||
|
|
29d1a2cc51 | ||
|
|
e7ae5ec07c | ||
|
|
49f1cbd40e | ||
|
|
06dfa1cafc | ||
|
|
598303fa95 | ||
|
|
3d86b92511 | ||
|
|
46d679ab11 | ||
|
|
4f26a8b308 | ||
|
|
58c2dae32e | ||
|
|
294fc6caef | ||
|
|
269c7b6e5b | ||
|
|
cfe52b6e6e | ||
|
|
78eb69ead5 | ||
|
|
02e6c04ac2 | ||
|
|
e67a4ba7ce | ||
|
|
9f0f39555c | ||
|
|
f4a702e49f | ||
|
|
32f060366f | ||
|
|
c6841a51de | ||
|
|
33d7fa1180 | ||
|
|
e6ce481179 | ||
|
|
4468662d64 | ||
|
|
91e0e46e4a | ||
|
|
62105b5c07 | ||
|
|
3561c3a1f9 | ||
|
|
9a29ddf6af | ||
|
|
ec09c03b64 | ||
|
|
4875bcecc2 | ||
|
|
3e3320e8d9 | ||
|
|
c783325e16 | ||
|
|
e3c6467ab9 | ||
|
|
7fb60519ee | ||
|
|
549708edfa | ||
|
|
6aa3814f6e | ||
|
|
809865e9ee | ||
|
|
2f243e2817 | ||
|
|
2f517041c7 | ||
|
|
b2ded61796 | ||
|
|
fd095bbfae | ||
|
|
9eaa8a24ed | ||
|
|
dd17b6be29 | ||
|
|
e26442fc2a | ||
|
|
8ad43a965f | ||
|
|
47e72a95ef | ||
|
|
04ce3497ab | ||
|
|
b03b49fca3 | ||
|
|
633d92a68b | ||
|
|
81ea4f9110 | ||
|
|
4b1aa1640c | ||
|
|
ab9e74ad5e | ||
|
|
d92ef59f24 | ||
|
|
9614c3adfa | ||
|
|
adef366e0c | ||
|
|
c2a81d8fd4 | ||
|
|
ce51fdfe51 | ||
|
|
fbb61c3b1d | ||
|
|
281541fe1b | ||
|
|
6d7344428a | ||
|
|
4769f6d419 | ||
|
|
af2d6ea128 |
4
.github/labeler.yml
vendored
4
.github/labeler.yml
vendored
@@ -40,3 +40,7 @@ translation:
|
||||
- docs/ru-ru/**/*
|
||||
CI:
|
||||
- .github/**/*
|
||||
dd:
|
||||
- data/constants/**/*
|
||||
- data/mappings/**/*
|
||||
- data/schemas/**/*
|
||||
|
||||
2
.github/workflows/api.yml
vendored
2
.github/workflows/api.yml
vendored
@@ -25,7 +25,7 @@ jobs:
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
persist-credentials: false
|
||||
|
||||
2
.github/workflows/auto_tag.yml
vendored
2
.github/workflows/auto_tag.yml
vendored
@@ -27,7 +27,7 @@ jobs:
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
2
.github/workflows/ci_builds.yml
vendored
2
.github/workflows/ci_builds.yml
vendored
@@ -33,7 +33,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
ref: ${{ github.event.inputs.branch || github.ref }}
|
||||
|
||||
2
.github/workflows/cli.yml
vendored
2
.github/workflows/cli.yml
vendored
@@ -24,7 +24,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
|
||||
2
.github/workflows/develop_update.yml
vendored
2
.github/workflows/develop_update.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
fetch-depth: 0
|
||||
|
||||
2
.github/workflows/docs.yml
vendored
2
.github/workflows/docs.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
|
||||
2
.github/workflows/feature_branch_update.yml
vendored
2
.github/workflows/feature_branch_update.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
- riot
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
fetch-depth: 0
|
||||
|
||||
4
.github/workflows/format.yml
vendored
4
.github/workflows/format.yml
vendored
@@ -25,7 +25,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -35,7 +35,7 @@ jobs:
|
||||
|
||||
- name: Get changed files
|
||||
id: file_changes
|
||||
uses: tj-actions/changed-files@v38
|
||||
uses: tj-actions/changed-files@v39
|
||||
|
||||
- name: Run qmk formatters
|
||||
shell: 'bash {0}'
|
||||
|
||||
2
.github/workflows/format_push.yml
vendored
2
.github/workflows/format_push.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
29
.github/workflows/lint.yml
vendored
29
.github/workflows/lint.yml
vendored
@@ -18,7 +18,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
|
||||
- name: Get changed files
|
||||
id: file_changes
|
||||
uses: tj-actions/changed-files@v38
|
||||
uses: tj-actions/changed-files@v39
|
||||
|
||||
- name: Print info
|
||||
run: |
|
||||
@@ -74,31 +74,10 @@ jobs:
|
||||
fi
|
||||
exit $exit_code
|
||||
|
||||
- name: Verify at most one added keyboard
|
||||
- name: Verify keyboard aliases
|
||||
if: always()
|
||||
shell: 'bash {0}'
|
||||
run: |
|
||||
git reset --hard
|
||||
git clean -xfd
|
||||
|
||||
# Get the keyboard list and count for the target branch
|
||||
git checkout -f ${{ github.base_ref }}
|
||||
git pull --ff-only
|
||||
QMK_KEYBOARDS_BASE=$(qmk list-keyboards)
|
||||
QMK_KEYBOARDS_BASE_COUNT=$(qmk list-keyboards | wc -l)
|
||||
|
||||
# Get the keyboard list and count for the PR
|
||||
git checkout -f ${{ github.head_ref }}
|
||||
git merge --no-commit --squash ${{ github.base_ref }}
|
||||
QMK_KEYBOARDS_PR=$(qmk list-keyboards)
|
||||
QMK_KEYBOARDS_PR_COUNT=$(qmk list-keyboards | wc -l)
|
||||
|
||||
echo "::group::Keyboards changes in this PR"
|
||||
diff -d -U 0 <(echo "$QMK_KEYBOARDS_BASE") <(echo "$QMK_KEYBOARDS_PR") | grep -vE '^(---|\+\+\+|@@)' | sed -e 's@^-@Removed: @g' -e 's@^+@ Added: @g'
|
||||
echo "::endgroup::"
|
||||
|
||||
if [[ $QMK_KEYBOARDS_PR_COUNT -gt $(($QMK_KEYBOARDS_BASE_COUNT + 1)) ]]; then
|
||||
echo "More than one keyboard added in this PR -- see the PR Checklist."
|
||||
echo "::error::More than one keyboard added in this PR -- see the PR Checklist."
|
||||
exit 1
|
||||
fi
|
||||
qmk ci-validate-aliases
|
||||
|
||||
2
.github/workflows/regen.yml
vendored
2
.github/workflows/regen.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Run qmk generators
|
||||
run: |
|
||||
|
||||
2
.github/workflows/regen_push.yml
vendored
2
.github/workflows/regen_push.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: Run qmk generators
|
||||
run: |
|
||||
|
||||
3
.github/workflows/stale.yml
vendored
3
.github/workflows/stale.yml
vendored
@@ -3,6 +3,7 @@ name: 'Close stale issues and PRs'
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
actions: write
|
||||
|
||||
on:
|
||||
schedule:
|
||||
@@ -13,7 +14,7 @@ jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
- uses: actions/stale@main
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
2
.github/workflows/unit_test.yml
vendored
2
.github/workflows/unit_test.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
container: ghcr.io/qmk/qmk_cli
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Install dependencies
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -95,6 +95,7 @@ secrets.tar
|
||||
# Python things
|
||||
__pycache__
|
||||
.python-version
|
||||
.venv
|
||||
|
||||
# Prerequisites for updating ChibiOS
|
||||
/util/fmpp*
|
||||
@@ -107,5 +108,6 @@ compile_commands.json
|
||||
.clangd/
|
||||
.cache/
|
||||
|
||||
# VIA(L) json files that don't belong in QMK repo
|
||||
# VIA(L) files that don't belong in QMK repo
|
||||
via*.json
|
||||
/keyboards/**/keymaps/vial/*
|
||||
|
||||
@@ -495,10 +495,10 @@ check-size: top-symbols
|
||||
top-symbols: build
|
||||
echo "###########################################"
|
||||
echo "# Highest flash usage:"
|
||||
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
|
||||
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [RrTt] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
|
||||
echo "###########################################"
|
||||
echo "# Highest RAM usage:"
|
||||
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
|
||||
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [BbCDdGgSs] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
|
||||
echo "###########################################"
|
||||
endif
|
||||
|
||||
|
||||
@@ -392,6 +392,8 @@ check-size:
|
||||
if [ $(MAX_SIZE) -gt 0 ] && [ $(CURRENT_SIZE) -gt 0 ]; then \
|
||||
$(SILENT) || printf "$(MSG_CHECK_FILESIZE)" | $(AWK_CMD); \
|
||||
if [ $(CURRENT_SIZE) -gt $(MAX_SIZE) ]; then \
|
||||
$(REMOVE) $(TARGET).$(FIRMWARE_FORMAT); \
|
||||
$(REMOVE) $(BUILD_DIR)/$(TARGET).{hex,bin,uf2}; \
|
||||
printf "\n * $(MSG_FILE_TOO_BIG)"; $(PRINT_ERROR_PLAIN); \
|
||||
else \
|
||||
if [ $(FREE_SIZE) -lt $(SIZE_MARGIN) ]; then \
|
||||
|
||||
@@ -190,4 +190,9 @@
|
||||
"PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false, "value_type": "str", "deprecated": true, "replace_with": "`keyboard_name` in info.json"},
|
||||
"PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.pid` in info.json"},
|
||||
"VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.vid` in info.json"},
|
||||
|
||||
// Items we want flagged in lint
|
||||
"VIAL_KEYBOARD_UID": {"info_key": "_invalid.vial_uid", "invalid": true},
|
||||
"VIAL_UNLOCK_COMBO_COLS": {"info_key": "_invalid.vial_unlock_cols", "invalid": true},
|
||||
"VIAL_UNLOCK_COMBO_ROWS": {"info_key": "_invalid.vial_unlock_rows", "invalid": true}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,13 @@
|
||||
// "target": "<keyboard_folder>"
|
||||
// }
|
||||
//
|
||||
|
||||
/* This list of aliases is for testing purposes -- ensures "linked list" recursive traversal works correctly. */
|
||||
"_test_a": { "target": "_test_b" },
|
||||
"_test_b": { "target": "_test_c" },
|
||||
"_test_c": { "target": "planck/rev6" },
|
||||
|
||||
/* The main list of aliases for moved keyboards within QMK. */
|
||||
"2_milk": {
|
||||
"target": "spaceman/2_milk"
|
||||
},
|
||||
@@ -35,7 +42,7 @@
|
||||
"target": "amjkeyboard/amjpad"
|
||||
},
|
||||
"angel64": {
|
||||
"target": "angel64/alpha"
|
||||
"target": "kakunpc/angel64/alpha"
|
||||
},
|
||||
"ashpil/modelm_usbc": {
|
||||
"target": "ibm/model_m/ashpil_usbc"
|
||||
@@ -47,10 +54,10 @@
|
||||
"target": "viktus/at101_bh"
|
||||
},
|
||||
"atom47/rev2": {
|
||||
"target": "maartenwut/atom47/rev2"
|
||||
"target": "evyd13/atom47/rev2"
|
||||
},
|
||||
"atom47/rev3": {
|
||||
"target": "maartenwut/atom47/rev3"
|
||||
"target": "evyd13/atom47/rev3"
|
||||
},
|
||||
"bakeneko60": {
|
||||
"target": "kkatano/bakeneko60"
|
||||
@@ -65,7 +72,7 @@
|
||||
"target": "bear_face/v1"
|
||||
},
|
||||
"bm16a": {
|
||||
"target": "kprepublic/bm16a"
|
||||
"target": "kprepublic/bm16a/v1"
|
||||
},
|
||||
"bm16s": {
|
||||
"target": "kprepublic/bm16s"
|
||||
@@ -77,16 +84,16 @@
|
||||
"target": "kprepublic/bm43a"
|
||||
},
|
||||
"bm60poker": {
|
||||
"target": "kprepublic/bm60poker"
|
||||
"target": "kprepublic/bm60hsrgb_poker/rev1"
|
||||
},
|
||||
"bm60rgb": {
|
||||
"target": "kprepublic/bm60rgb"
|
||||
"target": "kprepublic/bm60hsrgb/rev1"
|
||||
},
|
||||
"bm60rgb_iso": {
|
||||
"target": "kprepublic/bm60rgb_iso"
|
||||
"target": "kprepublic/bm60hsrgb_iso/rev1"
|
||||
},
|
||||
"bm68rgb": {
|
||||
"target": "kprepublic/bm68rgb"
|
||||
"target": "kprepublic/bm68hsrgb/rev1"
|
||||
},
|
||||
"bpiphany/pegasushoof": {
|
||||
"target": "bpiphany/pegasushoof/2013"
|
||||
@@ -140,7 +147,10 @@
|
||||
"target": "jagdpietr/drakon"
|
||||
},
|
||||
"durgod/k320": {
|
||||
"target": "durgod/k3x0/k320"
|
||||
"target": "durgod/k320/base"
|
||||
},
|
||||
"durgod/k3x0/k320": {
|
||||
"target": "durgod/k320/base"
|
||||
},
|
||||
"durgod/hades": {
|
||||
"target": "durgod/dgk6x/hades_ansi"
|
||||
@@ -269,7 +279,7 @@
|
||||
"target": "idb/idb_60"
|
||||
},
|
||||
"idobo": {
|
||||
"target": "idobao/id75"
|
||||
"target": "idobao/id75/v1"
|
||||
},
|
||||
"jacky_studio/piggy60": {
|
||||
"target": "jacky_studio/piggy60/rev1"
|
||||
@@ -401,7 +411,7 @@
|
||||
"target": "mechlovin/adelais/rgb_led/rev1"
|
||||
},
|
||||
"mechlovin/adelais/standard_led": {
|
||||
"target": "mechlovin/adelais/standard_led/rev2"
|
||||
"target": "mechlovin/adelais/standard_led/arm/rev2"
|
||||
},
|
||||
"mechlovin/delphine": {
|
||||
"target": "mechlovin/delphine/mono_led"
|
||||
@@ -455,10 +465,10 @@
|
||||
"target": "pabile/p20/ver1"
|
||||
},
|
||||
"pancake/feather": {
|
||||
"target": "spaceman/pancake/feather"
|
||||
"target": "spaceman/pancake/rev1/feather"
|
||||
},
|
||||
"pancake/promicro": {
|
||||
"target": "spaceman/pancake/promicro"
|
||||
"target": "spaceman/pancake/rev1/promicro"
|
||||
},
|
||||
"peiorisboards/ixora": {
|
||||
"target": "coarse/ixora"
|
||||
@@ -467,7 +477,7 @@
|
||||
"target": "dm9records/plaid"
|
||||
},
|
||||
"plain60": {
|
||||
"target": "maartenwut/plain60"
|
||||
"target": "evyd13/plain60"
|
||||
},
|
||||
"ploopyco/trackball": {
|
||||
"target": "ploopyco/trackball/rev1_005"
|
||||
@@ -503,10 +513,10 @@
|
||||
"target": "wilba_tech/rama_works_u80_a"
|
||||
},
|
||||
"ramonimbao/herringbone": {
|
||||
"target": "ramonimbao/herringbone/v1"
|
||||
"target": "rmi_kb/herringbone/v1"
|
||||
},
|
||||
"ramonimbao/mona": {
|
||||
"target": "ramonimbao/mona/v1"
|
||||
"target": "rmi_kb/mona/v1"
|
||||
},
|
||||
"rgbkb/pan": {
|
||||
"target": "rgbkb/pan/rev1/32a"
|
||||
@@ -542,10 +552,10 @@
|
||||
"target": "tkw/stoutgat/v1"
|
||||
},
|
||||
"suihankey": {
|
||||
"target": "suihankey/split/alpha"
|
||||
"target": "kakunpc/suihankey/split/alpha"
|
||||
},
|
||||
"ta65": {
|
||||
"target": "maartenwut/ta65"
|
||||
"target": "evyd13/ta65"
|
||||
},
|
||||
"tartan": {
|
||||
"target": "dm9records/tartan"
|
||||
@@ -563,13 +573,13 @@
|
||||
"target": "matthewdias/txuu"
|
||||
},
|
||||
"underscore33": {
|
||||
"target": "underscore33/rev1"
|
||||
"target": "tominabox1/underscore33/rev1"
|
||||
},
|
||||
"vinta": {
|
||||
"target": "coarse/vinta"
|
||||
},
|
||||
"wasdat": {
|
||||
"target": "maartenwut/wasdat"
|
||||
"target": "evyd13/wasdat"
|
||||
},
|
||||
"westfoxtrot/cypher": {
|
||||
"target": "westfoxtrot/cypher/rev1"
|
||||
@@ -581,10 +591,10 @@
|
||||
"target": "xiudi/xd002"
|
||||
},
|
||||
"xd004": {
|
||||
"target": "xiudi/xd004"
|
||||
"target": "xiudi/xd004/v1"
|
||||
},
|
||||
"xd60": {
|
||||
"target": "xiudi/xd60"
|
||||
"target": "xiudi/xd60/rev2"
|
||||
},
|
||||
"xd68": {
|
||||
"target": "xiudi/xd68"
|
||||
@@ -831,7 +841,7 @@
|
||||
"target": "kagizaraya/halberd"
|
||||
},
|
||||
"handwired/hillside/0_1": {
|
||||
"target": "handwired/hillside/48"
|
||||
"target": "hillside/48/0_1"
|
||||
},
|
||||
"hecomi/alpha": {
|
||||
"target": "takashiski/hecomi/alpha"
|
||||
@@ -843,10 +853,10 @@
|
||||
"target": "bpiphany/hid_liber"
|
||||
},
|
||||
"id67/default_rgb": {
|
||||
"target": "idobao/id67/default_rgb"
|
||||
"target": "idobao/id67"
|
||||
},
|
||||
"id67/rgb": {
|
||||
"target": "idobao/id67/rgb"
|
||||
"target": "idobao/id67"
|
||||
},
|
||||
"id80": {
|
||||
"target": "idobao/id80/v2/ansi"
|
||||
@@ -1236,7 +1246,7 @@
|
||||
"target": "marksard/treadstone48/rev2"
|
||||
},
|
||||
"tronguylabs/m122_3270": {
|
||||
"target": "ibm/model_m_122/m122_3270"
|
||||
"target": "ibm/model_m_122/m122_3270/teensy"
|
||||
},
|
||||
"ua62": {
|
||||
"target": "nacly/ua62"
|
||||
@@ -1290,7 +1300,7 @@
|
||||
"target": "ydkb/yd68"
|
||||
},
|
||||
"ymd75": {
|
||||
"target": "ymdk/ymd75"
|
||||
"target": "ymdk/ymd75/rev1"
|
||||
},
|
||||
"ymd96": {
|
||||
"target": "ymdk/ymd96"
|
||||
|
||||
@@ -29,6 +29,10 @@
|
||||
"minLength": 1,
|
||||
"maxLength": 250
|
||||
},
|
||||
"snake_case": {
|
||||
"type": "string",
|
||||
"pattern": "^[a-z][a-z0-9_]*$"
|
||||
},
|
||||
"layout_macro": {
|
||||
"oneOf": [
|
||||
{
|
||||
|
||||
@@ -256,7 +256,11 @@
|
||||
"enabled": {"type": "boolean"}
|
||||
}
|
||||
},
|
||||
"features": {"$ref": "qmk.definitions.v1#/boolean_array"},
|
||||
"features": {
|
||||
"$ref": "qmk.definitions.v1#/boolean_array",
|
||||
"propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" }
|
||||
|
||||
},
|
||||
"indicators": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -370,6 +374,7 @@
|
||||
"properties": {
|
||||
"animations": {
|
||||
"type": "object",
|
||||
"propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" }
|
||||
"additionalProperties": {
|
||||
"type": "boolean"
|
||||
}
|
||||
@@ -419,6 +424,7 @@
|
||||
"properties": {
|
||||
"animations": {
|
||||
"type": "object",
|
||||
"propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" }
|
||||
"additionalProperties": {
|
||||
"type": "boolean"
|
||||
}
|
||||
@@ -471,6 +477,7 @@
|
||||
"properties": {
|
||||
"animations": {
|
||||
"type": "object",
|
||||
"propertyNames": { "$ref": "qmk.definitions.v1#/snake_case" }
|
||||
"additionalProperties": {
|
||||
"type": "boolean"
|
||||
}
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
* [Caps Word](feature_caps_word.md)
|
||||
* [Combos](feature_combo.md)
|
||||
* [Debounce API](feature_debounce_type.md)
|
||||
* [Digitizer](feature_digitizer.md)
|
||||
* [EEPROM](feature_eeprom.md)
|
||||
* [Key Lock](feature_key_lock.md)
|
||||
* [Key Overrides](feature_key_overrides.md)
|
||||
@@ -115,7 +116,6 @@
|
||||
* [Bootmagic Lite](feature_bootmagic.md)
|
||||
* [Converters](feature_converters.md)
|
||||
* [Custom Matrix](custom_matrix.md)
|
||||
* [Digitizer](feature_digitizer.md)
|
||||
* [DIP Switch](feature_dip_switch.md)
|
||||
* [Encoders](feature_encoders.md)
|
||||
* [Haptic Feedback](feature_haptic_feedback.md)
|
||||
|
||||
@@ -6,7 +6,7 @@ The QMK CLI makes building and working with QMK keyboards easier. We have provid
|
||||
|
||||
### Requirements :id=requirements
|
||||
|
||||
QMK requires Python 3.6 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI.
|
||||
QMK requires Python 3.7 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI.
|
||||
|
||||
### Install Using Homebrew (macOS, some Linux) :id=install-using-homebrew
|
||||
|
||||
@@ -20,7 +20,7 @@ qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build
|
||||
|
||||
### Install Using pip :id=install-using-easy_install-or-pip
|
||||
|
||||
If your system is not listed above you can install QMK manually. First ensure that you have Python 3.6 (or later) installed and have installed pip. Then install QMK with this command:
|
||||
If your system is not listed above you can install QMK manually. First ensure that you have Python 3.7 (or later) installed and have installed pip. Then install QMK with this command:
|
||||
|
||||
```
|
||||
python3 -m pip install qmk
|
||||
|
||||
@@ -44,7 +44,7 @@ def hello(cli):
|
||||
|
||||
First we import the `cli` object from `milc`. This is how we interact with the user and control the script's behavior. We use `@cli.argument()` to define a command line flag, `--name`. This also creates a configuration variable named `hello.name` (and the corresponding `user.name`) which the user can set so they don't have to specify the argument. The `cli.subcommand()` decorator designates this function as a subcommand. The name of the subcommand will be taken from the name of the function.
|
||||
|
||||
Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.6/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator.
|
||||
Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.7/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator.
|
||||
|
||||
# User Interaction
|
||||
|
||||
@@ -56,13 +56,13 @@ There are two main methods for outputting text in a subcommand- `cli.log` and `c
|
||||
|
||||
You can use special tokens to colorize your text, to make it easier to understand the output of your program. See [Colorizing Text](#colorizing-text) below.
|
||||
|
||||
Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.6/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example.
|
||||
Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.7/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example.
|
||||
|
||||
You should never use the format operator (`%`) directly, always pass values as arguments.
|
||||
|
||||
### Logging (`cli.log`)
|
||||
|
||||
The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.6/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong.
|
||||
The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.7/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong.
|
||||
|
||||
The default log level is `INFO`. If the user runs `qmk -v <subcommand>` the default log level will be set to `DEBUG`.
|
||||
|
||||
|
||||
@@ -317,7 +317,7 @@ At the time of this writing our tests are not very comprehensive. Looking at the
|
||||
|
||||
## Integration Tests
|
||||
|
||||
Integration tests can be found in `lib/python/qmk/tests/test_cli_commands.py`. This is where CLI commands are actually run and their overall behavior is verified. We use [`subprocess`](https://docs.python.org/3.6/library/subprocess.html#module-subprocess) to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.
|
||||
Integration tests can be found in `lib/python/qmk/tests/test_cli_commands.py`. This is where CLI commands are actually run and their overall behavior is verified. We use [`subprocess`](https://docs.python.org/3.7/library/subprocess.html#module-subprocess) to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.
|
||||
|
||||
## Unit Tests
|
||||
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
# Converters
|
||||
|
||||
Since many drop-in replacement controllers now exist, we've done our best to make them easy to use in existing designs.
|
||||
This page documents the automated process for converting keyboards to use drop-in replacement controllers. This process is designed to be easy to use and can be completed in a few simple steps.
|
||||
|
||||
This page documents the handy automated process for converting keyboards.
|
||||
## Supported Converters
|
||||
|
||||
### Supported Converters
|
||||
|
||||
Currently the following converters are available:
|
||||
The following converters are available at this time:
|
||||
|
||||
| From | To |
|
||||
|------------|-------------------|
|
||||
@@ -28,14 +26,10 @@ Currently the following converters are available:
|
||||
| `elite_c` | `helios` |
|
||||
| `elite_c` | `liatris` |
|
||||
|
||||
See below for more in depth information on each converter.
|
||||
|
||||
## Overview
|
||||
|
||||
Each converter category is broken down by its declared `pin compatibility`.
|
||||
This ensures that only valid combinations are attempted.
|
||||
|
||||
You can generate the firmware by appending `-e CONVERT_TO=<target>` to your compile/flash command. For example:
|
||||
Each converter category is broken down by its declared `pin compatibility`. This ensures that only valid combinations are attempted. You can generate the firmware by appending `-e CONVERT_TO=<target>` to your compile/flash command. For example:
|
||||
|
||||
```sh
|
||||
qmk flash -c -kb keebio/bdn9/rev1 -km default -e CONVERT_TO=proton_c
|
||||
@@ -59,14 +53,12 @@ Once a converter is enabled, it exposes the `CONVERT_TO_<target_uppercase>` flag
|
||||
|
||||
### Pin Compatibility
|
||||
|
||||
To ensure compatibility, provide validation, and power future workflows, a keyboard should declare its `pin compatibility`. For legacy reasons, this is currently assumed to be `promicro`.
|
||||
To ensure compatibility, provide validation, and enable future workflows, a keyboard should declare its `pin compatibility`. For legacy reasons, this is currently assumed to be `promicro`. The following pin compatibility interfaces are currently defined:
|
||||
|
||||
Currently the following pin compatibility interfaces are defined:
|
||||
|
||||
| Pinout | Notes |
|
||||
|------------|-----------------------------------|
|
||||
| `promicro` | Includes RX/TX LEDs |
|
||||
| `elite_c` | Includes bottom row pins, no LEDs |
|
||||
| Pin Compatibility | Notes |
|
||||
|-------------------|-----------------------------------|
|
||||
| `promicro` | Includes RX/TX LEDs |
|
||||
| `elite_c` | Includes bottom row pins, no LEDs |
|
||||
|
||||
To declare the base for conversions, add this line to your keyboard's `rules.mk`:
|
||||
|
||||
@@ -140,7 +132,7 @@ The following defaults are based on what has been implemented for [RP2040](platf
|
||||
|
||||
### SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi :id=promicro_rp2040
|
||||
|
||||
Currently identical to [Adafruit KB2040](#kb2040).
|
||||
Feature set is identical to [Adafruit KB2040](#kb2040).
|
||||
|
||||
### STeMCell :id=stemcell
|
||||
|
||||
@@ -150,9 +142,7 @@ There are two versions of STeMCell available, with different pinouts:
|
||||
- v2.0.0 (pre-release v1.0.1, v1.0.2)
|
||||
Default official firmware only supports v2.0.0 STeMCell.
|
||||
|
||||
STeMCell has support to swap UART and I2C pins, to enable single-wire uart communication in STM chips.
|
||||
|
||||
The following additional flags has to be used while compiling, based on the pin used for split communication.
|
||||
STeMCell has support to swap UART and I2C pins to enable single-wire uart communication in STM chips. The following additional flags has to be used while compiling, based on the pin used for split communication:
|
||||
|
||||
| Split Pin | Compile flags |
|
||||
|-----------|---------------|
|
||||
@@ -173,11 +163,8 @@ The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro
|
||||
|
||||
### RP2040 Community Edition - Elite-Pi, Helios, and Liatris :id=rp2040_ce
|
||||
|
||||
Feature set currently identical to [Adafruit KB2040](#kb2040).
|
||||
Feature set is identical to [Adafruit KB2040](#kb2040). VBUS detection is enabled by default for superior split keyboard support. For more information, refer to the [Community Edition pinout](platformdev_rp2040.md#rp2040_ce) docs.
|
||||
|
||||
Enables VBUS detection by default for superior split keyboard support.
|
||||
|
||||
For more information, refer to the [RP2040 Community Edition](platformdev_rp2040.md#rp2040_ce) docs.
|
||||
|
||||
## Elite-C
|
||||
|
||||
@@ -202,8 +189,8 @@ Converter summary:
|
||||
|
||||
### STeMCell :id=stemcell_elite
|
||||
|
||||
Currently identical to [STeMCell](#stemcell) with support for the additional bottom row of pins.
|
||||
Identical to [Pro Micro - STeMCell](#stemcell) with support for the additional bottom row of pins.
|
||||
|
||||
### RP2040 Community Edition :id=rp2040_ce_elite
|
||||
|
||||
Currently identical to [RP2040 Community Edition](#rp2040_ce), with support for the additional bottom row of pins.
|
||||
Identical to [Pro Micro - RP2040 Community Edition](#rp2040_ce) with support for the additional bottom row of pins.
|
||||
|
||||
@@ -21,7 +21,7 @@ Then, in your `keymap.c` file, you'll need to define the array `key_overrides`,
|
||||
The `key_override_t` struct has many options that allow you to precisely tune your overrides. The full reference is shown below. Instead of manually creating a `key_override_t` value, it is recommended to use these dedicated initializers:
|
||||
|
||||
#### `ko_make_basic(modifiers, key, replacement)`
|
||||
Returns a `key_override_t`, which sends `replacement` (can be a key-modifer combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior.
|
||||
Returns a `key_override_t`, which sends `replacement` (can be a key-modifier combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior.
|
||||
|
||||
#### `ko_make_with_layers(modifiers, key, replacement, layers)`
|
||||
Additionally takes a bitmask `layers` that defines on which layers the override is used.
|
||||
@@ -224,7 +224,7 @@ The duration of the key repeat delay is controlled with the `KEY_OVERRIDE_REPEAT
|
||||
|
||||
## Difference to Combos :id=difference-to-combos
|
||||
|
||||
Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interacton with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable.
|
||||
Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interaction with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable.
|
||||
|
||||
## Solution to the problem of flashing modifiers :id=neutralize-flashing-modifiers
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ Tested combinations:
|
||||
|SSD1306 |128x32 |AVR |Primary support |
|
||||
|SSD1306 |128x64 |AVR |Verified working |
|
||||
|SSD1306 |128x32 |Arm | |
|
||||
|SSD1306 |128x64 |Arm |Verified working |
|
||||
|SH1106 |128x64 |AVR |No scrolling |
|
||||
|SH1107 |64x128 |AVR |No scrolling |
|
||||
|SH1107 |64x128 |Arm |No scrolling |
|
||||
@@ -398,7 +399,7 @@ void oled_scroll_set_area(uint8_t start_line, uint8_t end_line);
|
||||
// Sets scroll speed, 0-7, fastest to slowest. Default is three.
|
||||
// Does not take effect until scrolling is either started or restarted
|
||||
// the ssd1306 supports 8 speeds with the delay
|
||||
// listed below betwen each frame of the scrolling effect
|
||||
// listed below between each frame of the scrolling effect
|
||||
// 0=2, 1=3, 2=4, 3=5, 4=25, 5=64, 6=128, 7=256
|
||||
void oled_scroll_set_speed(uint8_t speed);
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Programmable Buttons are keys that have no predefined meaning. This means they can be processed on the host side by custom software without the operating system trying to interpret them.
|
||||
|
||||
The keycodes are emitted according to the HID Telephony Device page (`0x0B`), Programmable Button usage (`0x07`). On Linux (> 5.14) they are handled automatically and translated to `KEY_MACRO#` keycodes (up to `KEY_MACRO30`).
|
||||
The keycodes are emitted according to the HID Telephony Device page (`0x0B`), Programmable Button usage (`0x09`). On Linux (> 5.14) they are handled automatically and translated to `KEY_MACRO#` keycodes (up to `KEY_MACRO30`).
|
||||
|
||||
?> Currently there is no known support in Windows or macOS. It may be possible to write a custom HID driver to receive these usages, but this is out of the scope of the QMK documentation.
|
||||
|
||||
|
||||
@@ -155,6 +155,29 @@ In your keyboard config.h:
|
||||
#endif
|
||||
```
|
||||
|
||||
### RP2040 PIO Version :id=rp2040-pio-version
|
||||
|
||||
The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU.
|
||||
|
||||
There are strict requirements for pin ordering but any pair of GPIO pins can be used. The GPIO used for clock must be directly after data, see the included info.json snippet for an example of correct order.
|
||||
|
||||
You may optionally switch the PIO peripheral used with the following define in config.h:
|
||||
```c
|
||||
#define PS2_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the PS2 implementation uses the PIO0 peripheral
|
||||
```
|
||||
|
||||
Example info.json content:
|
||||
|
||||
```json
|
||||
"ps2": {
|
||||
"clock_pin": "GP1",
|
||||
"data_pin": "GP0",
|
||||
"driver": "vendor",
|
||||
"enabled": true,
|
||||
"mouse_enabled": true
|
||||
}
|
||||
```
|
||||
|
||||
## Additional Settings :id=additional-settings
|
||||
|
||||
### PS/2 Mouse Features :id=ps2-mouse-features
|
||||
|
||||
@@ -524,7 +524,6 @@ By defining `RGBLIGHT_LED_MAP` as in the example below, you can specify the LED
|
||||
```
|
||||
<img src="https://user-images.githubusercontent.com/2170248/55743725-08ad7a80-5a6e-11e9-83ed-126a2b0209fc.JPG" alt="simple mapped" width="50%"/>
|
||||
|
||||
```
|
||||
## Clipping Range
|
||||
|
||||
Using the `rgblight_set_clipping_range()` function, you can prepare more buffers than the actual number of LEDs, and output some of the buffers to the LEDs. This is useful if you want the split keyboard to treat left and right LEDs as logically contiguous.
|
||||
@@ -544,8 +543,8 @@ In addition to setting the Clipping Range, you can use `RGBLIGHT_LED_MAP` togeth
|
||||
#define RGBLED_NUM 8
|
||||
#define RGBLIGHT_LED_MAP { 7, 6, 5, 4, 3, 2, 1, 0 }
|
||||
|
||||
// some soruce
|
||||
rgblight_set_clipping_range(3, 4);
|
||||
// some source
|
||||
rgblight_set_clipping_range(3, 4);
|
||||
```
|
||||
<img src="https://user-images.githubusercontent.com/2170248/55743747-119e4c00-5a6e-11e9-91e5-013203ffae8a.JPG" alt="clip mapped" width="70%"/>
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ Eg, if you wanted to set the "Adjust" layer to be layer 5, you'd add this to you
|
||||
| `set_tri_layer_lower_layer(layer)` | Changes the "lower" layer*. |
|
||||
| `set_tri_layer_upper_layer(layer)` | Changes the "upper" layer*. |
|
||||
| `set_tri_layer_adjust_layer(layer)` | Changes the "adjust" layer*. |
|
||||
| `set_tri_layer_layers(lower, upper, adjust)` | Stes the "lower", "upper" and "adjust" layers*. |
|
||||
| `set_tri_layer_layers(lower, upper, adjust)` | Sets the "lower", "upper" and "adjust" layers*. |
|
||||
| `get_tri_layer_lower_layer()` | Gets the current "lower" layer. |
|
||||
| `get_tri_layer_upper_layer()` | Gets the current "upper" layer. |
|
||||
| `get_tri_layer_adjust_layer()` | Gets the current "adjust" layer. |
|
||||
|
||||
@@ -140,7 +140,7 @@ To set the list of enabled input modes, add the `UNICODE_SELECTED_MODES` define
|
||||
```c
|
||||
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
|
||||
// or
|
||||
#define UNICODE_SELECTED_MODES UNICODE_MODE_MAC, UNICODE_MODE_WINCOMPOSE
|
||||
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE
|
||||
```
|
||||
|
||||
These modes can then be cycled through using the `UC_NEXT` and `UC_PREV` keycodes. You can also switch to any input mode, even if it is not specified in `UNICODE_SELECTED_MODES`, using their respective keycodes.
|
||||
@@ -151,7 +151,7 @@ If your keyboard has working EEPROM, it will remember the last used input mode a
|
||||
|
||||
### ** macOS **
|
||||
|
||||
**Mode Name:** `UNICODE_MODE_MAC`
|
||||
**Mode Name:** `UNICODE_MODE_MACOS`
|
||||
|
||||
macOS has built-in support for Unicode input as its own input source. It supports all possible code points by way of surrogate pairs for code points above `U+FFFF`.
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ QMK maintains a Homebrew tap and formula which will automatically install the CL
|
||||
|
||||
You will need to install Homebrew. Follow the instructions on https://brew.sh.
|
||||
|
||||
!> **NOTE:** If you are using Apple Silicon, such as the M1, you will need to install a rosetta compatible version of Homebrew. This version does not override the base Homebrew. This can be done by running `arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"`. See here: [Rosetta-compatible Homebrew](https://stackoverflow.com/questions/64882584/how-to-run-the-homebrew-installer-under-rosetta-2-on-m1-macbook)
|
||||
?> If you are using an Apple Silicon machine, the installation process will take significantly longer because GitHub actions do not have native runners to build binary packages for the ARM and AVR toolchains.
|
||||
|
||||
#### Installation
|
||||
|
||||
@@ -64,10 +64,6 @@ Install the QMK CLI by running:
|
||||
|
||||
brew install qmk/qmk/qmk
|
||||
|
||||
Install the QMK CLI on an Apple Silicon Mac by running:
|
||||
|
||||
arch -x86_64 brew install qmk/qmk/qmk
|
||||
|
||||
### ** Linux/WSL **
|
||||
|
||||
?> **Note for WSL users**: By default, the installation process will clone the QMK repository into your WSL home directory, but if you have cloned manually, ensure that it is located inside the WSL instance instead of the Windows filesystem (ie. not in `/mnt`), as accessing it is currently [extremely slow](https://github.com/microsoft/WSL/issues/4197).
|
||||
|
||||
@@ -80,6 +80,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
||||
- Encoder Configuration
|
||||
- Bootmagic Configuration
|
||||
- LED Indicator Configuration
|
||||
- Run `qmk format-json` on this file before submitting your PR. Be sure to append the `-i` flag to directly modify the file, or paste the outputted code into the file.
|
||||
- `readme.md`
|
||||
- must follow the [template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md)
|
||||
- flash command is present, and has `:flash` at end
|
||||
@@ -137,7 +138,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
||||
- standard layouts preferred in these keymaps, if possible
|
||||
- should use [encoder map feature](https://docs.qmk.fm/#/feature_encoders?id=encoder-map), rather than `encoder_update_user()`
|
||||
- default keymap should not enable VIA -- the VIA integration documentation requires a keymap called `via`
|
||||
- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
|
||||
- submitters can add an example (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
|
||||
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
|
||||
- Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards)
|
||||
- Do not include KLE json files in the PR. These have no use within QMK.
|
||||
|
||||
@@ -2,9 +2,13 @@
|
||||
background-color: #555;
|
||||
}
|
||||
|
||||
.markdown-section p.tip,
|
||||
.markdown-section tr:nth-child(2n) {
|
||||
background-color:#444;
|
||||
background-color:#444;
|
||||
}
|
||||
|
||||
.markdown-section p.tip {
|
||||
background-color:#555;
|
||||
color:#FFF;
|
||||
}
|
||||
|
||||
.markdown-section tr {
|
||||
@@ -16,7 +20,7 @@
|
||||
}
|
||||
|
||||
.markdown-section p.tip code {
|
||||
background-color: #555;
|
||||
background-color: #333;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
|
||||
@@ -235,7 +235,7 @@ Where 'n' matches the peripheral number of your selected USART on the MCU.
|
||||
|
||||
The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of the PIO peripherals, **any** GPIO pin can be used as a `TX` or `RX` pin. Half-duplex and Full-duplex operation is fully supported. The Half-duplex operation mode uses the built-in pull-ups and GPIO manipulation on the RP2040 to drive the line high by default. An external pull-up is therefore not necessary.
|
||||
|
||||
Configure the hardware via your config.h:
|
||||
You may optionally switch the PIO peripheral used with the following define in config.h:
|
||||
```c
|
||||
#define SERIAL_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the Serial implementation uses the PIO0 peripheral
|
||||
```
|
||||
|
||||
@@ -170,7 +170,7 @@ To configure it, add this to your rules.mk:
|
||||
WS2812_DRIVER = vendor
|
||||
```
|
||||
|
||||
Configure the hardware via your config.h:
|
||||
You may optionally switch the PIO peripheral used with the following define in config.h:
|
||||
```c
|
||||
#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
|
||||
```
|
||||
|
||||
@@ -19,6 +19,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
# include "spi_master.h"
|
||||
#elif defined(OLED_TRANSPORT_I2C)
|
||||
# include "i2c_master.h"
|
||||
# if defined(USE_I2C) && defined(SPLIT_KEYBOARD)
|
||||
# include "keyboard.h"
|
||||
# endif
|
||||
#endif
|
||||
#include "oled_driver.h"
|
||||
#include OLED_FONT_H
|
||||
|
||||
@@ -454,7 +454,7 @@ void oled_scroll_set_area(uint8_t start_line, uint8_t end_line);
|
||||
// Sets scroll speed, 0-7, fastest to slowest. Default is three.
|
||||
// Does not take effect until scrolling is either started or restarted
|
||||
// the ssd1306 supports 8 speeds with the delay
|
||||
// listed below betwen each frame of the scrolling effect
|
||||
// listed below between each frame of the scrolling effect
|
||||
// 0=2, 1=3, 2=4, 3=5, 4=25, 5=64, 6=128, 7=256
|
||||
void oled_scroll_set_speed(uint8_t speed);
|
||||
|
||||
|
||||
400
keyboards/1upkeyboards/1upslider8/1upslider8.c
Normal file
400
keyboards/1upkeyboards/1upslider8/1upslider8.c
Normal file
@@ -0,0 +1,400 @@
|
||||
/* Copyright 2022 ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
#include "analog.h"
|
||||
#include "qmk_midi.h"
|
||||
|
||||
#include "quantum.h"
|
||||
#include "quantum/midi/midi.h"
|
||||
#include "quantum/midi/midi_device.h"
|
||||
|
||||
uint8_t divisor = 0;
|
||||
void slider(void) {
|
||||
if (divisor++) { // only run the slider function 1/256 times it's called
|
||||
return;
|
||||
}
|
||||
midi_send_cc(&midi_device, 2, 0x3E, 0x7F - (analogReadPin(SLIDER_PIN) >> 3));
|
||||
uprintf("%d string", analogReadPin(SLIDER_PIN));
|
||||
}
|
||||
|
||||
void housekeeping_task_kb(void) {
|
||||
slider();
|
||||
housekeeping_task_user();
|
||||
}
|
||||
|
||||
static uint32_t oled_logo_timer = 0;
|
||||
static bool clear_logo = true;
|
||||
static const char PROGMEM my_logo[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
|
||||
0xE0, 0xF0, 0x70, 0x70, 0x70, 0x70,
|
||||
0xF0, 0xE0, 0xC0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x63, 0xE7, 0xE7, 0xCE, 0xCE,
|
||||
0xCE, 0xCE, 0xFC, 0xFC, 0x78, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC1,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x07, 0x07, 0x07, 0x07, 0x07,
|
||||
0x07, 0x07, 0x07, 0x07, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x1F, 0x1F, 0x1F, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFC, 0xFC, 0xFC, 0x1C, 0x1C, 0x1C,
|
||||
0x1C, 0x3C, 0xF8, 0xF8, 0xE0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x70,
|
||||
0x70, 0x70, 0x70, 0x78, 0x3F, 0x3F,
|
||||
0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
||||
0xF0, 0xF0, 0x70, 0x70, 0x70, 0x70,
|
||||
0x70, 0x70, 0x70, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xCE, 0xCE,
|
||||
0xCE, 0xCE, 0xCE, 0xCE, 0xCE, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xC0, 0xC1, 0xC1, 0xC1,
|
||||
0xC1, 0xC1, 0xC1, 0xC1, 0xC1, 0x81,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0xFF, 0x39, 0x39, 0x79, 0xF9, 0xF9,
|
||||
0xDF, 0x9F, 0x0F, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x07, 0x07, 0x00, 0x00, 0x00,
|
||||
0x00, 0x03, 0x07, 0x07, 0x06, 0x04,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x1C, 0xBE,
|
||||
0xFF, 0x63, 0x63, 0xFF, 0xBE, 0x1C,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x07, 0x0F, 0x1F, 0x18, 0x18, 0x1F,
|
||||
0x0F, 0x07, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00
|
||||
};
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_270;
|
||||
}
|
||||
|
||||
|
||||
static const char PROGMEM ou_logo[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFC, 0xFC, 0xCF, 0xCF,
|
||||
0x03, 0x03, 0x03, 0x03, 0xFF, 0xFF,
|
||||
0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03,
|
||||
0x03, 0x03, 0xFF, 0xFF, 0x03, 0x03,
|
||||
0x03, 0x03, 0xF3, 0xF3, 0x03, 0x03,
|
||||
0x0C, 0x0C, 0xFC, 0xFC, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xC0, 0xC0, 0xC0, 0xC0,
|
||||
0xFF, 0xFF, 0xF0, 0xF0, 0xC3, 0xC3,
|
||||
0xC0, 0xC0, 0xF0, 0xF0, 0xFF, 0xFF,
|
||||
0xC0, 0xC0, 0xC0, 0xC0, 0xFC, 0xFC,
|
||||
0x0C, 0x0C, 0x0F, 0x0F, 0x03, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00
|
||||
};
|
||||
|
||||
|
||||
static char PROGMEM caps_on[] = {
|
||||
0x00, 0x00, 0x00, 0xF8, 0x04, 0x04,
|
||||
0x04, 0x88, 0x00, 0x00, 0xE0, 0x58,
|
||||
0x44, 0x58, 0xE0, 0x00, 0x00, 0xFC,
|
||||
0x24, 0x24, 0x24, 0x18, 0x00, 0x00,
|
||||
0x98, 0x24, 0x24, 0x24, 0xC8, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x01, 0x01, 0x00, 0x00, 0x81,
|
||||
0xC0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF1,
|
||||
0xF0, 0xF1, 0xF0, 0xF0, 0xE0, 0xC0,
|
||||
0x80, 0x00, 0x00, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F,
|
||||
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
|
||||
0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00
|
||||
};
|
||||
|
||||
static char PROGMEM caps_off[] = {
|
||||
0x00, 0x00, 0x00, 0xF8, 0x04, 0x04,
|
||||
0x04, 0x88, 0x00, 0x00, 0xE0, 0x58,
|
||||
0x44, 0x58, 0xE0, 0x00, 0x00, 0xFC,
|
||||
0x24, 0x24, 0x24, 0x18, 0x00, 0x00,
|
||||
0x98, 0x24, 0x24, 0x24, 0xC8, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x01, 0x01, 0x00, 0x00, 0x81,
|
||||
0xC0, 0xE0, 0xF0, 0x70, 0x30, 0x31,
|
||||
0x30, 0x31, 0x70, 0xF0, 0xE0, 0xC0,
|
||||
0x80, 0x00, 0x00, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x03, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E,
|
||||
0x3C, 0x38, 0x30, 0x30, 0x30, 0x30,
|
||||
0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00
|
||||
};
|
||||
|
||||
static const char PROGMEM num_on[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
|
||||
0x18, 0x20, 0xC0, 0xFC, 0x00, 0x00,
|
||||
0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC,
|
||||
0x00, 0x00, 0xFC, 0x18, 0x60, 0x80,
|
||||
0x60, 0x18, 0xFC, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x81,
|
||||
0xC0, 0xE0, 0xF0, 0xF0, 0xF1, 0xF1,
|
||||
0xF1, 0xF0, 0xF0, 0xF0, 0xE1, 0xC0,
|
||||
0x80, 0x01, 0x00, 0x00, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F,
|
||||
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
|
||||
0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00
|
||||
};
|
||||
|
||||
static const char PROGMEM num_off[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
|
||||
0x18, 0x20, 0xC0, 0xFC, 0x00, 0x00,
|
||||
0x00, 0xFC, 0x00, 0x00, 0x00, 0xFC,
|
||||
0x00, 0x00, 0xFC, 0x18, 0x60, 0x80,
|
||||
0x60, 0x18, 0xFC, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x81,
|
||||
0xC0, 0xE0, 0xF0, 0x70, 0x31, 0x31,
|
||||
0x31, 0x30, 0x70, 0xF0, 0xE1, 0xC0,
|
||||
0x80, 0x01, 0x00, 0x00, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x03, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E,
|
||||
0x3C, 0x38, 0x30, 0x30, 0x30, 0x30,
|
||||
0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00
|
||||
};
|
||||
|
||||
static const char PROGMEM scrl_on[] = {
|
||||
0x00, 0x00, 0x00, 0x98, 0x24, 0x24,
|
||||
0x24, 0xC8, 0x00, 0x00, 0xF8, 0x04,
|
||||
0x04, 0x04, 0x88, 0x00, 0x00, 0xFC,
|
||||
0x24, 0x24, 0xE4, 0x18, 0x00, 0x00,
|
||||
0x00, 0xFC, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x01, 0x01, 0x00, 0x00, 0x80,
|
||||
0xC0, 0xE1, 0xF1, 0xF1, 0xF0, 0xF0,
|
||||
0xF0, 0xF1, 0xF0, 0xF0, 0xE0, 0xC1,
|
||||
0x80, 0x00, 0x00, 0x01, 0x01, 0x01,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F,
|
||||
0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F,
|
||||
0x3F, 0x3F, 0x1F, 0x0F, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00
|
||||
};
|
||||
|
||||
static const char PROGMEM scrl_off[] = {
|
||||
0x00, 0x00, 0x00, 0x98, 0x24, 0x24,
|
||||
0x24, 0xC8, 0x00, 0x00, 0xF8, 0x04,
|
||||
0x04, 0x04, 0x88, 0x00, 0x00, 0xFC,
|
||||
0x24, 0x24, 0xE4, 0x18, 0x00, 0x00,
|
||||
0x00, 0xFC, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x01, 0x01, 0x00, 0x00, 0x80,
|
||||
0xC0, 0xE1, 0xF1, 0x71, 0x30, 0x30,
|
||||
0x30, 0x31, 0x70, 0xF0, 0xE0, 0xC1,
|
||||
0x80, 0x00, 0x00, 0x01, 0x01, 0x01,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x03, 0x01, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x03, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x0F, 0x1E,
|
||||
0x3C, 0x38, 0x30, 0x30, 0x30, 0x30,
|
||||
0x38, 0x3C, 0x1E, 0x0F, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00
|
||||
};
|
||||
|
||||
static void render_oled(void) {
|
||||
const int combined_size = sizeof(ou_logo) + sizeof(caps_off) + sizeof(num_off) + sizeof(scrl_off);
|
||||
char combined[combined_size];
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
|
||||
memcpy_P(combined, ou_logo, sizeof(ou_logo));
|
||||
|
||||
if (led_state.caps_lock) {
|
||||
memcpy_P(combined + sizeof(ou_logo), caps_on, sizeof(caps_off));
|
||||
}
|
||||
else {
|
||||
memcpy_P(combined + sizeof(ou_logo), caps_off, sizeof(caps_off));
|
||||
}
|
||||
|
||||
if (led_state.num_lock) {
|
||||
memcpy_P(combined + sizeof(ou_logo) + sizeof(caps_off), num_on, sizeof(num_off));
|
||||
}
|
||||
else {
|
||||
memcpy_P(combined + sizeof(ou_logo) + sizeof(caps_off), num_off, sizeof(num_off));
|
||||
}
|
||||
|
||||
if (led_state.scroll_lock) {
|
||||
memcpy_P(combined + sizeof(ou_logo) + sizeof(caps_off) + sizeof(num_off), scrl_on, sizeof(scrl_off));
|
||||
}
|
||||
else {
|
||||
memcpy_P(combined + sizeof(ou_logo) + sizeof(caps_off) + sizeof(num_off), scrl_off, sizeof(scrl_off));
|
||||
}
|
||||
|
||||
oled_write_raw_P(combined, sizeof(combined));
|
||||
}
|
||||
|
||||
void render_logo(void) {
|
||||
oled_write_raw_P(my_logo, sizeof(my_logo));
|
||||
}
|
||||
|
||||
void clear_screen(void) {
|
||||
if (clear_logo){
|
||||
for (uint8_t i = 0; i < OLED_DISPLAY_HEIGHT; ++i) {
|
||||
for (uint8_t j = 0; j < OLED_DISPLAY_WIDTH; ++j) {
|
||||
oled_write_raw_byte(0x0, i*OLED_DISPLAY_WIDTH + j);
|
||||
}
|
||||
}
|
||||
clear_logo = false;
|
||||
}
|
||||
}
|
||||
|
||||
#define MIDI_CONTROL_CHANGE 0xB0
|
||||
|
||||
MidiDevice _midi_device;
|
||||
|
||||
void midi_callback(uint8_t cable, uint8_t *midi_data, uint16_t length) {
|
||||
// Check if this is a MIDI CC message on channel 2
|
||||
if ((midi_data[0] & 0xF0) == MIDI_CONTROL_CHANGE && midi_data[0] & (0x0F == 1)) {
|
||||
uprintf("%s string", midi_data );
|
||||
// ...
|
||||
}
|
||||
}
|
||||
|
||||
void slider8_cc_callback(struct _midi_device *dev, uint8_t cable, uint8_t code_index, uint8_t value) {
|
||||
midi_callback(MIDI_CONTROL_CHANGE, &value, 1);
|
||||
}
|
||||
|
||||
void init_timer(void){
|
||||
oled_logo_timer = timer_read32();
|
||||
};
|
||||
|
||||
void keyboard_post_init_kb(void) {
|
||||
init_timer();
|
||||
|
||||
keyboard_post_init_user();
|
||||
}
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
midi_register_cc_callback(&_midi_device, slider8_cc_callback);
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
#ifndef SHOW_LOGO
|
||||
# define SHOW_LOGO 5000
|
||||
#endif
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) { return false; }
|
||||
if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)){
|
||||
render_logo();
|
||||
}else{
|
||||
clear_screen();
|
||||
render_oled();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
29
keyboards/1upkeyboards/1upslider8/config.h
Normal file
29
keyboards/1upkeyboards/1upslider8/config.h
Normal file
@@ -0,0 +1,29 @@
|
||||
/* Copyright 2023 Ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define I2C1_SCL_PIN GP11
|
||||
#define I2C1_SDA_PIN GP10
|
||||
#define OLED_BRIGHTNESS 128
|
||||
|
||||
#define SLIDER_PIN GP28
|
||||
#define MIDI_ADVANCED
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 8
|
||||
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
9
keyboards/1upkeyboards/1upslider8/halconf.h
Normal file
9
keyboards/1upkeyboards/1upslider8/halconf.h
Normal file
@@ -0,0 +1,9 @@
|
||||
// Copyright 2023 ziptyze
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later#pragma once
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define HAL_USE_ADC TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
115
keyboards/1upkeyboards/1upslider8/info.json
Normal file
115
keyboards/1upkeyboards/1upslider8/info.json
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"manufacturer": "1upkeyboards",
|
||||
"keyboard_name": "1upslider8",
|
||||
"maintainer": "ziptyze",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x5611",
|
||||
"vid": "0x6F75"
|
||||
},
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 10
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"oled": true,
|
||||
"midi":true,
|
||||
"rgb_matrix": true,
|
||||
"encoder": true
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{
|
||||
"pin_a": "GP21",
|
||||
"pin_b": "GP22"
|
||||
}
|
||||
]
|
||||
},
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
["GP27", "GP17", "GP18", "GP19", "GP20", "GP15", "GP14", "GP13", "GP16"]
|
||||
]
|
||||
},
|
||||
"bootmagic": {
|
||||
"matrix": [0, 1]
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "GP26",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"gradient_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"breathing": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron":true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"dual_beacon": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"jellybean_raindrops": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"typing_heatmap": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"splash": true,
|
||||
"multisplash": true,
|
||||
"solid_splash": true,
|
||||
"solid_multisplash": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 28, "y": 16 },
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 84, "y": 16 },
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 140, "y": 16 },
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 196, "y": 16 },
|
||||
{ "flags": 4, "matrix": [0, 5], "x": 28, "y": 48 },
|
||||
{ "flags": 4, "matrix": [0, 6], "x": 84, "y": 48 },
|
||||
{ "flags": 4, "matrix": [0, 7], "x": 140, "y": 48 },
|
||||
{ "flags": 4, "matrix": [0, 8], "x": 196, "y": 48 }
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "label": "enc", "matrix": [0, 0], "x": 3, "y": 0 },
|
||||
{ "label": "1", "matrix": [0, 1], "x": 0, "y": 1 },
|
||||
{ "label": "2", "matrix": [0, 2], "x": 1, "y": 1 },
|
||||
{ "label": "3", "matrix": [0, 3], "x": 2, "y": 1 },
|
||||
{ "label": "4", "matrix": [0, 4], "x": 3, "y": 1 },
|
||||
{ "label": "5", "matrix": [0, 5], "x": 0, "y": 2 },
|
||||
{ "label": "6", "matrix": [0, 6], "x": 1, "y": 2 },
|
||||
{ "label": "7", "matrix": [0, 7], "x": 2, "y": 2 },
|
||||
{ "label": "8", "matrix": [0, 8], "x": 3, "y": 2 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
31
keyboards/1upkeyboards/1upslider8/keymaps/default/keymap.c
Normal file
31
keyboards/1upkeyboards/1upslider8/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,31 @@
|
||||
/* Copyright 2022 ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
RGB_TOG,
|
||||
KC_1, KC_2, KC_3, KC_4,
|
||||
KC_5, KC_6, KC_7, KC_8
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)}
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
31
keyboards/1upkeyboards/1upslider8/keymaps/via/keymap.c
Normal file
31
keyboards/1upkeyboards/1upslider8/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,31 @@
|
||||
/* Copyright 2023 ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
RGB_TOG,
|
||||
KC_1, KC_2, KC_3, KC_4,
|
||||
KC_5, KC_6, KC_7, KC_8
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)}
|
||||
};
|
||||
#endif
|
||||
3
keyboards/1upkeyboards/1upslider8/keymaps/via/rules.mk
Normal file
3
keyboards/1upkeyboards/1upslider8/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
VIA_ENABLE = yes
|
||||
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
11
keyboards/1upkeyboards/1upslider8/mcuconf.h
Normal file
11
keyboards/1upkeyboards/1upslider8/mcuconf.h
Normal file
@@ -0,0 +1,11 @@
|
||||
// Copyright 2023 ziptyze
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later#pragma once
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef RP_I2C_USE_I2C1
|
||||
#undef RP_ADC_USE_ADC1
|
||||
#define RP_I2C_USE_I2C1 TRUE
|
||||
#define RP_ADC_USE_ADC1 TRUE
|
||||
27
keyboards/1upkeyboards/1upslider8/readme.md
Normal file
27
keyboards/1upkeyboards/1upslider8/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# slider8
|
||||
|
||||

|
||||
|
||||
|
||||
This keyboard is the slider8 from 1upkeyboards.com, a small macropad with an oled, slide potentiometer, rotary encoder, and 8 switches in a 2x4 ortholinear arrangement with per-key in-switch rgb leds.
|
||||
|
||||
The slide potentiometer presents to the computer as a midi device and will need a seperate program to map to device control.
|
||||
|
||||
* Keyboard Maintainer: [ziptyze](https://github.com/ziptyze)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 1upkeyboards/1upslider8:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make 1upkeyboards/1upslider8:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 2 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
|
||||
* **Physical reset button**: Hold down the button on the pi pico and plug in the keyboard
|
||||
1
keyboards/1upkeyboards/1upslider8/rules.mk
Normal file
1
keyboards/1upkeyboards/1upslider8/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
SRC += analog.c
|
||||
22
keyboards/1upkeyboards/1upsuper16v3/config.h
Normal file
22
keyboards/1upkeyboards/1upsuper16v3/config.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2023 ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 48
|
||||
#define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
164
keyboards/1upkeyboards/1upsuper16v3/info.json
Normal file
164
keyboards/1upkeyboards/1upsuper16v3/info.json
Normal file
@@ -0,0 +1,164 @@
|
||||
{
|
||||
"manufacturer": "1upkeyboards",
|
||||
"keyboard_name": "1upsuper16v3",
|
||||
"maintainer": "ziptyze",
|
||||
"bootloader": "rp2040",
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 10
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP20", "pin_b": "GP21"},
|
||||
{"pin_a": "GP25", "pin_b": "GP26"},
|
||||
{"pin_a": "GP2", "pin_b": "GP3"},
|
||||
{"pin_a": "GP6", "pin_b": "GP7"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
["GP23", "GP24", "GP4", "GP5"],
|
||||
["GP19", "GP27", "GP1", "GP8"],
|
||||
["GP18", "GP28", "GP0", "GP9"],
|
||||
["GP17", "GP16", "GP15", "GP11"]
|
||||
]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"x": 99, "y": 1, "flags": 2},
|
||||
{"x": 70, "y": 1, "flags": 2},
|
||||
{"x": 42, "y": 1, "flags": 2},
|
||||
{"x": 14, "y": 1, "flags": 2},
|
||||
{"x": 4, "y": 4, "flags": 2},
|
||||
{"x": 4, "y": 12, "flags": 2},
|
||||
{"matrix": [0, 0], "x": 28, "y": 8, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 84, "y": 8, "flags": 4},
|
||||
{"x": 4, "y": 20, "flags": 2},
|
||||
{"x": 4, "y": 28, "flags": 2},
|
||||
{"matrix": [1, 0], "x": 28, "y": 24, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 84, "y": 24, "flags": 4},
|
||||
{"x": 4, "y": 36, "flags": 2},
|
||||
{"x": 4, "y": 44, "flags": 2},
|
||||
{"matrix": [2, 0], "x": 28, "y": 40, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 84, "y": 40, "flags": 4},
|
||||
{"x": 4, "y": 52, "flags": 2},
|
||||
{"x": 4, "y": 60, "flags": 2},
|
||||
{"x": 14, "y": 63, "flags": 2},
|
||||
{"matrix": [3, 0], "x": 28, "y": 56, "flags": 4},
|
||||
{"x": 42, "y": 63, "flags": 2},
|
||||
{"x": 70, "y": 63, "flags": 2},
|
||||
{"matrix": [3, 1], "x": 84, "y": 56, "flags": 4},
|
||||
{"x": 99, "y": 63, "flags": 2},
|
||||
{"x": 126, "y": 63, "flags": 2},
|
||||
{"matrix": [3, 2], "x": 140, "y": 56, "flags": 4},
|
||||
{"x": 154, "y": 63, "flags": 2},
|
||||
{"x": 182, "y": 63, "flags": 2},
|
||||
{"matrix": [3, 3], "x": 196, "y": 56, "flags": 4},
|
||||
{"x": 210, "y": 63, "flags": 2},
|
||||
{"x": 220, "y": 60, "flags": 2},
|
||||
{"x": 220, "y": 52, "flags": 2},
|
||||
{"x": 220, "y": 44, "flags": 2},
|
||||
{"matrix": [2, 3], "x": 196, "y": 40, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 140, "y": 40, "flags": 4},
|
||||
{"x": 220, "y": 36, "flags": 2},
|
||||
{"x": 220, "y": 28, "flags": 2},
|
||||
{"matrix": [1, 3], "x": 196, "y": 24, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 140, "y": 24, "flags": 4},
|
||||
{"x": 220, "y": 20, "flags": 2},
|
||||
{"x": 220, "y": 12, "flags": 2},
|
||||
{"matrix": [0, 3], "x": 196, "y": 8, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 140, "y": 8, "flags": 4},
|
||||
{"x": 220, "y": 4, "flags": 2},
|
||||
{"x": 210, "y": 1, "flags": 2},
|
||||
{"x": 182, "y": 1, "flags": 2},
|
||||
{"x": 154, "y": 1, "flags": 2},
|
||||
{"x": 126, "y": 1, "flags": 2}
|
||||
]
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x5610",
|
||||
"vid": "0x6F75"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP29"
|
||||
},
|
||||
"community_layouts": ["ortho_4x4"],
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x4": {
|
||||
"layout": [
|
||||
{"label": "00", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "01", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "02", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "03", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "10", "matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"label": "11", "matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"label": "12", "matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"label": "13", "matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"label": "20", "matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"label": "21", "matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"label": "22", "matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"label": "23", "matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"label": "30", "matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"label": "31", "matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"label": "32", "matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"label": "33", "matrix": [3, 3], "x": 3, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
39
keyboards/1upkeyboards/1upsuper16v3/keymaps/default/keymap.c
Normal file
39
keyboards/1upkeyboards/1upsuper16v3/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,39 @@
|
||||
/* Copyright 2023 ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_4x4(
|
||||
KC_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3, KC_PSLS,
|
||||
MO(1), KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
[1] = LAYOUT_ortho_4x4(
|
||||
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
|
||||
RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
39
keyboards/1upkeyboards/1upsuper16v3/keymaps/via/keymap.c
Normal file
39
keyboards/1upkeyboards/1upsuper16v3/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,39 @@
|
||||
/* Copyright 2023 ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_4x4(
|
||||
KC_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3, KC_PSLS,
|
||||
MO(1), KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
[1] = LAYOUT_ortho_4x4(
|
||||
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
|
||||
RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
|
||||
};
|
||||
#endif
|
||||
4
keyboards/1upkeyboards/1upsuper16v3/keymaps/via/rules.mk
Normal file
4
keyboards/1upkeyboards/1upsuper16v3/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,4 @@
|
||||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
22
keyboards/1upkeyboards/1upsuper16v3/readme.md
Normal file
22
keyboards/1upkeyboards/1upsuper16v3/readme.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# 1upSuper16v3
|
||||
|
||||
This keyboard is the Super16v3 from 1upkeyboards, a 4x4 macropad with the option for up to four encoders in the top row. Notable features include in-switch per-key addressable RGB LEDs and thirty two 1mm underglow RGB LEDs; for bright and smooth lighting effects. The Super16v3 utilises an rp2040 microcontroller, wired using direct pins.
|
||||
|
||||
* Keyboard Maintainer: [ziptyze](https://github.com/ziptyze)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 1upkeyboards/1upsuper16v3:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make 1upkeyboards/1upsuper16v3:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 2 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix. For this keyboard it is the top left button
|
||||
* **Physical reset button**: Hold the button on the back of the PCB and plug in the keyboard
|
||||
0
keyboards/1upkeyboards/1upsuper16v3/rules.mk
Normal file
0
keyboards/1upkeyboards/1upsuper16v3/rules.mk
Normal file
@@ -41,6 +41,16 @@
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"bootloader": "stm32-dfu",
|
||||
"community_layouts": [
|
||||
"60_ansi",
|
||||
"60_ansi_split_bs_rshift",
|
||||
"60_ansi_tsangan",
|
||||
"60_tsangan_hhkb",
|
||||
"60_hhkb",
|
||||
"60_iso",
|
||||
"60_iso_split_bs_rshift",
|
||||
"60_iso_tsangan"
|
||||
],
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
@@ -115,6 +125,75 @@
|
||||
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
|
||||
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
@@ -186,6 +265,74 @@
|
||||
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_tsangan": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
|
||||
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_tsangan_hhkb": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
@@ -323,6 +470,288 @@
|
||||
{"label": "GUI", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Alt", "matrix": [9, 5], "x": 12.5, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"label": "\"", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
|
||||
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
|
||||
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"label": "\"", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"label": "Backspace", "matrix": [3, 6], "x": 14, "y": 0},
|
||||
|
||||
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
|
||||
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
|
||||
|
||||
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_tsangan": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"label": "\"", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
|
||||
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
|
||||
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"label": "\"", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"label": "Backspace", "matrix": [3, 6], "x": 14, "y": 0},
|
||||
|
||||
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
|
||||
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
|
||||
|
||||
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
```
|
||||
┌───────┐
|
||||
2u Backspace │36? │
|
||||
2u Backspace │36 │
|
||||
└───────┘
|
||||
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
│00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │16 │36 │
|
||||
@@ -19,6 +19,6 @@
|
||||
│60 │ 2.25u LShift 2.75u RShift │66 │
|
||||
└────────┘ └──────────┘
|
||||
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
|
||||
│80 │90 │91 │93 │85 │95 │86 │ Tsangan/WKL/HHKB
|
||||
│80 │90 │91 │93 │85 │95 │86 │ Tsangan/HHKB
|
||||
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
|
||||
```
|
||||
|
||||
20
keyboards/4pplet/waffling60/rev_e_ansi/config.h
Normal file
20
keyboards/4pplet/waffling60/rev_e_ansi/config.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define WS2812_EXTERNAL_PULLUP
|
||||
|
||||
255
keyboards/4pplet/waffling60/rev_e_ansi/info.json
Normal file
255
keyboards/4pplet/waffling60/rev_e_ansi/info.json
Normal file
@@ -0,0 +1,255 @@
|
||||
{
|
||||
"manufacturer": "4pplet",
|
||||
"keyboard_name": "waffling60 Rev E ANSI HS",
|
||||
"maintainer": "4pplet",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "A2", "pin_b": "A1", "resolution": 2}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"key_lock": true,
|
||||
"mousekey": false,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B2", "A4", "A3", "A0", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"],
|
||||
"rows": ["B14", "A9", "B6", "B5", "B4"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"rgb_test": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"led_count": 17
|
||||
},
|
||||
"url": "https://github.com/4pplet/waffling60",
|
||||
"usb": {
|
||||
"device_version": "0.0.5",
|
||||
"pid": "0x0015",
|
||||
"vid": "0x4444"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "A8"
|
||||
},
|
||||
"community_layouts": [
|
||||
"60_tsangan_hhkb",
|
||||
"60_hhkb"
|
||||
],
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "~", "matrix": [1, 13], "x": 14, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 4], "x":4, "y":4, "w":3},
|
||||
{"label": "Space", "matrix": [4, 6], "x":7, "y":4},
|
||||
{"label": "Space", "matrix": [4, 8], "x":8, "y":4, "w":3},
|
||||
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_tsangan_hhkb": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "~", "matrix": [1, 13], "x": 14, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
|
||||
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w": 7},
|
||||
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_hhkb": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "~", "matrix": [1, 13], "x": 14, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "Bsp", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
|
||||
{"label": "Alt", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Win", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w": 7},
|
||||
{"label": "Win", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Alt", "matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT_all(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
|
||||
// basic function layer
|
||||
[1] = LAYOUT_all(
|
||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||
};
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
40
keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/keymap.c
Normal file
40
keyboards/4pplet/waffling60/rev_e_ansi/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT_all(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL),
|
||||
// basic function layer
|
||||
[1] = LAYOUT_all(
|
||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||
};
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(KC_BRID, KC_BRIU) }
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
24
keyboards/4pplet/waffling60/rev_e_ansi/matrix_diagram.md
Normal file
24
keyboards/4pplet/waffling60/rev_e_ansi/matrix_diagram.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Matrix Diagram for 4pplet Waffling60 Rev E ANSI Hotswap
|
||||
|
||||
```
|
||||
┌───────┐
|
||||
2u Backspace │1D │
|
||||
└───────┘
|
||||
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │
|
||||
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
|
||||
│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2C │
|
||||
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
|
||||
│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │
|
||||
├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
|
||||
│30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │
|
||||
├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴───┼───┴┬────┬┴───┤
|
||||
│40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL/HHKB
|
||||
└────┴────┴────┴─────────────────────────────┴────┴────┴────┘
|
||||
┌─────┬───┬─────┬───────────┬───┬───────────┬─────┬───┬─────┐
|
||||
│40 │41 │42 │44 │46 │48 │4B │4C │4D │ 7u split spacebar
|
||||
└─────┴───┴─────┴───────────┴───┴───────────┴─────┴───┴─────┘
|
||||
┌─────┬───┬───────────────────────────────────────┬───┬─────┐
|
||||
│40 │41 │46 │4C │4D │ 10u Spacebar
|
||||
└─────┴───┴───────────────────────────────────────┴───┴─────┘
|
||||
```
|
||||
26
keyboards/4pplet/waffling60/rev_e_ansi/readme.md
Normal file
26
keyboards/4pplet/waffling60/rev_e_ansi/readme.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# waffling60 Rev. E ANSI
|
||||
|
||||
A 60% PCB for MX switches, one hot swap and one solder-pcb version with decent layout support. Revision E adds underglow and rotary encoder support.
|
||||
|
||||
More info: https://github.com/4pplet/waffling60
|
||||
|
||||
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
|
||||
* Hardware Supported: [waffling60](https://github.com/4pplet/waffling60)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 4pplet/waffling60/rev_e_ansi:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make 4pplet/waffling60/rev_e_ansi:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
How to enter bootloader (DFU):
|
||||
* Short the reset-header (labled BL/RESET) on the back of the PCB for about 2 seconds for the keyboard to enter DFU. When in DFU, it's ready to flash the firmware. If using a APM MCU it will not automatically reset after flash. Simply short the reset-header for a very short time to just reset the PCB, alternatively unplug and repluck the USB-cable to the keyboard.
|
||||
|
||||
Alternative option if the firmware is already pre-flashed:
|
||||
* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware.
|
||||
2
keyboards/4pplet/waffling60/rev_e_ansi/rules.mk
Normal file
2
keyboards/4pplet/waffling60/rev_e_ansi/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
||||
@@ -126,23 +126,27 @@
|
||||
"pid": "0x4321",
|
||||
"vid": "0x7654"
|
||||
},
|
||||
"layout_aliases": {
|
||||
"LAYOUT_75_ansi": "LAYOUT"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_75_ansi": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "F1", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "F2", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "F3", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "F4", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "F5", "matrix": [0, 6], "x": 6.5, "y": 0},
|
||||
{"label": "F6", "matrix": [0, 7], "x": 7.5, "y": 0},
|
||||
{"label": "F7", "matrix": [0, 8], "x": 8.5, "y": 0},
|
||||
{"label": "F8", "matrix": [0, 9], "x": 9.5, "y": 0},
|
||||
{"label": "F9", "matrix": [0, 10], "x": 11, "y": 0},
|
||||
{"label": "F10", "matrix": [0, 11], "x": 12, "y": 0},
|
||||
{"label": "F11", "matrix": [0, 12], "x": 13, "y": 0},
|
||||
{"label": "F12", "matrix": [0, 13], "x": 14, "y": 0},
|
||||
{"label": "END", "matrix": [0, 15], "x": 16.5, "y": 0},
|
||||
{"label": "F1", "matrix": [0, 2], "x": 1.5, "y": 0},
|
||||
{"label": "F2", "matrix": [0, 3], "x": 2.5, "y": 0},
|
||||
{"label": "F3", "matrix": [0, 4], "x": 3.5, "y": 0},
|
||||
{"label": "F4", "matrix": [0, 5], "x": 4.5, "y": 0},
|
||||
{"label": "F5", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "F6", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "F7", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "F8", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": "F9", "matrix": [0, 10], "x": 10.5, "y": 0},
|
||||
{"label": "F10", "matrix": [0, 11], "x": 11.5, "y": 0},
|
||||
{"label": "F11", "matrix": [0, 12], "x": 12.5, "y": 0},
|
||||
{"label": "F12", "matrix": [0, 13], "x": 13.5, "y": 0},
|
||||
{"label": "END", "matrix": [0, 15], "x": 15, "y": 0},
|
||||
|
||||
{"label": "GRV", "matrix": [1, 0], "x": 0, "y": 1.25},
|
||||
{"label": "1", "matrix": [1, 1], "x": 1, "y": 1.25},
|
||||
{"label": "2", "matrix": [1, 2], "x": 2, "y": 1.25},
|
||||
@@ -157,7 +161,8 @@
|
||||
{"label": "MINS", "matrix": [1, 11], "x": 11, "y": 1.25},
|
||||
{"label": "EQL", "matrix": [1, 12], "x": 12, "y": 1.25},
|
||||
{"label": "BSPC", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
|
||||
{"label": "HOME", "matrix": [1, 14], "x": 16.5, "y": 1.25},
|
||||
{"label": "HOME", "matrix": [1, 14], "x": 15, "y": 1.25},
|
||||
|
||||
{"label": "TAB", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
|
||||
{"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
|
||||
{"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
|
||||
@@ -172,7 +177,8 @@
|
||||
{"label": "LBRC", "matrix": [2, 11], "x": 11.5, "y": 2.25},
|
||||
{"label": "RBRC", "matrix": [2, 12], "x": 12.5, "y": 2.25},
|
||||
{"label": "BSLS", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
|
||||
{"label": "DEL", "matrix": [2, 14], "x": 16.5, "y": 2.25},
|
||||
{"label": "DEL", "matrix": [2, 14], "x": 15, "y": 2.25},
|
||||
|
||||
{"label": "CAPS", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
|
||||
{"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
|
||||
{"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
|
||||
@@ -185,8 +191,9 @@
|
||||
{"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
|
||||
{"label": "SCLN", "matrix": [3, 10], "x": 10.75, "y": 3.25},
|
||||
{"label": "QUOT", "matrix": [3, 11], "x": 11.75, "y": 3.25},
|
||||
{"label": "ENT", "matrix": [3, 13], "x": 13.75, "y": 3.25, "w": 1.25},
|
||||
{"label": "PGUP", "matrix": [3, 14], "x": 16.5, "y": 3.25},
|
||||
{"label": "ENT", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
|
||||
{"label": "PGUP", "matrix": [3, 14], "x": 15, "y": 3.25},
|
||||
|
||||
{"label": "LSFT", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
|
||||
{"label": "Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
|
||||
{"label": "X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
|
||||
@@ -199,18 +206,19 @@
|
||||
{"label": "DOT", "matrix": [4, 10], "x": 10.25, "y": 4.25},
|
||||
{"label": "SLSH", "matrix": [4, 11], "x": 11.25, "y": 4.25},
|
||||
{"label": "RSFT", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 1.75},
|
||||
{"label": "UP", "matrix": [4, 13], "x": 15.25, "y": 4.25},
|
||||
{"label": "PGDN", "matrix": [4, 14], "x": 16.5, "y": 4.25},
|
||||
{"label": "UP", "matrix": [4, 13], "x": 14, "y": 4.25},
|
||||
{"label": "PGDN", "matrix": [4, 14], "x": 15, "y": 4.25},
|
||||
|
||||
{"label": "LCTL", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
|
||||
{"label": "LGUI", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
|
||||
{"label": "LALT", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
|
||||
{"label": "SPC", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
|
||||
{"label": "RALT", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
|
||||
{"label": "MO(1)", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
|
||||
{"label": "RCTL", "matrix": [5, 11], "x": 13, "y": 5.25, "w": 1.25},
|
||||
{"label": "LEFT", "matrix": [5, 12], "x": 14.25, "y": 5.25},
|
||||
{"label": "DOWN", "matrix": [5, 13], "x": 15.25, "y": 5.25},
|
||||
{"label": "RGHT", "matrix": [5, 14], "x": 16.5, "y": 5.25}
|
||||
{"label": "RALT", "matrix": [5, 9], "x": 10, "y": 5.25},
|
||||
{"label": "MO(1)", "matrix": [5, 10], "x": 11, "y": 5.25},
|
||||
{"label": "RCTL", "matrix": [5, 11], "x": 12, "y": 5.25},
|
||||
{"label": "LEFT", "matrix": [5, 12], "x": 13, "y": 5.25},
|
||||
{"label": "DOWN", "matrix": [5, 13], "x": 14, "y": 5.25},
|
||||
{"label": "RGHT", "matrix": [5, 14], "x": 15, "y": 5.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ enum layer_names
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_75_ansi(
|
||||
[_BASE] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_END,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL,
|
||||
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FnLay), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
),
|
||||
[_FnLay] = LAYOUT_75_ansi(
|
||||
[_FnLay] = LAYOUT(
|
||||
QK_BOOT, KC_MY_COMPUTER, KC_WWW_HOME, KC_CALCULATOR, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, KC_MAIL, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
|
||||
25
keyboards/acheron/themis/87h/87h.c
Normal file
25
keyboards/acheron/themis/87h/87h.c
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool res = led_update_user(led_state);
|
||||
if(res) {
|
||||
led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
33
keyboards/acheron/themis/87h/config.h
Normal file
33
keyboards/acheron/themis/87h/config.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2023 Gondolindrim <gondolindrim@acheronproject.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
#define RGBLED_NUM 1
|
||||
|
||||
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
|
||||
#define WS2812_PWM_DRIVER PWMD1
|
||||
#define WS2812_PWM_CHANNEL 3
|
||||
#define WS2812_PWM_PAL_MODE 1
|
||||
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
|
||||
#define WS2812_DMA_CHANNEL 6
|
||||
|
||||
#define WEAR_LEVELING_LOGICAL_SIZE 4096
|
||||
#define WEAR_LEVELING_BACKING_SIZE 8192
|
||||
22
keyboards/acheron/themis/87h/halconf.h
Normal file
22
keyboards/acheron/themis/87h/halconf.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 QMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
#define HAL_USE_PAL TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
136
keyboards/acheron/themis/87h/info.json
Normal file
136
keyboards/acheron/themis/87h/info.json
Normal file
@@ -0,0 +1,136 @@
|
||||
{
|
||||
"keyboard_name": "Themis 87H Rev. Alpha",
|
||||
"usb": {
|
||||
"pid": "0x5448",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ],
|
||||
"rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"lto": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true,
|
||||
"console": false,
|
||||
"backlight": false,
|
||||
"rgblight": true,
|
||||
"audio": false,
|
||||
"encoder": false,
|
||||
"nkro": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"ws2812": {
|
||||
"pin": "B15"
|
||||
},
|
||||
"processor": "STM32F401",
|
||||
"bootloader": "stm32-dfu",
|
||||
"community_layouts": ["tkl_ansi"],
|
||||
"layouts": {
|
||||
"LAYOUT_tkl_ansi": {
|
||||
"layout": [
|
||||
{"label":"Escape", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"label":"F1", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label":"F2", "matrix": [0, 2], "x": 3, "y": 0},
|
||||
{"label":"F3", "matrix": [0, 3], "x": 4, "y": 0},
|
||||
{"label":"F4", "matrix": [0, 4], "x": 5, "y": 0},
|
||||
|
||||
{"label":"F5", "matrix": [0, 5], "x": 6.5, "y": 0},
|
||||
{"label":"F6", "matrix": [0, 6], "x": 7.5, "y": 0},
|
||||
{"label":"F7", "matrix": [0, 7], "x": 8.5, "y": 0},
|
||||
{"label":"F8", "matrix": [0, 8], "x": 9.5, "y": 0},
|
||||
|
||||
{"label":"F9", "matrix": [0, 9], "x": 11, "y": 0},
|
||||
{"label":"F10", "matrix": [0, 10], "x": 12, "y": 0},
|
||||
{"label":"F11", "matrix": [0, 11], "x": 13, "y": 0},
|
||||
{"label":"F12", "matrix": [0, 12], "x": 14, "y": 0},
|
||||
|
||||
{"label":"Print Screen", "matrix": [6, 14], "x": 15.25, "y": 0},
|
||||
{"label":"Scroll Lock", "matrix": [6, 17], "x": 16.25, "y": 0},
|
||||
{"label":"Pause", "matrix": [6, 16], "x": 17.25, "y": 0},
|
||||
|
||||
{"label":"`~", "matrix": [1, 0], "x": 0, "y": 1.25},
|
||||
{"label":"1!", "matrix": [1, 1], "x": 1, "y": 1.25},
|
||||
{"label":"2@", "matrix": [1, 2], "x": 2, "y": 1.25},
|
||||
{"label":"3#", "matrix": [1, 3], "x": 3, "y": 1.25},
|
||||
{"label":"4$", "matrix": [1, 4], "x": 4, "y": 1.25},
|
||||
{"label":"5%", "matrix": [1, 5], "x": 5, "y": 1.25},
|
||||
{"label":"6^", "matrix": [1, 6], "x": 6, "y": 1.25},
|
||||
{"label":"7&", "matrix": [1, 7], "x": 7, "y": 1.25},
|
||||
{"label":"8*", "matrix": [1, 8], "x": 8, "y": 1.25},
|
||||
{"label":"9(", "matrix": [1, 9], "x": 9, "y": 1.25},
|
||||
{"label":"0)", "matrix": [1, 10], "x": 10, "y": 1.25},
|
||||
{"label":"-_", "matrix": [1, 11], "x": 11, "y": 1.25},
|
||||
{"label":"=+", "matrix": [1, 12], "x": 12, "y": 1.25},
|
||||
{"label":"Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
|
||||
|
||||
{"label":"Insert", "matrix": [7, 14], "x": 15.25, "y": 1.25},
|
||||
{"label":"Home", "matrix": [7, 17], "x": 16.25, "y": 1.25},
|
||||
{"label":"Page Up","matrix": [7, 16], "x": 17.25, "y": 1.25},
|
||||
|
||||
{"label":"Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
|
||||
{"label":"Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
|
||||
{"label":"W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
|
||||
{"label":"E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
|
||||
{"label":"R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
|
||||
{"label":"T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
|
||||
{"label":"Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
|
||||
{"label":"U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
|
||||
{"label":"I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
|
||||
{"label":"O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
|
||||
{"label":"P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
|
||||
{"label":"[{", "matrix": [2, 11], "x": 11.5, "y": 2.25},
|
||||
{"label":"]}", "matrix": [2, 12], "x": 12.5, "y": 2.25},
|
||||
{"label":"\\|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
|
||||
|
||||
{"label":"Delete", "matrix": [8, 14], "x": 15.25, "y": 2.25},
|
||||
{"label":"End", "matrix": [8, 17], "x": 16.25, "y": 2.25},
|
||||
{"label":"Page Down", "matrix": [8, 16], "x": 17.25, "y": 2.25},
|
||||
|
||||
{"label":"Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
|
||||
{"label":"A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
|
||||
{"label":"S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
|
||||
{"label":"D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
|
||||
{"label":"F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
|
||||
{"label":"G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
|
||||
{"label":"H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
|
||||
{"label":"J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
|
||||
{"label":"K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
|
||||
{"label":"L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
|
||||
{"label":";:", "matrix": [3, 10], "x": 10.75, "y": 3.25},
|
||||
{"label":"\'\"", "matrix": [3, 11], "x": 11.75, "y": 3.25},
|
||||
{"label":"Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25},
|
||||
|
||||
{"label":"Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
|
||||
{"label":"Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
|
||||
{"label":"X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
|
||||
{"label":"C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
|
||||
{"label":"V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
|
||||
{"label":"B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
|
||||
{"label":"N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
|
||||
{"label":"M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
|
||||
{"label":",<", "matrix": [4, 9], "x": 9.25, "y": 4.25},
|
||||
{"label":".>", "matrix": [4, 10], "x": 10.25, "y": 4.25},
|
||||
{"label":"/?", "matrix": [4, 11], "x": 11.25, "y": 4.25},
|
||||
{"label":"Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
|
||||
|
||||
{"label":"Up", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label":"LCtrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
|
||||
{"label":"Lwin", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
|
||||
{"label":"LAlt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
|
||||
{"label":"Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
|
||||
{"label":"RAlt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
|
||||
{"label":"RWin", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
|
||||
{"label":"MO(1)", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
|
||||
{"label":"RCtrl", "matrix": [5, 12], "x": 13.75, "y": 5.25, "w": 1.25},
|
||||
|
||||
{"label":"Left", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label":"Down", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label":"Right", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
37
keyboards/acheron/themis/87h/keymaps/default/keymap.c
Executable file
37
keyboards/acheron/themis/87h/keymaps/default/keymap.c
Executable file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_ansi(
|
||||
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS ,
|
||||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP ,
|
||||
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
|
||||
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
|
||||
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_tkl_ansi(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
37
keyboards/acheron/themis/87h/keymaps/via/keymap.c
Executable file
37
keyboards/acheron/themis/87h/keymaps/via/keymap.c
Executable file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_ansi(
|
||||
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS ,
|
||||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP ,
|
||||
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
|
||||
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
|
||||
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_tkl_ansi(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
25
keyboards/acheron/themis/87h/mcuconf.h
Normal file
25
keyboards/acheron/themis/87h/mcuconf.h
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Copyright 2020 QMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_ADVANCED
|
||||
#define STM32_PWM_USE_ADVANCED TRUE
|
||||
|
||||
#undef STM32_PWM_USE_TIM1
|
||||
#define STM32_PWM_USE_TIM1 TRUE
|
||||
0
keyboards/acheron/themis/87h/rules.mk
Normal file
0
keyboards/acheron/themis/87h/rules.mk
Normal file
25
keyboards/acheron/themis/87htsc/87htsc.c
Normal file
25
keyboards/acheron/themis/87htsc/87htsc.c
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool res = led_update_user(led_state);
|
||||
if(res) {
|
||||
led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
33
keyboards/acheron/themis/87htsc/config.h
Normal file
33
keyboards/acheron/themis/87htsc/config.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2023 Gondolindrim <gondolindrim@acheronproject.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
#define RGBLED_NUM 1
|
||||
|
||||
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
|
||||
#define WS2812_PWM_DRIVER PWMD1
|
||||
#define WS2812_PWM_CHANNEL 3
|
||||
#define WS2812_PWM_PAL_MODE 1
|
||||
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
|
||||
#define WS2812_DMA_CHANNEL 6
|
||||
|
||||
#define WEAR_LEVELING_LOGICAL_SIZE 4096
|
||||
#define WEAR_LEVELING_BACKING_SIZE 8192
|
||||
22
keyboards/acheron/themis/87htsc/halconf.h
Normal file
22
keyboards/acheron/themis/87htsc/halconf.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 QMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
#define HAL_USE_PAL TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
135
keyboards/acheron/themis/87htsc/info.json
Normal file
135
keyboards/acheron/themis/87htsc/info.json
Normal file
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"keyboard_name": "Themis 87H-T-SC Rev. Alpha",
|
||||
"usb": {
|
||||
"pid": "0x5449",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ],
|
||||
"rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"lto": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true,
|
||||
"console": false,
|
||||
"backlight": false,
|
||||
"rgblight": true,
|
||||
"audio": false,
|
||||
"encoder": false,
|
||||
"nkro": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"ws2812": {
|
||||
"pin": "B15"
|
||||
},
|
||||
"processor": "STM32F401",
|
||||
"bootloader": "stm32-dfu",
|
||||
"community_layouts": ["tkl_ansi_tsangan"],
|
||||
"layouts": {
|
||||
"LAYOUT_tkl_ansi_tsangan": {
|
||||
"layout": [
|
||||
{"label":"Escape", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"label":"F1", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label":"F2", "matrix": [0, 2], "x": 3, "y": 0},
|
||||
{"label":"F3", "matrix": [0, 3], "x": 4, "y": 0},
|
||||
{"label":"F4", "matrix": [0, 4], "x": 5, "y": 0},
|
||||
|
||||
{"label":"F5", "matrix": [0, 6], "x": 6.5, "y": 0},
|
||||
{"label":"F6", "matrix": [0, 7], "x": 7.5, "y": 0},
|
||||
{"label":"F7", "matrix": [0, 8], "x": 8.5, "y": 0},
|
||||
{"label":"F8", "matrix": [0, 9], "x": 9.5, "y": 0},
|
||||
|
||||
{"label":"F9", "matrix": [0, 10], "x": 11, "y": 0},
|
||||
{"label":"F10", "matrix": [0, 11], "x": 12, "y": 0},
|
||||
{"label":"F11", "matrix": [0, 12], "x": 13, "y": 0},
|
||||
{"label":"F12", "matrix": [0, 13], "x": 14, "y": 0},
|
||||
|
||||
{"label":"Print Screen", "matrix": [6, 14], "x": 15.25, "y": 0},
|
||||
{"label":"Scroll Lock", "matrix": [6, 17], "x": 16.25, "y": 0},
|
||||
{"label":"Pause", "matrix": [6, 16], "x": 17.25, "y": 0},
|
||||
|
||||
{"label":"`~", "matrix": [1, 0], "x": 0, "y": 1.25},
|
||||
{"label":"1!", "matrix": [1, 1], "x": 1, "y": 1.25},
|
||||
{"label":"2@", "matrix": [1, 2], "x": 2, "y": 1.25},
|
||||
{"label":"3#", "matrix": [1, 3], "x": 3, "y": 1.25},
|
||||
{"label":"4$", "matrix": [1, 4], "x": 4, "y": 1.25},
|
||||
{"label":"5%", "matrix": [1, 5], "x": 5, "y": 1.25},
|
||||
{"label":"6^", "matrix": [1, 6], "x": 6, "y": 1.25},
|
||||
{"label":"7&", "matrix": [1, 7], "x": 7, "y": 1.25},
|
||||
{"label":"8*", "matrix": [1, 8], "x": 8, "y": 1.25},
|
||||
{"label":"9(", "matrix": [1, 9], "x": 9, "y": 1.25},
|
||||
{"label":"0)", "matrix": [1, 10], "x": 10, "y": 1.25},
|
||||
{"label":"-_", "matrix": [1, 11], "x": 11, "y": 1.25},
|
||||
{"label":"=+", "matrix": [1, 12], "x": 12, "y": 1.25},
|
||||
{"label":"Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
|
||||
|
||||
{"label":"Insert", "matrix": [7, 14], "x": 15.25, "y": 1.25},
|
||||
{"label":"Home", "matrix": [7, 17], "x": 16.25, "y": 1.25},
|
||||
{"label":"Page Up","matrix": [7, 16], "x": 17.25, "y": 1.25},
|
||||
|
||||
{"label":"Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
|
||||
{"label":"Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
|
||||
{"label":"W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
|
||||
{"label":"E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
|
||||
{"label":"R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
|
||||
{"label":"T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
|
||||
{"label":"Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
|
||||
{"label":"U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
|
||||
{"label":"I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
|
||||
{"label":"O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
|
||||
{"label":"P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
|
||||
{"label":"[{", "matrix": [2, 11], "x": 11.5, "y": 2.25},
|
||||
{"label":"]}", "matrix": [2, 12], "x": 12.5, "y": 2.25},
|
||||
{"label":"\\|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
|
||||
|
||||
{"label":"Delete", "matrix": [8, 14], "x": 15.25, "y": 2.25},
|
||||
{"label":"End", "matrix": [8, 17], "x": 16.25, "y": 2.25},
|
||||
{"label":"Page Down", "matrix": [8, 16], "x": 17.25, "y": 2.25},
|
||||
|
||||
{"label":"Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
|
||||
{"label":"A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
|
||||
{"label":"S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
|
||||
{"label":"D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
|
||||
{"label":"F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
|
||||
{"label":"G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
|
||||
{"label":"H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
|
||||
{"label":"J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
|
||||
{"label":"K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
|
||||
{"label":"L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
|
||||
{"label":";:", "matrix": [3, 10], "x": 10.75, "y": 3.25},
|
||||
{"label":"\'\"", "matrix": [3, 11], "x": 11.75, "y": 3.25},
|
||||
{"label":"Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25},
|
||||
|
||||
{"label":"Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
|
||||
{"label":"Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
|
||||
{"label":"X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
|
||||
{"label":"C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
|
||||
{"label":"V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
|
||||
{"label":"B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
|
||||
{"label":"N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
|
||||
{"label":"M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
|
||||
{"label":",<", "matrix": [4, 9], "x": 9.25, "y": 4.25},
|
||||
{"label":".>", "matrix": [4, 10], "x": 10.25, "y": 4.25},
|
||||
{"label":"/?", "matrix": [4, 11], "x": 11.25, "y": 4.25},
|
||||
{"label":"Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
|
||||
|
||||
{"label":"Up", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label":"LCtrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label":"Lwin", "matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"label":"LAlt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label":"Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
|
||||
{"label":"RAlt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label":"RWin", "matrix": [5, 11], "x": 12.5, "y": 5.25},
|
||||
{"label":"RCtrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label":"Left", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label":"Down", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label":"Right", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
37
keyboards/acheron/themis/87htsc/keymaps/default/keymap.c
Executable file
37
keyboards/acheron/themis/87htsc/keymaps/default/keymap.c
Executable file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
Copyright 2023 Gondolindrim
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_ansi_tsangan(
|
||||
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS ,
|
||||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP ,
|
||||
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
|
||||
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
|
||||
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_tkl_ansi_tsangan(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
37
keyboards/acheron/themis/87htsc/keymaps/via/keymap.c
Executable file
37
keyboards/acheron/themis/87htsc/keymaps/via/keymap.c
Executable file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
Copyright 2023 Gondolindrim
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_ansi_tsangan(
|
||||
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_PSCR, KC_SCRL, KC_PAUS ,
|
||||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP ,
|
||||
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
|
||||
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
|
||||
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_tkl_ansi_tsangan(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
1
keyboards/acheron/themis/87htsc/keymaps/via/rules.mk
Normal file
1
keyboards/acheron/themis/87htsc/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
25
keyboards/acheron/themis/87htsc/mcuconf.h
Normal file
25
keyboards/acheron/themis/87htsc/mcuconf.h
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Copyright 2020 QMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_ADVANCED
|
||||
#define STM32_PWM_USE_ADVANCED TRUE
|
||||
|
||||
#undef STM32_PWM_USE_TIM1
|
||||
#define STM32_PWM_USE_TIM1 TRUE
|
||||
0
keyboards/acheron/themis/87htsc/rules.mk
Normal file
0
keyboards/acheron/themis/87htsc/rules.mk
Normal file
25
keyboards/acheron/themis/88htsc/88htsc.c
Normal file
25
keyboards/acheron/themis/88htsc/88htsc.c
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool res = led_update_user(led_state);
|
||||
if(res) {
|
||||
led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
33
keyboards/acheron/themis/88htsc/config.h
Normal file
33
keyboards/acheron/themis/88htsc/config.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2023 Gondolindrim <gondolindrim@acheronproject.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
#define RGBLED_NUM 1
|
||||
|
||||
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
|
||||
#define WS2812_PWM_DRIVER PWMD1
|
||||
#define WS2812_PWM_CHANNEL 3
|
||||
#define WS2812_PWM_PAL_MODE 1
|
||||
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
|
||||
#define WS2812_DMA_CHANNEL 6
|
||||
|
||||
#define WEAR_LEVELING_LOGICAL_SIZE 4096
|
||||
#define WEAR_LEVELING_BACKING_SIZE 8192
|
||||
22
keyboards/acheron/themis/88htsc/halconf.h
Normal file
22
keyboards/acheron/themis/88htsc/halconf.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2020 QMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
#define HAL_USE_PAL TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
137
keyboards/acheron/themis/88htsc/info.json
Normal file
137
keyboards/acheron/themis/88htsc/info.json
Normal file
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"keyboard_name": "Themis 88H-T-SC Rev. Alpha",
|
||||
"usb": {
|
||||
"pid": "0x5450",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ],
|
||||
"rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"lto": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true,
|
||||
"console": false,
|
||||
"backlight": false,
|
||||
"rgblight": true,
|
||||
"audio": false,
|
||||
"encoder": false,
|
||||
"nkro": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"ws2812": {
|
||||
"pin": "B15"
|
||||
},
|
||||
"processor": "STM32F401",
|
||||
"bootloader": "stm32-dfu",
|
||||
"community_layouts": ["tkl_f13_ansi_tsangan"],
|
||||
"layouts": {
|
||||
"LAYOUT_tkl_f13_ansi_tsangan": {
|
||||
"layout": [
|
||||
{"label":"Escape", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"label":"F1", "matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"label":"F2", "matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"label":"F3", "matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"label":"F4", "matrix": [0, 4], "x": 4.25, "y": 0},
|
||||
|
||||
{"label":"F5", "matrix": [0, 5], "x": 5.5, "y": 0},
|
||||
{"label":"F6", "matrix": [0, 6], "x": 6.5, "y": 0},
|
||||
{"label":"F7", "matrix": [0, 7], "x": 7.5, "y": 0},
|
||||
{"label":"F8", "matrix": [0, 8], "x": 8.5, "y": 0},
|
||||
|
||||
{"label":"F9", "matrix": [0, 9], "x": 9.75, "y": 0},
|
||||
{"label":"F10", "matrix": [0, 10], "x": 10.75, "y": 0},
|
||||
{"label":"F11", "matrix": [0, 11], "x": 11.75, "y": 0},
|
||||
{"label":"F12", "matrix": [0, 12], "x": 12.75, "y": 0},
|
||||
|
||||
{"label":"F13", "matrix": [0, 13], "x": 14, "y": 0},
|
||||
|
||||
{"label":"Print Screen", "matrix": [6, 14], "x": 15.25, "y": 0},
|
||||
{"label":"Scroll Lock", "matrix": [6, 17], "x": 16.25, "y": 0},
|
||||
{"label":"Pause", "matrix": [6, 16], "x": 17.25, "y": 0},
|
||||
|
||||
{"label":"`~", "matrix": [1, 0], "x": 0, "y": 1.25},
|
||||
{"label":"1!", "matrix": [1, 1], "x": 1, "y": 1.25},
|
||||
{"label":"2@", "matrix": [1, 2], "x": 2, "y": 1.25},
|
||||
{"label":"3#", "matrix": [1, 3], "x": 3, "y": 1.25},
|
||||
{"label":"4$", "matrix": [1, 4], "x": 4, "y": 1.25},
|
||||
{"label":"5%", "matrix": [1, 5], "x": 5, "y": 1.25},
|
||||
{"label":"6^", "matrix": [1, 6], "x": 6, "y": 1.25},
|
||||
{"label":"7&", "matrix": [1, 7], "x": 7, "y": 1.25},
|
||||
{"label":"8*", "matrix": [1, 8], "x": 8, "y": 1.25},
|
||||
{"label":"9(", "matrix": [1, 9], "x": 9, "y": 1.25},
|
||||
{"label":"0)", "matrix": [1, 10], "x": 10, "y": 1.25},
|
||||
{"label":"-_", "matrix": [1, 11], "x": 11, "y": 1.25},
|
||||
{"label":"=+", "matrix": [1, 12], "x": 12, "y": 1.25},
|
||||
{"label":"Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
|
||||
|
||||
{"label":"Insert", "matrix": [7, 14], "x": 15.25, "y": 1.25},
|
||||
{"label":"Home", "matrix": [7, 17], "x": 16.25, "y": 1.25},
|
||||
{"label":"Page Up","matrix": [7, 16], "x": 17.25, "y": 1.25},
|
||||
|
||||
{"label":"Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
|
||||
{"label":"Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
|
||||
{"label":"W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
|
||||
{"label":"E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
|
||||
{"label":"R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
|
||||
{"label":"T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
|
||||
{"label":"Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
|
||||
{"label":"U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
|
||||
{"label":"I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
|
||||
{"label":"O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
|
||||
{"label":"P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
|
||||
{"label":"[{", "matrix": [2, 11], "x": 11.5, "y": 2.25},
|
||||
{"label":"]}", "matrix": [2, 12], "x": 12.5, "y": 2.25},
|
||||
{"label":"\\|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
|
||||
|
||||
{"label":"Delete", "matrix": [8, 14], "x": 15.25, "y": 2.25},
|
||||
{"label":"End", "matrix": [8, 17], "x": 16.25, "y": 2.25},
|
||||
{"label":"Page Down", "matrix": [8, 16], "x": 17.25, "y": 2.25},
|
||||
|
||||
{"label":"Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
|
||||
{"label":"A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
|
||||
{"label":"S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
|
||||
{"label":"D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
|
||||
{"label":"F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
|
||||
{"label":"G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
|
||||
{"label":"H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
|
||||
{"label":"J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
|
||||
{"label":"K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
|
||||
{"label":"L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
|
||||
{"label":";:", "matrix": [3, 10], "x": 10.75, "y": 3.25},
|
||||
{"label":"\'\"", "matrix": [3, 11], "x": 11.75, "y": 3.25},
|
||||
{"label":"Enter", "matrix": [3, 12], "x": 12.75, "y": 3.25, "w": 2.25},
|
||||
|
||||
{"label":"Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
|
||||
{"label":"Z", "matrix": [4, 2], "x": 2.25, "y": 4.25},
|
||||
{"label":"X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
|
||||
{"label":"C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
|
||||
{"label":"V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
|
||||
{"label":"B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
|
||||
{"label":"N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
|
||||
{"label":"M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
|
||||
{"label":",<", "matrix": [4, 9], "x": 9.25, "y": 4.25},
|
||||
{"label":".>", "matrix": [4, 10], "x": 10.25, "y": 4.25},
|
||||
{"label":"/?", "matrix": [4, 11], "x": 11.25, "y": 4.25},
|
||||
{"label":"Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
|
||||
|
||||
{"label":"Up", "matrix": [4, 15], "x": 16.25, "y": 4.25},
|
||||
|
||||
{"label":"LCtrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"label":"Lwin", "matrix": [5, 1], "x": 1.5, "y": 5.25},
|
||||
{"label":"LAlt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
|
||||
{"label":"Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
|
||||
{"label":"RAlt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
|
||||
{"label":"RWin", "matrix": [5, 11], "x": 12.5, "y": 5.25},
|
||||
{"label":"RCtrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
|
||||
|
||||
{"label":"Left", "matrix": [5, 14], "x": 15.25, "y": 5.25},
|
||||
{"label":"Down", "matrix": [5, 15], "x": 16.25, "y": 5.25},
|
||||
{"label":"Right", "matrix": [5, 16], "x": 17.25, "y": 5.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
37
keyboards/acheron/themis/88htsc/keymaps/default/keymap.c
Executable file
37
keyboards/acheron/themis/88htsc/keymaps/default/keymap.c
Executable file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
Copyright 2023 Gondolindrim
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_f13_ansi_tsangan(
|
||||
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13, KC_PSCR, KC_SCRL, KC_PAUS ,
|
||||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP ,
|
||||
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
|
||||
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
|
||||
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_tkl_f13_ansi_tsangan(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
37
keyboards/acheron/themis/88htsc/keymaps/via/keymap.c
Executable file
37
keyboards/acheron/themis/88htsc/keymaps/via/keymap.c
Executable file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
Copyright 2023 Gondolindrim
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_tkl_f13_ansi_tsangan(
|
||||
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13, KC_PSCR, KC_SCRL, KC_PAUS ,
|
||||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP ,
|
||||
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
|
||||
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
|
||||
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT, KC_UP ,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC , KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[1] = LAYOUT_tkl_f13_ansi_tsangan(
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
1
keyboards/acheron/themis/88htsc/keymaps/via/rules.mk
Normal file
1
keyboards/acheron/themis/88htsc/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
25
keyboards/acheron/themis/88htsc/mcuconf.h
Normal file
25
keyboards/acheron/themis/88htsc/mcuconf.h
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Copyright 2020 QMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_ADVANCED
|
||||
#define STM32_PWM_USE_ADVANCED TRUE
|
||||
|
||||
#undef STM32_PWM_USE_TIM1
|
||||
#define STM32_PWM_USE_TIM1 TRUE
|
||||
0
keyboards/acheron/themis/88htsc/rules.mk
Normal file
0
keyboards/acheron/themis/88htsc/rules.mk
Normal file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user