mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-08-29 20:15:30 +00:00
Compare commits
106 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
7d94db8661 | ||
![]() |
063f1444c6 | ||
![]() |
2e671cfd8b | ||
![]() |
1b8b6801d4 | ||
![]() |
cc62eb503d | ||
![]() |
0c4fd514f1 | ||
![]() |
9be6d76c61 | ||
![]() |
3d10171e2c | ||
![]() |
e3ef5b2d9d | ||
![]() |
f8cf58a512 | ||
![]() |
efa5b30cfd | ||
![]() |
fb54a59bba | ||
![]() |
fbbc71ec34 | ||
![]() |
a0bb7ff992 | ||
![]() |
6eb6e3048a | ||
![]() |
d08da05cb8 | ||
![]() |
8336b5c72f | ||
![]() |
b23ddb9ad8 | ||
![]() |
67d512e639 | ||
![]() |
4fbb395602 | ||
![]() |
300505bd9e | ||
![]() |
38f07e1fd2 | ||
![]() |
b82f6ac402 | ||
![]() |
be967d42d2 | ||
![]() |
af72a58c8f | ||
![]() |
9fb51cfe2b | ||
![]() |
6d21898c14 | ||
![]() |
096dc672c1 | ||
![]() |
8e64ff574a | ||
![]() |
5e2368984e | ||
![]() |
15af5d7d0d | ||
![]() |
62c1787d72 | ||
![]() |
8fe667a1a4 | ||
![]() |
031ccd4887 | ||
![]() |
43fc7b5a4f | ||
![]() |
4ced8d9371 | ||
![]() |
1c6cdb8d74 | ||
![]() |
c663f5e9f3 | ||
![]() |
977918982d | ||
![]() |
c2f7974c8e | ||
![]() |
bc8ac86422 | ||
![]() |
33adb8cba0 | ||
![]() |
e754c9f2b4 | ||
![]() |
869b7d9ae6 | ||
![]() |
3ffe8d917a | ||
![]() |
12379dc1eb | ||
![]() |
d6bfbdb6b1 | ||
![]() |
cc0b2f9814 | ||
![]() |
5624804c68 | ||
![]() |
2bde8ce206 | ||
![]() |
086e8e938e | ||
![]() |
cd374b1500 | ||
![]() |
9d02ac37f7 | ||
![]() |
603586800c | ||
![]() |
90b043e01c | ||
![]() |
5f794217b4 | ||
![]() |
b71b81d539 | ||
![]() |
17ae6f9b53 | ||
![]() |
cebe521b11 | ||
![]() |
0b572a1be6 | ||
![]() |
378dbd32bd | ||
![]() |
03e688e91f | ||
![]() |
d5e0562a70 | ||
![]() |
191c8cca33 | ||
![]() |
7aa2ce2b38 | ||
![]() |
6f03d20a92 | ||
![]() |
e5c80fc6b3 | ||
![]() |
aa11ef5bcf | ||
![]() |
a6ef34cd16 | ||
![]() |
4fdde75333 | ||
![]() |
dafc46f1d1 | ||
![]() |
baa564bddf | ||
![]() |
3f44231d2d | ||
![]() |
4864d5afca | ||
![]() |
089a819179 | ||
![]() |
751fbd75d3 | ||
![]() |
3c868b9316 | ||
![]() |
7ac1a34a34 | ||
![]() |
ad82c4703a | ||
![]() |
0262161914 | ||
![]() |
d4654ab893 | ||
![]() |
aec7569a04 | ||
![]() |
0594121b68 | ||
![]() |
4e8b740dd7 | ||
![]() |
c92becc57e | ||
![]() |
cd565a95a0 | ||
![]() |
caf13bb9db | ||
![]() |
4a4eda4c3c | ||
![]() |
942c2a8d5a | ||
![]() |
be9dfe65dd | ||
![]() |
fa40356250 | ||
![]() |
7247039742 | ||
![]() |
e69d30a9e9 | ||
![]() |
bdd10ef8e7 | ||
![]() |
031ca3b40b | ||
![]() |
8041a88f5d | ||
![]() |
8b5cdfabf5 | ||
![]() |
df4538d894 | ||
![]() |
e484a3a179 | ||
![]() |
9dc183afe4 | ||
![]() |
e7a08ef1a9 | ||
![]() |
950d765370 | ||
![]() |
260e9a546e | ||
![]() |
a4da5f219f | ||
![]() |
6d365dd8f1 | ||
![]() |
8253697a63 |
25
.github/workflows/ci_build_major_branch.yml
vendored
25
.github/workflows/ci_build_major_branch.yml
vendored
@@ -77,44 +77,57 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Disable safe.directory check
|
||||
run: |
|
||||
git config --global --add safe.directory '*'
|
||||
|
||||
- name: Checkout QMK Firmware
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download firmwares
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
pattern: firmware-*
|
||||
path: firmwares
|
||||
path: .
|
||||
merge-multiple: true
|
||||
|
||||
- name: Generate index page
|
||||
run: |
|
||||
python3 -m pip install -r ./util/ci/requirements.txt
|
||||
./util/ci/index_generator.py > index.html
|
||||
./util/ci/firmware_list_generator.py > firmware_list.json
|
||||
|
||||
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/${{ github.sha }}
|
||||
uses: jakejarvis/s3-sync-action@master
|
||||
with:
|
||||
args: --acl public-read --follow-symlinks --delete
|
||||
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
|
||||
env:
|
||||
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
|
||||
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
|
||||
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
|
||||
SOURCE_DIR: firmwares
|
||||
SOURCE_DIR: .
|
||||
DEST_DIR: ${{ inputs.branch || github.ref_name }}/${{ github.sha }}
|
||||
|
||||
- name: Upload to https://ci.qmk.fm/${{ inputs.branch || github.ref_name }}/latest
|
||||
uses: jakejarvis/s3-sync-action@master
|
||||
with:
|
||||
args: --acl public-read --follow-symlinks --delete
|
||||
args: --acl public-read --follow-symlinks --delete --exclude '*' --include 'index.html' --include 'firmware_list.json' --include '*.hex' --include '*.bin' --include '*.uf2'
|
||||
env:
|
||||
AWS_S3_BUCKET: ${{ vars.CI_QMK_FM_SPACES_BUCKET }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.CI_QMK_FM_SPACES_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.CI_QMK_FM_SPACES_SECRET }}
|
||||
AWS_REGION: ${{ vars.CI_QMK_FM_SPACES_REGION }}
|
||||
AWS_S3_ENDPOINT: ${{ vars.CI_QMK_FM_SPACES_ENDPOINT }}
|
||||
SOURCE_DIR: firmwares
|
||||
SOURCE_DIR: .
|
||||
DEST_DIR: ${{ inputs.branch || github.ref_name }}/latest
|
||||
|
||||
- name: Check if failure marker file exists
|
||||
id: check_failure_marker
|
||||
uses: andstor/file-existence-action@v3
|
||||
with:
|
||||
files: firmwares/.failed
|
||||
files: ./.failed
|
||||
|
||||
- name: Fail build if needed
|
||||
if: steps.check_failure_marker.outputs.files_exists == 'true'
|
||||
|
38
.github/workflows/docs.yml
vendored
38
.github/workflows/docs.yml
vendored
@@ -7,7 +7,6 @@ on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- vitepress
|
||||
paths:
|
||||
- 'builddefs/docsgen/**'
|
||||
- 'tmk_core/**'
|
||||
@@ -15,6 +14,11 @@ on:
|
||||
- 'platforms/**'
|
||||
- 'docs/**'
|
||||
- '.github/workflows/docs.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'builddefs/docsgen/**'
|
||||
- 'docs/**'
|
||||
- '.github/workflows/docs.yml'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
@@ -25,9 +29,6 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/qmk/qmk_cli
|
||||
|
||||
# protect against those who develop with their fork on master
|
||||
if: github.repository == 'qmk/qmk_firmware' || (github.repository == 'tzarc/qmk_firmware' && github.ref == 'refs/heads/vitepress')
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
@@ -35,10 +36,10 @@ jobs:
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apt-get update && apt-get install -y rsync doxygen curl
|
||||
apt-get update && apt-get install -y rsync doxygen
|
||||
# install nvm
|
||||
touch $HOME/.bashrc
|
||||
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
|
||||
|
||||
- name: Install node
|
||||
run: |
|
||||
@@ -46,40 +47,19 @@ jobs:
|
||||
nvm install 20
|
||||
nvm use 20
|
||||
corepack enable
|
||||
npm install -g moxygen
|
||||
|
||||
- name: Build docs
|
||||
run: |
|
||||
source $HOME/.bashrc
|
||||
nvm use 20
|
||||
qmk --verbose generate-docs
|
||||
touch '.build/docs/.nojekyll'
|
||||
|
||||
- name: Set CNAME
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
run: |
|
||||
# Override target CNAME
|
||||
echo 'docs.qmk.fm' > .build/docs/CNAME
|
||||
|
||||
- name: Override CNAME
|
||||
if: github.repository == 'tzarc/qmk_firmware'
|
||||
run: |
|
||||
# Temporarily override target CNAME during development
|
||||
echo 'vitepress.qmk.fm' > .build/docs/CNAME
|
||||
|
||||
- name: Deploy
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
uses: JamesIves/github-pages-deploy-action@v4.6.1
|
||||
if: ${{ github.event_name == 'push' && github.repository == 'qmk/qmk_firmware' }}
|
||||
uses: JamesIves/github-pages-deploy-action@v4.6.3
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
branch: gh-pages
|
||||
folder: .build/docs
|
||||
git-config-name: QMK Bot
|
||||
git-config-email: hello@qmk.fm
|
||||
|
||||
- name: Deploy
|
||||
if: github.repository == 'tzarc/qmk_firmware'
|
||||
uses: JamesIves/github-pages-deploy-action@v4.6.1
|
||||
with:
|
||||
branch: gh-pages
|
||||
folder: .build/docs
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@@ -25,6 +25,8 @@
|
||||
*.la
|
||||
*.stackdump
|
||||
*.sym
|
||||
index.html
|
||||
firmware_list.json
|
||||
|
||||
# QMK-specific
|
||||
api_data/v1
|
||||
|
15
Makefile
15
Makefile
@@ -465,3 +465,18 @@ distclean_userspace: clean
|
||||
rm -f $(QMK_USERSPACE)/*.bin $(QMK_USERSPACE)/*.hex $(QMK_USERSPACE)/*.uf2
|
||||
echo 'done.'
|
||||
endif
|
||||
|
||||
# Extra targets for formatting and/or pytest, running within the qmk/qmk_cli container to match GHA.
|
||||
CONTAINER_PREAMBLE := export HOME="/tmp"; export PATH="/tmp/.local/bin:\$$PATH"; python3 -m pip install --upgrade pip; python3 -m pip install -r requirements-dev.txt
|
||||
|
||||
.PHONY: format-core
|
||||
format-core:
|
||||
RUNTIME=docker ./util/docker_cmd.sh bash -lic "$(CONTAINER_PREAMBLE); qmk format-c --core-only -a && qmk format-python -a"
|
||||
|
||||
.PHONY: pytest
|
||||
pytest:
|
||||
RUNTIME=docker ./util/docker_cmd.sh bash -lic "$(CONTAINER_PREAMBLE); qmk pytest"
|
||||
|
||||
.PHONY: format-and-pytest
|
||||
format-and-pytest:
|
||||
RUNTIME=docker ./util/docker_cmd.sh bash -lic "$(CONTAINER_PREAMBLE); qmk format-c --core-only -a && qmk format-python -a && qmk pytest"
|
||||
|
@@ -33,7 +33,7 @@ export default defineConfig(({ mode }) => {
|
||||
},
|
||||
title: 'QMK Firmware',
|
||||
|
||||
nav: [{ text: "Home", link: "./" }],
|
||||
nav: [{ text: "Home", link: "/" }],
|
||||
|
||||
search: {
|
||||
provider: "local",
|
||||
|
@@ -40,7 +40,8 @@
|
||||
"pattern": "^[0-9a-z_/\\-]+\\.json$"
|
||||
},
|
||||
"key_unit": {
|
||||
"type": "number"
|
||||
"type": "number",
|
||||
"minimum": 0
|
||||
},
|
||||
"keyboard": {
|
||||
"type": "string",
|
||||
|
@@ -515,8 +515,8 @@
|
||||
"minimum": 0
|
||||
}
|
||||
},
|
||||
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
|
||||
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
|
||||
"x": {"$ref": "qmk.definitions.v1#/unsigned_int"},
|
||||
"y": {"$ref": "qmk.definitions.v1#/unsigned_int"},
|
||||
"flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
|
||||
}
|
||||
}
|
||||
@@ -601,8 +601,8 @@
|
||||
"minimum": 0
|
||||
}
|
||||
},
|
||||
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
|
||||
"y": {"$ref": "qmk.definitions.v1#/key_unit"},
|
||||
"x": {"$ref": "qmk.definitions.v1#/unsigned_int"},
|
||||
"y": {"$ref": "qmk.definitions.v1#/unsigned_int"},
|
||||
"flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
|
||||
}
|
||||
}
|
||||
|
@@ -2,8 +2,6 @@
|
||||
"keyboard_name": "%KEYBOARD%",
|
||||
"maintainer": "%USER_NAME%",
|
||||
"manufacturer": "%REAL_NAME%",
|
||||
"processor": "%MCU%",
|
||||
"bootloader": "%BOOTLOADER%",
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"cols": ["C2"],
|
||||
|
@@ -109,6 +109,16 @@ Essentially, changes were made in the internals of how QMK interacts with USB fo
|
||||
|
||||
Compliance checks were run against QMK firmwares for the most popular ARM microcontrollers, as well as suspend/resume tests. As far as we can tell, a whole host of hard-to-reproduce issues are mitigated by this change.
|
||||
|
||||
## Deprecation Notices
|
||||
|
||||
In line with the [notice period](../support_deprecation_policy#how-much-advance-notice-will-be-given), deprecation notices for larger items are listed here.
|
||||
|
||||
### Migration of VIA keymaps to VIA team control
|
||||
|
||||
The QMK team has been in discussion with the VIA maintainers and all VIA-related keymaps in the `qmk_firmware` repository will transition to a `qmk_userspace`-style repository under the VIA team's control at the end of the next breaking changes period. This allows the VIA team to support many more custom keyboard configurations, as well as reduces the turnaround time for any changes to the VIA protocol they wish to make.
|
||||
|
||||
At the end of the breaking changes cycle ending 2024-08-25, VIA-enabled keymaps will no longer be accepted into the QMK repository. At the time of migration, any open PRs against `qmk_firmware` which include new VIA-related keymaps will be subsequently be asked to remove those keymaps and instead raise a PR against the userspace repository containing all VIA keymaps.
|
||||
|
||||
## Full changelist {#full-changelist}
|
||||
|
||||
Core:
|
||||
|
@@ -4,6 +4,7 @@
|
||||
"/cli_dev_configuration": "/cli_configuration",
|
||||
"/dynamic_macros": "/feature_dynamic_macros",
|
||||
"/feature_common_shortcuts": "/feature_advanced_keycodes",
|
||||
"/flashing_bootloadhid": "/flashing",
|
||||
"/getting_started_build_tools": "/newbs_getting_started",
|
||||
"/getting_started_getting_help": "/support",
|
||||
"/glossary": "/reference_glossary",
|
||||
|
@@ -64,13 +64,7 @@
|
||||
"text": "Development Environments",
|
||||
"items": [{ "text": "Docker Guide", "link": "/getting_started_docker" }]
|
||||
},
|
||||
{
|
||||
"text": "Flashing",
|
||||
"items": [
|
||||
{ "text": "Flashing", "link": "/flashing" },
|
||||
{ "text": "Flashing ATmega32A (ps2avrgb)", "link": "/flashing_bootloadhid" }
|
||||
]
|
||||
},
|
||||
{ "text": "Flashing", "link": "/flashing" },
|
||||
{
|
||||
"text": "IDEs",
|
||||
"items": [
|
||||
@@ -212,7 +206,8 @@
|
||||
"text": "Most Recent ChangeLog",
|
||||
"link": "/ChangeLog/20240526"
|
||||
},
|
||||
{ "text": "Past Breaking Changes", "link": "/breaking_changes_history" }
|
||||
{ "text": "Past Breaking Changes", "link": "/breaking_changes_history" },
|
||||
{ "text": "Deprecation Policy", "link": "/support_deprecation_policy" }
|
||||
]
|
||||
},
|
||||
|
||||
|
@@ -16,7 +16,9 @@ I'll say that again because it's important:
|
||||
**MAKE SURE YOU SELECT THE RIGHT VERSION!**
|
||||
:::
|
||||
|
||||
If your keyboard has been advertised to be powered by QMK but is not in the list, chances are a developer hasn't gotten to it yet or we haven't had a chance to merge it in yet. File an issue at [qmk_firmware](https://github.com/qmk/qmk_firmware/issues) requesting to support that particular keyboard, if there is no active [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard) for it. There are also QMK powered keyboards that are in their manufacturer's own GitHub accounts. Double check for that as well. <!-- FIXME(skullydazed): This feels too wordy and I'm not sure we want to encourage these kinds of issues. Also, should we prompt them to bug the manufacutrer? -->
|
||||
Unfortunately if your keyboard has been advertised to be powered by QMK but is not in the list, you will **not** be able to use Configurator to customize your keyboard.
|
||||
|
||||
Chances are a developer hasn't gotten round to adding support or we haven't had a chance to merge it in yet. If there is no active [Pull Request](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+is%3Apr+label%3Akeyboard), contact the manufacturer and encourage them to add support.
|
||||
|
||||
## Step 2: Select Your Keyboard Layout
|
||||
|
||||
|
@@ -105,7 +105,9 @@ enum my_keycodes {
|
||||
|
||||
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:
|
||||
|
||||
qmk docs
|
||||
```
|
||||
qmk docs
|
||||
```
|
||||
|
||||
and navigating to `http://localhost:5173/`.
|
||||
|
||||
|
@@ -85,9 +85,9 @@ Your `keymap.c` will then need an encoder mapping defined (for four layers and t
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_MS_WH_UP, KC_MS_WH_DOWN), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI) },
|
||||
[2] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI), ENCODER_CCW_CW(RGB_SPD, RGB_SPI) },
|
||||
[3] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
|
||||
[1] = { ENCODER_CCW_CW(UG_HUED, UG_HUEU), ENCODER_CCW_CW(UG_SATD, UG_SATU) },
|
||||
[2] = { ENCODER_CCW_CW(UG_VALD, UG_VALU), ENCODER_CCW_CW(UG_SPDD, UG_SPDU) },
|
||||
[3] = { ENCODER_CCW_CW(UG_PREV, UG_NEXT), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT) },
|
||||
};
|
||||
#endif
|
||||
```
|
||||
|
@@ -300,18 +300,11 @@ These modes introduce additional logic that can increase firmware size.
|
||||
|
||||
## Custom LED Matrix Effects {#custom-led-matrix-effects}
|
||||
|
||||
By setting `LED_MATRIX_CUSTOM_USER` (and/or `LED_MATRIX_CUSTOM_KB`) in `rules.mk`, new effects can be defined directly from userspace, without having to edit any QMK core files.
|
||||
By setting `LED_MATRIX_CUSTOM_USER = yes` in `rules.mk`, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files. To declare new effects, create a `led_matrix_user.inc` file in the user keymap directory or userspace folder.
|
||||
|
||||
To declare new effects, create a new `led_matrix_user/kb.inc` that looks something like this:
|
||||
|
||||
`led_matrix_user.inc` should go in the root of the keymap directory.
|
||||
`led_matrix_kb.inc` should go in the root of the keyboard directory.
|
||||
|
||||
To use custom effects in your code, simply prepend `LED_MATRIX_CUSTOM_` to the effect name specified in `LED_MATRIX_EFFECT()`. For example, an effect declared as `LED_MATRIX_EFFECT(my_cool_effect)` would be referenced with:
|
||||
|
||||
```c
|
||||
led_matrix_mode(led_MATRIX_CUSTOM_my_cool_effect);
|
||||
```
|
||||
::: tip
|
||||
Hardware maintainers who want to limit custom effects to a specific keyboard can create a `led_matrix_kb.inc` file in the root of the keyboard directory, and add `LED_MATRIX_CUSTOM_KB = yes` to the keyboard level `rules.mk`.
|
||||
:::
|
||||
|
||||
```c
|
||||
// !!! DO NOT ADD #pragma once !!! //
|
||||
@@ -356,6 +349,12 @@ static bool my_cool_effect2(effect_params_t* params) {
|
||||
#endif // LED_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
```
|
||||
|
||||
To switch to your custom effect programmatically, simply call `led_matrix_mode()` and prepend `LED_MATRIX_CUSTOM_` to the effect name your specified in `LED_MATRIX_EFFECT()`. For example, an effect declared as `LED_MATRIX_EFFECT(my_cool_effect)` would be referenced with:
|
||||
|
||||
```c
|
||||
led_matrix_mode(LED_MATRIX_CUSTOM_my_cool_effect);
|
||||
```
|
||||
|
||||
For inspiration and examples, check out the built-in effects under `quantum/led_matrix/animations/`.
|
||||
|
||||
|
||||
@@ -381,55 +380,6 @@ For inspiration and examples, check out the built-in effects under `quantum/led_
|
||||
|
||||
The EEPROM for it is currently shared with the RGB Matrix system (it's generally assumed only one feature would be used at a time).
|
||||
|
||||
### Direct Operation {#direct-operation}
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`led_matrix_set_value_all(v)` |Set all of the LEDs to the given value, where `v` is between 0 and 255 (not written to EEPROM) |
|
||||
|`led_matrix_set_value(index, v)` |Set a single LED to the given value, where `v` is between 0 and 255, and `index` is between 0 and `LED_MATRIX_LED_COUNT` (not written to EEPROM) |
|
||||
|
||||
### Disable/Enable Effects {#disable-enable-effects}
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`led_matrix_toggle()` |Toggle effect range LEDs between on and off |
|
||||
|`led_matrix_toggle_noeeprom()` |Toggle effect range LEDs between on and off (not written to EEPROM) |
|
||||
|`led_matrix_enable()` |Turn effect range LEDs on, based on their previous state |
|
||||
|`led_matrix_enable_noeeprom()` |Turn effect range LEDs on, based on their previous state (not written to EEPROM) |
|
||||
|`led_matrix_disable()` |Turn effect range LEDs off, based on their previous state |
|
||||
|`led_matrix_disable_noeeprom()` |Turn effect range LEDs off, based on their previous state (not written to EEPROM) |
|
||||
|
||||
### Change Effect Mode {#change-effect-mode}
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`led_matrix_mode(mode)` |Set the mode, if LED animations are enabled |
|
||||
|`led_matrix_mode_noeeprom(mode)` |Set the mode, if LED animations are enabled (not written to EEPROM) |
|
||||
|`led_matrix_step()` |Change the mode to the next LED animation in the list of enabled LED animations |
|
||||
|`led_matrix_step_noeeprom()` |Change the mode to the next LED animation in the list of enabled LED animations (not written to EEPROM) |
|
||||
|`led_matrix_step_reverse()` |Change the mode to the previous LED animation in the list of enabled LED animations |
|
||||
|`led_matrix_step_reverse_noeeprom()` |Change the mode to the previous LED animation in the list of enabled LED animations (not written to EEPROM) |
|
||||
|`led_matrix_increase_speed()` |Increase the speed of the animations |
|
||||
|`led_matrix_increase_speed_noeeprom()` |Increase the speed of the animations (not written to EEPROM) |
|
||||
|`led_matrix_decrease_speed()` |Decrease the speed of the animations |
|
||||
|`led_matrix_decrease_speed_noeeprom()` |Decrease the speed of the animations (not written to EEPROM) |
|
||||
|`led_matrix_set_speed(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 |
|
||||
|`led_matrix_set_speed_noeeprom(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 (not written to EEPROM) |
|
||||
|
||||
### Change Value {#change-value}
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`led_matrix_increase_val()` |Increase the value for effect range LEDs. This wraps around at maximum value |
|
||||
|`led_matrix_increase_val_noeeprom()` |Increase the value for effect range LEDs. This wraps around at maximum value (not written to EEPROM) |
|
||||
|`led_matrix_decrease_val()` |Decrease the value for effect range LEDs. This wraps around at minimum value |
|
||||
|`led_matrix_decrease_val_noeeprom()` |Decrease the value for effect range LEDs. This wraps around at minimum value (not written to EEPROM) |
|
||||
|
||||
### Query Current Status {#query-current-status}
|
||||
|Function |Description |
|
||||
|---------------------------------|---------------------------|
|
||||
|`led_matrix_is_enabled()` |Gets current on/off status |
|
||||
|`led_matrix_get_mode()` |Gets current mode |
|
||||
|`led_matrix_get_val()` |Gets current val |
|
||||
|`led_matrix_get_speed()` |Gets current speed |
|
||||
|`led_matrix_get_suspend_state()` |Gets current suspend state |
|
||||
|
||||
## Callbacks {#callbacks}
|
||||
|
||||
### Indicators {#indicators}
|
||||
@@ -453,3 +403,293 @@ void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||
return false;
|
||||
}
|
||||
```
|
||||
|
||||
## API {#api}
|
||||
|
||||
### `void led_matrix_toggle(void)` {#api-led-matrix-toggle}
|
||||
|
||||
Toggle LED Matrix on or off.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_toggle_noeeprom(void)` {#api-led-matrix-toggle-noeeprom}
|
||||
|
||||
Toggle LED Matrix on or off. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_enable(void)` {#api-led-matrix-enable}
|
||||
|
||||
Turn LED Matrix on.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_enable_noeeprom(void)` {#api-led-matrix-enable-noeeprom}
|
||||
|
||||
Turn LED Matrix on. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_disable(void)` {#api-led-matrix-disable}
|
||||
|
||||
Turn LED Matrix off.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_disable_noeeprom(void)` {#api-led-matrix-disable-noeeprom}
|
||||
|
||||
Turn LED Matrix off. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `bool led_matrix_is_enabled(void)` {#api-led-matrix-is-enabled}
|
||||
|
||||
Get the current enabled state of LED Matrix.
|
||||
|
||||
#### Return Value {#api-led-matrix-is-enabled-return}
|
||||
|
||||
`true` if LED Matrix is enabled.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_set_value(uint8_t index, uint8_t v)` {#led-matrix-set-value}
|
||||
|
||||
Set the brightness of a single LED.
|
||||
|
||||
This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.
|
||||
|
||||
#### Arguments {#api-led-matrix-set-value-arguments}
|
||||
|
||||
- `uint8_t index`
|
||||
The LED index, from 0 to `LED_MATRIX_LED_COUNT - 1`.
|
||||
- `uint8_t v`
|
||||
The brightness value to set.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_set_value_all(uint8_t v)` {#api-led-matrix-set-value-all}
|
||||
|
||||
Set the brightness of all LEDs.
|
||||
|
||||
This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.
|
||||
|
||||
#### Arguments {#api-led-matrix-set-value-all-arguments}
|
||||
|
||||
- `uint8_t v`
|
||||
The brightness value to set.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_mode(uint8_t mode)` {#api-led-matrix-mode}
|
||||
|
||||
Set the currently running effect.
|
||||
|
||||
#### Arguments {#api-led-matrix-mode-arguments}
|
||||
|
||||
- `uint8_t mode`
|
||||
The effect to switch to.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_mode_noeeprom(uint8_t mode)` {#api-led-matrix-mode-noeeprom}
|
||||
|
||||
Set the currently running effect. New state is not written to EEPROM.
|
||||
|
||||
#### Arguments {#api-led-matrix-mode-noeeprom-arguments}
|
||||
|
||||
- `uint8_t mode`
|
||||
The effect to switch to.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_step(void)` {#api-led-matrix-step}
|
||||
|
||||
Move to the next enabled effect.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_step_noeeprom(void)` {#api-led-matrix-step-noeeprom}
|
||||
|
||||
Move to the next enabled effect. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_step_reverse(void)` {#api-led-matrix-step-reverse}
|
||||
|
||||
Move to the previous enabled effect.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_step_reverse_noeeprom(void)` {#api-led-matrix-step-reverse-noeeprom}
|
||||
|
||||
Move to the previous enabled effect. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `uint8_t led_matrix_get_mode(void)` {#api-led-matrix-get-mode}
|
||||
|
||||
Get the currently running effect.
|
||||
|
||||
#### Return Value {#api-led-matrix-get-mode-return}
|
||||
|
||||
The index of the currently running effect.
|
||||
|
||||
---
|
||||
|
||||
### `void val_matrix_increase_val(void)` {#api-led-matrix-increase-val}
|
||||
|
||||
Increase the global effect brightness.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_increase_val_noeeprom(void)` {#api-led-matrix-increase-val-noeeprom}
|
||||
|
||||
Increase the global effect brightness. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_decrease_val(void)` {#api-led-matrix-decrease-val}
|
||||
|
||||
Decrease the global effect brightness.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_decrease_val_noeeprom(void)` {#api-led-matrix-decrease-val-noeeprom}
|
||||
|
||||
Decrease the global effect brightness. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `uint8_t led_matrix_get_val(void)` {#api-led-matrix-get-val}
|
||||
|
||||
Get the current global effect brightness.
|
||||
|
||||
#### Return Value {#api-led-matrix-get-val-return}
|
||||
|
||||
The current brightness value, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_increase_speed(void)` {#api-led-matrix-increase-speed}
|
||||
|
||||
Increase the effect speed.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_increase_speed_noeeprom(void)` {#api-led-matrix-increase-speed-noeeprom}
|
||||
|
||||
Increase the effect speed. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_decrease_speed(void)` {#api-led-matrix-decrease-speed}
|
||||
|
||||
Decrease the effect speed.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_decrease_speed_noeeprom(void)` {#api-led-matrix-decrease-speed-noeeprom}
|
||||
|
||||
Decrease the effect speed. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_set_speed(uint8_t speed)` {#api-led-matrix-set-speed}
|
||||
|
||||
Set the effect speed.
|
||||
|
||||
#### Arguments {#api-led-matrix-set-speed-arguments}
|
||||
|
||||
- `uint8_t speed`
|
||||
The new speed to set, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_set_speed_noeeprom(uint8_t speed)` {#api-led-matrix-set-speed-noeeprom}
|
||||
|
||||
Set the effect speed. New state is not written to EEPROM.
|
||||
|
||||
#### Arguments {#api-led-matrix-set-speed-noeeprom-arguments}
|
||||
|
||||
- `uint8_t speed`
|
||||
The new speed to set, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `uint8_t led_matrix_get_speed(void)` {#api-led-matrix-get-speed}
|
||||
|
||||
Get the current effect speed.
|
||||
|
||||
#### Return Value {#api-led-matrix-get-speed-return}
|
||||
|
||||
The current effect speed, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `void led_matrix_reload_from_eeprom(void)` {#api-led-matrix-reload-from-eeprom}
|
||||
|
||||
Reload the effect configuration (enabled, mode and brightness) from EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `bool led_matrix_get_suspend_state(void)` {#api-led-matrix-get-suspend-state}
|
||||
|
||||
Get the current suspend state of LED Matrix.
|
||||
|
||||
#### Return Value {#api-led-matrix-get-suspend-state-return}
|
||||
|
||||
`true` if LED Matrix is currently in the suspended state.
|
||||
|
||||
---
|
||||
|
||||
### `bool led_matrix_indicators_kb(void)` {#api-led-matrix-indicators-kb}
|
||||
|
||||
Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.
|
||||
|
||||
#### Return Value {#api-led-matrix-indicators-kb-return}
|
||||
|
||||
Currently unused.
|
||||
|
||||
---
|
||||
|
||||
### `bool led_matrix_indicators_user(void)` {#api-led-matrix-indicators-user}
|
||||
|
||||
Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.
|
||||
|
||||
#### Return Value {#api-led-matrix-indicators-user-return}
|
||||
|
||||
`true` to continue running the keyboard-level callback.
|
||||
|
||||
---
|
||||
|
||||
### `bool led_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)` {#api-led-matrix-indicators-advanced-kb}
|
||||
|
||||
Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.
|
||||
|
||||
### Arguments {#api-led-matrix-indicators-advanced-kb-arguments}
|
||||
|
||||
- `uint8_t led_min`
|
||||
The index of the first LED in this batch.
|
||||
- `uint8_t led_max`
|
||||
The index of the last LED in this batch.
|
||||
|
||||
#### Return Value {#api-led-matrix-indicators-advanced-kb-return}
|
||||
|
||||
Currently unused.
|
||||
|
||||
---
|
||||
|
||||
### `bool led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)` {#api-led-matrix-indicators-advanced-user}
|
||||
|
||||
Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.
|
||||
|
||||
### Arguments {#api-led-matrix-indicators-advanced-user-arguments}
|
||||
|
||||
- `uint8_t led_min`
|
||||
The index of the first LED in this batch.
|
||||
- `uint8_t led_max`
|
||||
The index of the last LED in this batch.
|
||||
|
||||
#### Return Value {#api-led-matrix-indicators-advanced-user-return}
|
||||
|
||||
`true` to continue running the keyboard-level callback.
|
||||
|
@@ -807,12 +807,6 @@ By setting `RGB_MATRIX_CUSTOM_USER = yes` in `rules.mk`, new effects can be defi
|
||||
Hardware maintainers who want to limit custom effects to a specific keyboard can create a `rgb_matrix_kb.inc` file in the root of the keyboard directory, and add `RGB_MATRIX_CUSTOM_KB = yes` to the keyboard level `rules.mk`.
|
||||
:::
|
||||
|
||||
To use custom effects in your code, simply prepend `RGB_MATRIX_CUSTOM_` to the effect name specified in `RGB_MATRIX_EFFECT()`. For example, an effect declared as `RGB_MATRIX_EFFECT(my_cool_effect)` would be referenced with:
|
||||
|
||||
```c
|
||||
rgb_matrix_mode(RGB_MATRIX_CUSTOM_my_cool_effect);
|
||||
```
|
||||
|
||||
```c
|
||||
// !!! DO NOT ADD #pragma once !!! //
|
||||
|
||||
@@ -856,6 +850,12 @@ static bool my_cool_effect2(effect_params_t* params) {
|
||||
#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
||||
```
|
||||
|
||||
To switch to your custom effect programmatically, simply call `rgb_matrix_mode()` and prepend `RGB_MATRIX_CUSTOM_` to the effect name you specified in `RGB_MATRIX_EFFECT()`. For example, an effect declared as `RGB_MATRIX_EFFECT(my_cool_effect)` would be referenced with:
|
||||
|
||||
```c
|
||||
rgb_matrix_mode(RGB_MATRIX_CUSTOM_my_cool_effect);
|
||||
```
|
||||
|
||||
For inspiration and examples, check out the built-in effects under `quantum/rgb_matrix/animations/`.
|
||||
|
||||
|
||||
@@ -914,71 +914,6 @@ These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master
|
||||
|
||||
The EEPROM for it is currently shared with the LED Matrix system (it's generally assumed only one feature would be used at a time).
|
||||
|
||||
## Functions {#functions}
|
||||
|
||||
### Direct Operation {#direct-operation}
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`rgb_matrix_set_color_all(r, g, b)` |Set all of the LEDs to the given RGB value, where `r`/`g`/`b` are between 0 and 255 (not written to EEPROM) |
|
||||
|`rgb_matrix_set_color(index, r, g, b)` |Set a single LED to the given RGB value, where `r`/`g`/`b` are between 0 and 255, and `index` is between 0 and `RGB_MATRIX_LED_COUNT` (not written to EEPROM) |
|
||||
|
||||
### Disable/Enable Effects {#disable-enable-effects}
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`rgb_matrix_toggle()` |Toggle effect range LEDs between on and off |
|
||||
|`rgb_matrix_toggle_noeeprom()` |Toggle effect range LEDs between on and off (not written to EEPROM) |
|
||||
|`rgb_matrix_enable()` |Turn effect range LEDs on, based on their previous state |
|
||||
|`rgb_matrix_enable_noeeprom()` |Turn effect range LEDs on, based on their previous state (not written to EEPROM) |
|
||||
|`rgb_matrix_disable()` |Turn effect range LEDs off, based on their previous state |
|
||||
|`rgb_matrix_disable_noeeprom()` |Turn effect range LEDs off, based on their previous state (not written to EEPROM) |
|
||||
|
||||
### Change Effect Mode {#change-effect-mode}
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`rgb_matrix_mode(mode)` |Set the mode, if RGB animations are enabled |
|
||||
|`rgb_matrix_mode_noeeprom(mode)` |Set the mode, if RGB animations are enabled (not written to EEPROM) |
|
||||
|`rgb_matrix_step()` |Change the mode to the next RGB animation in the list of enabled RGB animations |
|
||||
|`rgb_matrix_step_noeeprom()` |Change the mode to the next RGB animation in the list of enabled RGB animations (not written to EEPROM) |
|
||||
|`rgb_matrix_step_reverse()` |Change the mode to the previous RGB animation in the list of enabled RGB animations |
|
||||
|`rgb_matrix_step_reverse_noeeprom()` |Change the mode to the previous RGB animation in the list of enabled RGB animations (not written to EEPROM) |
|
||||
|`rgb_matrix_increase_speed()` |Increase the speed of the animations |
|
||||
|`rgb_matrix_increase_speed_noeeprom()` |Increase the speed of the animations (not written to EEPROM) |
|
||||
|`rgb_matrix_decrease_speed()` |Decrease the speed of the animations |
|
||||
|`rgb_matrix_decrease_speed_noeeprom()` |Decrease the speed of the animations (not written to EEPROM) |
|
||||
|`rgb_matrix_set_speed(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 |
|
||||
|`rgb_matrix_set_speed_noeeprom(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 (not written to EEPROM) |
|
||||
|`rgb_matrix_reload_from_eeprom()` |Reload the effect configuration (enabled, mode and color) from EEPROM |
|
||||
|
||||
### Change Color {#change-color}
|
||||
|Function |Description |
|
||||
|--------------------------------------------|-------------|
|
||||
|`rgb_matrix_increase_hue()` |Increase the hue for effect range LEDs. This wraps around at maximum hue |
|
||||
|`rgb_matrix_increase_hue_noeeprom()` |Increase the hue for effect range LEDs. This wraps around at maximum hue (not written to EEPROM) |
|
||||
|`rgb_matrix_decrease_hue()` |Decrease the hue for effect range LEDs. This wraps around at minimum hue |
|
||||
|`rgb_matrix_decrease_hue_noeeprom()` |Decrease the hue for effect range LEDs. This wraps around at minimum hue (not written to EEPROM) |
|
||||
|`rgb_matrix_increase_sat()` |Increase the saturation for effect range LEDs. This wraps around at maximum saturation |
|
||||
|`rgb_matrix_increase_sat_noeeprom()` |Increase the saturation for effect range LEDs. This wraps around at maximum saturation (not written to EEPROM) |
|
||||
|`rgb_matrix_decrease_sat()` |Decrease the saturation for effect range LEDs. This wraps around at minimum saturation |
|
||||
|`rgb_matrix_decrease_sat_noeeprom()` |Decrease the saturation for effect range LEDs. This wraps around at minimum saturation (not written to EEPROM) |
|
||||
|`rgb_matrix_increase_val()` |Increase the value for effect range LEDs. This wraps around at maximum value |
|
||||
|`rgb_matrix_increase_val_noeeprom()` |Increase the value for effect range LEDs. This wraps around at maximum value (not written to EEPROM) |
|
||||
|`rgb_matrix_decrease_val()` |Decrease the value for effect range LEDs. This wraps around at minimum value |
|
||||
|`rgb_matrix_decrease_val_noeeprom()` |Decrease the value for effect range LEDs. This wraps around at minimum value (not written to EEPROM) |
|
||||
|`rgb_matrix_sethsv(h, s, v)` |Set LEDs to the given HSV value where `h`/`s`/`v` are between 0 and 255 |
|
||||
|`rgb_matrix_sethsv_noeeprom(h, s, v)` |Set LEDs to the given HSV value where `h`/`s`/`v` are between 0 and 255 (not written to EEPROM) |
|
||||
|
||||
### Query Current Status {#query-current-status}
|
||||
|Function |Description |
|
||||
|---------------------------------|---------------------------|
|
||||
|`rgb_matrix_is_enabled()` |Gets current on/off status |
|
||||
|`rgb_matrix_get_mode()` |Gets current mode |
|
||||
|`rgb_matrix_get_hue()` |Gets current hue |
|
||||
|`rgb_matrix_get_sat()` |Gets current sat |
|
||||
|`rgb_matrix_get_val()` |Gets current val |
|
||||
|`rgb_matrix_get_hsv()` |Gets hue, sat, and val and returns a [`HSV` structure](https://github.com/qmk/qmk_firmware/blob/7ba6456c0b2e041bb9f97dbed265c5b8b4b12192/quantum/color.h#L56-L61)|
|
||||
|`rgb_matrix_get_speed()` |Gets current speed |
|
||||
|`rgb_matrix_get_suspend_state()` |Gets current suspend state |
|
||||
|
||||
## Callbacks {#callbacks}
|
||||
|
||||
### Indicators {#indicators}
|
||||
@@ -1072,9 +1007,9 @@ bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||
HSV hsv = {0, 255, 255};
|
||||
|
||||
if (layer_state_is(layer_state, 2)) {
|
||||
hsv = {130, 255, 255};
|
||||
hsv = (HSV){130, 255, 255};
|
||||
} else {
|
||||
hsv = {30, 255, 255};
|
||||
hsv = (HSV){30, 255, 255};
|
||||
}
|
||||
|
||||
if (hsv.v > rgb_matrix_get_val()) {
|
||||
@@ -1117,3 +1052,409 @@ void keyboard_post_init_user(void) {
|
||||
rgb_matrix_sethsv_noeeprom(HSV_OFF);
|
||||
}
|
||||
```
|
||||
|
||||
## API {#api}
|
||||
|
||||
### `void rgb_matrix_toggle(void)` {#api-rgb-matrix-toggle}
|
||||
|
||||
Toggle RGB Matrix on or off.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_toggle_noeeprom(void)` {#api-rgb-matrix-toggle-noeeprom}
|
||||
|
||||
Toggle RGB Matrix on or off. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_enable(void)` {#api-rgb-matrix-enable}
|
||||
|
||||
Turn RGB Matrix on.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_enable_noeeprom(void)` {#api-rgb-matrix-enable-noeeprom}
|
||||
|
||||
Turn RGB Matrix on. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_disable(void)` {#api-rgb-matrix-disable}
|
||||
|
||||
Turn RGB Matrix off.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_disable_noeeprom(void)` {#api-rgb-matrix-disable-noeeprom}
|
||||
|
||||
Turn RGB Matrix off. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `bool rgb_matrix_is_enabled(void)` {#api-rgb-matrix-is-enabled}
|
||||
|
||||
Get the current enabled state of RGB Matrix.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-is-enabled-return}
|
||||
|
||||
`true` if RGB Matrix is enabled.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_set_color(uint8_t index, uint8_t r, uint8_t g, uint8_t b)` {#api-rgb-matrix-set-color}
|
||||
|
||||
Set the color of a single LED.
|
||||
|
||||
This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.
|
||||
|
||||
#### Arguments {#api-rgb-matrix-set-color-arguments}
|
||||
|
||||
- `uint8_t index`
|
||||
The LED index, from 0 to `RGB_MATRIX_LED_COUNT - 1`.
|
||||
- `uint8_t r`
|
||||
The red value to set.
|
||||
- `uint8_t g`
|
||||
The green value to set.
|
||||
- `uint8_t b`
|
||||
The blue value to set.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_set_color_all(uint8_t r, uint8_t g, uint8_t b)` {#api-rgb-matrix-set-color-all}
|
||||
|
||||
Set the color of all LEDs.
|
||||
|
||||
This function can only be run from within an effect or indicator callback, otherwise the currently running animation will simply overwrite it on the next frame.
|
||||
|
||||
#### Arguments {#api-rgb-matrix-set-color-all-arguments}
|
||||
|
||||
- `uint8_t r`
|
||||
The red value to set.
|
||||
- `uint8_t g`
|
||||
The green value to set.
|
||||
- `uint8_t b`
|
||||
The blue value to set.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_mode(uint8_t mode)` {#api-rgb-matrix-mode}
|
||||
|
||||
Set the currently running effect.
|
||||
|
||||
#### Arguments {#api-rgb-matrix-mode-arguments}
|
||||
|
||||
- `uint8_t mode`
|
||||
The effect to switch to.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_mode_noeeprom(uint8_t mode)` {#api-rgb-matrix-mode-noeeprom}
|
||||
|
||||
Set the currently running effect. New state is not written to EEPROM.
|
||||
|
||||
#### Arguments {#api-rgb-matrix-mode-noeeprom-arguments}
|
||||
|
||||
- `uint8_t mode`
|
||||
The effect to switch to.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_step(void)` {#api-rgb-matrix-step}
|
||||
|
||||
Move to the next enabled effect.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_step_noeeprom(void)` {#api-rgb-matrix-step-noeeprom}
|
||||
|
||||
Move to the next enabled effect. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_step_reverse(void)` {#api-rgb-matrix-step-reverse}
|
||||
|
||||
Move to the previous enabled effect.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_step_reverse_noeeprom(void)` {#api-rgb-matrix-step-reverse-noeeprom}
|
||||
|
||||
Move to the previous enabled effect. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `uint8_t rgb_matrix_get_mode(void)` {#api-rgb-matrix-get-mode}
|
||||
|
||||
Get the currently running effect.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-get-mode-return}
|
||||
|
||||
The index of the currently running effect.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_increase_hue(void)` {#api-rgb-matrix-increase-hue}
|
||||
|
||||
Increase the global effect hue.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_increase_hue_noeeprom(void)` {#api-rgb-matrix-increase-hue-noeeprom}
|
||||
|
||||
Increase the global effect hue. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_decrease_hue(void)` {#api-rgb-matrix-decrease-hue}
|
||||
|
||||
Decrease the global effect hue.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_decrease_hue_noeeprom(void)` {#api-rgb-matrix-decrease-hue-noeeprom}
|
||||
|
||||
Decrease the global effect hue. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `uint8_t rgb_matrix_get_hue(void)` {#api-rgb-matrix-get-hue}
|
||||
|
||||
Get the current global effect hue.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-get-hue-return}
|
||||
|
||||
The current hue value, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_increase_sat(void)` {#api-rgb-matrix-increase-sat}
|
||||
|
||||
Increase the global effect saturation.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_increase_sat_noeeprom(void)` {#api-rgb-matrix-increase-sat-noeeprom}
|
||||
|
||||
Increase the global effect saturation. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_decrease_sat(void)` {#api-rgb-matrix-decrease-sat}
|
||||
|
||||
Decrease the global effect saturation.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_decrease_sat_noeeprom(void)` {#api-rgb-matrix-decrease-sat-noeeprom}
|
||||
|
||||
Decrease the global effect saturation. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `uint8_t rgb_matrix_get_sat(void)` {#api-rgb-matrix-get-sat}
|
||||
|
||||
Get the current global effect saturation.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-get-sat-return}
|
||||
|
||||
The current saturation value, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_increase_val(void)` {#api-rgb-matrix-increase-val}
|
||||
|
||||
Increase the global effect value (brightness).
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_increase_val_noeeprom(void)` {#api-rgb-matrix-increase-val-noeeprom}
|
||||
|
||||
Increase the global effect value (brightness). New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_decrease_val(void)` {#api-rgb-matrix-decrease-val}
|
||||
|
||||
Decrease the global effect value (brightness).
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_decrease_val_noeeprom(void)` {#api-rgb-matrix-decrease-val-noeeprom}
|
||||
|
||||
Decrease the global effect value (brightness). New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `uint8_t rgb_matrix_get_val(void)` {#api-rgb-matrix-get-val}
|
||||
|
||||
Get the current global effect value (brightness).
|
||||
|
||||
#### Return Value {#api-rgb-matrix-get-val-return}
|
||||
|
||||
The current brightness value, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_increase_speed(void)` {#api-rgb-matrix-increase-speed}
|
||||
|
||||
Increase the effect speed.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_increase_speed_noeeprom(void)` {#api-rgb-matrix-increase-speed-noeeprom}
|
||||
|
||||
Increase the effect speed. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_decrease_speed(void)` {#api-rgb-matrix-decrease-speed}
|
||||
|
||||
Decrease the effect speed.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_decrease_speed_noeeprom(void)` {#api-rgb-matrix-decrease-speed-noeeprom}
|
||||
|
||||
Decrease the effect speed. New state is not written to EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_set_speed(uint8_t speed)` {#api-rgb-matrix-set-speed}
|
||||
|
||||
Set the effect speed.
|
||||
|
||||
#### Arguments {#api-rgb-matrix-set-speed-arguments}
|
||||
|
||||
- `uint8_t speed`
|
||||
The new speed to set, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_set_speed_noeeprom(uint8_t speed)` {#api-rgb-matrix-set-speed-noeeprom}
|
||||
|
||||
Set the effect speed. New state is not written to EEPROM.
|
||||
|
||||
#### Arguments {#api-rgb-matrix-set-speed-noeeprom-arguments}
|
||||
|
||||
- `uint8_t speed`
|
||||
The new speed to set, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `uint8_t rgb_matrix_get_speed(void)` {#api-rgb-matrix-get-speed}
|
||||
|
||||
Get the current effect speed.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-get-speed-return}
|
||||
|
||||
The current effect speed, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_sethsv(uint8_t h, uint8_t s, uint8_t v)` {#api-rgb-matrix-sethsv}
|
||||
|
||||
Set the global effect hue, saturation, and value (brightness).
|
||||
|
||||
### Arguments {#api-rgb-matrix-sethsv-arguments}
|
||||
|
||||
- `uint8_t h`
|
||||
The hue to set, from 0 to 255.
|
||||
- `uint8_t s`
|
||||
The saturation to set, from 0 to 255.
|
||||
- `uint8_t v`
|
||||
The value (brightness) to set, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_sethsv_noeeprom(uint8_t h, uint8_t s, uint8_t v)` {#api-rgb-matrix-sethsv-noeeprom}
|
||||
|
||||
Set the global effect hue, saturation, and value (brightness). New state is not written to EEPROM.
|
||||
|
||||
#### Arguments {#api-rgb-matrix-sethsv-noeeprom-arguments}
|
||||
|
||||
- `uint8_t h`
|
||||
The hue to set, from 0 to 255.
|
||||
- `uint8_t s`
|
||||
The saturation to set, from 0 to 255.
|
||||
- `uint8_t v`
|
||||
The value (brightness) to set, from 0 to 255.
|
||||
|
||||
---
|
||||
|
||||
### `HSV rgb_matrix_get_hsv(void)` {#api-rgb-matrix-get-hsv}
|
||||
|
||||
Get the current global effect hue, saturation, and value (brightness).
|
||||
|
||||
#### Return Value {#api-rgb-matrix-get-hsv-return}
|
||||
|
||||
The current effect HSV as an `HSV` struct.
|
||||
|
||||
---
|
||||
|
||||
### `void rgb_matrix_reload_from_eeprom(void)` {#api-rgb-matrix-reload-from-eeprom}
|
||||
|
||||
Reload the effect configuration (enabled, mode and color) from EEPROM.
|
||||
|
||||
---
|
||||
|
||||
### `bool rgb_matrix_get_suspend_state(void)` {#api-rgb-matrix-get-suspend-state}
|
||||
|
||||
Get the current suspend state of RGB Matrix.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-get-suspend-state-return}
|
||||
|
||||
`true` if RGB Matrix is currently in the suspended state.
|
||||
|
||||
---
|
||||
|
||||
### `bool rgb_matrix_indicators_kb(void)` {#api-rgb-matrix-indicators-kb}
|
||||
|
||||
Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-indicators-kb-return}
|
||||
|
||||
Currently unused.
|
||||
|
||||
---
|
||||
|
||||
### `bool rgb_matrix_indicators_user(void)` {#api-rgb-matrix-indicators-user}
|
||||
|
||||
Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-indicators-user-return}
|
||||
|
||||
`true` to continue running the keyboard-level callback.
|
||||
|
||||
---
|
||||
|
||||
### `bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max)` {#api-rgb-matrix-indicators-advanced-kb}
|
||||
|
||||
Keyboard-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.
|
||||
|
||||
### Arguments {#api-rgb-matrix-indicators-advanced-kb-arguments}
|
||||
|
||||
- `uint8_t led_min`
|
||||
The index of the first LED in this batch.
|
||||
- `uint8_t led_max`
|
||||
The index of the last LED in this batch.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-indicators-advanced-kb-return}
|
||||
|
||||
Currently unused.
|
||||
|
||||
---
|
||||
|
||||
### `bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max)` {#api-rgb-matrix-indicators-advanced-user}
|
||||
|
||||
Keymap-level callback, invoked after current animation frame is rendered but before it is flushed to the LEDs.
|
||||
|
||||
### Arguments {#api-rgb-matrix-indicators-advanced-user-arguments}
|
||||
|
||||
- `uint8_t led_min`
|
||||
The index of the first LED in this batch.
|
||||
- `uint8_t led_max`
|
||||
The index of the last LED in this batch.
|
||||
|
||||
#### Return Value {#api-rgb-matrix-indicators-advanced-user-return}
|
||||
|
||||
`true` to continue running the keyboard-level callback.
|
||||
|
@@ -59,30 +59,32 @@ Changing the **Value** sets the overall brightness.<br>
|
||||
|
||||
## Keycodes
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|-------------------|----------|--------------------------------------------------------------------|
|
||||
|`RGB_TOG` | |Toggle RGB lighting on or off |
|
||||
|`RGB_MODE_FORWARD` |`RGB_MOD` |Cycle through modes, reverse direction when Shift is held |
|
||||
|`RGB_MODE_REVERSE` |`RGB_RMOD`|Cycle through modes in reverse, forward direction when Shift is held|
|
||||
|`RGB_HUI` | |Increase hue, decrease hue when Shift is held |
|
||||
|`RGB_HUD` | |Decrease hue, increase hue when Shift is held |
|
||||
|`RGB_SAI` | |Increase saturation, decrease saturation when Shift is held |
|
||||
|`RGB_SAD` | |Decrease saturation, increase saturation when Shift is held |
|
||||
|`RGB_VAI` | |Increase value (brightness), decrease value when Shift is held |
|
||||
|`RGB_VAD` | |Decrease value (brightness), increase value when Shift is held |
|
||||
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode |
|
||||
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode |
|
||||
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode |
|
||||
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode |
|
||||
|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode |
|
||||
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode |
|
||||
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode |
|
||||
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|
||||
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode |
|
||||
|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode |
|
||||
|Key |Aliases |Description |
|
||||
|------------------------------|----------|---------------------------------------------------------------------|
|
||||
|`QK_UNDERGLOW_TOGGLE` |`UG_TOGG` |Toggle RGB lighting on or off |
|
||||
|`QK_UNDERGLOW_MODE_NEXT` |`UG_NEXT` |Cycle through modes, reverse direction when Shift is held |
|
||||
|`QK_UNDERGLOW_MODE_PREVIOUS` |`UG_PREV` |Cycle through modes in reverse, forward direction when Shift is held |
|
||||
|`QK_UNDERGLOW_HUE_UP` |`UG_HUEU` |Increase hue, decrease hue when Shift is held |
|
||||
|`QK_UNDERGLOW_HUE_DOWN` |`UG_HUED` |Decrease hue, increase hue when Shift is held |
|
||||
|`QK_UNDERGLOW_SATURATION_UP` |`UG_SATU` |Increase saturation, decrease saturation when Shift is held |
|
||||
|`QK_UNDERGLOW_SATURATION_DOWN`|`UG_SATD` |Decrease saturation, increase saturation when Shift is held |
|
||||
|`QK_UNDERGLOW_VALUE_UP` |`UG_VALU` |Increase value (brightness), decrease value when Shift is held |
|
||||
|`QK_UNDERGLOW_VALUE_DOWN` |`UG_VALD` |Decrease value (brightness), increase value when Shift is held |
|
||||
|`QK_UNDERGLOW_SPEED_UP` |`UG_SPDU` |Increase effect speed (brightness), decrease speed when Shift is held|
|
||||
|`QK_UNDERGLOW_SPEED_DOWN` |`UG_SPDD` |Decrease effect speed (brightness), increase speed when Shift is held|
|
||||
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode (deprecated) |
|
||||
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode (deprecated) |
|
||||
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode (deprecated) |
|
||||
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode (deprecated) |
|
||||
|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode (deprecated) |
|
||||
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode (deprecated) |
|
||||
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode (deprecated) |
|
||||
|`RGB_MODE_GRADIENT` |`RGB_M_G` |Static gradient animation mode (deprecated) |
|
||||
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode (deprecated) |
|
||||
|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode (deprecated) |
|
||||
|
||||
::: tip
|
||||
`RGB_*` keycodes cannot be used with functions like `tap_code16(RGB_HUI)` as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions) should be used instead.
|
||||
These keycodes cannot be used with functions like `tap_code16()` as they are not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions) should be used instead.
|
||||
:::
|
||||
|
||||
|
||||
@@ -358,7 +360,7 @@ Lighting layers on split keyboards will require layer state synced to the slave
|
||||
|
||||
### Overriding RGB Lighting on/off status
|
||||
|
||||
Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with `RGB_TOG` keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF` to your `config.h`.
|
||||
Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with `UG_TOGG` keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF` to your `config.h`.
|
||||
|
||||
### Retain brightness
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
# Swap-Hands Action
|
||||
|
||||
The swap-hands action allows support for one-handed typing without requiring a separate layer. Set `SWAP_HANDS_ENABLE` in the Makefile and define a `hand_swap_config` entry in your keymap. Now whenever the `ACTION_SWAP_HANDS` command key is pressed the keyboard is mirrored. For instance, to type "Hello, World" on QWERTY you would type `^Ge^s^s^w^c W^wr^sd`
|
||||
The swap-hands action allows support for one-handed typing without requiring a separate layer. Set `SWAP_HANDS_ENABLE = yes` in your keymap's `rules.mk` (creating it if needed), and define a `hand_swap_config` entry in your keymap. Now whenever the `ACTION_SWAP_HANDS` command key is pressed the keyboard is mirrored. For instance, to type "Hello, World" on QWERTY you would type `^Ge^s^s^w^c W^wr^sd`
|
||||
|
||||
## Configuration
|
||||
|
||||
|
@@ -14,8 +14,8 @@ For a detailed explanation of how the layer stack works, check out [Keymap Overv
|
||||
|
||||
| Keycode | Alias | Description |
|
||||
|----------------------|-----------|---------------------------------------------------------------------------------------------------------|
|
||||
| `QK_TRI_LAYER_LOWER` | `TL_LOWR` | Momentarily enables the "lower" layer. Enables the "adjust" layer if the "upper" layer is also enabled" |
|
||||
| `QK_TRI_LAYER_UPPER` | `TL_UPPR` | Momentarily enables the "upper" layer. Enables the "adjust" layer if the "lower" layer is also enabled" |
|
||||
| `QK_TRI_LAYER_LOWER` | `TL_LOWR` | Momentarily enables the "lower" layer. Enables the "adjust" layer if the "upper" layer is also enabled. |
|
||||
| `QK_TRI_LAYER_UPPER` | `TL_UPPR` | Momentarily enables the "upper" layer. Enables the "adjust" layer if the "lower" layer is also enabled. |
|
||||
|
||||
## Configuration
|
||||
|
||||
|
@@ -1,74 +0,0 @@
|
||||
# BootloadHID Flashing Instructions and Bootloader Information
|
||||
|
||||
ps2avr(GB) boards use an ATmega32A microcontroller and a different bootloader. It is not flashable using the regular QMK methods.
|
||||
|
||||
General flashing sequence:
|
||||
|
||||
1. Enter the bootloader using any of the following methods:
|
||||
* Tap the `QK_BOOT` keycode (may not work on all devices)
|
||||
* Hold the salt key while plugging the keyboard in (usually documented within keyboard readme)
|
||||
2. Wait for the OS to detect the device
|
||||
3. Flash a .hex file
|
||||
4. Reset the device into application mode (may be done automatically)
|
||||
|
||||
## bootloadHID Flashing Target
|
||||
|
||||
::: tip
|
||||
Using the QMK installation script, detailed [here](newbs_getting_started), the required bootloadHID tools should be automatically installed.
|
||||
:::
|
||||
|
||||
To flash via the command line, use the target `:bootloadhid` by executing the following command:
|
||||
|
||||
```
|
||||
make <keyboard>:<keymap>:bootloadhid
|
||||
```
|
||||
|
||||
## GUI Flashing
|
||||
|
||||
### Windows
|
||||
1. Download [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash).
|
||||
2. Place your keyboard into reset.
|
||||
3. Ensure the configured VendorID is `16c0` and ProductID is `05df`
|
||||
4. Press the `Find Device` button and ensure that your keyboard is found.
|
||||
5. Press the `Open .hex File` button and locate the `.hex` file you created.
|
||||
6. Press the `Flash Device` button and wait for the process to complete.
|
||||
|
||||
## Command Line Flashing
|
||||
|
||||
1. Place your keyboard into reset.
|
||||
2. Flash the board by typing `bootloadHID -r` followed by the path to your `.hex` file.
|
||||
|
||||
### Windows Manual Installation
|
||||
For MSYS2:
|
||||
1. Download the BootloadHID firmware package from https://www.obdev.at/downloads/vusb/bootloadHID.2012-12-08.tar.gz.
|
||||
2. Extract contents using a compatible tool, for example 7-Zip.
|
||||
3. Add to the MSYS path by copying `commandline/bootloadHID.exe` from the extracted archive to your MSYS2 installation, typically `C:\msys64\usr\bin`.
|
||||
|
||||
For native Windows flashing, the `bootloadHID.exe` can be used outside of the MSYS2 environment.
|
||||
|
||||
### Linux Manual Installation
|
||||
1. Install libusb development dependency:
|
||||
```
|
||||
# This depends on OS - for Debian the following works
|
||||
sudo apt-get install libusb-dev
|
||||
```
|
||||
2. Download the BootloadHID firmware package:
|
||||
```
|
||||
wget https://www.obdev.at/downloads/vusb/bootloadHID.2012-12-08.tar.gz -O - | tar -xz -C /tmp
|
||||
```
|
||||
3. Build the bootloadHID executable:
|
||||
```
|
||||
cd /tmp/bootloadHID.2012-12-08/commandline/
|
||||
make
|
||||
sudo cp bootloadHID /usr/local/bin
|
||||
```
|
||||
|
||||
### MacOS Manual Installation
|
||||
1. Install Homebrew by typing the following:
|
||||
```
|
||||
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
|
||||
```
|
||||
2. Install the following packages:
|
||||
```
|
||||
brew install --HEAD https://raw.githubusercontent.com/robertgzr/homebrew-tap/master/bootloadhid.rb
|
||||
```
|
@@ -701,26 +701,29 @@ See also: [Dynamic Tapping Term](tap_hold#dynamic-tapping-term)
|
||||
|
||||
See also: [RGB Lighting](features/rgblight)
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|-------------------|----------|--------------------------------------------------------------------|
|
||||
|`RGB_TOG` | |Toggle RGB lighting on or off |
|
||||
|`RGB_MODE_FORWARD` |`RGB_MOD` |Cycle through modes, reverse direction when Shift is held |
|
||||
|`RGB_MODE_REVERSE` |`RGB_RMOD`|Cycle through modes in reverse, forward direction when Shift is held|
|
||||
|`RGB_HUI` | |Increase hue, decrease hue when Shift is held |
|
||||
|`RGB_HUD` | |Decrease hue, increase hue when Shift is held |
|
||||
|`RGB_SAI` | |Increase saturation, decrease saturation when Shift is held |
|
||||
|`RGB_SAD` | |Decrease saturation, increase saturation when Shift is held |
|
||||
|`RGB_VAI` | |Increase value (brightness), decrease value when Shift is held |
|
||||
|`RGB_VAD` | |Decrease value (brightness), increase value when Shift is held |
|
||||
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode |
|
||||
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode |
|
||||
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode |
|
||||
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode |
|
||||
|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode |
|
||||
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode |
|
||||
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode |
|
||||
|`RGB_MODE_GRADIENT`|`RGB_M_G` |Static gradient animation mode |
|
||||
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red,Green,Blue test animation mode |
|
||||
|Key |Aliases |Description |
|
||||
|------------------------------|----------|---------------------------------------------------------------------|
|
||||
|`QK_UNDERGLOW_TOGGLE` |`UG_TOGG` |Toggle RGB lighting on or off |
|
||||
|`QK_UNDERGLOW_MODE_NEXT` |`UG_NEXT` |Cycle through modes, reverse direction when Shift is held |
|
||||
|`QK_UNDERGLOW_MODE_PREVIOUS` |`UG_PREV` |Cycle through modes in reverse, forward direction when Shift is held |
|
||||
|`QK_UNDERGLOW_HUE_UP` |`UG_HUEU` |Increase hue, decrease hue when Shift is held |
|
||||
|`QK_UNDERGLOW_HUE_DOWN` |`UG_HUED` |Decrease hue, increase hue when Shift is held |
|
||||
|`QK_UNDERGLOW_SATURATION_UP` |`UG_SATU` |Increase saturation, decrease saturation when Shift is held |
|
||||
|`QK_UNDERGLOW_SATURATION_DOWN`|`UG_SATD` |Decrease saturation, increase saturation when Shift is held |
|
||||
|`QK_UNDERGLOW_VALUE_UP` |`UG_VALU` |Increase value (brightness), decrease value when Shift is held |
|
||||
|`QK_UNDERGLOW_VALUE_DOWN` |`UG_VALD` |Decrease value (brightness), increase value when Shift is held |
|
||||
|`QK_UNDERGLOW_SPEED_UP` |`UG_SPDU` |Increase effect speed (brightness), decrease speed when Shift is held|
|
||||
|`QK_UNDERGLOW_SPEED_DOWN` |`UG_SPDD` |Decrease effect speed (brightness), increase speed when Shift is held|
|
||||
|`RGB_MODE_PLAIN` |`RGB_M_P `|Static (no animation) mode (deprecated) |
|
||||
|`RGB_MODE_BREATHE` |`RGB_M_B` |Breathing animation mode (deprecated) |
|
||||
|`RGB_MODE_RAINBOW` |`RGB_M_R` |Rainbow animation mode (deprecated) |
|
||||
|`RGB_MODE_SWIRL` |`RGB_M_SW`|Swirl animation mode (deprecated) |
|
||||
|`RGB_MODE_SNAKE` |`RGB_M_SN`|Snake animation mode (deprecated) |
|
||||
|`RGB_MODE_KNIGHT` |`RGB_M_K` |"Knight Rider" animation mode (deprecated) |
|
||||
|`RGB_MODE_XMAS` |`RGB_M_X` |Christmas animation mode (deprecated) |
|
||||
|`RGB_MODE_GRADIENT` |`RGB_M_G` |Static gradient animation mode (deprecated) |
|
||||
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode (deprecated) |
|
||||
|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode (deprecated) |
|
||||
|
||||
## RGB Matrix Lighting {#rgb-matrix-lighting}
|
||||
|
||||
|
@@ -88,7 +88,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
||||
- RGB Matrix Configuration
|
||||
- Run `qmk format-json` on this file before submitting your PR. Be sure to append the `-i` flag to directly modify the file, or paste the outputted code into the file.
|
||||
- `readme.md`
|
||||
- must follow the [template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme)
|
||||
- must follow the [template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md)
|
||||
- flash command is present, and has `:flash` at end
|
||||
- valid hardware availability link (unless handwired) -- private groupbuys are okay, but one-off prototypes will be questioned. If open-source, a link to files should be provided.
|
||||
- clear instructions on how to reset the board into bootloader mode
|
||||
|
1
docs/public/CNAME
Normal file
1
docs/public/CNAME
Normal file
@@ -0,0 +1 @@
|
||||
docs.qmk.fm
|
94
keyboards/4pplet/ibe60/keyboard.json
Normal file
94
keyboards/4pplet/ibe60/keyboard.json
Normal file
@@ -0,0 +1,94 @@
|
||||
{
|
||||
"manufacturer": "4pplet",
|
||||
"keyboard_name": "IBE60 Rev A",
|
||||
"maintainer": "4pplet",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"key_lock": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B2", "A5", "A4", "A3", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"],
|
||||
"rows": ["B14", "A9", "B6", "B5", "B4"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0001",
|
||||
"vid": "0x4448"
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "A8"
|
||||
},
|
||||
"community_layouts": ["60_hhkb"],
|
||||
"layouts": {
|
||||
"LAYOUT_60_hhkb": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"label": "~", "matrix": [2, 13], "x": 14, "y": 0},
|
||||
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"label": "|", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"label": "Fn", "matrix": [4, 13], "x": 14, "y": 3},
|
||||
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"label": "Alt", "matrix": [4, 9], "x": 11, "y": 4, "w": 1.5},
|
||||
{"label": "Win", "matrix": [4, 10], "x": 12.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
34
keyboards/4pplet/ibe60/keymaps/default/keymap.c
Normal file
34
keyboards/4pplet/ibe60/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT_60_hhkb(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
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_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI),
|
||||
// basic function layer
|
||||
[1] = LAYOUT_60_hhkb(
|
||||
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)
|
||||
};
|
35
keyboards/4pplet/ibe60/keymaps/via/keymap.c
Normal file
35
keyboards/4pplet/ibe60/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// main layer
|
||||
[0] = LAYOUT_60_hhkb(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
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_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI),
|
||||
// basic function layer
|
||||
[1] = LAYOUT_60_hhkb(
|
||||
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)
|
||||
};
|
||||
|
1
keyboards/4pplet/ibe60/keymaps/via/rules.mk
Normal file
1
keyboards/4pplet/ibe60/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
24
keyboards/4pplet/ibe60/readme.md
Normal file
24
keyboards/4pplet/ibe60/readme.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# IBE60
|
||||
|
||||
PCB mounted 60% PCB for the IBE60 in fixed true HHKB layout
|
||||
|
||||
* Keyboard Maintainer: [Stefan Sundin](https://github.com/4pplet)
|
||||
* Hardware Supported: IBE60 Solder PCB
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 4pplet/ibe60:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make 4pplet/ibe60: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 Escape key and plug in the keyboard
|
||||
* **Physical reset button**: Short the reset-header (labled BL/RESET) on the back of the PCB for about 2 seconds for the keyboard to enter bootloader
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
2
keyboards/4pplet/ibe60/rules.mk
Normal file
2
keyboards/4pplet/ibe60/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
|
@@ -15,7 +15,8 @@
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"key_lock": true,
|
||||
"mousekey": false,
|
||||
"mousekey": true,
|
||||
"encoder": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
|
@@ -15,7 +15,8 @@
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"key_lock": true,
|
||||
"mousekey": false,
|
||||
"mousekey": true,
|
||||
"encoder": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
|
@@ -16,6 +16,7 @@
|
||||
"extrakey": true,
|
||||
"key_lock": true,
|
||||
"mousekey": true,
|
||||
"encoder": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
|
12
keyboards/ai03/altair/config.h
Normal file
12
keyboards/ai03/altair/config.h
Normal file
@@ -0,0 +1,12 @@
|
||||
/* Copyright 2024 ai03 Design Studio */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
/* VBUS-routed pin for upstream detection */
|
||||
#define USB_VBUS_PIN GP0
|
||||
|
||||
/* RP2040- and hardware-specific config */
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
|
||||
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
|
118
keyboards/ai03/altair/keyboard.json
Normal file
118
keyboards/ai03/altair/keyboard.json
Normal file
@@ -0,0 +1,118 @@
|
||||
{
|
||||
"manufacturer": "ai03 Design Studio",
|
||||
"keyboard_name": "Altair",
|
||||
"maintainer": "ai03_2725",
|
||||
"bootloader": "rp2040",
|
||||
"build": {
|
||||
"debounce_type": "asym_eager_defer_pk"
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 6
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP20", "GP19", "GP18", "GP17", "GP16", "GP21", "GP9"],
|
||||
"rows": ["GP11", "GP26", "GP27", "GP28", "GP10"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"split": {
|
||||
"bootmagic": {
|
||||
"matrix": [5, 0]
|
||||
},
|
||||
"enabled": true,
|
||||
"handedness": {
|
||||
"pin": "GP8"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["GP15", "GP21", "GP9", "GP13", "GP10", "GP11", "GP12"],
|
||||
"rows": ["GP5", "GP16", "GP20", "GP28", "GP14"]
|
||||
}
|
||||
},
|
||||
"soft_serial_pin": "GP29"
|
||||
},
|
||||
"url": "https://ai03.com/",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0022",
|
||||
"vid": "0xA103"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0.38},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0.38},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0.13},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0.13},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0.25},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0.5},
|
||||
{"matrix": [5, 0], "x": 7.75, "y": 0.5},
|
||||
{"matrix": [5, 1], "x": 8.75, "y": 0.25},
|
||||
{"matrix": [5, 2], "x": 9.75, "y": 0.13},
|
||||
{"matrix": [5, 3], "x": 10.75, "y": 0},
|
||||
{"matrix": [5, 4], "x": 11.75, "y": 0.13},
|
||||
{"matrix": [5, 5], "x": 12.75, "y": 0.38},
|
||||
{"matrix": [5, 6], "x": 13.75, "y": 0.38},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1.38},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1.38},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1.13},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1.13},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1.25},
|
||||
{"matrix": [1, 6], "x": 6, "y": 1.5},
|
||||
{"matrix": [6, 0], "x": 7.75, "y": 1.5},
|
||||
{"matrix": [6, 1], "x": 8.75, "y": 1.25},
|
||||
{"matrix": [6, 2], "x": 9.75, "y": 1.13},
|
||||
{"matrix": [6, 3], "x": 10.75, "y": 1},
|
||||
{"matrix": [6, 4], "x": 11.75, "y": 1.13},
|
||||
{"matrix": [6, 5], "x": 12.75, "y": 1.38},
|
||||
{"matrix": [6, 6], "x": 13.75, "y": 1.38},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2.38},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2.38},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2.13},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2.13},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2.25},
|
||||
{"matrix": [2, 6], "x": 6, "y": 2.5},
|
||||
{"matrix": [7, 0], "x": 7.75, "y": 2.5},
|
||||
{"matrix": [7, 1], "x": 8.75, "y": 2.25},
|
||||
{"matrix": [7, 2], "x": 9.75, "y": 2.13},
|
||||
{"matrix": [7, 3], "x": 10.75, "y": 2},
|
||||
{"matrix": [7, 4], "x": 11.75, "y": 2.13},
|
||||
{"matrix": [7, 5], "x": 12.75, "y": 2.38},
|
||||
{"matrix": [7, 6], "x": 13.75, "y": 2.38},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3.38},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3.38},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3.13},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4, "y": 3.13},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3.25},
|
||||
{"matrix": [3, 6], "x": 6, "y": 3.5},
|
||||
{"matrix": [8, 0], "x": 7.75, "y": 3.5},
|
||||
{"matrix": [8, 1], "x": 8.75, "y": 3.25},
|
||||
{"matrix": [8, 2], "x": 9.75, "y": 3.13},
|
||||
{"matrix": [8, 3], "x": 10.75, "y": 3},
|
||||
{"matrix": [8, 4], "x": 11.75, "y": 3.13},
|
||||
{"matrix": [8, 5], "x": 12.75, "y": 3.38},
|
||||
{"matrix": [8, 6], "x": 13.75, "y": 3.38},
|
||||
{"matrix": [4, 3], "x": 2.71, "y": 4.13},
|
||||
{"matrix": [4, 4], "x": 3.73, "y": 4.16},
|
||||
{"matrix": [4, 5], "x": 4.74, "y": 4.36},
|
||||
{"matrix": [4, 6], "x": 5.75, "y": 4.72},
|
||||
{"matrix": [9, 0], "x": 8, "y": 4.72},
|
||||
{"matrix": [9, 1], "x": 9.02, "y": 4.36},
|
||||
{"matrix": [9, 2], "x": 10.03, "y": 4.18},
|
||||
{"matrix": [9, 3], "x": 11.05, "y": 4.13}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
24
keyboards/ai03/altair/keymaps/default/keymap.c
Normal file
24
keyboards/ai03/altair/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,24 @@
|
||||
/* Copyright 2024 ai03 Design Studio */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_CAPS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_PSCR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, MO(1), KC_TAB, KC_DEL
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
|
||||
_______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
|
||||
_______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
24
keyboards/ai03/altair/keymaps/via/keymap.c
Normal file
24
keyboards/ai03/altair/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,24 @@
|
||||
/* Copyright 2024 ai03 Design Studio */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_CAPS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_LPRN, KC_RPRN, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_GRV, KC_PSCR, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, MO(1), KC_TAB, KC_DEL
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
|
||||
_______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
|
||||
_______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
1
keyboards/ai03/altair/keymaps/via/rules.mk
Normal file
1
keyboards/ai03/altair/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
19
keyboards/ai03/altair/readme.md
Normal file
19
keyboards/ai03/altair/readme.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Altair
|
||||
|
||||

