forked from mirror/qmk_firmware
Compare commits
123 Commits
0.22.9
...
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 |
25
.github/workflows/lint.yml
vendored
25
.github/workflows/lint.yml
vendored
@@ -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
|
||||
|
||||
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 }}
|
||||
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -108,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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -138,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.
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
@@ -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
|
||||
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
8
keyboards/acheron/themis/info.json
Normal file
8
keyboards/acheron/themis/info.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"manufacturer": "AcheronProject",
|
||||
"url": "",
|
||||
"maintainer": "Gondolindrim",
|
||||
"usb": {
|
||||
"vid": "0xAC11"
|
||||
}
|
||||
}
|
||||
23
keyboards/acheron/themis/readme.md
Normal file
23
keyboards/acheron/themis/readme.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Acheron Themis QMK firmware
|
||||
|
||||

|
||||
|
||||
The Themis is Acheron Project's open-source, freely available tenkeyless (TKL) keyboard Printed Circuit Boards (PCB) which features:
|
||||
|
||||
- No LED lighting
|
||||
- Solderless ("hotswap") MX switches support
|
||||
- Fixed layout for each variant
|
||||
|
||||
* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
|
||||
* Hardware Supported: open-source PCB using the [Joker template](https://acheronproject.com/joker_mcus/joker/). First units were manufactured using STM32F4x1 microcontroller;
|
||||
* Hardware Availability: open-source PCBs
|
||||
|
||||
In order to flash this PCB, first build the default layout (after setting up your build environment):
|
||||
|
||||
make acheron/themis/<revision>:default
|
||||
|
||||
After building or downloading the firmware, put the PCB into DFU mode by holding the reset button for at least five seconds and upload the firmware onto the microcontroller through a utility like `dfu-util` or QMK Toolbox. Alternatively, you can build and flash using:
|
||||
|
||||
make acheron/themis/<revision>: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).
|
||||
6
keyboards/ai03/duet/config.h
Normal file
6
keyboards/ai03/duet/config.h
Normal file
@@ -0,0 +1,6 @@
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 128
|
||||
139
keyboards/ai03/duet/info.json
Normal file
139
keyboards/ai03/duet/info.json
Normal file
@@ -0,0 +1,139 @@
|
||||
{
|
||||
"manufacturer": "ai03 Design Studio",
|
||||
"keyboard_name": "Duet Switch Tester",
|
||||
"maintainer": "ai03-2725",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": false,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP18", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6"],
|
||||
"rows": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0028",
|
||||
"vid": "0xA103"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4.5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6.75, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7.75, "y": 0},
|
||||
{"matrix": [0, 8], "x": 9, "y": 0},
|
||||
{"matrix": [0, 9], "x": 10, "y": 0},
|
||||
{"matrix": [0, 10], "x": 11.25, "y": 0},
|
||||
{"matrix": [0, 11], "x": 12.25, "y": 0},
|
||||
{"matrix": [0, 12], "x": 13.5, "y": 0},
|
||||
{"matrix": [0, 13], "x": 14.5, "y": 0},
|
||||
{"matrix": [0, 14], "x": 15.75, "y": 0},
|
||||
{"matrix": [0, 15], "x": 16.75, "y": 0},
|
||||
{"matrix": [0, 16], "x": 18, "y": 0},
|
||||
{"matrix": [0, 17], "x": 19, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.25, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.25, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.75, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.75, "y": 1},
|
||||
{"matrix": [1, 8], "x": 9, "y": 1},
|
||||
{"matrix": [1, 9], "x": 10, "y": 1},
|
||||
{"matrix": [1, 10], "x": 11.25, "y": 1},
|
||||
{"matrix": [1, 11], "x": 12.25, "y": 1},
|
||||
{"matrix": [1, 12], "x": 13.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 14.5, "y": 1},
|
||||
{"matrix": [1, 14], "x": 15.75, "y": 1},
|
||||
{"matrix": [1, 15], "x": 16.75, "y": 1},
|
||||
{"matrix": [1, 16], "x": 18, "y": 1},
|
||||
{"matrix": [1, 17], "x": 19, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.25, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.25, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.5, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.5, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 9, "y": 2},
|
||||
{"matrix": [2, 9], "x": 10, "y": 2},
|
||||
{"matrix": [2, 10], "x": 11.25, "y": 2},
|
||||
{"matrix": [2, 11], "x": 12.25, "y": 2},
|
||||
{"matrix": [2, 12], "x": 13.5, "y": 2},
|
||||
{"matrix": [2, 13], "x": 14.5, "y": 2},
|
||||
{"matrix": [2, 14], "x": 15.75, "y": 2},
|
||||
{"matrix": [2, 15], "x": 16.75, "y": 2},
|
||||
{"matrix": [2, 16], "x": 18, "y": 2},
|
||||
{"matrix": [2, 17], "x": 19, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.5, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.75, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.75, "y": 3},
|
||||
{"matrix": [3, 8], "x": 9, "y": 3},
|
||||
{"matrix": [3, 9], "x": 10, "y": 3},
|
||||
{"matrix": [3, 10], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 12.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 13.5, "y": 3},
|
||||
{"matrix": [3, 13], "x": 14.5, "y": 3},
|
||||
{"matrix": [3, 14], "x": 15.75, "y": 3},
|
||||
{"matrix": [3, 15], "x": 16.75, "y": 3},
|
||||
{"matrix": [3, 16], "x": 18, "y": 3},
|
||||
{"matrix": [3, 17], "x": 19, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4},
|
||||
{"matrix": [4, 1], "x": 1, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 4},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 4},
|
||||
{"matrix": [4, 4], "x": 4.5, "y": 4},
|
||||
{"matrix": [4, 5], "x": 5.5, "y": 4},
|
||||
{"matrix": [4, 6], "x": 6.75, "y": 4},
|
||||
{"matrix": [4, 7], "x": 7.75, "y": 4},
|
||||
{"matrix": [4, 8], "x": 9, "y": 4},
|
||||
{"matrix": [4, 9], "x": 10, "y": 4},
|
||||
{"matrix": [4, 10], "x": 11.25, "y": 4},
|
||||
{"matrix": [4, 11], "x": 12.25, "y": 4},
|
||||
{"matrix": [4, 12], "x": 13.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 14.5, "y": 4},
|
||||
{"matrix": [4, 14], "x": 15.75, "y": 4},
|
||||
{"matrix": [4, 15], "x": 16.75, "y": 4},
|
||||
{"matrix": [4, 16], "x": 18, "y": 4},
|
||||
{"matrix": [4, 17], "x": 19, "y": 4},
|
||||
{"matrix": [5, 0], "x": 0, "y": 5},
|
||||
{"matrix": [5, 1], "x": 1, "y": 5},
|
||||
{"matrix": [5, 2], "x": 2.25, "y": 5},
|
||||
{"matrix": [5, 3], "x": 3.25, "y": 5},
|
||||
{"matrix": [5, 4], "x": 4.5, "y": 5},
|
||||
{"matrix": [5, 5], "x": 5.5, "y": 5},
|
||||
{"matrix": [5, 6], "x": 6.75, "y": 5},
|
||||
{"matrix": [5, 7], "x": 7.75, "y": 5},
|
||||
{"matrix": [5, 8], "x": 9, "y": 5},
|
||||
{"matrix": [5, 9], "x": 10, "y": 5},
|
||||
{"matrix": [5, 10], "x": 11.25, "y": 5},
|
||||
{"matrix": [5, 11], "x": 12.25, "y": 5},
|
||||
{"matrix": [5, 12], "x": 13.5, "y": 5},
|
||||
{"matrix": [5, 13], "x": 14.5, "y": 5},
|
||||
{"matrix": [5, 14], "x": 15.75, "y": 5},
|
||||
{"matrix": [5, 15], "x": 16.75, "y": 5},
|
||||
{"matrix": [5, 16], "x": 18, "y": 5},
|
||||
{"matrix": [5, 17], "x": 19, "y": 5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
34
keyboards/ai03/duet/keymaps/coordinate/keymap.c
Normal file
34
keyboards/ai03/duet/keymaps/coordinate/keymap.c
Normal file
@@ -0,0 +1,34 @@
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
|
||||
/* Coordinate keymap - designed to send a string in the format [a-r][0-5] corresponding to the matrix position, where a0 is the top left and r5 is bottom right */
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
/* String generation */
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
if (record->event.pressed) {
|
||||
char col = record->event.key.col + 'a';
|
||||
char row = record->event.key.row + '0';
|
||||
char result[2] = {col, row};
|
||||
send_string(result);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
4
keyboards/ai03/duet/keymaps/coordinate/readme.md
Normal file
4
keyboards/ai03/duet/keymaps/coordinate/readme.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# The coordinate keymap for Duet
|
||||
|
||||
An example keymap which sends a string `[a-r][0-5]` corresponding to the column-row position of the pressed switch.
|
||||
Possibly useful for pairing to a kiosk device provided the display application can parse and handle this format.
|
||||
14
keyboards/ai03/duet/keymaps/default/keymap.c
Normal file
14
keyboards/ai03/duet/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,14 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
|
||||
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0
|
||||
),
|
||||
};
|
||||
4
keyboards/ai03/duet/keymaps/default/readme.md
Normal file
4
keyboards/ai03/duet/keymaps/default/readme.md
Normal file
@@ -0,0 +1,4 @@
|
||||
# The default keymap for Duet
|
||||
|
||||
Since this is a very irregular keyboard with unique use cases, the keymap should be customized to meet one's needs and to match the requirements of the corresponding display software (if any).
|
||||
By default, all keys send `KC_0` to simply notify the host that an arbitrary key has been pressed.
|
||||
28
keyboards/ai03/duet/readme.md
Normal file
28
keyboards/ai03/duet/readme.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Duet Switch Tester
|
||||
|
||||

