Compare commits

...

106 Commits

Author SHA1 Message Date
QMK Bot
7d94db8661 [CI] Format code according to conventions (#24100) 2024-07-12 08:58:57 +10:00
Joel Challis
063f1444c6 Add json index of files to CI uploads (#24097) 2024-07-12 08:48:43 +10:00
QMK Bot
2e671cfd8b [CI] Format code according to conventions (#24095)
Format code according to conventions
2024-07-11 14:50:39 +01:00
Nick Brassel
1b8b6801d4 [CI] Add index page generator. (#23737) 2024-07-11 14:43:26 +01:00
jack
cc62eb503d [Keyboard] Add boardsource/sessenta (#23823) 2024-07-11 14:39:45 +01:00
4pplet
0c4fd514f1 Adding support for IBE60 (#24075) 2024-07-11 13:51:43 +01:00
Ryan
9be6d76c61 mt/mt64rgb: move RGB Matrix config to data driven (#24089) 2024-07-11 13:50:26 +01:00
Ryan
3d10171e2c mt/mt84: move RGB Matrix config to data driven (#24090) 2024-07-11 13:49:45 +01:00
tarxvf
e3ef5b2d9d mntre_v3: fix matrix bottom row (#24077) 2024-07-11 13:46:54 +01:00
Dasky
f8cf58a512 Remove a user keymap from crkbd. (#24091)
remove personal keymap
2024-07-11 13:10:28 +01:00
era
efa5b30cfd [Keyboard] Add Linx3 FAve65S (#24034)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-07-10 19:50:09 -07:00
Ryan
fb54a59bba jadookb/jkb65: move RGB Matrix LED config to data driven (#24080) 2024-07-10 17:09:41 -07:00
Ryan
fbbc71ec34 kakunpc/rabbit_capture_plan: update keymap layout name (#24079)
`kakunpc/rabbit_capture_plan`: update keymap layout names
2024-07-08 10:27:09 -06:00
Ryan
a0bb7ff992 latinpad/latin60rgb: move RGB Matrix LED config to data driven (#24076) 2024-07-08 15:57:45 +10:00
Ryan
6eb6e3048a pearlboards/zeuspad: add additional layouts (#24066) 2024-07-08 15:57:29 +10:00
Ryan
d08da05cb8 mechlovin/olly/octagon: move LED Matrix LED config to data driven (#24069) 2024-07-08 15:57:13 +10:00
Ryan
8336b5c72f ash1800: add additional layouts (#24065) 2024-07-08 15:56:57 +10:00
Less/Rikki
b23ddb9ad8 [keyboard] mechwild/bbpad (#24072)
* Initial bbpad commit

* refactor: bbpad

---------

Co-authored-by: Kyle McCreery <mccreery.kyle@gmail.com>
2024-07-07 13:09:48 -06:00
Lex Brugman
67d512e639 Fix enter for two ANSI layouts on the TKD Cycle7 (#24070) 2024-07-07 00:58:04 +01:00
Ryan
4fbb395602 ano: fix layout name (#24067) 2024-07-06 09:21:11 +01:00
Nick Brassel
300505bd9e [docs] Fixup home link. (#24068) 2024-07-06 16:08:55 +10:00
Ryan
38f07e1fd2 handwired/swiftrax/bumblebee: fix layout name (#24064) 2024-07-06 03:23:54 +01:00
Ryan
b82f6ac402 [docs] Update RGBLight (Underglow) keycode names (#23999) 2024-07-06 11:14:09 +10:00
Ryan
be967d42d2 playkbtw/pk64rgb: move RGB Matrix LED config to data driven (#24062) 2024-07-05 23:41:32 +01:00
dependabot[bot]
af72a58c8f Bump JamesIves/github-pages-deploy-action from 4.6.1 to 4.6.3 (#24063)
Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.6.1 to 4.6.3.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](https://github.com/jamesives/github-pages-deploy-action/compare/v4.6.1...v4.6.3)

---
updated-dependencies:
- dependency-name: JamesIves/github-pages-deploy-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-05 23:25:48 +01:00
Ryan
9fb51cfe2b kbdfans/baguette66: fix layout name (#24061) 2024-07-05 11:57:39 +01:00
ai03
6d21898c14 Add support for Equinox XL (#23695) 2024-07-05 11:55:25 +01:00
Ryan
096dc672c1 kakunpc/rabbit_capture_plan: add additional layouts (#24059) 2024-07-05 16:35:48 +10:00
Ryan
8e64ff574a kakunpc/angel64: add additional layouts (#24058) 2024-07-05 16:35:35 +10:00
Ryan
5e2368984e ash_xiix: add additional layouts (#24057) 2024-07-05 16:35:15 +10:00
Ryan
15af5d7d0d handwired/tkk: fix layout name (#24056) 2024-07-04 23:25:00 -06:00
Ryan
62c1787d72 dc01/arrow: fix layout name (#24025) 2024-07-05 15:10:02 +10:00
Coby Sher
8fe667a1a4 Add Sleepy Craft Studios Sleepy Keeb Split (#23844) 2024-07-04 18:35:29 -07:00
Ryan
031ccd4887 salicylic_acid3/setta21: fix RGB Matrix LED config (#24041) 2024-07-05 00:49:05 +01:00
Ryan
43fc7b5a4f kikoslab/kl90: add additional layouts (#24024) 2024-07-05 00:44:23 +01:00
Ryan Neff
4ced8d9371 Fixes duplicate pid/vid for sofle_choc (#24030) 2024-07-04 13:49:55 -06:00
Cipulot
1c6cdb8d74 [Keyboard] Addition of EC 60X (#24028)
* Addition of EC 60X

* Update keyboards/cipulot/ec_60x/keymaps/via/keymap.c

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keymaps/default/keymap.c

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Update keyboards/cipulot/ec_60x/keyboard.json

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* Revert "Update keyboards/cipulot/ec_60x/keyboard.json"

This reverts commit 5f49ef63cd.

* Revert "Update keyboards/cipulot/ec_60x/keyboard.json"

This reverts commit 5fb9706acd.

* revert of what was done with the layouts

* Update keyboards/cipulot/ec_60x/mcuconf.h

Co-authored-by: Drashna Jaelre <drashna@live.com>

---------

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-07-03 20:42:07 -06:00
chalex
c663f5e9f3 [Keyboard] Add chlx lfn merro (#24026)
* add previous working files to new branch

* update config files. tested via version

* update per qmk PR requested changes - 1. rename info.json -> keyboard.json, move config.h -> keyamps/via/config.h, remove rules.mk

* update photo link for pcb

* remove redundant community keymaps

* Update keyboards/chlx/lfn_merro60/keymaps/default/keymap.c

correct keycode for iso keys

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>

* switch image url to source from imgur instead of github

---------

Co-authored-by: chalex <alejandrelee+magbogbro@gmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2024-07-03 20:40:24 -06:00
Guanzhong Chen
977918982d monsgeek/m5: make numlock and capslock LEDs work (#24027) 2024-07-03 20:38:38 -06:00
James Gzowski
c2f7974c8e [Keyboard] Add Ashwing66 (#24031)
* Create hello.txt

* Add files via upload

* Create keymap.c

* Ashwing66

* Update readme.md

* Update keymap.c

* Ashwing66 addition

* Ashwing66 addition

* Changes as per request

* Changes as per request

* Changes as per request, Updated repo, fixed filenames

* 02-Jul-11:04:08
2024-07-03 20:34:17 -06:00
Nick Brassel
bc8ac86422 Minimum python version listing. (#23989) 2024-07-03 22:00:53 +10:00
Ryan
33adb8cba0 vertex/arc60h: add additional layouts (#24023) 2024-07-03 20:31:49 +10:00
kopibeng
e754c9f2b4 Update keymap for KLC x TGR Lena (#23688) 2024-07-03 01:38:57 -07:00
Cipulot
869b7d9ae6 Fix index EC Dolice (#24033)
* Update keyboard.json

Fixed wrong index in keyboard.json

* Small touch layout
2024-07-02 15:35:26 -06:00
Joel Challis
3ffe8d917a Fix 'qmk new-keyboard' processing of development_board (#23996) 2024-06-30 03:39:49 +01:00
Danylo Kondratiev
12379dc1eb Fix ploopy Adept/Madromys link (#24018) 2024-06-30 02:57:35 +01:00
Ryan
d6bfbdb6b1 horrortroll/handwired_k552: fix RGB Matrix LED config (#24014) 2024-06-29 20:56:29 +10:00
Ryan
cc0b2f9814 jels/boaty: adjust layout name (#24013) 2024-06-29 10:20:11 +01:00
Ryan
5624804c68 h0oni/deskpad and hotduck: adjust layout names (#24004) 2024-06-29 10:19:51 +01:00
Ryan
2bde8ce206 ez_maker: adjust layout names (#24015) 2024-06-29 07:54:52 +01:00
Ryan
086e8e938e tzarc/djinn: adjust layout name (#24012) 2024-06-29 16:00:05 +10:00
Ryan
cd374b1500 clueboard/card: Swap layout and alias (#24007) 2024-06-29 04:07:42 +01:00
Danny
9d02ac37f7 Add Nyquist Rev. 5 (#23971)
* Add Nyquist Rev. 5

* Remove unused keymap
2024-06-27 13:37:41 -04:00
David Hoelscher
603586800c [Keyboard] Add Elysian (#23949)
* adding Elysian

* corrections from zvecr
2024-06-26 21:56:16 -06:00
TyraelWasTaken
90b043e01c Add support for Equanimity (#23965)
* Add Equanimity files

* Update keyboard.json format

* Update readme.md

* CRLF to LF

* Force LF and correct rules.mk

* Remove config.h

* Remove rules.mk

* Update keymap.c

* Update keyboard.json

* Update name in readme.md
2024-06-26 21:55:47 -06:00
Ryan
5f794217b4 xelus/snap96: add matrix diagram and some additional layouts (#23992) 2024-06-26 14:35:45 +10:00
Ryan
b71b81d539 hs60/v2/hhkb: Adjust layout name (#23998) 2024-06-26 05:28:45 +01:00
Ryan
17ae6f9b53 helix/pico and rev2: add keyboard.jsons (#23964) 2024-06-26 13:47:36 +10:00
Joel Challis
cebe521b11 Fix docker_cmd.sh when userspace is not configured (#23997) 2024-06-26 11:34:24 +10:00
Joel Challis
0b572a1be6 Remove some redundant 'blank' files (#23995) 2024-06-25 07:38:56 +01:00
Ryan
378dbd32bd custommk/ergostrafer_rgb: move to keyboard.json (#23990) 2024-06-24 18:19:48 +10:00
Nick Brassel
03e688e91f Add support for userspace to docker build commands. (#23988) 2024-06-24 12:29:30 +10:00
Ryan
d5e0562a70 Rename layouts containing keyboard name (#23930) 2024-06-23 19:33:26 +01:00
Ryan
191c8cca33 handwired/symmetric70_proto: add keyboard.json (#23966) 2024-06-23 03:57:50 +01:00
Joel Challis
7aa2ce2b38 Update documentation suggestion in top level readme (#23978) 2024-06-22 05:45:04 +01:00
Joel Challis
6f03d20a92 Fix 'qmk import-kbfirmware' WS2812 config (#23976) 2024-06-22 04:27:57 +01:00
Danny
e5c80fc6b3 Update what's powering QMK docs (#23977) 2024-06-22 04:27:15 +01:00
Kevin Horvat
aa11ef5bcf Fix leftover reference to previous AW20216S EN pin definition (#23974) 2024-06-22 01:53:59 +01:00
Drashna Jaelre
a6ef34cd16 [Keyboard] fixes for ZSA Voyager (#23912) 2024-06-20 09:08:57 +01:00
Joel Challis
4fdde75333 Update 'qmk import-kbfirmware' to use 'keyboard.json' (#23960) 2024-06-20 02:59:29 +01:00
lizaoreo
dafc46f1d1 Update RGB matrix indicator example (#23947)
Changed the example in indicator-examples-2 to use a compound literal, otherwise the code fails to compile.
2024-06-17 20:30:57 +01:00
Ryan
baa564bddf Remove references to bootloadHID flashing page in keyboard readmes (#23942)
* Remove references to bootloadHID flashing page in keyboard readmes

* Remove bootloadHID flashing page
2024-06-17 20:23:45 +01:00
Ryan
3f44231d2d Strip decimals from RGB Matrix layout positions (#23943) 2024-06-17 20:12:26 +10:00
Ryan
4864d5afca Mechwild OBE/Waka60: Fix build warnings (#23929) 2024-06-17 14:47:33 +10:00
Ryan
089a819179 keyboard.json schema: set minimum value for key_unit (#23937)
* keyboard.json schema: set minimum value for `key_unit`

* Fix invalid `matrix_size` in keyboard.json

* Fix bad layout for silverbullet44
2024-06-16 21:57:37 +01:00
Danny
751fbd75d3 Add Chiri CE (#23926)
* Add Chiri CE

* Add more layers for dynamic keymap

* Move EEPROM clear

* Convert to keymap.json

* Change bootmagic matrix position
2024-06-16 12:16:05 -06:00
Ryan
3c868b9316 ergodox_ez/base: Add missing features object (#23935) 2024-06-16 22:52:47 +10:00
Nick Brassel
7ac1a34a34 [CLI] Older python compat. (#23933) 2024-06-16 19:53:03 +10:00
David Hoelscher
ad82c4703a [Keyboard] ErgoStrafer RGB (#22936)
* adding ergostrafer rgb

* removing comment
2024-06-15 21:46:22 -07:00
Nick Brassel
0262161914 [CLI] Don't exit() when certain exceptions occur. (#23442) 2024-06-15 10:37:47 +01:00
Ryan
d4654ab893 Various keyboard fixes (#23919) 2024-06-14 22:58:13 +01:00
ai03
aec7569a04 [Keyboard] Add Altair (#23878)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-06-14 13:26:21 -07:00
ai03
0594121b68 [Keyboard] Add Altair-X (#23879)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-06-14 13:26:00 -07:00
Myriam
4e8b740dd7 fix keymap for kprepublic bm60hsrgb_iso (#23733)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-06-14 00:34:06 -07:00
adophoxia
c92becc57e [Keyboard] Enable dip switch for Keychron Q4 (#23889) 2024-06-13 21:10:23 -07:00
Joel Challis
cd565a95a0 Remove suggestion of creating issues for unsupported keyboards. (#23918) 2024-06-14 00:23:57 +01:00
Danny
caf13bb9db Fix order of RGB LEDs to correct one for Iris CE (#23914) 2024-06-13 15:36:26 -07:00
Danny
4a4eda4c3c Add missing encode enable for BAMFK-1 (#23821)
Add missing encode enable
2024-06-13 09:00:42 -04:00
Ryan
942c2a8d5a Fix nonunique anchors (#23910) 2024-06-13 13:31:03 +10:00
Ryan
be9dfe65dd Add API reference section for LED/RGB Matrix docs (#23902) 2024-06-13 12:55:47 +10:00
Joel Challis
fa40356250 Ensure documentation pull requests build (#23908) 2024-06-13 02:59:37 +01:00
Nick Brassel
7247039742 Fixup docs. (#23906) 2024-06-13 02:55:52 +01:00
Nick Brassel
e69d30a9e9 VIA keymap deprecation notice. (#23905) 2024-06-13 09:48:24 +10:00
Nick Brassel
bdd10ef8e7 Remove VIA_ENABLE from default keymaps. (#23903) 2024-06-12 17:43:09 +10:00
4pplet
031ca3b40b [Keyboard] Fix settings for 4pplet/waffling60 (#23862) 2024-06-12 00:11:50 -07:00
Ryan
8041a88f5d Slight clarification of LED/RGB Matrix custom effect docs (#23897) 2024-06-12 01:50:25 +01:00
Joel Challis
8b5cdfabf5 Re-implement eeprom_write_qword as define (#23890) 2024-06-10 01:23:25 +01:00
Ryan
df4538d894 Fix Iris/Irispad keymaps (#23856) 2024-06-09 13:14:48 -07:00
Alabahuy
e484a3a179 [Keyboard] add jaykeeb jk60 (#23876) 2024-06-09 12:47:48 -07:00
Alex Mayer
9dc183afe4 Fix Tri-Layer Keycode Descriptions (#23888) 2024-06-09 10:57:45 -07:00
Joel Challis
e7a08ef1a9 Fix broken link in PR checklist (#23877) 2024-06-07 23:25:20 +10:00
Syenasweta a.k.a. Nashrullah Ali Fauzi
950d765370 Add SyenaKeyboards Elaruus (#23870)
* add syenakeyboard elaruus

* add syenakeyboards elaruus

* add syenakeyboards elaruus

* add syenakeyboards elaruus

* add syenakeyboards/elaruus

* add syenakeyboards elaruus

* add syenakeyboards elaruus

* add syenakeyboards elaruus

* Update keyboards/syenakeyboards/elaruus/keyboard.json

Co-authored-by: jack <0x6a73@protonmail.com>

* Update keyboards/syenakeyboards/elaruus/keymaps/default/keymap.c

Co-authored-by: jack <0x6a73@protonmail.com>

* Update keyboards/syenakeyboards/elaruus/keymaps/via/keymap.c

Co-authored-by: jack <0x6a73@protonmail.com>

---------

Co-authored-by: Syenasweta <syenasweta@gmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2024-06-06 19:17:21 -06:00
Kim Viberti
260e9a546e Fix documentation error (#23872)
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-06-06 12:09:44 +10:00
Nick Brassel
a4da5f219f Fixup build failures. (#23869) 2024-06-05 12:20:57 +10:00
Nick Brassel
6d365dd8f1 Add helper make targets for formatting and pytest. (#23858) 2024-06-04 12:23:25 +10:00
Stefan Kerkmann
8253697a63 [FIX] ChibiOS: USB Digitizer and Joystick IN endpoint compilation (#23854)
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-06-03 22:35:46 +10:00
481 changed files with 12858 additions and 2483 deletions

View File

@@ -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'

View File

@@ -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
View File

@@ -25,6 +25,8 @@
*.la
*.stackdump
*.sym
index.html
firmware_list.json
# QMK-specific
api_data/v1

View File

@@ -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"

View File

@@ -33,7 +33,7 @@ export default defineConfig(({ mode }) => {
},
title: 'QMK Firmware',
nav: [{ text: "Home", link: "./" }],
nav: [{ text: "Home", link: "/" }],
search: {
provider: "local",

View File

@@ -40,7 +40,8 @@
"pattern": "^[0-9a-z_/\\-]+\\.json$"
},
"key_unit": {
"type": "number"
"type": "number",
"minimum": 0
},
"keyboard": {
"type": "string",

View File

@@ -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"}
}
}

View File

@@ -2,8 +2,6 @@
"keyboard_name": "%KEYBOARD%",
"maintainer": "%USER_NAME%",
"manufacturer": "%REAL_NAME%",
"processor": "%MCU%",
"bootloader": "%BOOTLOADER%",
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["C2"],

View File

@@ -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:

View File

@@ -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",

View File

@@ -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" }
]
},

View File

@@ -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

View File

@@ -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/`.

View File

@@ -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
```

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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
```

View File

@@ -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}

View File

@@ -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
View File

@@ -0,0 +1 @@
docs.qmk.fm

View 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}
]
}
}
}

View 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)
};

View 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)
};

View File

@@ -0,0 +1 @@
VIA_ENABLE = yes

View 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

View File

@@ -0,0 +1,2 @@
# Wildcard to allow APM32 MCU
DFU_SUFFIX_ARGS = -p FFFF -v FFFF

View File

@@ -15,7 +15,8 @@
"console": false,
"extrakey": true,
"key_lock": true,
"mousekey": false,
"mousekey": true,
"encoder": true,
"nkro": true,
"rgblight": true
},

View File

@@ -15,7 +15,8 @@
"console": false,
"extrakey": true,
"key_lock": true,
"mousekey": false,
"mousekey": true,
"encoder": true,
"nkro": true,
"rgblight": true
},

View File

@@ -16,6 +16,7 @@
"extrakey": true,
"key_lock": true,
"mousekey": true,
"encoder": true,
"nkro": true,
"rgblight": true
},

View 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

View 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}
]
}
}
}

View 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, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)
};

View 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, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@@ -0,0 +1,19 @@
# Altair
![altair](https://i.imgur.com/O9UXaCO.png)
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).

View File

@@ -0,0 +1 @@
SERIAL_DRIVER = vendor

View 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

View 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}
]
}
}
}

View 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, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)
};

View 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, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@@ -0,0 +1,19 @@
# Altair-X
![altair-x](https://i.imgur.com/regfKQC.png)
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).

View File

@@ -0,0 +1 @@
SERIAL_DRIVER = vendor

View 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}
]
}
}
}

View 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
),
};

View 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
),
};

View File

@@ -0,0 +1 @@
VIA_ENABLE = yes

View File

@@ -0,0 +1,28 @@
# Equinox XL
![Cover image](https://i.imgur.com/sQpe0Zv.jpg)
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

View File

@@ -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

View File

@@ -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},

View File

@@ -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,

View File

@@ -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

View File

@@ -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}
]

View 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
└─────┴─────┴───────────────────────────┴─────┴─────┘
```

View File

@@ -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}
]

View 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
└─────┴─────┴───────────────────────────┴─────┴─────┘
```

View 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

View 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}
]
}
}
}

View 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

View File

@@ -0,0 +1 @@
ENCODER_MAP_ENABLE = yes

View 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

View File

@@ -0,0 +1,2 @@
VIA_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View 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

View File

@@ -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

View File

@@ -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},

View File

@@ -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,

View File

@@ -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(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,

View 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}
]
}
}
}

View 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", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
]
]
}

View 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", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
]
]
}

View File

@@ -0,0 +1,27 @@
# Sessanta
![image](https://i.imgur.com/ALvvC53.jpeg)
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`

View 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}
]
}
}
}

View 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, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};

View File

@@ -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

View 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, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};

View File

@@ -0,0 +1,2 @@
VIA_ENABLE = yes
LTO_ENABLE = yes

View File

@@ -0,0 +1,27 @@
# lfn.merro60
![lfn.merro60 PCB](https://i.imgur.com/naIgvKy.jpg)
- 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)

View 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

View 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>

View 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}
]
}
}
}

View 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
};

View 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
};

View 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
};

View 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
};

View 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
};

View File

@@ -0,0 +1 @@
VIA_ENABLE = yes

View 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

View File

@@ -0,0 +1,3 @@
ifeq ($(strip $(VIA_ENABLE)), yes)
SRC += keyboards/cipulot/common/via_ec.c
endif

View File

@@ -0,0 +1,26 @@
# EC 60X
![EC 60X PCB](https://i.imgur.com/aYQgeSn.png)
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

View 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

View File

@@ -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

View File

@@ -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},

View File

@@ -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),

View File

@@ -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),

View File

@@ -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},

View File

@@ -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