|
||||
|
||||
ai03's third-generation ergonomic keyboard, 5-row variant
|
||||
|
||||
* Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
|
||||
* Hardware Supported: Altair keyboard PCB
|
||||
* Hardware Availability: Group buy
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ai03/altair:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make ai03/altair: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).
|
1
keyboards/ai03/altair/rules.mk
Normal file
1
keyboards/ai03/altair/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
SERIAL_DRIVER = vendor
|
12
keyboards/ai03/altair_x/config.h
Normal file
12
keyboards/ai03/altair_x/config.h
Normal file
@@ -0,0 +1,12 @@
|
||||
/* Copyright 2024 ai03 Design Studio */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
/* VBUS-routed pin for upstream detection */
|
||||
#define USB_VBUS_PIN GP0
|
||||
|
||||
/* RP2040- and hardware-specific config */
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
|
||||
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
|
104
keyboards/ai03/altair_x/keyboard.json
Normal file
104
keyboards/ai03/altair_x/keyboard.json
Normal file
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"manufacturer": "ai03 Design Studio",
|
||||
"keyboard_name": "Altair-X",
|
||||
"maintainer": "ai03_2725",
|
||||
"bootloader": "rp2040",
|
||||
"build": {
|
||||
"debounce_type": "asym_eager_defer_pk"
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 6
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP20", "GP19", "GP18", "GP17", "GP16", "GP21", "GP9"],
|
||||
"rows": ["GP26", "GP27", "GP28", "GP10"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"split": {
|
||||
"bootmagic": {
|
||||
"matrix": [4, 0]
|
||||
},
|
||||
"enabled": true,
|
||||
"handedness": {
|
||||
"pin": "GP8"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["GP15", "GP21", "GP9", "GP13", "GP10", "GP11", "GP12"],
|
||||
"rows": ["GP16", "GP20", "GP28", "GP14"]
|
||||
}
|
||||
},
|
||||
"soft_serial_pin": "GP29"
|
||||
},
|
||||
"url": "https://ai03.com/",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0023",
|
||||
"vid": "0xA103"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0.38},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0.38},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0.13},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0.13},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0.25},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0.5},
|
||||
{"matrix": [4, 0], "x": 7.75, "y": 0.5},
|
||||
{"matrix": [4, 1], "x": 8.75, "y": 0.25},
|
||||
{"matrix": [4, 2], "x": 9.75, "y": 0.13},
|
||||
{"matrix": [4, 3], "x": 10.75, "y": 0},
|
||||
{"matrix": [4, 4], "x": 11.75, "y": 0.13},
|
||||
{"matrix": [4, 5], "x": 12.75, "y": 0.38},
|
||||
{"matrix": [4, 6], "x": 13.75, "y": 0.38},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1.38},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1.38},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1.13},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1.13},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1.25},
|
||||
{"matrix": [1, 6], "x": 6, "y": 1.5},
|
||||
{"matrix": [5, 0], "x": 7.75, "y": 1.5},
|
||||
{"matrix": [5, 1], "x": 8.75, "y": 1.25},
|
||||
{"matrix": [5, 2], "x": 9.75, "y": 1.13},
|
||||
{"matrix": [5, 3], "x": 10.75, "y": 1},
|
||||
{"matrix": [5, 4], "x": 11.75, "y": 1.13},
|
||||
{"matrix": [5, 5], "x": 12.75, "y": 1.38},
|
||||
{"matrix": [5, 6], "x": 13.75, "y": 1.38},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2.38},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2.38},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2.13},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2.13},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2.25},
|
||||
{"matrix": [2, 6], "x": 6, "y": 2.5},
|
||||
{"matrix": [6, 0], "x": 7.75, "y": 2.5},
|
||||
{"matrix": [6, 1], "x": 8.75, "y": 2.25},
|
||||
{"matrix": [6, 2], "x": 9.75, "y": 2.13},
|
||||
{"matrix": [6, 3], "x": 10.75, "y": 2},
|
||||
{"matrix": [6, 4], "x": 11.75, "y": 2.13},
|
||||
{"matrix": [6, 5], "x": 12.75, "y": 2.38},
|
||||
{"matrix": [6, 6], "x": 13.75, "y": 2.38},
|
||||
{"matrix": [3, 3], "x": 2.71, "y": 3.13},
|
||||
{"matrix": [3, 4], "x": 3.73, "y": 3.16},
|
||||
{"matrix": [3, 5], "x": 4.74, "y": 3.36},
|
||||
{"matrix": [3, 6], "x": 5.75, "y": 3.72},
|
||||
{"matrix": [7, 0], "x": 8, "y": 3.72},
|
||||
{"matrix": [7, 1], "x": 9.02, "y": 3.36},
|
||||
{"matrix": [7, 2], "x": 10.03, "y": 3.18},
|
||||
{"matrix": [7, 3], "x": 11.05, "y": 3.13}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
29
keyboards/ai03/altair_x/keymaps/default/keymap.c
Normal file
29
keyboards/ai03/altair_x/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,29 @@
|
||||
/* Copyright 2024 ai03 Design Studio */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, MO(2), KC_TAB, KC_DEL
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, KC_GRV, KC_LBRC, KC_LCBR, KC_LPRN, KC_MINS, _______, _______, KC_EQL, KC_RPRN, KC_RCBR, KC_RBRC, KC_BSLS, _______,
|
||||
_______, KC_TILD, _______, _______, _______, KC_UNDS, _______, _______, KC_PLUS, _______, _______, _______, KC_PIPE, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
|
||||
_______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
29
keyboards/ai03/altair_x/keymaps/via/keymap.c
Normal file
29
keyboards/ai03/altair_x/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,29 @@
|
||||
/* Copyright 2024 ai03 Design Studio */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
||||
KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, MO(2), KC_TAB, KC_DEL
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, KC_GRV, KC_LBRC, KC_LCBR, KC_LPRN, KC_MINS, _______, _______, KC_EQL, KC_RPRN, KC_RCBR, KC_RBRC, KC_BSLS, _______,
|
||||
_______, KC_TILD, _______, _______, _______, KC_UNDS, _______, _______, KC_PLUS, _______, _______, _______, KC_PIPE, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, KC_PGUP, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
|
||||
_______, _______, KC_HOME, KC_PGDN, KC_END, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
1
keyboards/ai03/altair_x/keymaps/via/rules.mk
Normal file
1
keyboards/ai03/altair_x/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
19
keyboards/ai03/altair_x/readme.md
Normal file
19
keyboards/ai03/altair_x/readme.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Altair-X
|
||||
|
||||