|
||||
|
||||
A switch tester intended for event/storefront use
|
||||
|
||||
* Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
|
||||
* Hardware Supported: The [Duet PCB](https://github.com/ai03-2725/duet-switch-tester/tree/main/Duet-MainPCB), powered by the RP2040
|
||||
* Hardware Availability: [Open-source](https://github.com/ai03-2725/duet-switch-tester)
|
||||
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ai03/duet:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make ai03/duet:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Press the reset button on the back of the PCB while holding the Bootmode switch
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
||||
1
keyboards/ai03/duet/rules.mk
Normal file
1
keyboards/ai03/duet/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
||||
190
keyboards/akko/5087/5087.c
Normal file
190
keyboards/akko/5087/5087.c
Normal file
@@ -0,0 +1,190 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
// clang-format off
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
* | | | B location
|
||||
* | | | | */
|
||||
/*row0*/
|
||||
{1, A_1, B_1, C_1},
|
||||
{1, A_2, B_2, C_2},
|
||||
{1, A_3, B_3, C_3},
|
||||
{1, A_4, B_4, C_4},
|
||||
{1, A_5, B_5, C_5},
|
||||
{1, A_6, B_6, C_6},
|
||||
{1, A_7, B_7, C_7},
|
||||
{1, A_8, B_8, C_8},
|
||||
{1, A_9, B_9, C_9},
|
||||
{1, A_10, B_10, C_10},
|
||||
{1, A_11, B_11, C_11},
|
||||
{1, A_12, B_12, C_12},
|
||||
{1, A_13, B_13, C_13},
|
||||
{1, A_14, B_14, C_14},
|
||||
{1, A_15, B_15, C_15},
|
||||
{1, A_16, B_16, C_16},
|
||||
|
||||
/*row1*/
|
||||
{0, A_1, B_1, C_1},
|
||||
{0, A_2, B_2, C_2},
|
||||
{0, A_3, B_3, C_3},
|
||||
{0, A_4, B_4, C_4},
|
||||
{0, A_5, B_5, C_5},
|
||||
{0, A_6, B_6, C_6},
|
||||
{0, A_7, B_7, C_7},
|
||||
{0, A_8, B_8, C_8},
|
||||
{0, A_9, B_9, C_9},
|
||||
{0, A_10, B_10, C_10},
|
||||
{0, A_11, B_11, C_11},
|
||||
{0, A_12, B_12, C_12},
|
||||
{0, A_13, B_13, C_13},
|
||||
{0, A_14, B_14, C_14},
|
||||
{1, D_1, E_1, F_1},
|
||||
{1, D_2, E_2, F_2},
|
||||
{1, D_3, E_3, F_3},
|
||||
|
||||
/*row2*/
|
||||
{0, D_1, E_1, F_1},
|
||||
{0, D_2, E_2, F_2},
|
||||
{0, D_3, E_3, F_3},
|
||||
{0, D_4, E_4, F_4},
|
||||
{0, D_5, E_5, F_5},
|
||||
{0, D_6, E_6, F_6},
|
||||
{0, D_7, E_7, F_7},
|
||||
{0, D_8, E_8, F_8},
|
||||
{0, D_9, E_9, F_9},
|
||||
{0, D_10, E_10, F_10},
|
||||
{0, D_11, E_11, F_11},
|
||||
{0, D_12, E_12, F_12},
|
||||
{0, D_13, E_13, F_13},
|
||||
{0, D_14, E_14, F_14},
|
||||
{1, G_1, H_1, I_1},
|
||||
{1, G_2, H_2, I_2},
|
||||
{1, G_3, H_3, I_3},
|
||||
|
||||
/*row3*/
|
||||
{0, G_1, H_1, I_1},
|
||||
{0, G_2, H_2, I_2},
|
||||
{0, G_3, H_3, I_3},
|
||||
{0, G_4, H_4, I_4},
|
||||
{0, G_5, H_5, I_5},
|
||||
{0, G_6, H_6, I_6},
|
||||
{0, G_7, H_7, I_7},
|
||||
{0, G_8, H_8, I_8},
|
||||
{0, G_9, H_9, I_9},
|
||||
{0, G_10, H_10, I_10},
|
||||
{0, G_11, H_11, I_11},
|
||||
{0, G_12, H_12, I_12},
|
||||
{0, G_13, H_13, I_13},
|
||||
|
||||
/*row4*/
|
||||
{0, J_1, K_1, L_1},
|
||||
{0, J_2, K_2, L_2},
|
||||
{0, J_3, K_3, L_3},
|
||||
{0, J_4, K_4, L_4},
|
||||
{0, J_5, K_5, L_5},
|
||||
{0, J_6, K_6, L_6},
|
||||
{0, J_7, K_7, L_7},
|
||||
{0, J_8, K_8, L_8},
|
||||
{0, J_9, K_9, L_9},
|
||||
{0, J_10, K_10, L_10},
|
||||
{0, J_11, K_11, L_11},
|
||||
{0, J_12, K_12, L_12},
|
||||
{1, J_4, K_4, L_4},
|
||||
|
||||
/*row5*/
|
||||
{0, J_13, K_13, L_13},
|
||||
{0, J_14, K_14, L_14},
|
||||
{0, J_15, K_15, L_15},
|
||||
{0, J_16, K_16, L_16},
|
||||
{0, G_14, H_14, I_14},
|
||||
{0, G_15, H_15, I_15},
|
||||
{0, G_16, H_16, I_16},
|
||||
{0, D_15, E_15, F_15},
|
||||
{1, J_1, K_1, L_1},
|
||||
{1, J_2, K_2, L_2},
|
||||
{1, J_3, K_3, L_3},
|
||||
};
|
||||
#endif // RGB_MATRIX_ENABLE
|
||||
|
||||
enum __layers {
|
||||
WIN_B,
|
||||
WIN_W,
|
||||
WIN_FN,
|
||||
MAC_B,
|
||||
MAC_W,
|
||||
MAC_FN,
|
||||
};
|
||||
|
||||
// clang-format on
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
setPinOutput(LED_MAC_OS_PIN); // LDE2 MAC\WIN
|
||||
writePinLow(LED_MAC_OS_PIN);
|
||||
setPinOutput(LED_WIN_LOCK_PIN); // LED3 Win Lock
|
||||
writePinLow(LED_WIN_LOCK_PIN);
|
||||
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
void housekeeping_task_kb(void){
|
||||
writePin(LED_MAC_OS_PIN, (get_highest_layer(default_layer_state) == 3));
|
||||
writePin(LED_WIN_LOCK_PIN, keymap_config.no_gui);
|
||||
}
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
|
||||
if (!process_record_user(keycode, record)) {
|
||||
return false;
|
||||
}
|
||||
switch (keycode) {
|
||||
case DF(WIN_B):
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(WIN_B);
|
||||
}
|
||||
return false;
|
||||
case DF(MAC_B):
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(MAC_B);
|
||||
keymap_config.no_gui = 0;
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
}
|
||||
return false;
|
||||
case RGB_TOG:
|
||||
if (record->event.pressed) {
|
||||
switch (rgb_matrix_get_flags()) {
|
||||
case LED_FLAG_ALL: {
|
||||
rgb_matrix_set_flags(LED_FLAG_NONE);
|
||||
rgb_matrix_set_color_all(0, 0, 0);
|
||||
} break;
|
||||
default: {
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
} break;
|
||||
}
|
||||
}
|
||||
if (!rgb_matrix_is_enabled()) {
|
||||
rgb_matrix_set_flags(LED_FLAG_ALL);
|
||||
rgb_matrix_enable();
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
52
keyboards/akko/5087/config.h
Normal file
52
keyboards/akko/5087/config.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
/* LED Indicators */
|
||||
#define LED_MAC_OS_PIN C10
|
||||
#define LED_WIN_LOCK_PIN C11
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
/* SPI Config for spi flash*/
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#define SPI_SCK_PIN B3
|
||||
#define SPI_MOSI_PIN B5
|
||||
#define SPI_MISO_PIN B4
|
||||
#define SPI_MOSI_PAL_MODE 5
|
||||
|
||||
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
|
||||
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
|
||||
|
||||
/* I2C Config for LED Driver */
|
||||
#define DRIVER_COUNT 2
|
||||
#define DRIVER_ADDR_1 0b1110100
|
||||
#define DRIVER_ADDR_2 0b1110111
|
||||
#define I2C1_OPMODE OPMODE_I2C
|
||||
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 87
|
||||
|
||||
#define RGB_TRIGGER_ON_KEYDOWN
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
|
||||
23
keyboards/akko/5087/halconf.h
Normal file
23
keyboards/akko/5087/halconf.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
|
||||
#include_next <halconf.h>
|
||||
253
keyboards/akko/5087/info.json
Normal file
253
keyboards/akko/5087/info.json
Normal file
@@ -0,0 +1,253 @@
|
||||
{
|
||||
"keyboard_name": "5087",
|
||||
"manufacturer": "Akko",
|
||||
"url":"https://www.akkogear.com",
|
||||
"maintainer": "jonylee@hfd",
|
||||
"usb": {
|
||||
"vid": "0xFFFE",
|
||||
"pid": "0x000C",
|
||||
"device_version": "1.0.4",
|
||||
"suspend_wakeup_delay": 400,
|
||||
"force_nkro": true
|
||||
},
|
||||
"processor": "WB32FQ95",
|
||||
"bootloader": "wb32-dfu",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": false,
|
||||
"extrakey": true,
|
||||
"console": false,
|
||||
"command": false,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 6
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10"],
|
||||
"rows": ["B15", "C6", "C7", "C8", "C9", "A8"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"indicators": {
|
||||
"caps_lock": "A15"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "ckled2001",
|
||||
"max_brightness": 180,
|
||||
"animations": {
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"dual_beacon": true,
|
||||
"rainbow_beacon": true,
|
||||
"raindrops": true,
|
||||
"typing_heatmap": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"multisplash": true
|
||||
},
|
||||
"layout":[
|
||||
{ "flags": 4, "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 24, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 38, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 52, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 66, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 5], "x": 82, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 6], "x": 96, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 7], "x":110, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 8], "x":124, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 9], "x":140, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 10], "x":154, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 11], "x":168, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 12], "x":182, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 14], "x":196, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 15], "x":210, "y": 0},
|
||||
{ "flags": 4, "matrix": [0, 16], "x":224, "y": 0},
|
||||
|
||||
{ "flags": 4, "matrix": [1, 0], "x": 0, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 1], "x": 13, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 2], "x": 26, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 3], "x": 39, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 4], "x": 52, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 5], "x": 65, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 6], "x": 79, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 7], "x": 92, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 8], "x":105, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 9], "x":118, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 10], "x":131, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 11], "x":144, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 12], "x":158, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 13], "x":171, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 14], "x":184, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 15], "x":197, "y": 12},
|
||||
{ "flags": 4, "matrix": [1, 16], "x":210, "y": 12},
|
||||
|
||||
{ "flags": 4, "matrix": [2, 0], "x": 0, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 1], "x": 14, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 2], "x": 28, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 3], "x": 42, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 4], "x": 56, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 5], "x": 70, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 6], "x": 84, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 7], "x": 98, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 8], "x":112, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 9], "x":126, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 10], "x":140, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 11], "x":154, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 12], "x":168, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 13], "x":182, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 14], "x":196, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 15], "x":210, "y": 26},
|
||||
{ "flags": 4, "matrix": [2, 16], "x":224, "y": 26},
|
||||
|
||||
{ "flags": 4, "matrix": [3, 0], "x": 0, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 1], "x": 14, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 2], "x": 28, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 3], "x": 42, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 4], "x": 56, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 5], "x": 70, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 6], "x": 84, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 7], "x": 98, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 8], "x":112, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 9], "x":126, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 10], "x":140, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 11], "x":154, "y": 38},
|
||||
{ "flags": 4, "matrix": [3, 13], "x":182, "y": 38},
|
||||
|
||||
{ "flags": 4, "matrix": [4, 0], "x": 0, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 1], "x": 14, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 2], "x": 28, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 3], "x": 42, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 4], "x": 56, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 5], "x": 70, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 6], "x": 84, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 7], "x": 98, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 8], "x":112, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 9], "x":126, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 10], "x":140, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 13], "x":154, "y": 51},
|
||||
{ "flags": 4, "matrix": [4, 15], "x":182, "y": 51},
|
||||
|
||||
{ "flags": 4, "matrix": [5, 0], "x": 0, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 1], "x": 14, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 2], "x": 28, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 5], "x": 70, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 9], "x":126, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 10], "x":140, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 11], "x":154, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 13], "x":182, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 14], "x":196, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 15], "x":210, "y": 64},
|
||||
{ "flags": 4, "matrix": [5, 16], "x":224, "y": 64}
|
||||
|
||||
]
|
||||
},
|
||||
"community_layouts": ["tkl_ansi"],
|
||||
"layouts": {
|
||||
"LAYOUT_tkl_ansi": {
|
||||
"layout": [
|
||||
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "label": "F1", "matrix": [0, 1], "x": 2, "y": 0 },
|
||||
{ "label": "F2", "matrix": [0, 2], "x": 3, "y": 0 },
|
||||
{ "label": "F3", "matrix": [0, 3], "x": 4, "y": 0 },
|
||||
{ "label": "F4", "matrix": [0, 4], "x": 5, "y": 0 },
|
||||
{ "label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0 },
|
||||
{ "label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0 },
|
||||
{ "label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0 },
|
||||
{ "label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0 },
|
||||
{ "label": "F9", "matrix": [0, 9], "x": 11, "y": 0 },
|
||||
{ "label": "F10", "matrix": [0, 10], "x": 12, "y": 0 },
|
||||
{ "label": "F11", "matrix": [0, 11], "x": 13, "y": 0 },
|
||||
{ "label": "F12", "matrix": [0, 12], "x": 14, "y": 0 },
|
||||
{ "label": "PrtSc", "matrix": [0, 14], "x": 15.25, "y": 0 },
|
||||
{ "label": "ScrLk", "matrix": [0, 15], "x": 16.25, "y": 0 },
|
||||
{ "label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0 },
|
||||
|
||||
{ "label": "~", "matrix": [1, 0], "x": 0, "y": 1.25 },
|
||||
{ "label": "!", "matrix": [1, 1], "x": 1, "y": 1.25 },
|
||||
{ "label": "@", "matrix": [1, 2], "x": 2, "y": 1.25 },
|
||||
{ "label": "#", "matrix": [1, 3], "x": 3, "y": 1.25 },
|
||||
{ "label": "$", "matrix": [1, 4], "x": 4, "y": 1.25 },
|
||||
{ "label": "%", "matrix": [1, 5], "x": 5, "y": 1.25 },
|
||||
{ "label": "^", "matrix": [1, 6], "x": 6, "y": 1.25 },
|
||||
{ "label": "&", "matrix": [1, 7], "x": 7, "y": 1.25 },
|
||||
{ "label": "*", "matrix": [1, 8], "x": 8, "y": 1.25 },
|
||||
{ "label": "(", "matrix": [1, 9], "x": 9, "y": 1.25 },
|
||||
{ "label": ")", "matrix": [1, 10], "x": 10, "y": 1.25 },
|
||||
{ "label": "_", "matrix": [1, 11], "x": 11, "y": 1.25 },
|
||||
{ "label": "+", "matrix": [1, 12], "x": 12, "y": 1.25 },
|
||||
{ "label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2 },
|
||||
{ "label": "Ins", "matrix": [1, 14], "x": 15.25, "y": 1.25 },
|
||||
{ "label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25 },
|
||||
{ "label": "PgUp", "matrix": [1, 16], "x": 17.25, "y": 1.25 },
|
||||
|
||||
{ "label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5 },
|
||||
{ "label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25 },
|
||||
{ "label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25 },
|
||||
{ "label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25 },
|
||||
{ "label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25 },
|
||||
{ "label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25 },
|
||||
{ "label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25 },
|
||||
{ "label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25 },
|
||||
{ "label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25 },
|
||||
{ "label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25 },
|
||||
{ "label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25 },
|
||||
{ "label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25 },
|
||||
{ "label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25 },
|
||||
{ "label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5 },
|
||||
{ "label": "Del", "matrix": [2, 14], "x": 15.25, "y": 2.25 },
|
||||
{ "label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25 },
|
||||
{ "label": "PgDn", "matrix": [2, 16], "x": 17.25, "y": 2.25 },
|
||||
|
||||
{ "label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75 },
|
||||
{ "label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25 },
|
||||
{ "label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25 },
|
||||
{ "label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25 },
|
||||
{ "label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25 },
|
||||
{ "label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25 },
|
||||
{ "label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25 },
|
||||
{ "label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25 },
|
||||
{ "label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25 },
|
||||
{ "label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25 },
|
||||
{ "label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25 },
|
||||
{ "label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25 },
|
||||
{ "label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25 },
|
||||
|
||||
{ "label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25 },
|
||||
{ "label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25 },
|
||||
{ "label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25 },
|
||||
{ "label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25 },
|
||||
{ "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25 },
|
||||
{ "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25 },
|
||||
{ "label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25 },
|
||||
{ "label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25 },
|
||||
{ "label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25 },
|
||||
{ "label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25 },
|
||||
{ "label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25 },
|
||||
{ "label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75 },
|
||||
{ "label": "Up", "matrix": [4, 15], "x": 16.25, "y": 4.25 },
|
||||
|
||||
{ "label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25 },
|
||||
{ "label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Win", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25 },
|
||||
{ "label": "Left", "matrix": [5, 14], "x": 15.25, "y": 5.25 },
|
||||
{ "label": "Down", "matrix": [5, 15], "x": 16.25, "y": 5.25 },
|
||||
{ "label": "Right", "matrix": [5, 16], "x": 17.25, "y": 5.25 }
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
79
keyboards/akko/5087/keymaps/default/keymap.c
Normal file
79
keyboards/akko/5087/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,79 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum __layers {
|
||||
WIN_B,
|
||||
WIN_W,
|
||||
WIN_FN,
|
||||
MAC_B,
|
||||
MAC_W,
|
||||
MAC_FN
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[WIN_B] = LAYOUT_tkl_ansi( /* Base */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[WIN_W] = LAYOUT_tkl_ansi( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
|
||||
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D),
|
||||
|
||||
|
||||
[WIN_FN] = LAYOUT_tkl_ansi( /* FN */
|
||||
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
|
||||
_______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI),
|
||||
|
||||
[MAC_B] = LAYOUT_tkl_ansi( /* Base */
|
||||
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[MAC_W] = LAYOUT_tkl_ansi( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
|
||||
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D),
|
||||
[MAC_FN] = LAYOUT_tkl_ansi( /* FN */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
|
||||
_______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI)
|
||||
};
|
||||
// clang-format on
|
||||
79
keyboards/akko/5087/keymaps/via/keymap.c
Normal file
79
keyboards/akko/5087/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,79 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum __layers {
|
||||
WIN_B,
|
||||
WIN_W,
|
||||
WIN_FN,
|
||||
MAC_B,
|
||||
MAC_W,
|
||||
MAC_FN,
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[WIN_B] = LAYOUT_tkl_ansi( /* Base */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[WIN_W] = LAYOUT_tkl_ansi( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
|
||||
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D),
|
||||
|
||||
|
||||
[WIN_FN] = LAYOUT_tkl_ansi( /* FN */
|
||||
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
|
||||
_______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI),
|
||||
|
||||
[MAC_B] = LAYOUT_tkl_ansi( /* Base */
|
||||
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[MAC_W] = LAYOUT_tkl_ansi( /* Base */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
|
||||
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D),
|
||||
[MAC_FN] = LAYOUT_tkl_ansi( /* FN */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
|
||||
_______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI)
|
||||
};
|
||||
// clang-format on
|
||||
1
keyboards/akko/5087/keymaps/via/rules.mk
Normal file
1
keyboards/akko/5087/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
24
keyboards/akko/5087/mcuconf.h
Normal file
24
keyboards/akko/5087/mcuconf.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/* Copyright (C) 2022 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef WB32_SPI_USE_QSPI
|
||||
#define WB32_SPI_USE_QSPI TRUE
|
||||
|
||||
#undef WB32_I2C_USE_I2C1
|
||||
#define WB32_I2C_USE_I2C1 TRUE
|
||||
19
keyboards/akko/5087/readme.md
Normal file
19
keyboards/akko/5087/readme.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# 5087
|
||||
|
||||
A customizable 80% keyboard.
|
||||
|
||||
* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
|
||||
* Hardware Supported:Akko 5087
|
||||
* Hardware Availability: [akko](https://www.akkogear.com/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make akko/5087:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make akko/5087:default:flash
|
||||
|
||||
**Reset Key**: Hold down the key located at *K000*, which programmed as *Esc* while plugging in the keyboard.
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
3
keyboards/akko/5087/rules.mk
Normal file
3
keyboards/akko/5087/rules.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
EEPROM_DRIVER = wear_leveling
|
||||
WEAR_LEVELING_DRIVER = spi_flash
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
@@ -211,7 +211,7 @@
|
||||
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
@@ -282,7 +282,7 @@
|
||||
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
@@ -354,7 +354,7 @@
|
||||
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
@@ -424,7 +424,7 @@
|
||||
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
@@ -496,7 +496,7 @@
|
||||
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
Most of these are "best-guess." I was using photos I found on ZFrontier as a
|
||||
reference and I don't have the PCB on-hand.
|
||||
- @noroadsleft
|
||||
2023-01-20
|
||||
|
||||
\- @noroadsleft, 2023-11-21
|
||||
|
||||
```
|
||||
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
|
||||
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0E │ 2u Backspace
|
||||
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0D │ 2u Backspace
|
||||
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤
|
||||
│10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │ │
|
||||
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter
|
||||
|
||||
210
keyboards/alpaca/wfeclipse/info.json
Normal file
210
keyboards/alpaca/wfeclipse/info.json
Normal file
@@ -0,0 +1,210 @@
|
||||
{
|
||||
"manufacturer": "Alpaca",
|
||||
"keyboard_name": "WFEclipse",
|
||||
"bootloader": "stm32duino",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"console": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C11", "C10", "A15", "A10", "A9", "A8", "C9", "C8", "C7", "C6", "B1", "B0", "C5", "C4", "A7", "A6"],
|
||||
"rows": ["A0", "A1", "A2", "A3", "A4"]
|
||||
},
|
||||
"processor": "STM32F103",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_wave": true,
|
||||
"pixel_fractal": true,
|
||||
"solid_color": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_splash": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [4, 15], "x": 198, "y": 54, "flags": 1},
|
||||
{"matrix": [4, 14], "x": 186, "y": 54, "flags": 1},
|
||||
{"matrix": [4, 13], "x": 174, "y": 54, "flags": 1},
|
||||
{"matrix": [4, 12], "x": 150, "y": 54, "flags": 1},
|
||||
{"matrix": [4, 11], "x": 138, "y": 54, "flags": 1},
|
||||
{"matrix": [4, 10], "x": 126, "y": 54, "flags": 1},
|
||||
{"matrix": [4, 6], "x": 51, "y": 54, "flags": 1},
|
||||
{"matrix": [4, 2], "x": 36, "y": 54, "flags": 1},
|
||||
{"matrix": [4, 1], "x": 21, "y": 54, "flags": 1},
|
||||
{"matrix": [4, 0], "x": 6, "y": 54, "flags": 1},
|
||||
{"matrix": [3, 15], "x": 198, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 14], "x": 186, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 13], "x": 153, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 11], "x": 141, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 10], "x": 129, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 9], "x": 117, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 8], "x": 105, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 7], "x": 93, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 6], "x": 81, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 5], "x": 69, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 4], "x": 57, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 3], "x": 45, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 2], "x": 33, "y": 42, "flags": 1},
|
||||
{"matrix": [3, 0], "x": 6, "y": 42, "flags": 1},
|
||||
{"matrix": [2, 15], "x": 198, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 14], "x": 186, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 13], "x": 159, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 11], "x": 147, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 10], "x": 135, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 9], "x": 123, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 8], "x": 111, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 7], "x": 99, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 6], "x": 87, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 5], "x": 75, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 4], "x": 63, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 3], "x": 51, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 2], "x": 39, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 1], "x": 27, "y": 30, "flags": 1},
|
||||
{"matrix": [2, 0], "x": 6, "y": 30, "flags": 1},
|
||||
{"matrix": [1, 15], "x": 198, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 14], "x": 186, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 13], "x": 168, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 12], "x": 156, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 11], "x": 144, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 10], "x": 132, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 9], "x": 120, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 8], "x": 108, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 7], "x": 96, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 6], "x": 84, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 5], "x": 72, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 4], "x": 60, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 3], "x": 48, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 2], "x": 36, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 1], "x": 24, "y": 18, "flags": 1},
|
||||
{"matrix": [1, 0], "x": 6, "y": 18, "flags": 1},
|
||||
{"matrix": [0, 15], "x": 198, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 14], "x": 186, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 13], "x": 162, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 12], "x": 150, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 11], "x": 138, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 10], "x": 126, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 9], "x": 114, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 8], "x": 102, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 7], "x": 90, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 6], "x": 78, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 5], "x": 66, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 4], "x": 54, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 3], "x": 42, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 2], "x": 30, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 1], "x": 18, "y": 6, "flags": 1},
|
||||
{"matrix": [0, 0], "x": 6, "y": 6, "flags": 1},
|
||||
{"x": 125, "y": 1, "flags": 4},
|
||||
{"x": 125, "y": 2, "flags": 4},
|
||||
{"x": 125, "y": 3, "flags": 4},
|
||||
{"x": 125, "y": 4, "flags": 4},
|
||||
{"x": 125, "y": 5, "flags": 4},
|
||||
{"x": 125, "y": 6, "flags": 4},
|
||||
{"x": 125, "y": 7, "flags": 4},
|
||||
{"x": 125, "y": 8, "flags": 4},
|
||||
{"x": 125, "y": 9, "flags": 4},
|
||||
{"x": 125, "y": 10, "flags": 4},
|
||||
{"x": 125, "y": 11, "flags": 4},
|
||||
{"x": 125, "y": 12, "flags": 4}
|
||||
],
|
||||
"max_brightness": 50
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.4",
|
||||
"pid": "0x0038",
|
||||
"vid": "0x308F"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "B8"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "MINS", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "EQL", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "BSPC", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "DEL", "matrix": [0, 14], "x": 15, "y": 0},
|
||||
{"label": "INS", "matrix": [0, 15], "x": 16, "y": 0},
|
||||
{"label": "TAB", "matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "LBRC", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "RBRC", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "BSLS", "matrix": [1, 13], "x": 13.5, "y": 1},
|
||||
{"label": "HOME", "matrix": [1, 14], "x": 15, "y": 1},
|
||||
{"label": "PGUP", "matrix": [1, 15], "x": 16, "y": 1},
|
||||
{"label": "CAPS", "matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": "SCLN", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "QUOT", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "ENT", "matrix": [2, 13], "x": 12.75, "y": 2},
|
||||
{"label": "END", "matrix": [2, 14], "x": 15, "y": 2},
|
||||
{"label": "PGDN", "matrix": [2, 15], "x": 16, "y": 2},
|
||||
{"label": "LSFT", "matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "COMM", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": "DOT", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "SLSH", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "RSFT", "matrix": [3, 13], "x": 12.25, "y": 3},
|
||||
{"label": "UP", "matrix": [3, 14], "x": 15, "y": 3},
|
||||
{"label": "MO(1)", "matrix": [3, 15], "x": 16, "y": 3},
|
||||
{"label": "LCTL", "matrix": [4, 0], "x": 0, "y": 4},
|
||||
{"label": "LGUI", "matrix": [4, 1], "x": 1.25, "y": 4},
|
||||
{"label": "LALT", "matrix": [4, 2], "x": 2.5, "y": 4},
|
||||
{"label": "SPC", "matrix": [4, 6], "x": 3.75, "y": 4},
|
||||
{"label": "RALT", "matrix": [4, 10], "x": 10, "y": 4},
|
||||
{"label": "RGUI", "matrix": [4, 11], "x": 11, "y": 4},
|
||||
{"label": "RCTL", "matrix": [4, 12], "x": 12, "y": 4},
|
||||
{"label": "LEFT", "matrix": [4, 13], "x": 14, "y": 4},
|
||||
{"label": "DOWN", "matrix": [4, 14], "x": 15, "y": 4},
|
||||
{"label": "RGHT", "matrix": [4, 15], "x": 16, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
39
keyboards/alpaca/wfeclipse/keymaps/default/keymap.c
Normal file
39
keyboards/alpaca/wfeclipse/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,39 @@
|
||||
/* Copyright 2023 temp4gh
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_names {
|
||||
WIN_BASE,
|
||||
WIN_FN,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[WIN_BASE] =LAYOUT(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_PGUP,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END , KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(WIN_FN),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[WIN_FN] =LAYOUT(
|
||||
KC_GRV , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,KC_MPRV, QK_BOOT,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, KC_MNXT, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD,RGB_HUD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
39
keyboards/alpaca/wfeclipse/keymaps/via/keymap.c
Normal file
39
keyboards/alpaca/wfeclipse/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,39 @@
|
||||
/* Copyright 2023 temp4gh
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_names {
|
||||
WIN_BASE,
|
||||
WIN_FN,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[WIN_BASE] =LAYOUT(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_PGUP,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END , KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(WIN_FN),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[WIN_FN] =LAYOUT(
|
||||
KC_GRV , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,KC_MPRV, QK_BOOT,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, KC_MNXT, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD,RGB_HUD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
1
keyboards/alpaca/wfeclipse/keymaps/via/rules.mk
Normal file
1
keyboards/alpaca/wfeclipse/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
||||
26
keyboards/alpaca/wfeclipse/readme.md
Normal file
26
keyboards/alpaca/wfeclipse/readme.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Alpaca Keyboards whitefox-eclipse
|
||||
|
||||

|
||||
|
||||
A customizable 68% keyboard.
|
||||
|
||||
- Keyboard Maintainer: [temp4gh](https://github.com/temp4gh)
|
||||
- Hardware Supported: whitefox-eclipse PCB
|
||||
- Hardware Availability: https://kono.store/collections/all-products-list/products/whitefox-eclipse?variant=43224249991367
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make alpaca/wfeclipse:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make alpaca/wfeclipse:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 2 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
||||
1
keyboards/alpaca/wfeclipse/rules.mk
Normal file
1
keyboards/alpaca/wfeclipse/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
# This file intentionally left blank
|
||||
59
keyboards/bastardkb/dilemma/4x6_4/4x6_4.c
Normal file
59
keyboards/bastardkb/dilemma/4x6_4/4x6_4.c
Normal file
@@ -0,0 +1,59 @@
|
||||
/**
|
||||
* Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
|
||||
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
|
||||
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
|
||||
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Publicw License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef SWAP_HANDS_ENABLE
|
||||
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Left hand, matrix positions */
|
||||
{{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}},
|
||||
{{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}},
|
||||
{{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}},
|
||||
{{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}},
|
||||
{{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}},
|
||||
/* Right hand, matrix positions */
|
||||
{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}},
|
||||
{{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}},
|
||||
{{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}},
|
||||
{{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}},
|
||||
{{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}}
|
||||
};
|
||||
|
||||
# ifdef ENCODER_MAP_ENABLE
|
||||
const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0};
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
return false;
|
||||
}
|
||||
switch (index) {
|
||||
case 0: // Left-half encoder, mouse scroll.
|
||||
tap_code(clockwise ? KC_MS_WH_DOWN : KC_MS_WH_UP);
|
||||
break;
|
||||
case 1: // Right-half encoder, volume control.
|
||||
tap_code(clockwise ? KC_AUDIO_VOL_UP : KC_AUDIO_VOL_DOWN);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif // ENCODER_ENABLE
|
||||
54
keyboards/bastardkb/dilemma/4x6_4/config.h
Normal file
54
keyboards/bastardkb/dilemma/4x6_4/config.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
|
||||
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Handedness. */
|
||||
#define SPLIT_HAND_PIN GP29
|
||||
#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
|
||||
|
||||
/* VBUS detection. */
|
||||
#define USB_VBUS_PIN GP19
|
||||
|
||||
/* CRC. */
|
||||
#define CRC8_USE_TABLE
|
||||
#define CRC8_OPTIMIZE_SPEED
|
||||
|
||||
/* Cirque trackpad over SPI. */
|
||||
#define SPI_DRIVER SPID0
|
||||
#define SPI_SCK_PIN GP22
|
||||
#define SPI_MOSI_PIN GP23
|
||||
#define SPI_MISO_PIN GP20
|
||||
#define POINTING_DEVICE_CS_PIN GP21
|
||||
#undef CIRQUE_PINNACLE_DIAMETER_MM
|
||||
#define CIRQUE_PINNACLE_DIAMETER_MM 40
|
||||
|
||||
/* Reset. */
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
|
||||
|
||||
/* RGB matrix support. */
|
||||
#define SPLIT_TRANSPORT_MIRROR
|
||||
#define RGB_DISABLE_WHEN_USB_SUSPENDED
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
|
||||
// Startup values.
|
||||
#define RGB_MATRIX_DEFAULT_VAL 64
|
||||
#define RGB_MATRIX_DEFAULT_SPD 32
|
||||
22
keyboards/bastardkb/dilemma/4x6_4/halconf.h
Normal file
22
keyboards/bastardkb/dilemma/4x6_4/halconf.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/**
|
||||
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
266
keyboards/bastardkb/dilemma/4x6_4/info.json
Normal file
266
keyboards/bastardkb/dilemma/4x6_4/info.json
Normal file
@@ -0,0 +1,266 @@
|
||||
{
|
||||
"keyboard_name": "Dilemma Max",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x1837"
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"matrix_pins": {
|
||||
"cols": ["GP14", "GP8", "GP9", "GP7", "GP6", "GP28"],
|
||||
"rows": ["GP15", "GP4", "GP5", "GP27", "GP26"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"soft_serial_pin": "GP1",
|
||||
"bootmagic": {
|
||||
"matrix": [5, 0]
|
||||
}
|
||||
},
|
||||
"encoder": {
|
||||
"enabled" : true,
|
||||
"rotary" : [
|
||||
{"pin_a": "GP25", "pin_b": "GP24"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true,
|
||||
"caps_word": true,
|
||||
"tri_layer": true
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "GP10",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812",
|
||||
"split_count": [52, 52],
|
||||
"max_brightness": 176,
|
||||
"center_point": [112, 28],
|
||||
"animations": {
|
||||
"solid_color": true,
|
||||
"alphas_mods": true,
|
||||
"gradient_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"breathing": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"dual_beacon": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"jellybean_raindrops": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_rain": true,
|
||||
"typing_heatmap": true,
|
||||
"digital_rain": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"splash": true,
|
||||
"multisplash": true,
|
||||
"solid_splash": true,
|
||||
"solid_multisplash": true
|
||||
},
|
||||
"layout": [
|
||||
{"x": 81, "y": 4, "flags": 2},
|
||||
{"x": 65, "y": 2, "flags": 2},
|
||||
{"x": 40, "y": 0, "flags": 2},
|
||||
{"x": 29, "y": 9, "flags": 2},
|
||||
{"x": 16, "y": 9, "flags": 2},
|
||||
{"x": 0, "y": 16, "flags": 2},
|
||||
{"x": 0, "y": 29, "flags": 2},
|
||||
{"x": 0, "y": 40, "flags": 2},
|
||||
{"x": 5, "y": 50, "flags": 2},
|
||||
{"x": 17, "y": 49, "flags": 2},
|
||||
{"x": 28, "y": 44, "flags": 2},
|
||||
{"x": 40, "y": 43, "flags": 2},
|
||||
{"x": 49, "y": 51, "flags": 2},
|
||||
{"x": 62, "y": 53, "flags": 2},
|
||||
{"x": 73, "y": 56, "flags": 2},
|
||||
{"x": 85, "y": 59, "flags": 2},
|
||||
{"x": 100, "y": 64, "flags": 2},
|
||||
{"x": 106, "y": 55, "flags": 2},
|
||||
{"x": 107, "y": 45, "flags": 2},
|
||||
{"x": 91, "y": 51, "flags": 2},
|
||||
{"x": 94, "y": 40, "flags": 2},
|
||||
{"x": 108, "y": 33, "flags": 2},
|
||||
{"x": 106, "y": 25, "flags": 2},
|
||||
{"x": 108, "y": 16, "flags": 2},
|
||||
|
||||
{"matrix": [0, 5], "x": 75, "y": 10, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 62, "y": 9, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 49, "y": 6, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 35, "y": 10, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 22, "y": 16, "flags": 4},
|
||||
{"matrix": [0, 0], "x": 9, "y": 16, "flags": 1},
|
||||
{"matrix": [1, 0], "x": 9, "y": 27, "flags": 1},
|
||||
{"matrix": [1, 1], "x": 22, "y": 27, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 35, "y": 20, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 49, "y": 17, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 62, "y": 19, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 75, "y": 21, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 75, "y": 31, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 62, "y": 30, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 49, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 35, "y": 31, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 22, "y": 37, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 9, "y": 37, "flags": 1},
|
||||
{"matrix": [3, 0], "x": 9, "y": 48, "flags": 1},
|
||||
{"matrix": [3, 1], "x": 22, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 35, "y": 41, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 49, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 75, "y": 42, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 54, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 68, "y": 53, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 81, "y": 57, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 92, "y": 64, "flags": 4},
|
||||
|
||||
{"x": 143, "y": 4, "flags": 2},
|
||||
{"x": 159, "y": 2, "flags": 2},
|
||||
{"x": 184, "y": 0, "flags": 2},
|
||||
{"x": 195, "y": 9, "flags": 2},
|
||||
{"x": 208, "y": 9, "flags": 2},
|
||||
{"x": 224, "y": 16, "flags": 2},
|
||||
{"x": 224, "y": 29, "flags": 2},
|
||||
{"x": 224, "y": 40, "flags": 2},
|
||||
{"x": 219, "y": 50, "flags": 2},
|
||||
{"x": 207, "y": 49, "flags": 2},
|
||||
{"x": 196, "y": 44, "flags": 2},
|
||||
{"x": 184, "y": 43, "flags": 2},
|
||||
{"x": 176, "y": 51, "flags": 2},
|
||||
{"x": 162, "y": 53, "flags": 2},
|
||||
{"x": 151, "y": 56, "flags": 2},
|
||||
{"x": 139, "y": 59, "flags": 2},
|
||||
{"x": 124, "y": 64, "flags": 2},
|
||||
{"x": 118, "y": 55, "flags": 2},
|
||||
{"x": 117, "y": 45, "flags": 2},
|
||||
{"x": 133, "y": 51, "flags": 2},
|
||||
{"x": 130, "y": 40, "flags": 2},
|
||||
{"x": 116, "y": 33, "flags": 2},
|
||||
{"x": 118, "y": 25, "flags": 2},
|
||||
{"x": 116, "y": 16, "flags": 2},
|
||||
|
||||
{"matrix": [5, 5], "x": 149, "y": 10, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 162, "y": 9, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 175, "y": 6, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 189, "y": 10, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 202, "y": 16, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 215, "y": 16, "flags": 1},
|
||||
{"matrix": [6, 0], "x": 215, "y": 27, "flags": 1},
|
||||
{"matrix": [6, 1], "x": 202, "y": 27, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 189, "y": 20, "flags": 4},
|
||||
{"matrix": [6, 3], "x": 175, "y": 17, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 162, "y": 19, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 149, "y": 21, "flags": 4},
|
||||
{"matrix": [7, 5], "x": 149, "y": 31, "flags": 4},
|
||||
{"matrix": [7, 4], "x": 162, "y": 30, "flags": 4},
|
||||
{"matrix": [7, 3], "x": 175, "y": 27, "flags": 4},
|
||||
{"matrix": [7, 2], "x": 189, "y": 31, "flags": 4},
|
||||
{"matrix": [7, 1], "x": 202, "y": 37, "flags": 4},
|
||||
{"matrix": [7, 0], "x": 215, "y": 37, "flags": 1},
|
||||
{"matrix": [8, 0], "x": 215, "y": 48, "flags": 1},
|
||||
{"matrix": [8, 1], "x": 202, "y": 48, "flags": 4},
|
||||
{"matrix": [8, 2], "x": 189, "y": 41, "flags": 4},
|
||||
{"matrix": [8, 3], "x": 175, "y": 38, "flags": 4},
|
||||
{"matrix": [8, 4], "x": 162, "y": 40, "flags": 4},
|
||||
{"matrix": [8, 5], "x": 149, "y": 42, "flags": 4},
|
||||
{"matrix": [9, 4], "x": 170, "y": 51, "flags": 4},
|
||||
{"matrix": [9, 2], "x": 156, "y": 53, "flags": 4},
|
||||
{"matrix": [9, 1], "x": 143, "y": 57, "flags": 4},
|
||||
{"matrix": [9, 3], "x": 132, "y": 64, "flags": 4}
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label":"L00", "matrix": [0, 0], "x":0, "y":0},
|
||||
{"label":"L01", "matrix": [0, 1], "x":1, "y":0},
|
||||
{"label":"L02", "matrix": [0, 2], "x":2, "y":0},
|
||||
{"label":"L03", "matrix": [0, 3], "x":3, "y":0},
|
||||
{"label":"L04", "matrix": [0, 4], "x":4, "y":0},
|
||||
{"label":"L05", "matrix": [0, 5], "x":5, "y":0},
|
||||
{"label":"R05", "matrix": [5, 5], "x":8, "y":0},
|
||||
{"label":"R04", "matrix": [5, 4], "x":9, "y":0},
|
||||
{"label":"R03", "matrix": [5, 3], "x":10, "y":0},
|
||||
{"label":"R02", "matrix": [5, 2], "x":11, "y":0},
|
||||
{"label":"R01", "matrix": [5, 1], "x":12, "y":0},
|
||||
{"label":"R00", "matrix": [5, 0], "x":13, "y":0},
|
||||
{"label":"L10", "matrix": [1, 0], "x":0, "y":1},
|
||||
{"label":"L11", "matrix": [1, 1], "x":1, "y":1},
|
||||
{"label":"L12", "matrix": [1, 2], "x":2, "y":1},
|
||||
{"label":"L13", "matrix": [1, 3], "x":3, "y":1},
|
||||
{"label":"L14", "matrix": [1, 4], "x":4, "y":1},
|
||||
{"label":"L15", "matrix": [1, 5], "x":5, "y":1},
|
||||
{"label":"R15", "matrix": [6, 5], "x":8, "y":1},
|
||||
{"label":"R14", "matrix": [6, 4], "x":9, "y":1},
|
||||
{"label":"R13", "matrix": [6, 3], "x":10, "y":1},
|
||||
{"label":"R12", "matrix": [6, 2], "x":11, "y":1},
|
||||
{"label":"R11", "matrix": [6, 1], "x":12, "y":1},
|
||||
{"label":"R10", "matrix": [6, 0], "x":13, "y":1},
|
||||
{"label":"L20", "matrix": [2, 0], "x":0, "y":2},
|
||||
{"label":"L21", "matrix": [2, 1], "x":1, "y":2},
|
||||
{"label":"L22", "matrix": [2, 2], "x":2, "y":2},
|
||||
{"label":"L23", "matrix": [2, 3], "x":3, "y":2},
|
||||
{"label":"L24", "matrix": [2, 4], "x":4, "y":2},
|
||||
{"label":"L25", "matrix": [2, 5], "x":5, "y":2},
|
||||
{"label":"R25", "matrix": [7, 5], "x":8, "y":2},
|
||||
{"label":"R24", "matrix": [7, 4], "x":9, "y":2},
|
||||
{"label":"R23", "matrix": [7, 3], "x":10, "y":2},
|
||||
{"label":"R22", "matrix": [7, 2], "x":11, "y":2},
|
||||
{"label":"R21", "matrix": [7, 1], "x":12, "y":2},
|
||||
{"label":"R20", "matrix": [7, 0], "x":13, "y":2},
|
||||
{"label":"L30", "matrix": [3, 0], "x":0, "y":3},
|
||||
{"label":"L31", "matrix": [3, 1], "x":1, "y":3},
|
||||
{"label":"L32", "matrix": [3, 2], "x":2, "y":3},
|
||||
{"label":"L33", "matrix": [3, 3], "x":3, "y":3},
|
||||
{"label":"L34", "matrix": [3, 4], "x":4, "y":3},
|
||||
{"label":"L35", "matrix": [3, 5], "x":5, "y":3},
|
||||
{"label":"R35", "matrix": [8, 5], "x":8, "y":3},
|
||||
{"label":"R34", "matrix": [8, 4], "x":9, "y":3},
|
||||
{"label":"R33", "matrix": [8, 3], "x":10, "y":3},
|
||||
{"label":"R32", "matrix": [8, 2], "x":11, "y":3},
|
||||
{"label":"R31", "matrix": [8, 1], "x":12, "y":3},
|
||||
{"label":"R30", "matrix": [8, 0], "x":13, "y":3},
|
||||
{"label":"L43", "matrix": [4, 3], "x":2.5, "y":4},
|
||||
{"label":"L41", "matrix": [4, 1], "x":3.5, "y":4},
|
||||
{"label":"L42", "matrix": [4, 2], "x":4.5, "y":4},
|
||||
{"label":"L44", "matrix": [4, 4], "x":5.5, "y":4},
|
||||
{"label":"R44", "matrix": [9, 4], "x":7.5, "y":4},
|
||||
{"label":"R42", "matrix": [9, 2], "x":8.5, "y":4},
|
||||
{"label":"R41", "matrix": [9, 1], "x":9.5, "y":4},
|
||||
{"label":"R43", "matrix": [9, 3], "x":10.5, "y":4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
73
keyboards/bastardkb/dilemma/4x6_4/keymaps/default/keymap.c
Normal file
73
keyboards/bastardkb/dilemma/4x6_4/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,73 @@
|
||||
/**
|
||||
* Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
|
||||
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum dilemma_keymap_layers {
|
||||
LAYER_BASE = 0,
|
||||
LAYER_LOWER,
|
||||
LAYER_RAISE,
|
||||
};
|
||||
|
||||
#define LOWER MO(LAYER_LOWER)
|
||||
#define RAISE MO(LAYER_RAISE)
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[LAYER_BASE] = LAYOUT(
|
||||
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LALT,
|
||||
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
|
||||
KC_LALT, KC_BSPC, KC_SPC, LOWER, RAISE, KC_ENT, KC_DEL, KC_LGUI
|
||||
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
|
||||
),
|
||||
|
||||
[LAYER_LOWER] = LAYOUT(
|
||||
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, EE_CLR, QK_BOOT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT,
|
||||
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______
|
||||
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
|
||||
),
|
||||
|
||||
[LAYER_RAISE] = LAYOUT(
|
||||
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
|
||||
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
|
||||
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
|
||||
_______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
|
||||
),
|
||||
};
|
||||
// clang-format on
|
||||
@@ -0,0 +1,2 @@
|
||||
# Dilemma Max (4x6+4) default keymap
|
||||
|
||||
20
keyboards/bastardkb/dilemma/4x6_4/keymaps/via/config.h
Normal file
20
keyboards/bastardkb/dilemma/4x6_4/keymaps/via/config.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
|
||||
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 8
|
||||
132
keyboards/bastardkb/dilemma/4x6_4/keymaps/via/keymap.c
Normal file
132
keyboards/bastardkb/dilemma/4x6_4/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,132 @@
|
||||
/**
|
||||
* Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
|
||||
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum dilemma_keymap_layers {
|
||||
LAYER_BASE = 0,
|
||||
LAYER_LOWER,
|
||||
LAYER_RAISE,
|
||||
LAYER_POINTER,
|
||||
};
|
||||
|
||||
// Automatically enable sniping-mode on the pointer layer.
|
||||
// #define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER
|
||||
|
||||
#define LOWER MO(LAYER_LOWER)
|
||||
#define RAISE MO(LAYER_RAISE)
|
||||
#define PT_Z LT(LAYER_POINTER, KC_Z)
|
||||
#define PT_SLSH LT(LAYER_POINTER, KC_SLSH)
|
||||
|
||||
#ifndef POINTING_DEVICE_ENABLE
|
||||
# define DRGSCRL KC_NO
|
||||
# define DPI_MOD KC_NO
|
||||
# define S_D_MOD KC_NO
|
||||
# define SNIPING KC_NO
|
||||
#endif // !POINTING_DEVICE_ENABLE
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[LAYER_BASE] = LAYOUT(
|
||||
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_LCTL, PT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, PT_SLSH, KC_LALT,
|
||||
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
|
||||
KC_LALT, KC_BSPC, KC_SPC, LOWER, RAISE, KC_ENT, KC_DEL, KC_MUTE
|
||||
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
|
||||
),
|
||||
|
||||
[LAYER_LOWER] = LAYOUT(
|
||||
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT,
|
||||
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX
|
||||
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
|
||||
),
|
||||
|
||||
[LAYER_RAISE] = LAYOUT(
|
||||
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
|
||||
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
|
||||
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
|
||||
XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
|
||||
),
|
||||
|
||||
[LAYER_POINTER] = LAYOUT(
|
||||
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DPI_MOD, S_D_MOD, S_D_MOD, DPI_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, XXXXXXX,
|
||||
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
|
||||
XXXXXXX, _______, DRGSCRL, SNIPING, EE_CLR, QK_BOOT, QK_BOOT, EE_CLR, SNIPING, DRGSCRL, _______, XXXXXXX,
|
||||
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
|
||||
XXXXXXX, KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1, KC_BTN2, XXXXXXX
|
||||
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
|
||||
),
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#ifdef POINTING_DEVICE_ENABLE
|
||||
# ifdef DILEMMA_AUTO_SNIPING_ON_LAYER
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
dilemma_set_pointer_sniping_enabled(layer_state_cmp(state, DILEMMA_AUTO_SNIPING_ON_LAYER));
|
||||
return state;
|
||||
}
|
||||
# endif // DILEMMA_AUTO_SNIPING_ON_LAYER
|
||||
#endif // POINTING_DEVICE_ENABLEE
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
// Forward-declare this helper function since it is defined in rgb_matrix.c.
|
||||
void rgb_matrix_update_pwm_buffers(void);
|
||||
#endif
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[LAYER_BASE] = {ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLU, KC_VOLD)},
|
||||
[LAYER_LOWER] = {ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(KC_LEFT, KC_RGHT)},
|
||||
[LAYER_RAISE] = {ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLU, KC_VOLD)},
|
||||
[LAYER_POINTER] = {ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI)},
|
||||
};
|
||||
// clang-format on
|
||||
#endif // ENCODER_MAP_ENABLE
|
||||
|
||||
void shutdown_user(void) {
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
rgb_matrix_sethsv_noeeprom(HSV_RED);
|
||||
rgb_matrix_update_pwm_buffers();
|
||||
#endif // RGB_MATRIX_ENABLE
|
||||
}
|
||||
47
keyboards/bastardkb/dilemma/4x6_4/keymaps/via/readme.md
Normal file
47
keyboards/bastardkb/dilemma/4x6_4/keymaps/via/readme.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Dilemma Max `via` keymap
|
||||
|
||||
The Dilemma Max `via` keymap is based on the original [Dactyl Manuform](../../../../../handwired/dactyl_manuform) default keymap, with some features and changes specific to the Dilemma.
|
||||
|
||||
This layout also supports VIA.
|
||||
|
||||
## Customizing the keymap
|
||||
|
||||
### Dynamic DPI scaling
|
||||
|
||||
Use the following keycodes to change the default DPI:
|
||||
|
||||
- `POINTER_DEFAULT_DPI_FORWARD`: increases the DPI; decreases when shifted;
|
||||
- `POINTER_DEFAULT_DPI_REVERSE`: decreases the DPI; increases when shifted.
|
||||
|
||||
There's a maximum of 16 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information.
|
||||
|
||||
Use the following keycodes to change the sniping mode DPI:
|
||||
|
||||
- `POINTER_SNIPING_DPI_FORWARD`: increases the DPI; decreases when shifted;
|
||||
- `POINTER_SNIPING_DPI_REVERSE`: decreases the DPI; increases when shifted.
|
||||
|
||||
There's a maximum of 4 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information.
|
||||
|
||||
### Drag-scroll
|
||||
|
||||
Use the `DRAGSCROLL_MODE` keycode to enable drag-scroll on hold. Use the `DRAGSCROLL_TOGGLE` keycode to enable/disable drag-scroll on key press.
|
||||
|
||||
### Circular scroll
|
||||
|
||||
By default, the firmware is configured to enable the circular scroll feature on Cirque trackpad.
|
||||
|
||||
To disable this, add the following to your keymap:
|
||||
|
||||
```c
|
||||
#undef POINTING_DEVICE_GESTURES_SCROLL_ENABLE
|
||||
```
|
||||
|
||||
### Sniping
|
||||
|
||||
Use the `SNIPING_MODE` keycode to enable sniping mode on hold. Use the `SNIPING_TOGGLE` keycode to enable/disable sniping mode on key press.
|
||||
|
||||
Change the value of `DILEMMA_AUTO_SNIPING_ON_LAYER` to automatically enable sniping mode on layer change. By default, sniping mode is enabled on the pointer layer:
|
||||
|
||||
```c
|
||||
#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER
|
||||
```
|
||||
2
keyboards/bastardkb/dilemma/4x6_4/keymaps/via/rules.mk
Normal file
2
keyboards/bastardkb/dilemma/4x6_4/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
23
keyboards/bastardkb/dilemma/4x6_4/mcuconf.h
Normal file
23
keyboards/bastardkb/dilemma/4x6_4/mcuconf.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/**
|
||||
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef RP_SPI_USE_SPI0
|
||||
#define RP_SPI_USE_SPI0 TRUE
|
||||
5
keyboards/bastardkb/dilemma/4x6_4/readme.md
Normal file
5
keyboards/bastardkb/dilemma/4x6_4/readme.md
Normal file
@@ -0,0 +1,5 @@
|
||||
# Dilemma Max (4x6+4)
|
||||
|
||||
This keyboard is an upsized version of the [3x5+3 Dilemma](../3x5_3/).
|
||||
|
||||
The Dilemma Max is available at [bastardkb.com](https://bastardkb.com).
|
||||
4
keyboards/bastardkb/dilemma/4x6_4/rules.mk
Normal file
4
keyboards/bastardkb/dilemma/4x6_4/rules.mk
Normal file
@@ -0,0 +1,4 @@
|
||||
SERIAL_DRIVER = vendor
|
||||
|
||||
POINTING_DEVICE_ENABLE = yes
|
||||
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
|
||||
@@ -1,16 +1,21 @@
|
||||
# Dilemma
|
||||
|
||||
A very small keyboard made for ergonomic enthusiasts.
|
||||
A family of split keyboards with embedded RP2040 controllers, support for Cirque GlidePoint circle trackpads, and SPI + I2C breakouts for other peripherals
|
||||
|
||||
- Keyboard Maintainer: [Bastard Keyboards](https://github.com/Bastardkb/)
|
||||
- Hardware Supported: RP2040-based controller (_eg._ Splinky, Elite-c, ...)
|
||||
- Hardware Supported: [Bastardkb Dilemma](https://github.com/Bastardkb/Dilemma)
|
||||
- Hardware Availability: [Bastardkb.com](https://bastardkb.com/)
|
||||
|
||||
A pre-assembled version (with embedded controller) is also available.
|
||||
A DIY version of the 3x5_2 PCB with promicro compatible footprint is also available.
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make bastardkb/dilemma/3x5_2/splinky:default
|
||||
make bastardkb/dilemma/3x5_2/assembled:default
|
||||
make bastardkb/dilemma/3x5_3:default
|
||||
make bastardkb/dilemma/4x6_4:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make bastardkb/dilemma/3x5_3:default:flash
|
||||
make bastardkb/dilemma/4x6_4:default:flash
|
||||
|
||||
See the [keyboard build instructions](http://docs.bastardkb.com/)
|
||||
|
||||
17
keyboards/beekeeb/piantor_pro/config.h
Normal file
17
keyboards/beekeeb/piantor_pro/config.h
Normal file
@@ -0,0 +1,17 @@
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
|
||||
|
||||
#define SERIAL_USART_FULL_DUPLEX
|
||||
#define SERIAL_USART_TX_PIN GP0
|
||||
#define SERIAL_USART_RX_PIN GP1
|
||||
#define SERIAL_USART_PIN_SWAP
|
||||
|
||||
#define USB_VBUS_PIN GP19
|
||||
|
||||
#define SPLIT_HAND_PIN GP17
|
||||
#define SPLIT_HAND_PIN_LOW_IS_LEFT
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user