|
||||
|
||||
ai03's third-generation ergonomic keyboard, 4-row variant
|
||||
|
||||
* Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
|
||||
* Hardware Supported: Altair-X keyboard PCB
|
||||
* Hardware Availability: Group buy
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ai03/altair_x:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make ai03/altair_x: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).
|
1
keyboards/ai03/altair_x/rules.mk
Normal file
1
keyboards/ai03/altair_x/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
SERIAL_DRIVER = vendor
|
89
keyboards/ai03/equinox_xl/keyboard.json
Normal file
89
keyboards/ai03/equinox_xl/keyboard.json
Normal file
@@ -0,0 +1,89 @@
|
||||
{
|
||||
"manufacturer": "ai03 Design Studio",
|
||||
"keyboard_name": "Equinox XL",
|
||||
"maintainer": "ai03",
|
||||
"bootloader": "atmel-dfu",
|
||||
"build": {
|
||||
"debounce_type": "asym_eager_defer_pk"
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "F1",
|
||||
"on_state": 0
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["F5", "C7", "C6", "B6", "B5", "B4", "D7", "D6", "D4", "D5", "D3", "D2", "D1", "D0"],
|
||||
"rows": ["B7", "F4", "F6", "F7"]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"url": "https://ai03.com/projects/equinox-xl/",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0020",
|
||||
"vid": "0xA103"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5},
|
||||
{"matrix": [0, 1], "x": 1.5, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4.5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9.5, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10.5, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11.5, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12.5, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13.5, "y": 0, "w": 1.5},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.75},
|
||||
{"matrix": [1, 1], "x": 1.75, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.75, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.75, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.75, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.75, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.75, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.75, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.75, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.75, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.75, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.75, "y": 1},
|
||||
{"matrix": [1, 13], "x": 12.75, "y": 1, "w": 2.25},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.25},
|
||||
{"matrix": [2, 1], "x": 1.25, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.25, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.25, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.25, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.25, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.25, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.25, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.25, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.25, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.25, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.25, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.25, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 13], "x": 14, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.5},
|
||||
{"matrix": [3, 1], "x": 1.5, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.5, "y": 3, "w": 1.5},
|
||||
{"matrix": [3, 5], "x": 4, "y": 3, "w": 3},
|
||||
{"matrix": [3, 7], "x": 7, "y": 3},
|
||||
{"matrix": [3, 9], "x": 8, "y": 3, "w": 3},
|
||||
{"matrix": [3, 11], "x": 11, "y": 3, "w": 1.5},
|
||||
{"matrix": [3, 12], "x": 12.5, "y": 3},
|
||||
{"matrix": [3, 13], "x": 13.5, "y": 3, "w": 1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
15
keyboards/ai03/equinox_xl/keymaps/default/keymap.c
Normal file
15
keyboards/ai03/equinox_xl/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,15 @@
|
||||
// Copyright 2024 ai03
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_GRV,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
};
|
15
keyboards/ai03/equinox_xl/keymaps/via/keymap.c
Normal file
15
keyboards/ai03/equinox_xl/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,15 @@
|
||||
// Copyright 2024 ai03
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_GRV,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
};
|
1
keyboards/ai03/equinox_xl/keymaps/via/rules.mk
Normal file
1
keyboards/ai03/equinox_xl/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
28
keyboards/ai03/equinox_xl/readme.md
Normal file
28
keyboards/ai03/equinox_xl/readme.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Equinox XL
|
||||
|
||||

|
||||
|
||||
A numrowless 50% keyboard
|
||||
|
||||
* Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
|
||||
* Hardware Supported: The Equinox XL PCB, powered by the Atmega32u4
|
||||
* Hardware Availability: Available via group buy
|
||||
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ai03/equinox_xl:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make ai03/equinox_xl: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
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@@ -15,7 +15,7 @@ Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make amag23:default
|
||||
|
||||
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make amag23:default:flash
|
||||
|
||||
|
@@ -36,8 +36,11 @@
|
||||
},
|
||||
"processor": "STM32F303",
|
||||
"bootloader": "stm32-dfu",
|
||||
"layout_aliases": {
|
||||
"LAYOUT_all": "LAYOUT"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
|
@@ -18,7 +18,7 @@
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_all(
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_MEDIA_PLAY_PAUSE,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_B,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PMNS,
|
||||
@@ -27,7 +27,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT
|
||||
),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
[1] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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,
|
||||
|
@@ -8,7 +8,7 @@ Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ares:default
|
||||
|
||||
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make ares:default:flash
|
||||
|
||||
|
@@ -155,6 +155,498 @@
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_ansi": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"matrix": [6, 0], "x": 4.25, "y": 0},
|
||||
|
||||
{"matrix": [6, 1], "x": 5.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 6.5, "y": 0},
|
||||
{"matrix": [6, 3], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8.5, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 9.75, "y": 0},
|
||||
{"matrix": [0, 6], "x": 10.75, "y": 0},
|
||||
{"matrix": [0, 7], "x": 11.75, "y": 0},
|
||||
{"matrix": [0, 8], "x": 12.75, "y": 0},
|
||||
|
||||
{"matrix": [5, 4], "x": 15.5, "y": 0},
|
||||
{"matrix": [5, 5], "x": 16.5, "y": 0},
|
||||
{"matrix": [5, 6], "x": 17.5, "y": 0},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 0},
|
||||
|
||||
{"matrix": [6, 4], "x": 15.5, "y": 1},
|
||||
{"matrix": [6, 5], "x": 16.5, "y": 1},
|
||||
{"matrix": [6, 6], "x": 17.5, "y": 1},
|
||||
{"matrix": [6, 7], "x": 18.5, "y": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 2},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2},
|
||||
{"matrix": [1, 2], "x": 2, "y": 2},
|
||||
{"matrix": [1, 3], "x": 3, "y": 2},
|
||||
{"matrix": [7, 0], "x": 4, "y": 2},
|
||||
{"matrix": [7, 1], "x": 5, "y": 2},
|
||||
{"matrix": [7, 2], "x": 6, "y": 2},
|
||||
{"matrix": [7, 3], "x": 7, "y": 2},
|
||||
{"matrix": [1, 4], "x": 8, "y": 2},
|
||||
{"matrix": [1, 5], "x": 9, "y": 2},
|
||||
{"matrix": [1, 6], "x": 10, "y": 2},
|
||||
{"matrix": [1, 7], "x": 11, "y": 2},
|
||||
{"matrix": [1, 8], "x": 12, "y": 2},
|
||||
{"matrix": [1, 9], "x": 13, "y": 2, "w": 2},
|
||||
|
||||
{"matrix": [7, 4], "x": 15.5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 16.5, "y": 2},
|
||||
{"matrix": [7, 6], "x": 17.5, "y": 2},
|
||||
{"matrix": [7, 7], "x": 18.5, "y": 2},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 3, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 3},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 3},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 3},
|
||||
{"matrix": [8, 0], "x": 4.5, "y": 3},
|
||||
{"matrix": [8, 1], "x": 5.5, "y": 3},
|
||||
{"matrix": [8, 2], "x": 6.5, "y": 3},
|
||||
{"matrix": [8, 3], "x": 7.5, "y": 3},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 3},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 3},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 3},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 3},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 3},
|
||||
{"matrix": [2, 9], "x": 13.5, "y": 3, "w": 1.5},
|
||||
|
||||
{"matrix": [8, 4], "x": 15.5, "y": 3},
|
||||
{"matrix": [8, 5], "x": 16.5, "y": 3},
|
||||
{"matrix": [8, 6], "x": 17.5, "y": 3},
|
||||
{"matrix": [8, 7], "x": 18.5, "y": 3},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 4, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 4},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 4},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [9, 0], "x": 4.75, "y": 4},
|
||||
{"matrix": [9, 1], "x": 5.75, "y": 4},
|
||||
{"matrix": [9, 2], "x": 6.75, "y": 4},
|
||||
{"matrix": [9, 3], "x": 7.75, "y": 4},
|
||||
{"matrix": [3, 4], "x": 8.75, "y": 4},
|
||||
{"matrix": [3, 5], "x": 9.75, "y": 4},
|
||||
{"matrix": [3, 6], "x": 10.75, "y": 4},
|
||||
{"matrix": [3, 7], "x": 11.75, "y": 4},
|
||||
{"matrix": [3, 8], "x": 12.75, "y": 4, "w": 2.25},
|
||||
|
||||
{"matrix": [9, 4], "x": 15.5, "y": 4},
|
||||
{"matrix": [9, 5], "x": 16.5, "y": 4},
|
||||
{"matrix": [9, 6], "x": 17.5, "y": 4},
|
||||
{"matrix": [9, 7], "x": 18.5, "y": 4},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 5, "w": 2.25},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 5},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 5},
|
||||
{"matrix": [10, 0], "x": 4.25, "y": 5},
|
||||
{"matrix": [10, 1], "x": 5.25, "y": 5},
|
||||
{"matrix": [10, 2], "x": 6.25, "y": 5},
|
||||
{"matrix": [10, 3], "x": 7.25, "y": 5},
|
||||
{"matrix": [4, 4], "x": 8.25, "y": 5},
|
||||
{"matrix": [4, 5], "x": 9.25, "y": 5},
|
||||
{"matrix": [4, 6], "x": 10.25, "y": 5},
|
||||
{"matrix": [4, 7], "x": 11.25, "y": 5},
|
||||
{"matrix": [4, 8], "x": 12.25, "y": 5, "w": 1.75},
|
||||
|
||||
{"matrix": [10, 9], "x": 14.25, "y": 5.25},
|
||||
|
||||
{"matrix": [10, 4], "x": 15.5, "y": 5},
|
||||
{"matrix": [10, 5], "x": 16.5, "y": 5},
|
||||
{"matrix": [10, 6], "x": 17.5, "y": 5},
|
||||
{"matrix": [10, 7], "x": 18.5, "y": 5, "h": 2},
|
||||
|
||||
{"matrix": [5, 0], "x": 0, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 1], "x": 1.25, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 3], "x": 3.75, "y": 6, "w": 6.25},
|
||||
{"matrix": [11, 4], "x": 10, "y": 6, "w": 1.5},
|
||||
{"matrix": [11, 7], "x": 11.5, "y": 6, "w": 1.5},
|
||||
|
||||
{"matrix": [10, 8], "x": 13.25, "y": 6.25},
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_ansi_wkl": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"matrix": [6, 0], "x": 4.25, "y": 0},
|
||||
|
||||
{"matrix": [6, 1], "x": 5.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 6.5, "y": 0},
|
||||
{"matrix": [6, 3], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8.5, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 9.75, "y": 0},
|
||||
{"matrix": [0, 6], "x": 10.75, "y": 0},
|
||||
{"matrix": [0, 7], "x": 11.75, "y": 0},
|
||||
{"matrix": [0, 8], "x": 12.75, "y": 0},
|
||||
|
||||
{"matrix": [5, 4], "x": 15.5, "y": 0},
|
||||
{"matrix": [5, 5], "x": 16.5, "y": 0},
|
||||
{"matrix": [5, 6], "x": 17.5, "y": 0},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 0},
|
||||
|
||||
{"matrix": [6, 4], "x": 15.5, "y": 1},
|
||||
{"matrix": [6, 5], "x": 16.5, "y": 1},
|
||||
{"matrix": [6, 6], "x": 17.5, "y": 1},
|
||||
{"matrix": [6, 7], "x": 18.5, "y": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 2},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2},
|
||||
{"matrix": [1, 2], "x": 2, "y": 2},
|
||||
{"matrix": [1, 3], "x": 3, "y": 2},
|
||||
{"matrix": [7, 0], "x": 4, "y": 2},
|
||||
{"matrix": [7, 1], "x": 5, "y": 2},
|
||||
{"matrix": [7, 2], "x": 6, "y": 2},
|
||||
{"matrix": [7, 3], "x": 7, "y": 2},
|
||||
{"matrix": [1, 4], "x": 8, "y": 2},
|
||||
{"matrix": [1, 5], "x": 9, "y": 2},
|
||||
{"matrix": [1, 6], "x": 10, "y": 2},
|
||||
{"matrix": [1, 7], "x": 11, "y": 2},
|
||||
{"matrix": [1, 8], "x": 12, "y": 2},
|
||||
{"matrix": [1, 9], "x": 13, "y": 2, "w": 2},
|
||||
|
||||
{"matrix": [7, 4], "x": 15.5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 16.5, "y": 2},
|
||||
{"matrix": [7, 6], "x": 17.5, "y": 2},
|
||||
{"matrix": [7, 7], "x": 18.5, "y": 2},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 3, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 3},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 3},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 3},
|
||||
{"matrix": [8, 0], "x": 4.5, "y": 3},
|
||||
{"matrix": [8, 1], "x": 5.5, "y": 3},
|
||||
{"matrix": [8, 2], "x": 6.5, "y": 3},
|
||||
{"matrix": [8, 3], "x": 7.5, "y": 3},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 3},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 3},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 3},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 3},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 3},
|
||||
{"matrix": [2, 9], "x": 13.5, "y": 3, "w": 1.5},
|
||||
|
||||
{"matrix": [8, 4], "x": 15.5, "y": 3},
|
||||
{"matrix": [8, 5], "x": 16.5, "y": 3},
|
||||
{"matrix": [8, 6], "x": 17.5, "y": 3},
|
||||
{"matrix": [8, 7], "x": 18.5, "y": 3},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 4, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 4},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 4},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [9, 0], "x": 4.75, "y": 4},
|
||||
{"matrix": [9, 1], "x": 5.75, "y": 4},
|
||||
{"matrix": [9, 2], "x": 6.75, "y": 4},
|
||||
{"matrix": [9, 3], "x": 7.75, "y": 4},
|
||||
{"matrix": [3, 4], "x": 8.75, "y": 4},
|
||||
{"matrix": [3, 5], "x": 9.75, "y": 4},
|
||||
{"matrix": [3, 6], "x": 10.75, "y": 4},
|
||||
{"matrix": [3, 7], "x": 11.75, "y": 4},
|
||||
{"matrix": [3, 8], "x": 12.75, "y": 4, "w": 2.25},
|
||||
|
||||
{"matrix": [9, 4], "x": 15.5, "y": 4},
|
||||
{"matrix": [9, 5], "x": 16.5, "y": 4},
|
||||
{"matrix": [9, 6], "x": 17.5, "y": 4},
|
||||
{"matrix": [9, 7], "x": 18.5, "y": 4},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 5, "w": 2.25},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 5},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 5},
|
||||
{"matrix": [10, 0], "x": 4.25, "y": 5},
|
||||
{"matrix": [10, 1], "x": 5.25, "y": 5},
|
||||
{"matrix": [10, 2], "x": 6.25, "y": 5},
|
||||
{"matrix": [10, 3], "x": 7.25, "y": 5},
|
||||
{"matrix": [4, 4], "x": 8.25, "y": 5},
|
||||
{"matrix": [4, 5], "x": 9.25, "y": 5},
|
||||
{"matrix": [4, 6], "x": 10.25, "y": 5},
|
||||
{"matrix": [4, 7], "x": 11.25, "y": 5},
|
||||
{"matrix": [4, 8], "x": 12.25, "y": 5, "w": 1.75},
|
||||
|
||||
{"matrix": [10, 9], "x": 14.25, "y": 5.25},
|
||||
|
||||
{"matrix": [10, 4], "x": 15.5, "y": 5},
|
||||
{"matrix": [10, 5], "x": 16.5, "y": 5},
|
||||
{"matrix": [10, 6], "x": 17.5, "y": 5},
|
||||
{"matrix": [10, 7], "x": 18.5, "y": 5, "h": 2},
|
||||
|
||||
{"matrix": [5, 0], "x": 0, "y": 6, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 6, "w": 1.5},
|
||||
{"matrix": [5, 3], "x": 3, "y": 6, "w": 7},
|
||||
{"matrix": [11, 4], "x": 10, "y": 6, "w": 1.5},
|
||||
{"matrix": [11, 7], "x": 11.5, "y": 6, "w": 1.5},
|
||||
|
||||
{"matrix": [10, 8], "x": 13.25, "y": 6.25},
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_iso": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"matrix": [6, 0], "x": 4.25, "y": 0},
|
||||
|
||||
{"matrix": [6, 1], "x": 5.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 6.5, "y": 0},
|
||||
{"matrix": [6, 3], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8.5, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 9.75, "y": 0},
|
||||
{"matrix": [0, 6], "x": 10.75, "y": 0},
|
||||
{"matrix": [0, 7], "x": 11.75, "y": 0},
|
||||
{"matrix": [0, 8], "x": 12.75, "y": 0},
|
||||
|
||||
{"matrix": [5, 4], "x": 15.5, "y": 0},
|
||||
{"matrix": [5, 5], "x": 16.5, "y": 0},
|
||||
{"matrix": [5, 6], "x": 17.5, "y": 0},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 0},
|
||||
|
||||
{"matrix": [6, 4], "x": 15.5, "y": 1},
|
||||
{"matrix": [6, 5], "x": 16.5, "y": 1},
|
||||
{"matrix": [6, 6], "x": 17.5, "y": 1},
|
||||
{"matrix": [6, 7], "x": 18.5, "y": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 2},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2},
|
||||
{"matrix": [1, 2], "x": 2, "y": 2},
|
||||
{"matrix": [1, 3], "x": 3, "y": 2},
|
||||
{"matrix": [7, 0], "x": 4, "y": 2},
|
||||
{"matrix": [7, 1], "x": 5, "y": 2},
|
||||
{"matrix": [7, 2], "x": 6, "y": 2},
|
||||
{"matrix": [7, 3], "x": 7, "y": 2},
|
||||
{"matrix": [1, 4], "x": 8, "y": 2},
|
||||
{"matrix": [1, 5], "x": 9, "y": 2},
|
||||
{"matrix": [1, 6], "x": 10, "y": 2},
|
||||
{"matrix": [1, 7], "x": 11, "y": 2},
|
||||
{"matrix": [1, 8], "x": 12, "y": 2},
|
||||
{"matrix": [1, 9], "x": 13, "y": 2, "w": 2},
|
||||
|
||||
{"matrix": [7, 4], "x": 15.5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 16.5, "y": 2},
|
||||
{"matrix": [7, 6], "x": 17.5, "y": 2},
|
||||
{"matrix": [7, 7], "x": 18.5, "y": 2},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 3, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 3},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 3},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 3},
|
||||
{"matrix": [8, 0], "x": 4.5, "y": 3},
|
||||
{"matrix": [8, 1], "x": 5.5, "y": 3},
|
||||
{"matrix": [8, 2], "x": 6.5, "y": 3},
|
||||
{"matrix": [8, 3], "x": 7.5, "y": 3},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 3},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 3},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 3},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 3},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 3},
|
||||
|
||||
{"matrix": [8, 4], "x": 15.5, "y": 3},
|
||||
{"matrix": [8, 5], "x": 16.5, "y": 3},
|
||||
{"matrix": [8, 6], "x": 17.5, "y": 3},
|
||||
{"matrix": [8, 7], "x": 18.5, "y": 3},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 4, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 4},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 4},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [9, 0], "x": 4.75, "y": 4},
|
||||
{"matrix": [9, 1], "x": 5.75, "y": 4},
|
||||
{"matrix": [9, 2], "x": 6.75, "y": 4},
|
||||
{"matrix": [9, 3], "x": 7.75, "y": 4},
|
||||
{"matrix": [3, 4], "x": 8.75, "y": 4},
|
||||
{"matrix": [3, 5], "x": 9.75, "y": 4},
|
||||
{"matrix": [3, 6], "x": 10.75, "y": 4},
|
||||
{"matrix": [3, 7], "x": 11.75, "y": 4},
|
||||
{"matrix": [2, 9], "x": 12.75, "y": 4},
|
||||
{"matrix": [3, 8], "x": 13.75, "y": 3, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [9, 4], "x": 15.5, "y": 4},
|
||||
{"matrix": [9, 5], "x": 16.5, "y": 4},
|
||||
{"matrix": [9, 6], "x": 17.5, "y": 4},
|
||||
{"matrix": [9, 7], "x": 18.5, "y": 4},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 5, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 5},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 5},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 5},
|
||||
{"matrix": [10, 0], "x": 4.25, "y": 5},
|
||||
{"matrix": [10, 1], "x": 5.25, "y": 5},
|
||||
{"matrix": [10, 2], "x": 6.25, "y": 5},
|
||||
{"matrix": [10, 3], "x": 7.25, "y": 5},
|
||||
{"matrix": [4, 4], "x": 8.25, "y": 5},
|
||||
{"matrix": [4, 5], "x": 9.25, "y": 5},
|
||||
{"matrix": [4, 6], "x": 10.25, "y": 5},
|
||||
{"matrix": [4, 7], "x": 11.25, "y": 5},
|
||||
{"matrix": [4, 8], "x": 12.25, "y": 5, "w": 1.75},
|
||||
|
||||
{"matrix": [10, 9], "x": 14.25, "y": 5.25},
|
||||
|
||||
{"matrix": [10, 4], "x": 15.5, "y": 5},
|
||||
{"matrix": [10, 5], "x": 16.5, "y": 5},
|
||||
{"matrix": [10, 6], "x": 17.5, "y": 5},
|
||||
{"matrix": [10, 7], "x": 18.5, "y": 5, "h": 2},
|
||||
|
||||
{"matrix": [5, 0], "x": 0, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 1], "x": 1.25, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 3], "x": 3.75, "y": 6, "w": 6.25},
|
||||
{"matrix": [11, 4], "x": 10, "y": 6, "w": 1.5},
|
||||
{"matrix": [11, 7], "x": 11.5, "y": 6, "w": 1.5},
|
||||
|
||||
{"matrix": [10, 8], "x": 13.25, "y": 6.25},
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_iso_wkl": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"matrix": [6, 0], "x": 4.25, "y": 0},
|
||||
|
||||
{"matrix": [6, 1], "x": 5.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 6.5, "y": 0},
|
||||
{"matrix": [6, 3], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8.5, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 9.75, "y": 0},
|
||||
{"matrix": [0, 6], "x": 10.75, "y": 0},
|
||||
{"matrix": [0, 7], "x": 11.75, "y": 0},
|
||||
{"matrix": [0, 8], "x": 12.75, "y": 0},
|
||||
|
||||
{"matrix": [5, 4], "x": 15.5, "y": 0},
|
||||
{"matrix": [5, 5], "x": 16.5, "y": 0},
|
||||
{"matrix": [5, 6], "x": 17.5, "y": 0},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 0},
|
||||
|
||||
{"matrix": [6, 4], "x": 15.5, "y": 1},
|
||||
{"matrix": [6, 5], "x": 16.5, "y": 1},
|
||||
{"matrix": [6, 6], "x": 17.5, "y": 1},
|
||||
{"matrix": [6, 7], "x": 18.5, "y": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 2},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2},
|
||||
{"matrix": [1, 2], "x": 2, "y": 2},
|
||||
{"matrix": [1, 3], "x": 3, "y": 2},
|
||||
{"matrix": [7, 0], "x": 4, "y": 2},
|
||||
{"matrix": [7, 1], "x": 5, "y": 2},
|
||||
{"matrix": [7, 2], "x": 6, "y": 2},
|
||||
{"matrix": [7, 3], "x": 7, "y": 2},
|
||||
{"matrix": [1, 4], "x": 8, "y": 2},
|
||||
{"matrix": [1, 5], "x": 9, "y": 2},
|
||||
{"matrix": [1, 6], "x": 10, "y": 2},
|
||||
{"matrix": [1, 7], "x": 11, "y": 2},
|
||||
{"matrix": [1, 8], "x": 12, "y": 2},
|
||||
{"matrix": [1, 9], "x": 13, "y": 2, "w": 2},
|
||||
|
||||
{"matrix": [7, 4], "x": 15.5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 16.5, "y": 2},
|
||||
{"matrix": [7, 6], "x": 17.5, "y": 2},
|
||||
{"matrix": [7, 7], "x": 18.5, "y": 2},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 3, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 3},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 3},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 3},
|
||||
{"matrix": [8, 0], "x": 4.5, "y": 3},
|
||||
{"matrix": [8, 1], "x": 5.5, "y": 3},
|
||||
{"matrix": [8, 2], "x": 6.5, "y": 3},
|
||||
{"matrix": [8, 3], "x": 7.5, "y": 3},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 3},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 3},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 3},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 3},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 3},
|
||||
|
||||
{"matrix": [8, 4], "x": 15.5, "y": 3},
|
||||
{"matrix": [8, 5], "x": 16.5, "y": 3},
|
||||
{"matrix": [8, 6], "x": 17.5, "y": 3},
|
||||
{"matrix": [8, 7], "x": 18.5, "y": 3},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 4, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 4},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 4},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [9, 0], "x": 4.75, "y": 4},
|
||||
{"matrix": [9, 1], "x": 5.75, "y": 4},
|
||||
{"matrix": [9, 2], "x": 6.75, "y": 4},
|
||||
{"matrix": [9, 3], "x": 7.75, "y": 4},
|
||||
{"matrix": [3, 4], "x": 8.75, "y": 4},
|
||||
{"matrix": [3, 5], "x": 9.75, "y": 4},
|
||||
{"matrix": [3, 6], "x": 10.75, "y": 4},
|
||||
{"matrix": [3, 7], "x": 11.75, "y": 4},
|
||||
{"matrix": [2, 9], "x": 12.75, "y": 4},
|
||||
{"matrix": [3, 8], "x": 13.75, "y": 3, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [9, 4], "x": 15.5, "y": 4},
|
||||
{"matrix": [9, 5], "x": 16.5, "y": 4},
|
||||
{"matrix": [9, 6], "x": 17.5, "y": 4},
|
||||
{"matrix": [9, 7], "x": 18.5, "y": 4},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 5, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 5},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 5},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 5},
|
||||
{"matrix": [10, 0], "x": 4.25, "y": 5},
|
||||
{"matrix": [10, 1], "x": 5.25, "y": 5},
|
||||
{"matrix": [10, 2], "x": 6.25, "y": 5},
|
||||
{"matrix": [10, 3], "x": 7.25, "y": 5},
|
||||
{"matrix": [4, 4], "x": 8.25, "y": 5},
|
||||
{"matrix": [4, 5], "x": 9.25, "y": 5},
|
||||
{"matrix": [4, 6], "x": 10.25, "y": 5},
|
||||
{"matrix": [4, 7], "x": 11.25, "y": 5},
|
||||
{"matrix": [4, 8], "x": 12.25, "y": 5, "w": 1.75},
|
||||
|
||||
{"matrix": [10, 9], "x": 14.25, "y": 5.25},
|
||||
|
||||
{"matrix": [10, 4], "x": 15.5, "y": 5},
|
||||
{"matrix": [10, 5], "x": 16.5, "y": 5},
|
||||
{"matrix": [10, 6], "x": 17.5, "y": 5},
|
||||
{"matrix": [10, 7], "x": 18.5, "y": 5, "h": 2},
|
||||
|
||||
{"matrix": [5, 0], "x": 0, "y": 6, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 6, "w": 1.5},
|
||||
{"matrix": [5, 3], "x": 3, "y": 6, "w": 7},
|
||||
{"matrix": [11, 4], "x": 10, "y": 6, "w": 1.5},
|
||||
{"matrix": [11, 7], "x": 11.5, "y": 6, "w": 1.5},
|
||||
|
||||
{"matrix": [10, 8], "x": 13.25, "y": 6.25},
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
|
26
keyboards/ash1800/matrix_diagram.md
Normal file
26
keyboards/ash1800/matrix_diagram.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Matrix Diagram for ASH1800
|
||||
|
||||
```
|
||||
┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐
|
||||
│00 ││01 │02 │03 │60 ││61 │62 │63 │04 ││05 │06 │07 │08 │ │54 │55 │56 │57 │
|
||||
└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘ ├───┼───┼───┼───┤
|
||||
│64 │65 │66 │67 │
|
||||
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ├───┼───┼───┼───┤
|
||||
│10 │11 │12 │13 │70 │71 │72 │73 │14 │15 │16 │17 │18 │19 │ │74 │75 │76 │77 │
|
||||
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┼───┤ ┌─────┐
|
||||
│20 │21 │22 │23 │80 │81 │82 │83 │24 │25 │26 │27 │28 │29 │ │84 │85 │86 │87 │ │38 │
|
||||
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┼───┤ ┌──┴┐ │ ISO Enter
|
||||
│30 │31 │32 │33 │90 │91 │92 │93 │34 │35 │36 │37 │38 │ │94 │95 │96 │97 │ │29 │ │
|
||||
├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┼───┼───┼───┤ └───┴────┘
|
||||
│40 │41 │42 │43 │A0 │A1 │A2 │A3 │44 │45 │46 │47 │48 │┌───┐│A4 │A5 │A6 │A7 │
|
||||
├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│A9 │└───┼───┼───┤ │
|
||||
│50 │51 │52 │53 │B4 │B7 │┌───┼───┼───┐│B5 │B6 │ │
|
||||
└────┴────┴────┴────────────────────────┴─────┴─────┘│A8 │B8 │B9 │└───┴───┴───┘
|
||||
└───┴───┴───┘
|
||||
┌────────┐
|
||||
│40 │ 2.25u LShift
|
||||
└────────┘
|
||||
┌─────┬─────┬───────────────────────────┬─────┬─────┐
|
||||
│50 │51 │53 │B4 │B7 │ WKL
|
||||
└─────┴─────┴───────────────────────────┴─────┴─────┘
|
||||
```
|
@@ -156,6 +156,498 @@
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_ansi": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"matrix": [6, 0], "x": 4.25, "y": 0},
|
||||
|
||||
{"matrix": [6, 1], "x": 5.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 6.5, "y": 0},
|
||||
{"matrix": [6, 3], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8.5, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 9.75, "y": 0},
|
||||
{"matrix": [0, 6], "x": 10.75, "y": 0},
|
||||
{"matrix": [0, 7], "x": 11.75, "y": 0},
|
||||
{"matrix": [0, 8], "x": 12.75, "y": 0},
|
||||
|
||||
{"matrix": [5, 4], "x": 15.5, "y": 0},
|
||||
{"matrix": [5, 5], "x": 16.5, "y": 0},
|
||||
{"matrix": [5, 6], "x": 17.5, "y": 0},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 0},
|
||||
|
||||
{"matrix": [6, 4], "x": 15.5, "y": 1},
|
||||
{"matrix": [6, 5], "x": 16.5, "y": 1},
|
||||
{"matrix": [6, 6], "x": 17.5, "y": 1},
|
||||
{"matrix": [6, 7], "x": 18.5, "y": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 2},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2},
|
||||
{"matrix": [1, 2], "x": 2, "y": 2},
|
||||
{"matrix": [1, 3], "x": 3, "y": 2},
|
||||
{"matrix": [7, 0], "x": 4, "y": 2},
|
||||
{"matrix": [7, 1], "x": 5, "y": 2},
|
||||
{"matrix": [7, 2], "x": 6, "y": 2},
|
||||
{"matrix": [7, 3], "x": 7, "y": 2},
|
||||
{"matrix": [1, 4], "x": 8, "y": 2},
|
||||
{"matrix": [1, 5], "x": 9, "y": 2},
|
||||
{"matrix": [1, 6], "x": 10, "y": 2},
|
||||
{"matrix": [1, 7], "x": 11, "y": 2},
|
||||
{"matrix": [1, 8], "x": 12, "y": 2},
|
||||
{"matrix": [1, 9], "x": 13, "y": 2, "w": 2},
|
||||
|
||||
{"matrix": [7, 4], "x": 15.5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 16.5, "y": 2},
|
||||
{"matrix": [7, 6], "x": 17.5, "y": 2},
|
||||
{"matrix": [7, 7], "x": 18.5, "y": 2},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 3, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 3},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 3},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 3},
|
||||
{"matrix": [8, 0], "x": 4.5, "y": 3},
|
||||
{"matrix": [8, 1], "x": 5.5, "y": 3},
|
||||
{"matrix": [8, 2], "x": 6.5, "y": 3},
|
||||
{"matrix": [8, 3], "x": 7.5, "y": 3},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 3},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 3},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 3},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 3},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 3},
|
||||
{"matrix": [2, 9], "x": 13.5, "y": 3, "w": 1.5},
|
||||
|
||||
{"matrix": [8, 4], "x": 15.5, "y": 3},
|
||||
{"matrix": [8, 5], "x": 16.5, "y": 3},
|
||||
{"matrix": [8, 6], "x": 17.5, "y": 3},
|
||||
{"matrix": [8, 7], "x": 18.5, "y": 3},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 4, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 4},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 4},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [9, 0], "x": 4.75, "y": 4},
|
||||
{"matrix": [9, 1], "x": 5.75, "y": 4},
|
||||
{"matrix": [9, 2], "x": 6.75, "y": 4},
|
||||
{"matrix": [9, 3], "x": 7.75, "y": 4},
|
||||
{"matrix": [3, 4], "x": 8.75, "y": 4},
|
||||
{"matrix": [3, 5], "x": 9.75, "y": 4},
|
||||
{"matrix": [3, 6], "x": 10.75, "y": 4},
|
||||
{"matrix": [3, 7], "x": 11.75, "y": 4},
|
||||
{"matrix": [3, 8], "x": 12.75, "y": 4, "w": 2.25},
|
||||
|
||||
{"matrix": [9, 4], "x": 15.5, "y": 4},
|
||||
{"matrix": [9, 5], "x": 16.5, "y": 4},
|
||||
{"matrix": [9, 6], "x": 17.5, "y": 4},
|
||||
{"matrix": [9, 7], "x": 18.5, "y": 4},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 5, "w": 2.25},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 5},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 5},
|
||||
{"matrix": [10, 0], "x": 4.25, "y": 5},
|
||||
{"matrix": [10, 1], "x": 5.25, "y": 5},
|
||||
{"matrix": [10, 2], "x": 6.25, "y": 5},
|
||||
{"matrix": [10, 3], "x": 7.25, "y": 5},
|
||||
{"matrix": [4, 4], "x": 8.25, "y": 5},
|
||||
{"matrix": [4, 5], "x": 9.25, "y": 5},
|
||||
{"matrix": [4, 6], "x": 10.25, "y": 5},
|
||||
{"matrix": [4, 7], "x": 11.25, "y": 5},
|
||||
{"matrix": [4, 8], "x": 12.25, "y": 5, "w": 1.75},
|
||||
|
||||
{"matrix": [10, 9], "x": 14.25, "y": 5.25},
|
||||
|
||||
{"matrix": [10, 4], "x": 15.5, "y": 5},
|
||||
{"matrix": [10, 5], "x": 16.5, "y": 5},
|
||||
{"matrix": [10, 6], "x": 17.5, "y": 5},
|
||||
{"matrix": [10, 7], "x": 18.5, "y": 5, "h": 2},
|
||||
|
||||
{"matrix": [5, 0], "x": 0, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 1], "x": 1.25, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 3], "x": 3.75, "y": 6, "w": 6.25},
|
||||
{"matrix": [11, 4], "x": 10, "y": 6, "w": 1.5},
|
||||
{"matrix": [11, 7], "x": 11.5, "y": 6, "w": 1.5},
|
||||
|
||||
{"matrix": [10, 8], "x": 13.25, "y": 6.25},
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_ansi_wkl": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"matrix": [6, 0], "x": 4.25, "y": 0},
|
||||
|
||||
{"matrix": [6, 1], "x": 5.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 6.5, "y": 0},
|
||||
{"matrix": [6, 3], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8.5, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 9.75, "y": 0},
|
||||
{"matrix": [0, 6], "x": 10.75, "y": 0},
|
||||
{"matrix": [0, 7], "x": 11.75, "y": 0},
|
||||
{"matrix": [0, 8], "x": 12.75, "y": 0},
|
||||
|
||||
{"matrix": [5, 4], "x": 15.5, "y": 0},
|
||||
{"matrix": [5, 5], "x": 16.5, "y": 0},
|
||||
{"matrix": [5, 6], "x": 17.5, "y": 0},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 0},
|
||||
|
||||
{"matrix": [6, 4], "x": 15.5, "y": 1},
|
||||
{"matrix": [6, 5], "x": 16.5, "y": 1},
|
||||
{"matrix": [6, 6], "x": 17.5, "y": 1},
|
||||
{"matrix": [6, 7], "x": 18.5, "y": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 2},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2},
|
||||
{"matrix": [1, 2], "x": 2, "y": 2},
|
||||
{"matrix": [1, 3], "x": 3, "y": 2},
|
||||
{"matrix": [7, 0], "x": 4, "y": 2},
|
||||
{"matrix": [7, 1], "x": 5, "y": 2},
|
||||
{"matrix": [7, 2], "x": 6, "y": 2},
|
||||
{"matrix": [7, 3], "x": 7, "y": 2},
|
||||
{"matrix": [1, 4], "x": 8, "y": 2},
|
||||
{"matrix": [1, 5], "x": 9, "y": 2},
|
||||
{"matrix": [1, 6], "x": 10, "y": 2},
|
||||
{"matrix": [1, 7], "x": 11, "y": 2},
|
||||
{"matrix": [1, 8], "x": 12, "y": 2},
|
||||
{"matrix": [1, 9], "x": 13, "y": 2, "w": 2},
|
||||
|
||||
{"matrix": [7, 4], "x": 15.5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 16.5, "y": 2},
|
||||
{"matrix": [7, 6], "x": 17.5, "y": 2},
|
||||
{"matrix": [7, 7], "x": 18.5, "y": 2},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 3, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 3},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 3},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 3},
|
||||
{"matrix": [8, 0], "x": 4.5, "y": 3},
|
||||
{"matrix": [8, 1], "x": 5.5, "y": 3},
|
||||
{"matrix": [8, 2], "x": 6.5, "y": 3},
|
||||
{"matrix": [8, 3], "x": 7.5, "y": 3},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 3},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 3},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 3},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 3},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 3},
|
||||
{"matrix": [2, 9], "x": 13.5, "y": 3, "w": 1.5},
|
||||
|
||||
{"matrix": [8, 4], "x": 15.5, "y": 3},
|
||||
{"matrix": [8, 5], "x": 16.5, "y": 3},
|
||||
{"matrix": [8, 6], "x": 17.5, "y": 3},
|
||||
{"matrix": [8, 7], "x": 18.5, "y": 3},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 4, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 4},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 4},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [9, 0], "x": 4.75, "y": 4},
|
||||
{"matrix": [9, 1], "x": 5.75, "y": 4},
|
||||
{"matrix": [9, 2], "x": 6.75, "y": 4},
|
||||
{"matrix": [9, 3], "x": 7.75, "y": 4},
|
||||
{"matrix": [3, 4], "x": 8.75, "y": 4},
|
||||
{"matrix": [3, 5], "x": 9.75, "y": 4},
|
||||
{"matrix": [3, 6], "x": 10.75, "y": 4},
|
||||
{"matrix": [3, 7], "x": 11.75, "y": 4},
|
||||
{"matrix": [3, 8], "x": 12.75, "y": 4, "w": 2.25},
|
||||
|
||||
{"matrix": [9, 4], "x": 15.5, "y": 4},
|
||||
{"matrix": [9, 5], "x": 16.5, "y": 4},
|
||||
{"matrix": [9, 6], "x": 17.5, "y": 4},
|
||||
{"matrix": [9, 7], "x": 18.5, "y": 4},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 5, "w": 2.25},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 5},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 5},
|
||||
{"matrix": [10, 0], "x": 4.25, "y": 5},
|
||||
{"matrix": [10, 1], "x": 5.25, "y": 5},
|
||||
{"matrix": [10, 2], "x": 6.25, "y": 5},
|
||||
{"matrix": [10, 3], "x": 7.25, "y": 5},
|
||||
{"matrix": [4, 4], "x": 8.25, "y": 5},
|
||||
{"matrix": [4, 5], "x": 9.25, "y": 5},
|
||||
{"matrix": [4, 6], "x": 10.25, "y": 5},
|
||||
{"matrix": [4, 7], "x": 11.25, "y": 5},
|
||||
{"matrix": [4, 8], "x": 12.25, "y": 5, "w": 1.75},
|
||||
|
||||
{"matrix": [10, 9], "x": 14.25, "y": 5.25},
|
||||
|
||||
{"matrix": [10, 4], "x": 15.5, "y": 5},
|
||||
{"matrix": [10, 5], "x": 16.5, "y": 5},
|
||||
{"matrix": [10, 6], "x": 17.5, "y": 5},
|
||||
{"matrix": [10, 7], "x": 18.5, "y": 5, "h": 2},
|
||||
|
||||
{"matrix": [5, 0], "x": 0, "y": 6, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 6, "w": 1.5},
|
||||
{"matrix": [5, 3], "x": 3, "y": 6, "w": 7},
|
||||
{"matrix": [11, 4], "x": 10, "y": 6, "w": 1.5},
|
||||
{"matrix": [11, 7], "x": 11.5, "y": 6, "w": 1.5},
|
||||
|
||||
{"matrix": [10, 8], "x": 13.25, "y": 6.25},
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_iso": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"matrix": [6, 0], "x": 4.25, "y": 0},
|
||||
|
||||
{"matrix": [6, 1], "x": 5.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 6.5, "y": 0},
|
||||
{"matrix": [6, 3], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8.5, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 9.75, "y": 0},
|
||||
{"matrix": [0, 6], "x": 10.75, "y": 0},
|
||||
{"matrix": [0, 7], "x": 11.75, "y": 0},
|
||||
{"matrix": [0, 8], "x": 12.75, "y": 0},
|
||||
|
||||
{"matrix": [5, 4], "x": 15.5, "y": 0},
|
||||
{"matrix": [5, 5], "x": 16.5, "y": 0},
|
||||
{"matrix": [5, 6], "x": 17.5, "y": 0},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 0},
|
||||
|
||||
{"matrix": [6, 4], "x": 15.5, "y": 1},
|
||||
{"matrix": [6, 5], "x": 16.5, "y": 1},
|
||||
{"matrix": [6, 6], "x": 17.5, "y": 1},
|
||||
{"matrix": [6, 7], "x": 18.5, "y": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 2},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2},
|
||||
{"matrix": [1, 2], "x": 2, "y": 2},
|
||||
{"matrix": [1, 3], "x": 3, "y": 2},
|
||||
{"matrix": [7, 0], "x": 4, "y": 2},
|
||||
{"matrix": [7, 1], "x": 5, "y": 2},
|
||||
{"matrix": [7, 2], "x": 6, "y": 2},
|
||||
{"matrix": [7, 3], "x": 7, "y": 2},
|
||||
{"matrix": [1, 4], "x": 8, "y": 2},
|
||||
{"matrix": [1, 5], "x": 9, "y": 2},
|
||||
{"matrix": [1, 6], "x": 10, "y": 2},
|
||||
{"matrix": [1, 7], "x": 11, "y": 2},
|
||||
{"matrix": [1, 8], "x": 12, "y": 2},
|
||||
{"matrix": [1, 9], "x": 13, "y": 2, "w": 2},
|
||||
|
||||
{"matrix": [7, 4], "x": 15.5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 16.5, "y": 2},
|
||||
{"matrix": [7, 6], "x": 17.5, "y": 2},
|
||||
{"matrix": [7, 7], "x": 18.5, "y": 2},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 3, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 3},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 3},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 3},
|
||||
{"matrix": [8, 0], "x": 4.5, "y": 3},
|
||||
{"matrix": [8, 1], "x": 5.5, "y": 3},
|
||||
{"matrix": [8, 2], "x": 6.5, "y": 3},
|
||||
{"matrix": [8, 3], "x": 7.5, "y": 3},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 3},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 3},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 3},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 3},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 3},
|
||||
|
||||
{"matrix": [8, 4], "x": 15.5, "y": 3},
|
||||
{"matrix": [8, 5], "x": 16.5, "y": 3},
|
||||
{"matrix": [8, 6], "x": 17.5, "y": 3},
|
||||
{"matrix": [8, 7], "x": 18.5, "y": 3},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 4, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 4},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 4},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [9, 0], "x": 4.75, "y": 4},
|
||||
{"matrix": [9, 1], "x": 5.75, "y": 4},
|
||||
{"matrix": [9, 2], "x": 6.75, "y": 4},
|
||||
{"matrix": [9, 3], "x": 7.75, "y": 4},
|
||||
{"matrix": [3, 4], "x": 8.75, "y": 4},
|
||||
{"matrix": [3, 5], "x": 9.75, "y": 4},
|
||||
{"matrix": [3, 6], "x": 10.75, "y": 4},
|
||||
{"matrix": [3, 7], "x": 11.75, "y": 4},
|
||||
{"matrix": [2, 9], "x": 12.75, "y": 4},
|
||||
{"matrix": [3, 8], "x": 13.75, "y": 3, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [9, 4], "x": 15.5, "y": 4},
|
||||
{"matrix": [9, 5], "x": 16.5, "y": 4},
|
||||
{"matrix": [9, 6], "x": 17.5, "y": 4},
|
||||
{"matrix": [9, 7], "x": 18.5, "y": 4},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 5, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 5},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 5},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 5},
|
||||
{"matrix": [10, 0], "x": 4.25, "y": 5},
|
||||
{"matrix": [10, 1], "x": 5.25, "y": 5},
|
||||
{"matrix": [10, 2], "x": 6.25, "y": 5},
|
||||
{"matrix": [10, 3], "x": 7.25, "y": 5},
|
||||
{"matrix": [4, 4], "x": 8.25, "y": 5},
|
||||
{"matrix": [4, 5], "x": 9.25, "y": 5},
|
||||
{"matrix": [4, 6], "x": 10.25, "y": 5},
|
||||
{"matrix": [4, 7], "x": 11.25, "y": 5},
|
||||
{"matrix": [4, 8], "x": 12.25, "y": 5, "w": 1.75},
|
||||
|
||||
{"matrix": [10, 9], "x": 14.25, "y": 5.25},
|
||||
|
||||
{"matrix": [10, 4], "x": 15.5, "y": 5},
|
||||
{"matrix": [10, 5], "x": 16.5, "y": 5},
|
||||
{"matrix": [10, 6], "x": 17.5, "y": 5},
|
||||
{"matrix": [10, 7], "x": 18.5, "y": 5, "h": 2},
|
||||
|
||||
{"matrix": [5, 0], "x": 0, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 1], "x": 1.25, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 6, "w": 1.25},
|
||||
{"matrix": [5, 3], "x": 3.75, "y": 6, "w": 6.25},
|
||||
{"matrix": [11, 4], "x": 10, "y": 6, "w": 1.5},
|
||||
{"matrix": [11, 7], "x": 11.5, "y": 6, "w": 1.5},
|
||||
|
||||
{"matrix": [10, 8], "x": 13.25, "y": 6.25},
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
},
|
||||
"LAYOUT_iso_wkl": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
|
||||
{"matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"matrix": [6, 0], "x": 4.25, "y": 0},
|
||||
|
||||
{"matrix": [6, 1], "x": 5.5, "y": 0},
|
||||
{"matrix": [6, 2], "x": 6.5, "y": 0},
|
||||
{"matrix": [6, 3], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8.5, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 9.75, "y": 0},
|
||||
{"matrix": [0, 6], "x": 10.75, "y": 0},
|
||||
{"matrix": [0, 7], "x": 11.75, "y": 0},
|
||||
{"matrix": [0, 8], "x": 12.75, "y": 0},
|
||||
|
||||
{"matrix": [5, 4], "x": 15.5, "y": 0},
|
||||
{"matrix": [5, 5], "x": 16.5, "y": 0},
|
||||
{"matrix": [5, 6], "x": 17.5, "y": 0},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 0},
|
||||
|
||||
{"matrix": [6, 4], "x": 15.5, "y": 1},
|
||||
{"matrix": [6, 5], "x": 16.5, "y": 1},
|
||||
{"matrix": [6, 6], "x": 17.5, "y": 1},
|
||||
{"matrix": [6, 7], "x": 18.5, "y": 1},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 2},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2},
|
||||
{"matrix": [1, 2], "x": 2, "y": 2},
|
||||
{"matrix": [1, 3], "x": 3, "y": 2},
|
||||
{"matrix": [7, 0], "x": 4, "y": 2},
|
||||
{"matrix": [7, 1], "x": 5, "y": 2},
|
||||
{"matrix": [7, 2], "x": 6, "y": 2},
|
||||
{"matrix": [7, 3], "x": 7, "y": 2},
|
||||
{"matrix": [1, 4], "x": 8, "y": 2},
|
||||
{"matrix": [1, 5], "x": 9, "y": 2},
|
||||
{"matrix": [1, 6], "x": 10, "y": 2},
|
||||
{"matrix": [1, 7], "x": 11, "y": 2},
|
||||
{"matrix": [1, 8], "x": 12, "y": 2},
|
||||
{"matrix": [1, 9], "x": 13, "y": 2, "w": 2},
|
||||
|
||||
{"matrix": [7, 4], "x": 15.5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 16.5, "y": 2},
|
||||
{"matrix": [7, 6], "x": 17.5, "y": 2},
|
||||
{"matrix": [7, 7], "x": 18.5, "y": 2},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 3, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 3},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 3},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 3},
|
||||
{"matrix": [8, 0], "x": 4.5, "y": 3},
|
||||
{"matrix": [8, 1], "x": 5.5, "y": 3},
|
||||
{"matrix": [8, 2], "x": 6.5, "y": 3},
|
||||
{"matrix": [8, 3], "x": 7.5, "y": 3},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 3},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 3},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 3},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 3},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 3},
|
||||
|
||||
{"matrix": [8, 4], "x": 15.5, "y": 3},
|
||||
{"matrix": [8, 5], "x": 16.5, "y": 3},
|
||||
{"matrix": [8, 6], "x": 17.5, "y": 3},
|
||||
{"matrix": [8, 7], "x": 18.5, "y": 3},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 4, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 4},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 4},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 4},
|
||||
{"matrix": [9, 0], "x": 4.75, "y": 4},
|
||||
{"matrix": [9, 1], "x": 5.75, "y": 4},
|
||||
{"matrix": [9, 2], "x": 6.75, "y": 4},
|
||||
{"matrix": [9, 3], "x": 7.75, "y": 4},
|
||||
{"matrix": [3, 4], "x": 8.75, "y": 4},
|
||||
{"matrix": [3, 5], "x": 9.75, "y": 4},
|
||||
{"matrix": [3, 6], "x": 10.75, "y": 4},
|
||||
{"matrix": [3, 7], "x": 11.75, "y": 4},
|
||||
{"matrix": [2, 9], "x": 12.75, "y": 4},
|
||||
{"matrix": [3, 8], "x": 13.75, "y": 3, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [9, 4], "x": 15.5, "y": 4},
|
||||
{"matrix": [9, 5], "x": 16.5, "y": 4},
|
||||
{"matrix": [9, 6], "x": 17.5, "y": 4},
|
||||
{"matrix": [9, 7], "x": 18.5, "y": 4},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 5, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 5},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 5},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 5},
|
||||
{"matrix": [10, 0], "x": 4.25, "y": 5},
|
||||
{"matrix": [10, 1], "x": 5.25, "y": 5},
|
||||
{"matrix": [10, 2], "x": 6.25, "y": 5},
|
||||
{"matrix": [10, 3], "x": 7.25, "y": 5},
|
||||
{"matrix": [4, 4], "x": 8.25, "y": 5},
|
||||
{"matrix": [4, 5], "x": 9.25, "y": 5},
|
||||
{"matrix": [4, 6], "x": 10.25, "y": 5},
|
||||
{"matrix": [4, 7], "x": 11.25, "y": 5},
|
||||
{"matrix": [4, 8], "x": 12.25, "y": 5, "w": 1.75},
|
||||
|
||||
{"matrix": [10, 9], "x": 14.25, "y": 5.25},
|
||||
|
||||
{"matrix": [10, 4], "x": 15.5, "y": 5},
|
||||
{"matrix": [10, 5], "x": 16.5, "y": 5},
|
||||
{"matrix": [10, 6], "x": 17.5, "y": 5},
|
||||
{"matrix": [10, 7], "x": 18.5, "y": 5, "h": 2},
|
||||
|
||||
{"matrix": [5, 0], "x": 0, "y": 6, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 6, "w": 1.5},
|
||||
{"matrix": [5, 3], "x": 3, "y": 6, "w": 7},
|
||||
{"matrix": [11, 4], "x": 10, "y": 6, "w": 1.5},
|
||||
{"matrix": [11, 7], "x": 11.5, "y": 6, "w": 1.5},
|
||||
|
||||
{"matrix": [10, 8], "x": 13.25, "y": 6.25},
|
||||
{"matrix": [11, 8], "x": 14.25, "y": 6.25},
|
||||
{"matrix": [11, 9], "x": 15.25, "y": 6.25},
|
||||
|
||||
{"matrix": [11, 5], "x": 16.5, "y": 6},
|
||||
{"matrix": [11, 6], "x": 17.5, "y": 6}
|
||||
]
|
||||
|
26
keyboards/ash_xiix/matrix_diagram.md
Normal file
26
keyboards/ash_xiix/matrix_diagram.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Matrix Diagram for ASH-XIIX
|
||||
|
||||
```
|
||||
┌───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐
|
||||
│00 ││01 │02 │03 │60 ││61 │62 │63 │04 ││05 │06 │07 │08 │ │54 │55 │56 │57 │
|
||||
└───┘└───┴───┴───┴───┘└───┴───┴───┴───┘└───┴───┴───┴───┘ ├───┼───┼───┼───┤
|
||||
│64 │65 │66 │67 │
|
||||
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ├───┼───┼───┼───┤
|
||||
│10 │11 │12 │13 │70 │71 │72 │73 │14 │15 │16 │17 │18 │19 │ │74 │75 │76 │77 │
|
||||
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┼───┤ ┌─────┐
|
||||
│20 │21 │22 │23 │80 │81 │82 │83 │24 │25 │26 │27 │28 │29 │ │84 │85 │86 │87 │ │38 │
|
||||
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ├───┼───┼───┼───┤ ┌──┴┐ │ ISO Enter
|
||||
│30 │31 │32 │33 │90 │91 │92 │93 │34 │35 │36 │37 │38 │ │94 │95 │96 │97 │ │29 │ │
|
||||
├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┘ ├───┼───┼───┼───┤ └───┴────┘
|
||||
│40 │41 │42 │43 │A0 │A1 │A2 │A3 │44 │45 │46 │47 │48 │┌───┐│A4 │A5 │A6 │A7 │
|
||||
├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴┬──┴──┬───┘│A9 │└───┼───┼───┤ │
|
||||
│50 │51 │52 │53 │B4 │B7 │┌───┼───┼───┐│B5 │B6 │ │
|
||||
└────┴────┴────┴────────────────────────┴─────┴─────┘│A8 │B8 │B9 │└───┴───┴───┘
|
||||
└───┴───┴───┘
|
||||
┌────────┐
|
||||
│40 │ 2.25u LShift
|
||||
└────────┘
|
||||
┌─────┬─────┬───────────────────────────┬─────┬─────┐
|
||||
│50 │51 │53 │B4 │B7 │ WKL
|
||||
└─────┴─────┴───────────────────────────┴─────┴─────┘
|
||||
```
|
6
keyboards/ashwing66/config.h
Normal file
6
keyboards/ashwing66/config.h
Normal file
@@ -0,0 +1,6 @@
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define ENCODER_MAP_KEY_DELAY 10
|
||||
#define ENCODER_DEFAULT_POS 0x3
|
166
keyboards/ashwing66/keyboard.json
Normal file
166
keyboards/ashwing66/keyboard.json
Normal file
@@ -0,0 +1,166 @@
|
||||
{
|
||||
"manufacturer": "gzowski",
|
||||
"keyboard_name": "Ashwing66",
|
||||
"maintainer": "gzowski",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP12", "pin_b": "GP11"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP14", "GP15", "GP16", "GP17", "GP19", "GP20", "GP21", "GP22", "GP26", "GP27"],
|
||||
"rows": ["GP28", "GP8", "GP9", "GP10", "GP13"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"dual_beacon": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 16, "y": 1, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 33, "y": 2, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 49, "y": 4, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 65, "y": 7, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 81, "y": 11, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 86, "y": 39, "flags": 4},
|
||||
{"matrix": [4, 6], "x": 81, "y": 56, "flags": 4},
|
||||
{"matrix": [4, 7], "x": 96, "y": 63, "flags": 4},
|
||||
{"matrix": [4, 8], "x": 126, "y": 63, "flags": 4},
|
||||
{"matrix": [4, 9], "x": 141, "y": 56, "flags": 4},
|
||||
{"matrix": [3, 9], "x": 136, "y": 39, "flags": 4},
|
||||
{"matrix": [0, 10], "x": 141, "y": 11, "flags": 4},
|
||||
{"matrix": [0, 11], "x": 157, "y": 7, "flags": 4},
|
||||
{"matrix": [0, 12], "x": 173, "y": 4, "flags": 4},
|
||||
{"matrix": [0, 13], "x": 189, "y": 2, "flags": 4},
|
||||
{"matrix": [0, 14], "x": 206, "y": 1, "flags": 4},
|
||||
{"matrix": [0, 15], "x": 223, "y": 0, "flags": 4}
|
||||
],
|
||||
"led_flush_limit": 16,
|
||||
"led_process_limit": 5,
|
||||
"max_brightness": 125,
|
||||
"sleep": true
|
||||
},
|
||||
"url": "https://github.com/gzowski",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x6F64",
|
||||
"vid": "0x7372"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP0"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_5x16": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"matrix": [0, 15], "x": 15, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13, "y": 1},
|
||||
{"matrix": [1, 14], "x": 14, "y": 1},
|
||||
{"matrix": [1, 15], "x": 15, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13, "y": 2},
|
||||
{"matrix": [2, 14], "x": 14, "y": 2},
|
||||
{"matrix": [2, 15], "x": 15, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12, "y": 3},
|
||||
{"matrix": [3, 13], "x": 13, "y": 3},
|
||||
{"matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"matrix": [3, 15], "x": 15, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4},
|
||||
{"matrix": [4, 1], "x": 1, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2, "y": 4},
|
||||
{"matrix": [4, 3], "x": 3, "y": 4},
|
||||
{"matrix": [4, 4], "x": 4, "y": 4},
|
||||
{"matrix": [4, 5], "x": 5, "y": 4},
|
||||
{"matrix": [4, 6], "x": 6, "y": 4},
|
||||
{"matrix": [4, 7], "x": 7, "y": 4},
|
||||
{"matrix": [4, 8], "x": 8, "y": 4},
|
||||
{"matrix": [4, 9], "x": 9, "y": 4},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4},
|
||||
{"matrix": [4, 12], "x": 12, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13, "y": 4},
|
||||
{"matrix": [4, 14], "x": 14, "y": 4},
|
||||
{"matrix": [4, 15], "x": 15, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
41
keyboards/ashwing66/keymaps/default/keymap.c
Normal file
41
keyboards/ashwing66/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,41 @@
|
||||
// Copyright 2023 James GzowskiMO(_LAYERB)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum custom_layer {
|
||||
_LAYERA,
|
||||
_LAYERB,
|
||||
_LAYERC,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_LAYERA] = LAYOUT_5x16(
|
||||
KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_GRV ,
|
||||
KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_MINS ,
|
||||
KC_LCTL,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,
|
||||
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LBRC ,KC_MUTE ,KC_RBRC ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
|
||||
KC_LBRC,KC_PSCR,KC_CAPS ,MO(_LAYERB),KC_LGUI ,KC_LALT ,KC_SPC ,KC_PGDN ,KC_PGUP ,KC_ENT ,KC_BSPC ,MO(_LAYERC),KC_INS ,KC_DEL ,KC_BSLS ,KC_RBRC
|
||||
),
|
||||
[_LAYERB] = LAYOUT_5x16(
|
||||
KC_ESC ,RGB_TOG,RGB_RMOD,RGB_MOD ,RGB_VAD ,RGB_VAI ,RGB_SPD ,RGB_SPI ,RGB_HUD ,RGB_HUI ,RGB_SAD ,RGB_SAI ,
|
||||
KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_P ,KC_EQL ,
|
||||
KC_LCTL,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_SCLN ,KC_QUOT ,
|
||||
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LBRC ,KC_MUTE ,KC_RBRC ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
|
||||
KC_LBRC,KC_PSCR,KC_CAPS ,_______ ,KC_LGUI ,KC_LALT ,KC_SPC ,KC_END ,KC_HOME ,KC_ENT ,KC_BSPC ,_______ ,KC_INS ,KC_DEL ,KC_BSLS ,KC_RBRC
|
||||
),
|
||||
[_LAYERC] = LAYOUT_5x16(
|
||||
KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_GRV ,
|
||||
KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_UP ,KC_O ,KC_P ,KC_EQL ,
|
||||
KC_LCTL,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_SCLN ,KC_QUOT ,
|
||||
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LBRC ,KC_MUTE ,KC_RBRC ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
|
||||
KC_F11 ,KC_PSCR,KC_CAPS ,_______ ,KC_LGUI ,KC_LALT ,KC_SPC ,KC_END ,KC_HOME ,KC_ENT ,KC_BSPC ,_______ ,KC_INS ,KC_DEL ,KC_BSLS ,KC_F12
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_LAYERA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
|
||||
[_LAYERB] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
|
||||
[_LAYERC] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
|
||||
};
|
||||
#endif
|
1
keyboards/ashwing66/keymaps/default/rules.mk
Normal file
1
keyboards/ashwing66/keymaps/default/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
41
keyboards/ashwing66/keymaps/via/keymap.c
Normal file
41
keyboards/ashwing66/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,41 @@
|
||||
// Copyright 2023 James GzowskiMO(_LAYERB)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum custom_layer {
|
||||
_LAYERA,
|
||||
_LAYERB,
|
||||
_LAYERC,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_LAYERA] = LAYOUT_5x16(
|
||||
KC_ESC ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_GRV ,
|
||||
KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_MINS ,
|
||||
KC_LCTL,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_SCLN ,KC_QUOT ,
|
||||
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LBRC ,KC_MUTE ,KC_RBRC ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
|
||||
KC_LBRC,KC_PSCR,KC_CAPS ,MO(_LAYERB),KC_LGUI ,KC_LALT ,KC_SPC ,KC_PGDN ,KC_PGUP ,KC_ENT ,KC_BSPC ,MO(_LAYERC),KC_INS ,KC_DEL ,KC_BSLS ,KC_RBRC
|
||||
),
|
||||
[_LAYERB] = LAYOUT_5x16(
|
||||
KC_ESC ,RGB_TOG,RGB_RMOD,RGB_MOD ,RGB_VAD ,RGB_VAI ,RGB_SPD ,RGB_SPI ,RGB_HUD ,RGB_HUI ,RGB_SAD ,RGB_SAI ,
|
||||
KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_P ,KC_EQL ,
|
||||
KC_LCTL,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_SCLN ,KC_QUOT ,
|
||||
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LBRC ,KC_MUTE ,KC_RBRC ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
|
||||
KC_LBRC,KC_PSCR,KC_CAPS ,_______ ,KC_LGUI ,KC_LALT ,KC_SPC ,KC_END ,KC_HOME ,KC_ENT ,KC_BSPC ,_______ ,KC_INS ,KC_DEL ,KC_BSLS ,KC_RBRC
|
||||
),
|
||||
[_LAYERC] = LAYOUT_5x16(
|
||||
KC_ESC ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_GRV ,
|
||||
KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_UP ,KC_O ,KC_P ,KC_EQL ,
|
||||
KC_LCTL,KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_LEFT ,KC_DOWN ,KC_RIGHT,KC_SCLN ,KC_QUOT ,
|
||||
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_LBRC ,KC_MUTE ,KC_RBRC ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_RSFT ,
|
||||
KC_F11 ,KC_PSCR,KC_CAPS ,_______ ,KC_LGUI ,KC_LALT ,KC_SPC ,KC_END ,KC_HOME ,KC_ENT ,KC_BSPC ,_______ ,KC_INS ,KC_DEL ,KC_BSLS ,KC_F12
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_LAYERA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
|
||||
[_LAYERB] = { ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
|
||||
[_LAYERC] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}
|
||||
};
|
||||
#endif
|
2
keyboards/ashwing66/keymaps/via/rules.mk
Normal file
2
keyboards/ashwing66/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
23
keyboards/ashwing66/readme.md
Normal file
23
keyboards/ashwing66/readme.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Ashwing66
|
||||
|
||||
66 key winged unibody split
|
||||
|
||||
* Keyboard Maintainer: [James Gzowski](https://github.com/gzowski)
|
||||
* Hardware Supported: Pi Pico or equivilent
|
||||
* Build Guide: [Ashwing66](https://github.com/gzowski/Ashwing66)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make ashwing66:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make ashwing66: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
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button on the PCB, if using a RP2040 press repeatidly to enter boot mode.
|
||||
* **Hold down boot loader button on MCU** Hold down the boot loader button on the MCU while plugging in the keyboard
|
@@ -10,7 +10,7 @@ Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make bfake:default
|
||||
|
||||
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make bfake:default:flash
|
||||
|
||||
|
@@ -52,8 +52,11 @@
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "atmel-dfu",
|
||||
"layout_aliases": {
|
||||
"LAYOUT_classic": "LAYOUT"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_classic": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5},
|
||||
{"matrix": [0, 1], "x": 1.5, "y": 0},
|
||||
|
@@ -42,7 +42,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | LGUI | DEL | ~` | LALT | SPACE | | FN | SPACE | | LEFT | DOWN | UP | RIGHT |
|
||||
* '--------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_CLASSIC] = LAYOUT_classic(
|
||||
[_CLASSIC] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
@@ -63,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | RGUI | | | RALT | | | | | | | |
|
||||
* '--------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FNCLASSIC] = LAYOUT_classic(
|
||||
[_FNCLASSIC] = LAYOUT(
|
||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F11, KC_F12, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||
_______, _______, KC_APP, _______, QK_BOOT, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, _______,
|
||||
KC_CAPS, _______, KC_SCRL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RCTL,
|
||||
|
@@ -30,7 +30,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | LGUI | DEL | ~` | LALT | SPACE | | MO | SPACE | | LEFT | DOWN | UP | RIGHT |
|
||||
* '--------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[0] = LAYOUT_classic(
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_HOME, KC_PGUP, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
@@ -51,7 +51,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | | | | |
|
||||
* '--------------------------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[1] = LAYOUT_classic(
|
||||
[1] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, _______, KC_APP, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_F12,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
|
||||
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[2] = LAYOUT_classic(
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
@@ -67,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[3] = LAYOUT_classic(
|
||||
[3] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
|
255
keyboards/boardsource/sessanta/keyboard.json
Normal file
255
keyboards/boardsource/sessanta/keyboard.json
Normal file
@@ -0,0 +1,255 @@
|
||||
{
|
||||
"manufacturer": "Boardsource",
|
||||
"keyboard_name": "Sessanta",
|
||||
"maintainer": "waffle87",
|
||||
"development_board": "promicro",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6", "D3"],
|
||||
"rows": ["D1", "D0", "D4", "C6", "D7", "E6", "B4", "B5"]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"gradient_left_right": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"x": 224, "y": 4, "flags": 2},
|
||||
{"x": 156, "y": 0, "flags": 2},
|
||||
{"x": 82, "y": 0, "flags": 2},
|
||||
{"x": 13, "y": 4, "flags": 2},
|
||||
{"x": 24, "y": 50, "flags": 2},
|
||||
{"x": 68, "y": 52, "flags": 2},
|
||||
{"x": 121, "y": 52, "flags": 2},
|
||||
{"x": 220, "y": 52, "flags": 2},
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 1], "x": 15, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 30, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 60, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 75, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 6], "x": 90, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 7], "x": 105, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 8], "x": 119, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 134, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 149, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 164, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 179, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 202, "y": 0, "flags": 1},
|
||||
{"matrix": [1, 5], "x": 4, "y": 16, "flags": 1},
|
||||
{"matrix": [1, 6], "x": 22, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 7], "x": 37, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 8], "x": 52, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 67, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 82, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 97, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 112, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 127, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 142, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 157, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 7], "x": 172, "y": 16, "flags": 4},
|
||||
{"matrix": [2, 8], "x": 187, "y": 16, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 205, "y": 16, "flags": 1},
|
||||
{"matrix": [3, 1], "x": 6, "y": 32, "flags": 1},
|
||||
{"matrix": [3, 2], "x": 26, "y": 32, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 41, "y": 32, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 56, "y": 32, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 71, "y": 32, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 86, "y": 32, "flags": 4},
|
||||
{"matrix": [3, 7], "x": 101, "y": 32, "flags": 4},
|
||||
{"matrix": [3, 8], "x": 116, "y": 32, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 131, "y": 32, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 146, "y": 32, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 161, "y": 32, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 175, "y": 32, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 200, "y": 32, "flags": 1},
|
||||
{"matrix": [4, 5], "x": 224, "y": 32, "flags": 1},
|
||||
{"matrix": [4, 6], "x": 9, "y": 48, "flags": 1},
|
||||
{"matrix": [4, 7], "x": 34, "y": 48, "flags": 4},
|
||||
{"matrix": [4, 8], "x": 49, "y": 48, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 63, "y": 48, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 78, "y": 48, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 93, "y": 48, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 108, "y": 48, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 123, "y": 48, "flags": 4},
|
||||
{"matrix": [5, 5], "x": 138, "y": 48, "flags": 4},
|
||||
{"matrix": [5, 6], "x": 153, "y": 48, "flags": 4},
|
||||
{"matrix": [5, 7], "x": 168, "y": 48, "flags": 4},
|
||||
{"matrix": [5, 8], "x": 196, "y": 48, "flags": 1},
|
||||
{"matrix": [6, 0], "x": 224, "y": 48, "flags": 1},
|
||||
{"matrix": [6, 1], "x": 2, "y": 64, "flags": 1},
|
||||
{"matrix": [6, 2], "x": 21, "y": 64, "flags": 1},
|
||||
{"matrix": [6, 3], "x": 39, "y": 64, "flags": 1},
|
||||
{"matrix": [6, 4], "x": 95, "y": 64, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 151, "y": 64, "flags": 1},
|
||||
{"matrix": [6, 6], "x": 170, "y": 64, "flags": 1},
|
||||
{"matrix": [6, 7], "x": 189, "y": 64, "flags": 1},
|
||||
{"matrix": [6, 8], "x": 207, "y": 64, "flags": 1},
|
||||
{"matrix": [7, 0], "x": 224, "y": 64, "flags": 1}
|
||||
],
|
||||
"max_brightness": 150,
|
||||
"sleep": true
|
||||
},
|
||||
"url": "https://boardsource.xyz",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x17AC",
|
||||
"vid": "0x4273"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "D2"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_625_bar": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [1, 0], "x": 9, "y": 0},
|
||||
{"matrix": [1, 1], "x": 10, "y": 0},
|
||||
{"matrix": [1, 2], "x": 11, "y": 0},
|
||||
{"matrix": [1, 3], "x": 12, "y": 0},
|
||||
{"matrix": [1, 4], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 5], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 6], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 0], "x": 4.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 6.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 1},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 0], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 1], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [3, 2], "x": 1.75, "y": 2},
|
||||
{"matrix": [3, 3], "x": 2.75, "y": 2},
|
||||
{"matrix": [3, 4], "x": 3.75, "y": 2},
|
||||
{"matrix": [3, 5], "x": 4.75, "y": 2},
|
||||
{"matrix": [3, 6], "x": 5.75, "y": 2},
|
||||
{"matrix": [3, 7], "x": 6.75, "y": 2},
|
||||
{"matrix": [3, 8], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 0], "x": 8.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 10.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 11.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [4, 5], "x": 15, "y": 2},
|
||||
{"matrix": [4, 6], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [4, 7], "x": 2.25, "y": 3},
|
||||
{"matrix": [4, 8], "x": 3.25, "y": 3},
|
||||
{"matrix": [5, 0], "x": 4.25, "y": 3},
|
||||
{"matrix": [5, 1], "x": 5.25, "y": 3},
|
||||
{"matrix": [5, 2], "x": 6.25, "y": 3},
|
||||
{"matrix": [5, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [5, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [5, 5], "x": 9.25, "y": 3},
|
||||
{"matrix": [5, 6], "x": 10.25, "y": 3},
|
||||
{"matrix": [5, 7], "x": 11.25, "y": 3},
|
||||
{"matrix": [5, 8], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [6, 0], "x": 15, "y": 3},
|
||||
{"matrix": [6, 1], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 2], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 3], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 4], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [6, 5], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 6], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 7], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 8], "x": 13.75, "y": 4, "w": 1.25},
|
||||
{"matrix": [7, 0], "x": 15, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [1, 0], "x": 9, "y": 0},
|
||||
{"matrix": [1, 1], "x": 10, "y": 0},
|
||||
{"matrix": [1, 2], "x": 11, "y": 0},
|
||||
{"matrix": [1, 3], "x": 12, "y": 0},
|
||||
{"matrix": [1, 4], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 5], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 6], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 0], "x": 4.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 6.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 10.5, "y": 1},
|
||||
{"matrix": [2, 7], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 8], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 0], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 1], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [3, 2], "x": 1.75, "y": 2},
|
||||
{"matrix": [3, 3], "x": 2.75, "y": 2},
|
||||
{"matrix": [3, 4], "x": 3.75, "y": 2},
|
||||
{"matrix": [3, 5], "x": 4.75, "y": 2},
|
||||
{"matrix": [3, 6], "x": 5.75, "y": 2},
|
||||
{"matrix": [3, 7], "x": 6.75, "y": 2},
|
||||
{"matrix": [3, 8], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 0], "x": 8.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 10.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 11.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [4, 5], "x": 15, "y": 2},
|
||||
{"matrix": [4, 6], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [4, 7], "x": 2.25, "y": 3},
|
||||
{"matrix": [4, 8], "x": 3.25, "y": 3},
|
||||
{"matrix": [5, 0], "x": 4.25, "y": 3},
|
||||
{"matrix": [5, 1], "x": 5.25, "y": 3},
|
||||
{"matrix": [5, 2], "x": 6.25, "y": 3},
|
||||
{"matrix": [5, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [5, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [5, 5], "x": 9.25, "y": 3},
|
||||
{"matrix": [5, 6], "x": 10.25, "y": 3},
|
||||
{"matrix": [5, 7], "x": 11.25, "y": 3},
|
||||
{"matrix": [5, 8], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [6, 0], "x": 15, "y": 3},
|
||||
{"matrix": [6, 1], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 2], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 3], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [7, 1], "x": 3.75, "y": 4, "w": 1.5},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 4},
|
||||
{"matrix": [6, 4], "x": 6.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [7, 3], "x": 7.5, "y": 4},
|
||||
{"matrix": [7, 4], "x": 8.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [6, 5], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 6], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 7], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 8], "x": 13.75, "y": 4, "w": 1.25},
|
||||
{"matrix": [7, 0], "x": 15, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
21
keyboards/boardsource/sessanta/keymaps/default/keymap.json
Normal file
21
keyboards/boardsource/sessanta/keymaps/default/keymap.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"keyboard": "boardsource/sessanta",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT_625_bar",
|
||||
"layers": [
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC",
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS",
|
||||
"KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_VOLU",
|
||||
"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_MPLY",
|
||||
"KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "MO(1)", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_VOLD"
|
||||
],
|
||||
[
|
||||
"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_F13",
|
||||
"QK_RBT", "RGB_MOD", "RGB_VAI", "RGB_HUI", "RGB_SAI", "RGB_TOG", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"EE_CLR", "RGB_RMOD", "RGB_VAD", "RGB_HUD", "RGB_SAD", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
|
||||
]
|
||||
]
|
||||
}
|
26
keyboards/boardsource/sessanta/keymaps/via/keymap.json
Normal file
26
keyboards/boardsource/sessanta/keymaps/via/keymap.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"keyboard": "boardsource/sessanta",
|
||||
"keymap": "via",
|
||||
"layout": "LAYOUT_all",
|
||||
"config": {
|
||||
"features": {
|
||||
"via": true
|
||||
}
|
||||
},
|
||||
"layers": [
|
||||
[
|
||||
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC",
|
||||
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS",
|
||||
"KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_ENT", "KC_VOLU",
|
||||
"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_MPLY",
|
||||
"KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "KC_SPC", "MO(1)", "KC_RALT", "KC_RGUI", "KC_RCTL", "KC_VOLD"
|
||||
],
|
||||
[
|
||||
"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_F13",
|
||||
"QK_RBT", "RGB_MOD", "RGB_VAI", "RGB_HUI", "RGB_SAI", "RGB_TOG", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"EE_CLR", "RGB_RMOD", "RGB_VAD", "RGB_HUD", "RGB_SAD", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
|
||||
]
|
||||
]
|
||||
}
|
27
keyboards/boardsource/sessanta/readme.md
Normal file
27
keyboards/boardsource/sessanta/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Sessanta
|
||||
|
||||

|
||||
|
||||
A 60% keyboard offered in an MX or Choc PCB with per-key RGB
|
||||
|
||||
* Keyboard Maintainer: [waffle87](https://github.com/waffle87)
|
||||
* Hardware Supported: Sessanta PCB w/ Pro Micro compatible microcontroller
|
||||
* Hardware Availability: [boardsource.xyz](https://boardsource.xyz)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make boardsource/sessanta:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make boardsource/sessanta: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 and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB near microcontroller
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT`
|
957
keyboards/chlx/lfn_merro60/keyboard.json
Normal file
957
keyboards/chlx/lfn_merro60/keyboard.json
Normal file
@@ -0,0 +1,957 @@
|
||||
{
|
||||
"manufacturer": "chlx bsmt",
|
||||
"keyboard_name": "lfn.merro60",
|
||||
"maintainer": "gaclee3b",
|
||||
"bootloader": "atmel-dfu",
|
||||
"diode_direction": "ROW2COL",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "B2",
|
||||
"on_state": 0,
|
||||
"compose": "B0"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"rows": ["F5", "F1", "F4", "F0", "F7", "F6", "D3", "D5", "B3", "B7"],
|
||||
"cols": ["C6", "B6", "B5", "B4", "D7", "D6", "D4"]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"url": "www.github.com/gaclee3b",
|
||||
"usb": {
|
||||
"device_version": "2.0.1",
|
||||
"pid": "0x0604",
|
||||
"vid": "0x4358"
|
||||
},
|
||||
"community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_ansi_tsangan", "60_tsangan_hhkb", "60_ansi_wkl", "60_ansi_wkl_split_bs_rshift", "60_hhkb", "60_iso", "60_iso_split_bs_rshift", "60_iso_tsangan", "60_iso_tsangan_split_bs_rshift", "60_iso_wkl", "60_iso_wkl_split_bs_rshift"],
|
||||
"layouts": {
|
||||
"LAYOUT_60_ansi": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 0], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 3], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"matrix": [9, 6], "x": 14, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [7, 6], "x": 14, "y": 3},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 0], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 3], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_tsangan": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 0], "x": 1.5, "y": 4},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4},
|
||||
{"matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_wkl": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_wkl_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"matrix": [9, 6], "x": 14, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [7, 6], "x": 14, "y": 3},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_hhkb": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"matrix": [9, 6], "x": 14, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [7, 6], "x": 14, "y": 3},
|
||||
{"matrix": [8, 0], "x": 1.5, "y": 4},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 0], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 3], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"matrix": [9, 6], "x": 14, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [7, 6], "x": 14, "y": 3},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 0], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 3], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_tsangan": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 0], "x": 1.5, "y": 4},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4},
|
||||
{"matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"matrix": [9, 6], "x": 14, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [7, 6], "x": 14, "y": 3},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 0], "x": 1.5, "y": 4},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4},
|
||||
{"matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_wkl": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_wkl_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"matrix": [9, 6], "x": 14, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [7, 6], "x": 14, "y": 3},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_tsangan_hhkb": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"matrix": [9, 6], "x": 14, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [7, 6], "x": 14, "y": 3},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 0], "x": 1.5, "y": 4},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [8, 3], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4},
|
||||
{"matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 1, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [1, 1], "x": 3, "y": 0},
|
||||
{"matrix": [0, 2], "x": 4, "y": 0},
|
||||
{"matrix": [1, 2], "x": 5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 6, "y": 0},
|
||||
{"matrix": [1, 3], "x": 7, "y": 0},
|
||||
{"matrix": [0, 4], "x": 8, "y": 0},
|
||||
{"matrix": [1, 4], "x": 9, "y": 0},
|
||||
{"matrix": [0, 5], "x": 10, "y": 0},
|
||||
{"matrix": [1, 5], "x": 11, "y": 0},
|
||||
{"matrix": [0, 6], "x": 12, "y": 0},
|
||||
{"matrix": [1, 6], "x": 13, "y": 0},
|
||||
{"matrix": [9, 6], "x": 14, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 1.5, "y": 1},
|
||||
{"matrix": [2, 1], "x": 2.5, "y": 1},
|
||||
{"matrix": [3, 1], "x": 3.5, "y": 1},
|
||||
{"matrix": [2, 2], "x": 4.5, "y": 1},
|
||||
{"matrix": [3, 2], "x": 5.5, "y": 1},
|
||||
{"matrix": [2, 3], "x": 6.5, "y": 1},
|
||||
{"matrix": [3, 3], "x": 7.5, "y": 1},
|
||||
{"matrix": [2, 4], "x": 8.5, "y": 1},
|
||||
{"matrix": [3, 4], "x": 9.5, "y": 1},
|
||||
{"matrix": [2, 5], "x": 10.5, "y": 1},
|
||||
{"matrix": [3, 5], "x": 11.5, "y": 1},
|
||||
{"matrix": [2, 6], "x": 12.5, "y": 1},
|
||||
{"matrix": [3, 6], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 1.75, "y": 2},
|
||||
{"matrix": [4, 1], "x": 2.75, "y": 2},
|
||||
{"matrix": [5, 1], "x": 3.75, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4.75, "y": 2},
|
||||
{"matrix": [5, 2], "x": 5.75, "y": 2},
|
||||
{"matrix": [4, 3], "x": 6.75, "y": 2},
|
||||
{"matrix": [5, 3], "x": 7.75, "y": 2},
|
||||
{"matrix": [4, 4], "x": 8.75, "y": 2},
|
||||
{"matrix": [5, 4], "x": 9.75, "y": 2},
|
||||
{"matrix": [4, 5], "x": 10.75, "y": 2},
|
||||
{"matrix": [5, 5], "x": 11.75, "y": 2},
|
||||
{"matrix": [4, 6], "x": 12.75, "y": 2},
|
||||
{"matrix": [5, 6], "x": 13.75, "y": 2, "w": 1.25},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [7, 0], "x": 1.25, "y": 3},
|
||||
{"matrix": [6, 1], "x": 2.25, "y": 3},
|
||||
{"matrix": [7, 1], "x": 3.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 3], "x": 6.25, "y": 3},
|
||||
{"matrix": [7, 3], "x": 7.25, "y": 3},
|
||||
{"matrix": [6, 4], "x": 8.25, "y": 3},
|
||||
{"matrix": [7, 4], "x": 9.25, "y": 3},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 3},
|
||||
{"matrix": [7, 5], "x": 11.25, "y": 3},
|
||||
{"matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [7, 6], "x": 14, "y": 3},
|
||||
{"matrix": [9, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 0], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 2], "x": 3.75, "y": 4, "w": 2.75},
|
||||
{"matrix": [8, 3], "x": 6.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 3], "x": 7.75, "y": 4, "w": 2.25},
|
||||
{"matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
35
keyboards/chlx/lfn_merro60/keymaps/default/keymap.c
Normal file
35
keyboards/chlx/lfn_merro60/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright 2024 Alexander Lee <chlx.bsmt@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_all(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
|
||||
KC_CAPS, _______, KC_HOME, KC_UP, KC_PGUP, _______, _______, _______, _______, _______, _______, KC_UP, _______, QK_BOOT,
|
||||
_______, KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
|
||||
_______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
};
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright 2017 Danny Nguyen <danny@hexwire.com>
|
||||
Copyright 2024 Alexander Lee <chlx.bsmt@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -17,4 +17,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#define USE_I2C
|
||||
/* VIA related config */
|
||||
#define VIA_EEPROM_LAYOUT_OPTIONS_SIZE 2
|
35
keyboards/chlx/lfn_merro60/keymaps/via/keymap.c
Normal file
35
keyboards/chlx/lfn_merro60/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright 2024 Alexander Lee <chlx.bsmt@gmail.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_all(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_LSCR, KC_RALT, KC_RGUI, KC_APP, KC_RCTL),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
|
||||
KC_CAPS, _______, KC_HOME, KC_UP, KC_PGUP, _______, _______, _______, _______, _______, _______, KC_UP, _______, QK_BOOT,
|
||||
_______, KC_END, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, _______, _______, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, _______, _______,
|
||||
_______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_MPLY, _______, _______, _______, KC_END, KC_PGDN, KC_DOWN, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
};
|
2
keyboards/chlx/lfn_merro60/keymaps/via/rules.mk
Normal file
2
keyboards/chlx/lfn_merro60/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
27
keyboards/chlx/lfn_merro60/readme.md
Normal file
27
keyboards/chlx/lfn_merro60/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# lfn.merro60
|
||||
|
||||

|
||||
|
||||
- Standard 60% format keyboard PCB with USB-C and unified daughterboard compatibility.
|
||||
- Modified cutouts to allow usage of certain tray mount cases into gummy gasket o-ring mount.
|
||||
- Meant to be manufactured in 2mm thickness.
|
||||
|
||||
* Keyboard Maintainer: [Alexander Lee](https://github.com/gaclee3b)
|
||||
* Hardware Supported: chlx PCB lfn.merro60.x.x.x
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make chlx/lfn_merro60:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make chlx/lfn_merro60: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 bootloader mode by any of the following options -
|
||||
- When unplugged, holding the top-left key (typically ESC) while plugging in the keyboard
|
||||
- After plugging in, press and release the reset button on the pcb top-side near the spacebar switch locations
|
||||
- After plugging in, short out the two reset metal contacts near the 'z' key (accessible through the switch LED slot)
|
71
keyboards/cipulot/ec_60x/config.h
Normal file
71
keyboards/cipulot/ec_60x/config.h
Normal file
@@ -0,0 +1,71 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define MATRIX_ROWS 5
|
||||
#define MATRIX_COLS 15
|
||||
|
||||
#define MATRIX_ROW_PINS \
|
||||
{ A8, A15, B12, B8, B9}
|
||||
|
||||
#define AMUX_COUNT 1
|
||||
#define AMUX_MAX_COLS_COUNT 16
|
||||
|
||||
#define AMUX_EN_PINS \
|
||||
{ B5 }
|
||||
|
||||
#define AMUX_SEL_PINS \
|
||||
{ B6, B7, B4, B3 }
|
||||
|
||||
#define AMUX_COL_CHANNELS_SIZES \
|
||||
{ 15 }
|
||||
|
||||
#define AMUX_0_COL_CHANNELS \
|
||||
{ 7, 6, 5, 4, 3, 2, 1, 0, 8, 14, 13, 10, 9, 12, 11}
|
||||
|
||||
#define AMUX_COL_CHANNELS AMUX_0_COL_CHANNELS
|
||||
|
||||
#define DISCHARGE_PIN A2
|
||||
#define ANALOG_PORT A3
|
||||
|
||||
#define DEFAULT_ACTUATION_MODE 0
|
||||
#define DEFAULT_MODE_0_ACTUATION_LEVEL 550
|
||||
#define DEFAULT_MODE_0_RELEASE_LEVEL 500
|
||||
#define DEFAULT_MODE_1_INITIAL_DEADZONE_OFFSET DEFAULT_MODE_0_ACTUATION_LEVEL
|
||||
#define DEFAULT_MODE_1_ACTUATION_OFFSET 70
|
||||
#define DEFAULT_MODE_1_RELEASE_OFFSET 70
|
||||
#define DEFAULT_EXTREMUM 1023
|
||||
#define EXPECTED_NOISE_FLOOR 0
|
||||
#define NOISE_FLOOR_THRESHOLD 50
|
||||
#define BOTTOMING_CALIBRATION_THRESHOLD 50
|
||||
#define DEFAULT_NOISE_FLOOR_SAMPLING_COUNT 30
|
||||
#define DEFAULT_BOTTOMING_READING 1023
|
||||
#define DEFAULT_CALIBRATION_STARTER true
|
||||
|
||||
#define DISCHARGE_TIME 10
|
||||
|
||||
// #define DEBUG_MATRIX_SCAN_RATE
|
||||
#define EECONFIG_KB_DATA_SIZE 159
|
||||
|
||||
// PWM driver with direct memory access (DMA) support
|
||||
#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 WS2812_DMAMUX_ID STM32_DMAMUX1_TIM1_UP
|
23
keyboards/cipulot/ec_60x/halconf.h
Normal file
23
keyboards/cipulot/ec_60x/halconf.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_ADC TRUE
|
||||
#define HAL_USE_PAL TRUE
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
330
keyboards/cipulot/ec_60x/keyboard.json
Normal file
330
keyboards/cipulot/ec_60x/keyboard.json
Normal file
@@ -0,0 +1,330 @@
|
||||
{
|
||||
"manufacturer": "Cipulot",
|
||||
"keyboard_name": "EC 60X",
|
||||
"maintainer": "Cipulot",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"eeprom": {
|
||||
"wear_leveling": {
|
||||
"backing_size": 4096
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": false,
|
||||
"console": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"processor": "STM32F411",
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"rgb_test": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"led_count": 22
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x6BC7",
|
||||
"shared_endpoint": {
|
||||
"keyboard": true
|
||||
},
|
||||
"vid": "0x6369"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "pwm",
|
||||
"pin": "B15"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_60_ansi_tsangan": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_tsangan": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_jis": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3},
|
||||
{"matrix": [3, 13], "x": 13.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 4], "x": 4, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 5.5, "y": 4, "w": 2.5},
|
||||
{"matrix": [4, 8], "x": 8, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 10], "x": 9.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 0.75},
|
||||
{"matrix": [1, 14], "x": 14.25, "y": 1, "w": 0.75},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3},
|
||||
{"matrix": [3, 13], "x": 13.25, "y": 3, "w": 0.75},
|
||||
{"matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 4], "x": 4, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 5.5, "y": 4, "w": 2.5},
|
||||
{"matrix": [4, 8], "x": 8, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 10], "x": 9.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
42
keyboards/cipulot/ec_60x/keymaps/60_ansi_tsangan/keymap.c
Normal file
42
keyboards/cipulot/ec_60x/keymaps/60_ansi_tsangan/keymap.c
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_60_ansi_tsangan(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENTER,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL),
|
||||
|
||||
[1] = LAYOUT_60_ansi_tsangan(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______,
|
||||
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______,
|
||||
_______, _______, _______, _______, MO(2), _______, _______),
|
||||
|
||||
[2] = LAYOUT_60_ansi_tsangan(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
42
keyboards/cipulot/ec_60x/keymaps/60_iso_tsangan/keymap.c
Normal file
42
keyboards/cipulot/ec_60x/keymaps/60_iso_tsangan/keymap.c
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_60_iso_tsangan(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENTER,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL),
|
||||
|
||||
[1] = LAYOUT_60_iso_tsangan(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______,
|
||||
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______,
|
||||
_______, _______, _______, _______, MO(2), _______, _______),
|
||||
|
||||
[2] = LAYOUT_60_iso_tsangan(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
42
keyboards/cipulot/ec_60x/keymaps/60_jis/keymap.c
Normal file
42
keyboards/cipulot/ec_60x/keymaps/60_jis/keymap.c
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_60_jis(
|
||||
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_INT3, 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_ENTER,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_INT1, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_INT5, KC_SPC, KC_INT4, KC_INT2, KC_RALT, MO(1), KC_RCTL),
|
||||
|
||||
[1] = LAYOUT_60_jis(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______,
|
||||
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______),
|
||||
|
||||
[2] = LAYOUT_60_jis(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
42
keyboards/cipulot/ec_60x/keymaps/default/keymap.c
Normal file
42
keyboards/cipulot/ec_60x/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_all(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
|
||||
KC_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_ENTER,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, MO(1), KC_RCTL),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
|
||||
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______),
|
||||
|
||||
[2] = LAYOUT_all(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
42
keyboards/cipulot/ec_60x/keymaps/via/keymap.c
Normal file
42
keyboards/cipulot/ec_60x/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,42 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[0] = LAYOUT_all(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
|
||||
KC_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_ENTER,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RALT, MO(1), KC_RCTL),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
|
||||
_______, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_RIGHT, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DOWN, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, MO(2), _______),
|
||||
|
||||
[2] = LAYOUT_all(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
// clang-format on
|
||||
};
|
1
keyboards/cipulot/ec_60x/keymaps/via/rules.mk
Normal file
1
keyboards/cipulot/ec_60x/keymaps/via/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
25
keyboards/cipulot/ec_60x/mcuconf.h
Normal file
25
keyboards/cipulot/ec_60x/mcuconf.h
Normal file
@@ -0,0 +1,25 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_ADC_USE_ADC1
|
||||
#define STM32_ADC_USE_ADC1 TRUE
|
||||
|
||||
#undef STM32_PWM_USE_TIM1
|
||||
#define STM32_PWM_USE_TIM1 TRUE
|
3
keyboards/cipulot/ec_60x/post_rules.mk
Normal file
3
keyboards/cipulot/ec_60x/post_rules.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
ifeq ($(strip $(VIA_ENABLE)), yes)
|
||||
SRC += keyboards/cipulot/common/via_ec.c
|
||||
endif
|
26
keyboards/cipulot/ec_60x/readme.md
Normal file
26
keyboards/cipulot/ec_60x/readme.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# EC 60X
|
||||
|
||||

|
||||
|
||||
Universal 60% Electrostatic Capacitive PCB, with multi-layout support.
|
||||
|
||||
* Keyboard Maintainer: [cipulot](https://github.com/cipulot)
|
||||
* Hardware Supported: EC 60X
|
||||
* Hardware Availability: TBD
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cipulot/ec_60x:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cipulot/ec_60x: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:
|
||||
|
||||
* **Physical reset**: Long short the exposed pins on the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
5
keyboards/cipulot/ec_60x/rules.mk
Normal file
5
keyboards/cipulot/ec_60x/rules.mk
Normal file
@@ -0,0 +1,5 @@
|
||||
CUSTOM_MATRIX = lite
|
||||
ANALOG_DRIVER_REQUIRED = yes
|
||||
VPATH += keyboards/cipulot/common
|
||||
SRC += matrix.c ec_board.c ec_switch_matrix.c
|
||||
OPT = 2
|
@@ -35,9 +35,9 @@
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [0, 15], "x": 16.25, "y": 1, "flags": 4},
|
||||
{"matrix": [0, 16], "x": 17.25, "y": 1, "flags": 4},
|
||||
{"matrix": [0, 17], "x": 18.25, "y": 1, "flags": 4}
|
||||
{"matrix": [0, 15], "x": 16, "y": 1, "flags": 4},
|
||||
{"matrix": [0, 16], "x": 17, "y": 1, "flags": 4},
|
||||
{"matrix": [0, 17], "x": 18, "y": 1, "flags": 4}
|
||||
],
|
||||
"led_count": 3,
|
||||
"max_brightness": 255
|
||||
|
@@ -100,7 +100,7 @@
|
||||
{"matrix": [3, 13], "x": 15.5, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 14], "x": 17.25, "y": 3},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2},
|
||||
{"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75},
|
||||
@@ -170,7 +170,7 @@
|
||||
{"matrix": [3, 13], "x": 15.5, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 14], "x": 17.25, "y": 3},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2},
|
||||
{"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75},
|
||||
@@ -238,7 +238,7 @@
|
||||
{"matrix": [3, 12], "x": 14.5, "y": 3},
|
||||
{"matrix": [3, 13], "x": 15.5, "y": 3, "w": 2.75},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2},
|
||||
{"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75},
|
||||
@@ -307,7 +307,7 @@
|
||||
{"matrix": [3, 12], "x": 14.5, "y": 3},
|
||||
{"matrix": [3, 13], "x": 15.5, "y": 3, "w": 2.75},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 2], "x": 4.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 3], "x": 4.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 5], "x": 5.75, "y": 4, "w": 2},
|
||||
{"matrix": [4, 6], "x": 7.75, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 8], "x": 9.5, "y": 4, "w": 2.75},
|
||||
|
@@ -18,7 +18,7 @@
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
KC_PSCR, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_PSCR, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
|
||||
KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
|
@@ -18,7 +18,7 @@
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
KC_PSCR, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_PSCR, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC,
|
||||
KC_PGUP, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_PGDN, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
|
@@ -43,10 +43,10 @@
|
||||
"levels": 6
|
||||
},
|
||||
"layout_aliases": {
|
||||
"LAYOUT": "LAYOUT_all"
|
||||
"LAYOUT_all": "LAYOUT"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "ON/OFF", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "SAT+", "matrix": [0, 1], "x": 4, "y": 0},
|
||||
|
@@ -1,115 +0,0 @@
|
||||
/*
|
||||
Copyright 2019 @foostan
|
||||
Copyright 2023 @asdfire1
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General 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
|
||||
|
||||
/* Select hand configuration */
|
||||
|
||||
#define MASTER_LEFT
|
||||
// #define MASTER_RIGHT
|
||||
// #define EE_HANDS
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
#define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
// #define RGBLIGHT_EFFECT_TWINKLE
|
||||
#define RGBLIGHT_LIMIT_VAL 120
|
||||
#define RGBLIGHT_HUE_STEP 10
|
||||
#define RGBLIGHT_SAT_STEP 17
|
||||
#define RGBLIGHT_VAL_STEP 17
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
//# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
// # define RGB_MATRIX_KEYRELEASES // reacts to keyreleases (instead of keypresses)
|
||||
// # define RGB_DISABLE_AFTER_TIMEOUT 0 // number of ticks to wait until disabling effects
|
||||
# define RGB_MATRIX_SLEEP // turn off effects when suspended
|
||||
//# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
// # define RGB_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
|
||||
// # define RGB_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
|
||||
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 // limits maximum brightness of LEDs to 150 out of 255. Higher may cause the controller to crash.
|
||||
# define RGB_MATRIX_HUE_STEP 8
|
||||
# define RGB_MATRIX_SAT_STEP 8
|
||||
# define RGB_MATRIX_VAL_STEP 8
|
||||
# define RGB_MATRIX_SPD_STEP 10
|
||||
|
||||
/* Enable the animations you want/need. You may need to enable only a small number of these because *
|
||||
* they take up a lot of space. Enable and confirm that you can still successfully compile your firmware. */
|
||||
// RGB Matrix Animation modes. Explicitly enabled
|
||||
// For full list of effects, see:
|
||||
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
|
||||
# define ENABLE_RGB_MATRIX_ALPHAS_MODS
|
||||
//# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
//# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
|
||||
//# define ENABLE_RGB_MATRIX_BREATHING
|
||||
//# define ENABLE_RGB_MATRIX_BAND_SAT
|
||||
//# define ENABLE_RGB_MATRIX_BAND_VAL
|
||||
//# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||
//# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
||||
//# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||
//# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
||||
//# define ENABLE_RGB_MATRIX_CYCLE_ALL
|
||||
//# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
//# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
//# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||
//# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
//# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
||||
//# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||
//# define ENABLE_RGB_MATRIX_DUAL_BEACON
|
||||
//# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
//# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||
//# define ENABLE_RGB_MATRIX_RAINDROPS
|
||||
//# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
//# define ENABLE_RGB_MATRIX_HUE_BREATHING
|
||||
//# define ENABLE_RGB_MATRIX_HUE_PENDULUM
|
||||
//# define ENABLE_RGB_MATRIX_HUE_WAVE
|
||||
//# define ENABLE_RGB_MATRIX_PIXEL_RAIN
|
||||
//# define ENABLE_RGB_MATRIX_PIXEL_FLOW
|
||||
//# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
||||
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
|
||||
//# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
//# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||
//# define ENABLE_RGB_MATRIX_SPLASH
|
||||
//# define ENABLE_RGB_MATRIX_MULTISPLASH
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
//# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
#endif
|
||||
#define OLED_FONT_H "keyboards/crkbd/lib/glcdfont.c"
|
||||
#define SPLIT_LAYER_STATE_ENABLE
|
||||
#define SPLIT_WPM_ENABLE //Enable WPM across split keyboards (+268).
|
||||
#define NO_ACTION_ONESHOT
|
||||
//#define SPLIT_OLED_ENABLE
|
||||
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 6
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user