Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a116b3f1ae | ||
|
|
bc38c38f8c | ||
|
|
a3e7f3e7c5 | ||
|
|
66ed80ad3a | ||
|
|
3f854e16ac | ||
|
|
4fa32f0f04 | ||
|
|
5c924efa04 | ||
|
|
30aae6298b | ||
|
|
6c5e94061c | ||
|
|
1426ffc0ee | ||
|
|
f544b60aaa | ||
|
|
7725d813c9 | ||
|
|
60a39f4f5d | ||
|
|
df57590ec6 | ||
|
|
b7fe24923e | ||
|
|
067a6f0174 | ||
|
|
189e0d5b98 | ||
|
|
56e5a83e68 | ||
|
|
34f3918244 | ||
|
|
f3a1629469 | ||
|
|
3d922e6257 | ||
|
|
38b9f67c3b | ||
|
|
c6778dde82 | ||
|
|
c27a458799 | ||
|
|
8ed1addd1e | ||
|
|
25c97e0019 | ||
|
|
0fd8faa1ad | ||
|
|
fc2b51194c | ||
|
|
18dc12cd78 | ||
|
|
489c814a48 | ||
|
|
8190a795ed | ||
|
|
d3963a61cb | ||
|
|
4abc3ceb4b | ||
|
|
05ee0afd54 | ||
|
|
54e8dd0885 | ||
|
|
63cdf80885 | ||
|
|
2af86cec3d | ||
|
|
e5cde191e1 | ||
|
|
7be4047df0 | ||
|
|
3fe356e65c | ||
|
|
b95231c1e3 | ||
|
|
f9fb52951d | ||
|
|
b5419bd574 | ||
|
|
8f660ca1e6 | ||
|
|
2f47bafd6a | ||
|
|
417a07c22d | ||
|
|
611cd80861 | ||
|
|
89bd04b9eb | ||
|
|
5b394e82c9 | ||
|
|
da6e888a32 | ||
|
|
d3bf3d3b1c | ||
|
|
dbd65d01b6 | ||
|
|
c7ca67a036 | ||
|
|
b88498ba85 | ||
|
|
0c50a9eae9 | ||
|
|
35944df7b0 | ||
|
|
2a45d99059 | ||
|
|
06f8cb1b8a | ||
|
|
b2b075c123 | ||
|
|
54dc6b7bf2 | ||
|
|
ffa1507c2c | ||
|
|
4f2afaa6fb | ||
|
|
0b6d8150e4 | ||
|
|
054adbaf1e | ||
|
|
6b5e349d7e | ||
|
|
1cecd593c8 | ||
|
|
2bccb7132d | ||
|
|
0d5458a7ad | ||
|
|
cce9ddff80 | ||
|
|
d330203486 | ||
|
|
45a557641d | ||
|
|
271c7d4923 | ||
|
|
54bad99e0e | ||
|
|
9a3ba6874c | ||
|
|
5f670fbdc4 | ||
|
|
bd07120d33 | ||
|
|
4ff16fe73e | ||
|
|
21c147c11b | ||
|
|
752f5d6eb6 | ||
|
|
b6c353db0c | ||
|
|
666944df2e | ||
|
|
3d37afd495 | ||
|
|
f778ede8bd | ||
|
|
8405d28670 | ||
|
|
f93ad79f41 | ||
|
|
dffa089173 | ||
|
|
3990c0f43d | ||
|
|
20f35afd53 | ||
|
|
00eea387fc | ||
|
|
2274631c8f | ||
|
|
81be065fa5 | ||
|
|
53a35c0d0c | ||
|
|
cfbd9ba0e7 | ||
|
|
5581ea8809 | ||
|
|
fe9bd0afb9 | ||
|
|
17c880b076 | ||
|
|
ef6802ca60 | ||
|
|
c7adb7a352 | ||
|
|
10dfc8d92f | ||
|
|
c7214e1d13 | ||
|
|
94d9d2bb31 | ||
|
|
0b560673ce | ||
|
|
2b7078cd21 | ||
|
|
99c46e4b73 | ||
|
|
1e19227b31 | ||
|
|
9b8c5c1860 | ||
|
|
0afbf8cc3c | ||
|
|
2aab8a114e | ||
|
|
6b2a3a67a6 | ||
|
|
cfefecd951 | ||
|
|
05357d7937 | ||
|
|
a0089aa345 | ||
|
|
eb7e668eb9 | ||
|
|
a3d717cb83 | ||
|
|
fd65451679 | ||
|
|
d0973e1cfb | ||
|
|
c32264d9b7 | ||
|
|
09a392433a | ||
|
|
3975c712f0 | ||
|
|
a8c013a145 | ||
|
|
a69616c45c | ||
|
|
39d31d3ee4 | ||
|
|
588bcdc8ca | ||
|
|
b33e6793de | ||
|
|
bcceb701cd | ||
|
|
9dea6f7720 | ||
|
|
b64dabdffd | ||
|
|
a2ac6f50aa | ||
|
|
1a7a821582 | ||
|
|
50e0f5dc80 | ||
|
|
0f516d9026 | ||
|
|
b23eeb6a14 | ||
|
|
1298eab6ab | ||
|
|
98939868fa | ||
|
|
7daa2e210c | ||
|
|
7d953332e0 | ||
|
|
03685309fd | ||
|
|
e09ca63317 | ||
|
|
3dbb7f261d | ||
|
|
93e8a401df | ||
|
|
7f9409bbb3 | ||
|
|
633464acfa | ||
|
|
f744e22b49 | ||
|
|
1a913aa12e | ||
|
|
75f83210f4 | ||
|
|
2170b75b26 | ||
|
|
d1270c9d55 | ||
|
|
546dfce209 | ||
|
|
e0614e4f52 | ||
|
|
49dc332a04 | ||
|
|
60e1910e5b | ||
|
|
4e2ab3a177 | ||
|
|
41f649c9a9 | ||
|
|
d91938c19d | ||
|
|
a3cd1290be | ||
|
|
7d33d1bace | ||
|
|
4b9f5578a0 | ||
|
|
59c8672f5c | ||
|
|
a7920acff5 | ||
|
|
79a87a9c2b | ||
|
|
8d3581a49f | ||
|
|
cd96377312 | ||
|
|
8b98e67643 | ||
|
|
6876263961 | ||
|
|
4caeb64888 | ||
|
|
70540a1f74 | ||
|
|
f0dc206784 | ||
|
|
caca8949de | ||
|
|
0232941b1d | ||
|
|
63445be4e5 | ||
|
|
619885b484 | ||
|
|
6592f83589 | ||
|
|
43d74d7fa5 | ||
|
|
cd981ec56a | ||
|
|
12f308748f | ||
|
|
ac0ba832c7 | ||
|
|
c5ddada32e | ||
|
|
8a950a7116 | ||
|
|
64551a8386 | ||
|
|
ae59a51193 | ||
|
|
5dc7951dc0 | ||
|
|
a866fbf381 | ||
|
|
8af7200085 | ||
|
|
f028dbf179 | ||
|
|
aa2b4a688b | ||
|
|
57475caab0 | ||
|
|
34205f5bb5 | ||
|
|
9f1608a6a2 | ||
|
|
0a056cfd81 | ||
|
|
5c1442766c | ||
|
|
816f2f9cc2 | ||
|
|
666623d39a | ||
|
|
0eabb01e27 | ||
|
|
b664db3cf3 | ||
|
|
a5ecd4eb87 | ||
|
|
f3f444c1df | ||
|
|
81c51ec51c | ||
|
|
b5a12fa6d3 | ||
|
|
29c82cfb33 | ||
|
|
2cd684f8e0 | ||
|
|
c4d05010cb | ||
|
|
6276f54752 | ||
|
|
8e820cde13 | ||
|
|
572395ac20 | ||
|
|
95c74ae4ae | ||
|
|
3fc710e0b1 | ||
|
|
dd0a35273c | ||
|
|
cf7404630e | ||
|
|
ef872595ae | ||
|
|
eac9ee8d3f | ||
|
|
1d706bd77c | ||
|
|
3e60997edb | ||
|
|
a74846a0db | ||
|
|
038d9118b6 | ||
|
|
be771e5fd2 | ||
|
|
1fbee7c316 | ||
|
|
8b39ae13c7 | ||
|
|
1bb6d8de6f | ||
|
|
a888057453 | ||
|
|
eae7343741 | ||
|
|
c59fb1b477 | ||
|
|
e7cb7bc737 | ||
|
|
1ed48c774e | ||
|
|
54b80ecf9f | ||
|
|
97a73637e0 | ||
|
|
653ecf91c2 | ||
|
|
b7870ae78c | ||
|
|
299008be36 | ||
|
|
723d9af04d | ||
|
|
6edcbdca19 | ||
|
|
2882ee9f55 | ||
|
|
78149505f9 | ||
|
|
7b07ce3fef | ||
|
|
d395c81606 | ||
|
|
be257b6f9f | ||
|
|
d4a8123267 | ||
|
|
e1a7027fe8 | ||
|
|
c5b0366a25 | ||
|
|
217e3a59c4 | ||
|
|
0ab88f5342 | ||
|
|
8dfe37a3a3 | ||
|
|
69eca63a84 | ||
|
|
a5576f9738 | ||
|
|
c833b77646 | ||
|
|
ed446360a4 | ||
|
|
9807225f90 | ||
|
|
9331c22620 | ||
|
|
cc84831cae | ||
|
|
f490777502 | ||
|
|
6e79767f5a | ||
|
|
3bc7f46412 | ||
|
|
8a2d3a8861 | ||
|
|
538194344a | ||
|
|
23765332fa | ||
|
|
163e9b02bf | ||
|
|
90f95de5c9 | ||
|
|
ffc4380b30 | ||
|
|
314ef9df03 | ||
|
|
563be8ca2a | ||
|
|
e527b375e8 | ||
|
|
4e8a218d17 | ||
|
|
57de02c9f2 | ||
|
|
3c4972a53f | ||
|
|
6af387ec6f | ||
|
|
554b73643d | ||
|
|
e941ae3811 | ||
|
|
f75420c209 | ||
|
|
d99806cc27 | ||
|
|
cd8497b9fb | ||
|
|
469b4b21d2 | ||
|
|
926389f3a7 | ||
|
|
52b7ebd6be | ||
|
|
2e50b34c67 | ||
|
|
a18e1305b3 | ||
|
|
0779c34db8 | ||
|
|
9e1d04fea7 | ||
|
|
b44bffe954 | ||
|
|
739925c902 | ||
|
|
45e6bb7add | ||
|
|
7b7689d307 | ||
|
|
aa73411c14 | ||
|
|
b96c18c952 | ||
|
|
225bff226f | ||
|
|
5d7ad69cd8 | ||
|
|
b8ad5f4249 | ||
|
|
63f9e7ee86 | ||
|
|
88dce24375 | ||
|
|
ea2a7c5ea4 | ||
|
|
0ad7833ca4 | ||
|
|
790f94533c | ||
|
|
9089244db7 | ||
|
|
aed8bace97 | ||
|
|
4f5e0dd325 | ||
|
|
6d8d20774f | ||
|
|
2aa38f5bd3 | ||
|
|
75fd6bd269 | ||
|
|
86e6be342c | ||
|
|
8556068534 | ||
|
|
0763269ec5 | ||
|
|
01b8ef39f5 | ||
|
|
08e512a273 | ||
|
|
1cbf1c681a | ||
|
|
9b85b1b638 | ||
|
|
788b1854b4 | ||
|
|
86e28b4db8 | ||
|
|
9c94de070a | ||
|
|
23d6ca9942 | ||
|
|
b16bfac107 | ||
|
|
09dfc08207 | ||
|
|
07fce7ba13 | ||
|
|
52d8cbf092 | ||
|
|
73b8f85816 | ||
|
|
aadea5ab97 | ||
|
|
54f7708eaa | ||
|
|
d7aa245c33 | ||
|
|
2cb0b41ce7 | ||
|
|
e25f05224f | ||
|
|
7639b5aa3e | ||
|
|
4d41645598 | ||
|
|
b1a8fafa62 | ||
|
|
6461087c86 | ||
|
|
7aa74c227b |
No files matched your search
@@ -92,3 +92,4 @@ GRAPHICS
|
|||||||
# hex files
|
# hex files
|
||||||
*.hex binary
|
*.hex binary
|
||||||
*.eep binary
|
*.eep binary
|
||||||
|
nix/sources.nix linguist-generated=true
|
||||||
@@ -25,18 +25,13 @@ jobs:
|
|||||||
- name: Generate API Data
|
- name: Generate API Data
|
||||||
run: qmk generate-api
|
run: qmk generate-api
|
||||||
|
|
||||||
- name: Install rsync
|
|
||||||
run: |
|
|
||||||
apt-get update && apt-get install -y rsync
|
|
||||||
|
|
||||||
- name: Upload API Data
|
- name: Upload API Data
|
||||||
uses: JamesIves/github-pages-deploy-action@3.7.1
|
uses: jakejarvis/s3-sync-action@master
|
||||||
with:
|
with:
|
||||||
ACCESS_TOKEN: ${{ secrets.API_TOKEN_GITHUB }}
|
args: --acl public-read --follow-symlinks --delete
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
env:
|
||||||
BRANCH: main
|
AWS_S3_BUCKET: ${{ secrets.API_SPACE_MASTER }}
|
||||||
FOLDER: api_data/v1
|
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
|
||||||
CLEAN: true
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
|
||||||
GIT_CONFIG_EMAIL: h[email protected]m
|
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
|
||||||
REPOSITORY_NAME: qmk/qmk_keyboards
|
SOURCE_DIR: 'api_data'
|
||||||
TARGET_FOLDER: v1
|
|
||||||
@@ -25,18 +25,13 @@ jobs:
|
|||||||
- name: Generate API Data
|
- name: Generate API Data
|
||||||
run: qmk generate-api
|
run: qmk generate-api
|
||||||
|
|
||||||
- name: Install rsync
|
|
||||||
run: |
|
|
||||||
apt-get update && apt-get install -y rsync
|
|
||||||
|
|
||||||
- name: Upload API Data
|
- name: Upload API Data
|
||||||
uses: JamesIves/github-pages-deploy-action@3.7.1
|
uses: jakejarvis/s3-sync-action@master
|
||||||
with:
|
with:
|
||||||
ACCESS_TOKEN: ${{ secrets.API_TOKEN_GITHUB }}
|
args: --acl public-read --follow-symlinks --delete
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
env:
|
||||||
BRANCH: main
|
AWS_S3_BUCKET: ${{ secrets.API_SPACE_DEVELOP }}
|
||||||
FOLDER: api_data/v1
|
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
|
||||||
CLEAN: true
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
|
||||||
GIT_CONFIG_EMAIL: h[email protected]m
|
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
|
||||||
REPOSITORY_NAME: qmk/qmk_keyboards_devel
|
SOURCE_DIR: 'api_data'
|
||||||
TARGET_FOLDER: v1
|
|
||||||
@@ -1,47 +1,42 @@
|
|||||||
name: Format Codebase
|
name: PR Lint Format
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
pull_request:
|
||||||
branches:
|
paths:
|
||||||
- master
|
- 'drivers/**'
|
||||||
- develop
|
- 'lib/arm_atsam/**'
|
||||||
|
- 'lib/lib8tion/**'
|
||||||
|
- 'lib/python/**'
|
||||||
|
- 'platforms/**'
|
||||||
|
- 'quantum/**'
|
||||||
|
- 'tests/**'
|
||||||
|
- 'tmk_core/**'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
format:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: qmkfm/base_container
|
|
||||||
|
|
||||||
# protect against those who develop with their fork on master
|
container: qmkfm/base_container
|
||||||
if: github.repository == 'qmk/qmk_firmware'
|
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: rlespinasse/[email protected]
|
- uses: rlespinasse/[email protected]
|
||||||
|
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.API_TOKEN_GITHUB }}
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Install dependencies
|
- uses: trilom/[email protected]
|
||||||
run: |
|
id: file_changes
|
||||||
apt-get update && apt-get install -y dos2unix
|
|
||||||
|
|
||||||
- name: Format files
|
|
||||||
run: |
|
|
||||||
bin/qmk cformat -a
|
|
||||||
bin/qmk pyformat
|
|
||||||
bin/qmk fileformat
|
|
||||||
|
|
||||||
- name: Become QMK Bot
|
|
||||||
run: |
|
|
||||||
git config user.name 'QMK Bot'
|
|
||||||
git config user.email '[email protected]'
|
|
||||||
|
|
||||||
- name: Create Pull Request
|
|
||||||
uses: peter-evans/create-pull-request@v3
|
|
||||||
with:
|
with:
|
||||||
delete-branch: true
|
output: ' '
|
||||||
branch: bugfix/format_${{ env.GITHUB_REF_SLUG }}
|
fileOutput: ' '
|
||||||
author: QMK Bot <[email protected]>
|
|
||||||
committer: QMK Bot <[email protected]>
|
- name: Run qmk cformat and qmk pyformat
|
||||||
commit-message: Format code according to conventions
|
shell: 'bash {0}'
|
||||||
title: '[CI] Format code according to conventions'
|
run: |
|
||||||
|
qmk cformat -n $(< ~/files.txt)
|
||||||
|
cformat_exit=$?
|
||||||
|
qmk pyformat -n
|
||||||
|
pyformat_exit=$?
|
||||||
|
|
||||||
|
exit $((cformat_exit + pyformat_exit))
|
||||||
@@ -50,6 +50,7 @@ doxygen/
|
|||||||
.browse.VC.db*
|
.browse.VC.db*
|
||||||
*.stackdump
|
*.stackdump
|
||||||
# Let these ones be user specific, since we have so many different configurations
|
# Let these ones be user specific, since we have so many different configurations
|
||||||
|
*.code-workspace
|
||||||
.vscode/c_cpp_properties.json
|
.vscode/c_cpp_properties.json
|
||||||
.vscode/launch.json
|
.vscode/launch.json
|
||||||
.vscode/tasks.json
|
.vscode/tasks.json
|
||||||
@@ -71,6 +72,7 @@ id_rsa_*
|
|||||||
|
|
||||||
# python things
|
# python things
|
||||||
__pycache__
|
__pycache__
|
||||||
|
.python-version
|
||||||
|
|
||||||
# prerequisites for updating ChibiOS
|
# prerequisites for updating ChibiOS
|
||||||
/util/fmpp*
|
/util/fmpp*
|
||||||
|
|||||||
@@ -3,7 +3,6 @@
|
|||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from importlib.util import find_spec
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
# Add the QMK python libs to our path
|
# Add the QMK python libs to our path
|
||||||
@@ -12,52 +11,9 @@ qmk_dir = script_dir.parent
|
|||||||
python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve()
|
python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve()
|
||||||
sys.path.append(str(python_lib_dir))
|
sys.path.append(str(python_lib_dir))
|
||||||
|
|
||||||
|
|
||||||
def _check_modules(requirements):
|
|
||||||
""" Check if the modules in the given requirements.txt are available.
|
|
||||||
"""
|
|
||||||
with Path(qmk_dir / requirements).open() as fd:
|
|
||||||
for line in fd.readlines():
|
|
||||||
line = line.strip().replace('<', '=').replace('>', '=')
|
|
||||||
|
|
||||||
if len(line) == 0 or line[0] == '#' or line.startswith('-r'):
|
|
||||||
continue
|
|
||||||
|
|
||||||
if '#' in line:
|
|
||||||
line = line.split('#')[0]
|
|
||||||
|
|
||||||
module = dict()
|
|
||||||
module['name'] = line.split('=')[0] if '=' in line else line
|
|
||||||
module['import'] = module['name'].replace('-', '_')
|
|
||||||
|
|
||||||
# Not every module is importable by its own name.
|
|
||||||
if module['name'] == "pep8-naming":
|
|
||||||
module['import'] = "pep8ext_naming"
|
|
||||||
|
|
||||||
if not find_spec(module['import']):
|
|
||||||
print('Could not find module %s!' % module['name'])
|
|
||||||
print('Please run `python3 -m pip install -r %s` to install required python dependencies.' % (qmk_dir / requirements,))
|
|
||||||
if developer:
|
|
||||||
print('You can also turn off developer mode: qmk config user.developer=None')
|
|
||||||
print()
|
|
||||||
exit(255)
|
|
||||||
|
|
||||||
|
|
||||||
developer = False
|
|
||||||
# Make sure our modules have been setup
|
|
||||||
_check_modules('requirements.txt')
|
|
||||||
|
|
||||||
# Setup the CLI
|
# Setup the CLI
|
||||||
import milc # noqa
|
import milc # noqa
|
||||||
|
|
||||||
# For developers additional modules are needed
|
|
||||||
if milc.cli.config.user.developer:
|
|
||||||
# Do not run the check for 'config',
|
|
||||||
# so users can turn off developer mode
|
|
||||||
if len(sys.argv) == 1 or (len(sys.argv) > 1 and 'config' != sys.argv[1]):
|
|
||||||
developer = True
|
|
||||||
_check_modules('requirements-dev.txt')
|
|
||||||
|
|
||||||
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
|
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -97,7 +97,7 @@ MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
|
|||||||
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
|
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
|
||||||
|
|
||||||
# Pull in rules from info.json
|
# Pull in rules from info.json
|
||||||
INFO_RULES_MK = $(shell bin/qmk generate-rules-mk --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk)
|
INFO_RULES_MK = $(shell bin/qmk generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk)
|
||||||
include $(INFO_RULES_MK)
|
include $(INFO_RULES_MK)
|
||||||
|
|
||||||
# Check for keymap.json first, so we can regenerate keymap.c
|
# Check for keymap.json first, so we can regenerate keymap.c
|
||||||
@@ -205,6 +205,7 @@ endif
|
|||||||
#
|
#
|
||||||
# https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic
|
# https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic
|
||||||
#
|
#
|
||||||
|
QMK_KEYBOARD_H = $(KEYBOARD_OUTPUT)/src/default_keyboard.h
|
||||||
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","")
|
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","")
|
||||||
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h
|
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h
|
||||||
endif
|
endif
|
||||||
@@ -296,10 +297,13 @@ CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.
|
|||||||
$(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
|
$(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
|
||||||
bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h
|
bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h
|
||||||
|
|
||||||
|
$(KEYBOARD_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES)
|
||||||
|
bin/qmk generate-keyboard-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.h
|
||||||
|
|
||||||
$(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES)
|
$(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES)
|
||||||
bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h
|
bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h
|
||||||
|
|
||||||
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h
|
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h
|
||||||
|
|
||||||
.INTERMEDIATE : generated-files
|
.INTERMEDIATE : generated-files
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,443 @@
|
|||||||
|
{
|
||||||
|
# Format for each entry:
|
||||||
|
# <alias>: {
|
||||||
|
# target: <keyboard_folder>,
|
||||||
|
# layouts: {
|
||||||
|
# <layout_alias>: <layout_target>
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Both target and layouts are optional.
|
||||||
|
'2_milk': {
|
||||||
|
target: 'spaceman/2_milk'
|
||||||
|
},
|
||||||
|
'aeboards/ext65': {
|
||||||
|
target: 'aeboards/ext65/rev1'
|
||||||
|
},
|
||||||
|
'ai03/equinox': {
|
||||||
|
target: 'ai03/equinox/rev1'
|
||||||
|
},
|
||||||
|
aleth42: {
|
||||||
|
target: 'aleth42/rev1'
|
||||||
|
},
|
||||||
|
alice: {
|
||||||
|
target: 'tgr/alice'
|
||||||
|
},
|
||||||
|
angel17: {
|
||||||
|
target: 'angel17/alpha'
|
||||||
|
},
|
||||||
|
angel64: {
|
||||||
|
target: 'angel64/alpha'
|
||||||
|
},
|
||||||
|
at101_blackheart: {
|
||||||
|
target: 'at101_bh'
|
||||||
|
},
|
||||||
|
'atom47/rev2': {
|
||||||
|
target: 'maartenwut/atom47/rev2'
|
||||||
|
},
|
||||||
|
'atom47/rev3': {
|
||||||
|
target: 'maartenwut/atom47/rev3'
|
||||||
|
},
|
||||||
|
bear_face: {
|
||||||
|
target: 'bear_face/v1'
|
||||||
|
},
|
||||||
|
'bpiphany/pegasushoof': {
|
||||||
|
target: 'bpiphany/pegasushoof/2013'
|
||||||
|
},
|
||||||
|
chavdai40: {
|
||||||
|
target: 'chavdai40/rev1'
|
||||||
|
},
|
||||||
|
'candybar/lefty': {
|
||||||
|
target: 'tkc/candybar/lefty'
|
||||||
|
},
|
||||||
|
'candybar/righty': {
|
||||||
|
target: 'tkc/candybar/righty'
|
||||||
|
},
|
||||||
|
canoe: {
|
||||||
|
target: 'percent/canoe'
|
||||||
|
},
|
||||||
|
'cmm_studio/saka68': {
|
||||||
|
target: 'cmm_studio/saka68/solder'
|
||||||
|
},
|
||||||
|
'crkbd/rev1': {
|
||||||
|
target: 'crkbd/rev1/legacy'
|
||||||
|
},
|
||||||
|
'doro67/multi': {
|
||||||
|
layouts: {
|
||||||
|
LAYOUT_ansi: 'LAYOUT_65_ansi_blocker'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'doro67/regular': {
|
||||||
|
layouts: {
|
||||||
|
LAYOUT: 'LAYOUT_65_ansi_blocker'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'doro67/rgb': {
|
||||||
|
layouts: {
|
||||||
|
LAYOUT: 'LAYOUT_65_ansi_blocker'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
drakon: {
|
||||||
|
target: 'jagdpietr/drakon'
|
||||||
|
},
|
||||||
|
'dztech/dz60rgb': {
|
||||||
|
target: 'dztech/dz60rgb/v1'
|
||||||
|
},
|
||||||
|
'dztech/dz60rgb_ansi': {
|
||||||
|
target: 'dztech/dz60rgb_ansi/v1'
|
||||||
|
},
|
||||||
|
'dztech/dz60rgb_wkl': {
|
||||||
|
target: 'dztech/dz60rgb_wkl/v1'
|
||||||
|
},
|
||||||
|
'dztech/dz65rgb': {
|
||||||
|
target: 'dztech/dz65rgb/v1'
|
||||||
|
},
|
||||||
|
eek: {
|
||||||
|
target: 'eek/silk_down'
|
||||||
|
},
|
||||||
|
ergoinu: {
|
||||||
|
target: 'dm9records/ergoinu'
|
||||||
|
},
|
||||||
|
'exclusive/e85': {
|
||||||
|
target: 'exclusive/e85/hotswap'
|
||||||
|
},
|
||||||
|
gh60: {
|
||||||
|
target: 'gh60/revc'
|
||||||
|
},
|
||||||
|
'handwired/ferris': {
|
||||||
|
target: 'ferris/0_1'
|
||||||
|
},
|
||||||
|
'helix/pico/sc/back': {
|
||||||
|
target: 'helix/pico/sc'
|
||||||
|
},
|
||||||
|
'helix/pico/sc/under': {
|
||||||
|
target: 'helix/pico/sc'
|
||||||
|
},
|
||||||
|
'helix/rev2/back/oled': {
|
||||||
|
target: 'helix/rev2/back'
|
||||||
|
},
|
||||||
|
'helix/rev2/oled': {
|
||||||
|
target: 'helix/rev2'
|
||||||
|
},
|
||||||
|
'helix/rev2/oled/back': {
|
||||||
|
target: 'helix/rev2/back'
|
||||||
|
},
|
||||||
|
'helix/rev2/oled/under': {
|
||||||
|
target: 'helix/rev2/under'
|
||||||
|
},
|
||||||
|
'helix/rev2/sc/back': {
|
||||||
|
target: 'helix/rev2/sc'
|
||||||
|
},
|
||||||
|
'helix/rev2/sc/oled': {
|
||||||
|
target: 'helix/rev2/sc'
|
||||||
|
},
|
||||||
|
'helix/rev2/sc/oledback': {
|
||||||
|
target: 'helix/rev2/sc'
|
||||||
|
},
|
||||||
|
'helix/rev2/sc/oledunder': {
|
||||||
|
target: 'helix/rev2/sc'
|
||||||
|
},
|
||||||
|
'helix/rev2/sc/under': {
|
||||||
|
target: 'helix/rev2/sc'
|
||||||
|
},
|
||||||
|
'helix/rev2/under': {
|
||||||
|
target: 'helix/rev2/sc'
|
||||||
|
},
|
||||||
|
'helix/rev2/under/oled': {
|
||||||
|
target: 'helix/rev2/under'
|
||||||
|
},
|
||||||
|
id80: {
|
||||||
|
target: 'id80/ansi'
|
||||||
|
},
|
||||||
|
idb_60: {
|
||||||
|
target: 'idb/idb_60',
|
||||||
|
layouts: {
|
||||||
|
LAYOUT: 'LAYOUT_all'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
jones: {
|
||||||
|
target: 'jones/v03_1'
|
||||||
|
},
|
||||||
|
katana60: {
|
||||||
|
target: 'rominronin/katana60/rev1'
|
||||||
|
},
|
||||||
|
'kbdfans/kbd67mkiirgb': {
|
||||||
|
target: 'kbdfans/kbd67/mkiirgb',
|
||||||
|
layouts: {
|
||||||
|
LAYOUT: 'LAYOUT_65_ansi_blocker'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'kbdfans/kbd67/mkiirgb': {
|
||||||
|
target: 'kbdfans/kbd67/mkiirgb/v1'
|
||||||
|
},
|
||||||
|
'keebio/dsp40': {
|
||||||
|
target: 'keebio/dsp40/rev1'
|
||||||
|
},
|
||||||
|
'keycapsss/plaid_pad': {
|
||||||
|
target: 'keycapsss/plaid_pad/rev1'
|
||||||
|
},
|
||||||
|
kudox: {
|
||||||
|
target: 'kudox/rev1'
|
||||||
|
},
|
||||||
|
'lfkeyboards/lfk78': {
|
||||||
|
target: 'lfkeyboards/lfk78/revj'
|
||||||
|
},
|
||||||
|
'lfkeyboards/smk65': {
|
||||||
|
target: 'lfkeyboards/smk65/revb'
|
||||||
|
},
|
||||||
|
'maartenwut/atom47/rev2': {
|
||||||
|
target: 'evyd13/atom47/rev2'
|
||||||
|
},
|
||||||
|
'maartenwut/atom47/rev3': {
|
||||||
|
target: 'evyd13/atom47/rev3'
|
||||||
|
},
|
||||||
|
'maartenwut/eon40': {
|
||||||
|
target: 'evyd13/eon40'
|
||||||
|
},
|
||||||
|
'maartenwut/eon65': {
|
||||||
|
target: 'evyd13/eon65'
|
||||||
|
},
|
||||||
|
'maartenwut/eon75': {
|
||||||
|
target: 'evyd13/eon75'
|
||||||
|
},
|
||||||
|
'maartenwut/eon87': {
|
||||||
|
target: 'evyd13/eon87'
|
||||||
|
},
|
||||||
|
'maartenwut/eon95': {
|
||||||
|
target: 'evyd13/eon95'
|
||||||
|
},
|
||||||
|
'maartenwut/gh80_1800': {
|
||||||
|
target: 'evyd13/gh80_1800'
|
||||||
|
},
|
||||||
|
'maartenwut/gh80_3700': {
|
||||||
|
target: 'evyd13/gh80_3700'
|
||||||
|
},
|
||||||
|
'maartenwut/minitomic': {
|
||||||
|
target: 'evyd13/minitomic'
|
||||||
|
},
|
||||||
|
'maartenwut/mx5160': {
|
||||||
|
target: 'evyd13/mx5160'
|
||||||
|
},
|
||||||
|
'maartenwut/nt660': {
|
||||||
|
target: 'evyd13/nt660'
|
||||||
|
},
|
||||||
|
'maartenwut/omrontkl': {
|
||||||
|
target: 'evyd13/omrontkl'
|
||||||
|
},
|
||||||
|
'maartenwut/plain60': {
|
||||||
|
target: 'evyd13/plain60'
|
||||||
|
},
|
||||||
|
'maartenwut/pockettype': {
|
||||||
|
target: 'evyd13/pockettype'
|
||||||
|
},
|
||||||
|
'maartenwut/quackfire': {
|
||||||
|
target: 'evyd13/quackfire'
|
||||||
|
},
|
||||||
|
'maartenwut/solheim68': {
|
||||||
|
target: 'evyd13/solheim68'
|
||||||
|
},
|
||||||
|
'maartenwut/ta65': {
|
||||||
|
target: 'evyd13/ta65'
|
||||||
|
},
|
||||||
|
'maartenwut/wasdat': {
|
||||||
|
target: 'evyd13/wasdat'
|
||||||
|
},
|
||||||
|
'maartenwut/wasdat_code': {
|
||||||
|
target: 'evyd13/wasdat_code'
|
||||||
|
},
|
||||||
|
'maartenwut/wonderland': {
|
||||||
|
target: 'evyd13/wonderland'
|
||||||
|
},
|
||||||
|
'mechlovin/hannah910': {
|
||||||
|
target: 'mechlovin/hannah910/rev1'
|
||||||
|
},
|
||||||
|
'mechlovin/adelais/rgb_led': {
|
||||||
|
target: 'mechlovin/adelais/rgb_led/rev1'
|
||||||
|
},
|
||||||
|
'mechlovin/adelais/standard_led': {
|
||||||
|
target: 'mechlovin/adelais/standard_led/rev2'
|
||||||
|
},
|
||||||
|
'mechlovin/delphine': {
|
||||||
|
target: 'mechlovin/delphine/mono_led'
|
||||||
|
},
|
||||||
|
'mechlovin/hannah60rgb': {
|
||||||
|
target: 'mechlovin/hannah60rgb/rev1'
|
||||||
|
},
|
||||||
|
'melgeek/z70ultra': {
|
||||||
|
target: 'melgeek/z70ultra/rev1'
|
||||||
|
},
|
||||||
|
'mechlovin/hannah65': {
|
||||||
|
target: 'mechlovin/hannah65/rev1'
|
||||||
|
},
|
||||||
|
model01: {
|
||||||
|
target: 'keyboardio/model01'
|
||||||
|
},
|
||||||
|
m0lly: {
|
||||||
|
target: 'tkc/m0lly'
|
||||||
|
},
|
||||||
|
'montsinger/rebound': {
|
||||||
|
target: 'montsinger/rebound/rev1'
|
||||||
|
},
|
||||||
|
nomu30: {
|
||||||
|
target: 'nomu30/rev1'
|
||||||
|
},
|
||||||
|
'noxary/268_2': {
|
||||||
|
layouts: {
|
||||||
|
LAYOUT: 'LAYOUT_65_ansi_blocker'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
oddball: {
|
||||||
|
target: 'oddball/v1'
|
||||||
|
},
|
||||||
|
omnikey_blackheart: {
|
||||||
|
target: 'omnikey_bh'
|
||||||
|
},
|
||||||
|
'pabile/p20': {
|
||||||
|
target: 'pabile/p20/ver1'
|
||||||
|
},
|
||||||
|
'pancake/feather': {
|
||||||
|
target: 'spaceman/pancake/feather'
|
||||||
|
},
|
||||||
|
'pancake/promicro': {
|
||||||
|
target: 'spaceman/pancake/promicro'
|
||||||
|
},
|
||||||
|
'percent/canoe': {
|
||||||
|
layouts: {
|
||||||
|
LAYOUT_iso: 'LAYOUT_65_iso_blocker'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
plaid: {
|
||||||
|
target: 'dm9records/plaid'
|
||||||
|
},
|
||||||
|
plain60: {
|
||||||
|
target: 'maartenwut/plain60'
|
||||||
|
},
|
||||||
|
'ploopyco/trackball': {
|
||||||
|
target: 'ploopyco/trackball/rev1_005'
|
||||||
|
},
|
||||||
|
polilla: {
|
||||||
|
target: 'polilla/rev1'
|
||||||
|
},
|
||||||
|
'preonic/rev1': {
|
||||||
|
layouts: {
|
||||||
|
LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'preonic/rev2': {
|
||||||
|
layouts: {
|
||||||
|
LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'preonic/rev3': {
|
||||||
|
layouts: {
|
||||||
|
LAYOUT_preonic_grid: 'LAYOUT_ortho_5x12'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'primekb/prime_l': {
|
||||||
|
target: 'primekb/prime_l/v1'
|
||||||
|
},
|
||||||
|
'primekb/prime_l_v2': {
|
||||||
|
target: 'primekb/prime_l/v2'
|
||||||
|
},
|
||||||
|
'projectkb/alice': {
|
||||||
|
target: 'projectkb/alice/rev1'
|
||||||
|
},
|
||||||
|
'rama/koyu': {
|
||||||
|
target: 'wilba_tech/rama_works_koyu'
|
||||||
|
},
|
||||||
|
'rama/m6_a': {
|
||||||
|
target: 'wilba_tech/rama_works_m6_a'
|
||||||
|
},
|
||||||
|
'rama/m6_b': {
|
||||||
|
target: 'wilba_tech/rama_works_m6_b'
|
||||||
|
},
|
||||||
|
'rama/m10_b': {
|
||||||
|
target: 'wilba_tech/rama_works_m10_b'
|
||||||
|
},
|
||||||
|
'rama/m60_a': {
|
||||||
|
target: 'wilba_tech/rama_works_m60_a'
|
||||||
|
},
|
||||||
|
'rama/u80_a': {
|
||||||
|
target: 'wilba_tech/rama_works_u80_a'
|
||||||
|
},
|
||||||
|
'ramonimbao/herringbone': {
|
||||||
|
target: 'ramonimbao/herringbone/v1'
|
||||||
|
},
|
||||||
|
'rgbkb/pan': {
|
||||||
|
target: 'rgbkb/pan/rev1/32a'
|
||||||
|
},
|
||||||
|
'rgbkb/pan/rev1': {
|
||||||
|
target: 'rgbkb/pan/rev1/32a'
|
||||||
|
},
|
||||||
|
romac: {
|
||||||
|
target: 'kingly_keys/romac'
|
||||||
|
},
|
||||||
|
ropro: {
|
||||||
|
target: 'kingly_keys/ropro'
|
||||||
|
},
|
||||||
|
satan: {
|
||||||
|
target: 'gh60/satan'
|
||||||
|
},
|
||||||
|
skog: {
|
||||||
|
target: 'percent/skog'
|
||||||
|
},
|
||||||
|
speedo: {
|
||||||
|
target: 'cozykeys/speedo/v2'
|
||||||
|
},
|
||||||
|
stoutgat: {
|
||||||
|
target: 'tkw/stoutgat/v1'
|
||||||
|
},
|
||||||
|
suihankey: {
|
||||||
|
target: 'suihankey/split/alpha'
|
||||||
|
},
|
||||||
|
ta65: {
|
||||||
|
target: 'maartenwut/ta65'
|
||||||
|
},
|
||||||
|
tartan: {
|
||||||
|
target: 'dm9records/tartan'
|
||||||
|
},
|
||||||
|
tkc1800: {
|
||||||
|
target: 'tkc/tkc1800'
|
||||||
|
},
|
||||||
|
'tkw/stoutgat/v2': {
|
||||||
|
target: 'tkw/stoutgat/v2/f411'
|
||||||
|
},
|
||||||
|
underscore33: {
|
||||||
|
target: 'underscore33/rev1'
|
||||||
|
},
|
||||||
|
vinta: {
|
||||||
|
layouts: {
|
||||||
|
LAYOUT_67_ansi: 'LAYOUT_65_ansi_blocker'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
wasdat: {
|
||||||
|
target: 'maartenwut/wasdat'
|
||||||
|
},
|
||||||
|
'westfoxtrot/cypher': {
|
||||||
|
target: 'westfoxtrot/cypher/rev1'
|
||||||
|
},
|
||||||
|
'whale/sk': {
|
||||||
|
target: 'whale/sk/v3'
|
||||||
|
},
|
||||||
|
'xelus/dawn60': {
|
||||||
|
target: 'xelus/dawn60/rev1'
|
||||||
|
},
|
||||||
|
'xelus/valor': {
|
||||||
|
target: 'xelus/valor/rev1'
|
||||||
|
},
|
||||||
|
yd60mq: {
|
||||||
|
target: 'yd60mq/12led'
|
||||||
|
},
|
||||||
|
ymd75: {
|
||||||
|
target: 'ymd75/rev1'
|
||||||
|
},
|
||||||
|
z150_blackheart: {
|
||||||
|
target: 'z150_bh'
|
||||||
|
},
|
||||||
|
zeal60: {
|
||||||
|
target: 'wilba_tech/zeal60'
|
||||||
|
},
|
||||||
|
zeal65: {
|
||||||
|
target: 'wilba_tech/zeal65'
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -29,6 +29,7 @@
|
|||||||
* [Overview](cli.md)
|
* [Overview](cli.md)
|
||||||
* [Configuration](cli_configuration.md)
|
* [Configuration](cli_configuration.md)
|
||||||
* [Commands](cli_commands.md)
|
* [Commands](cli_commands.md)
|
||||||
|
* [Tab Completion](cli_tab_complete.md)
|
||||||
|
|
||||||
* Using QMK
|
* Using QMK
|
||||||
* Guides
|
* Guides
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero
|
|||||||
|
|
||||||
## When is the next Breaking Change?
|
## When is the next Breaking Change?
|
||||||
|
|
||||||
The next Breaking Change is scheduled for February 27, 2021.
|
The next Breaking Change is scheduled for May 29, 2021.
|
||||||
|
|
||||||
### Important Dates
|
### Important Dates
|
||||||
|
|
||||||
|
|||||||
+23
-1
@@ -131,6 +131,16 @@ Check your environment and report problems only:
|
|||||||
|
|
||||||
qmk doctor -n
|
qmk doctor -n
|
||||||
|
|
||||||
|
## `qmk format-json`
|
||||||
|
|
||||||
|
Formats a JSON file in a (mostly) human-friendly way. Will usually correctly detect the format of the JSON (info.json or keymap.json) but you can override this with `--format` if neccesary.
|
||||||
|
|
||||||
|
**Usage**:
|
||||||
|
|
||||||
|
```
|
||||||
|
qmk format-json [-f FORMAT] <json_file>
|
||||||
|
```
|
||||||
|
|
||||||
## `qmk info`
|
## `qmk info`
|
||||||
|
|
||||||
Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps.
|
Displays information about keyboards and keymaps in QMK. You can use this to get information about a keyboard, show the layouts, display the underlying key matrix, or to pretty-print JSON keymaps.
|
||||||
@@ -170,7 +180,7 @@ qmk json2c [-o OUTPUT] filename
|
|||||||
## `qmk c2json`
|
## `qmk c2json`
|
||||||
|
|
||||||
Creates a keymap.json from a keymap.c.
|
Creates a keymap.json from a keymap.c.
|
||||||
**Note:** Parsing C source files is not easy, therefore this subcommand may not work your keymap. In some cases not using the C pre-processor helps.
|
**Note:** Parsing C source files is not easy, therefore this subcommand may not work with your keymap. In some cases not using the C pre-processor helps.
|
||||||
|
|
||||||
**Usage**:
|
**Usage**:
|
||||||
|
|
||||||
@@ -218,6 +228,18 @@ This command is directory aware. It will automatically fill in KEYBOARD if you a
|
|||||||
qmk list-keymaps -kb planck/ez
|
qmk list-keymaps -kb planck/ez
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## `qmk new-keyboard`
|
||||||
|
|
||||||
|
This command creates a new keyboard based on available templates.
|
||||||
|
|
||||||
|
This command will prompt for input to guide you though the generation process.
|
||||||
|
|
||||||
|
**Usage**:
|
||||||
|
|
||||||
|
```
|
||||||
|
qmk new-keyboard
|
||||||
|
```
|
||||||
|
|
||||||
## `qmk new-keymap`
|
## `qmk new-keymap`
|
||||||
|
|
||||||
This command creates a new keymap based on a keyboard's existing default keymap.
|
This command creates a new keymap based on a keyboard's existing default keymap.
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# Tab Completion for QMK
|
||||||
|
|
||||||
|
If you are using Bash 4.2 or later, Zsh, or FiSH you can enable Tab Completion for the QMK CLI. This will let you tab complete the names of flags, keyboards, files, and other `qmk` options.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
There are several ways you can setup tab completion.
|
||||||
|
|
||||||
|
### For Your User Only
|
||||||
|
|
||||||
|
Add this to the end of your `.profile` or `.bashrc`:
|
||||||
|
|
||||||
|
source ~/qmk_firmware/util/qmk_tab_complete.sh
|
||||||
|
|
||||||
|
If you put `qmk_firmware` into another location you will need to adjust this path.
|
||||||
|
|
||||||
|
### System Wide Symlink
|
||||||
|
|
||||||
|
If you want the tab completion available to all users of the system you can add a symlink to the `qmk_tab_complete.sh` script:
|
||||||
|
|
||||||
|
`ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh`
|
||||||
|
|
||||||
|
### System Wide Copy
|
||||||
|
|
||||||
|
In some cases a symlink may not work. Instead you can copy the file directly into place. Be aware that updates to the tab complete script may happen from time to time, you will want to recopy the file periodically.
|
||||||
|
|
||||||
|
cp util/qmk_tab_complete.sh /etc/profile.d
|
||||||
@@ -8,7 +8,7 @@ To activate this feature, add `AUDIO_ENABLE = yes` to your `rules.mk`.
|
|||||||
On Atmega32U4 based boards, up to two simultaneous tones can be rendered.
|
On Atmega32U4 based boards, up to two simultaneous tones can be rendered.
|
||||||
With one speaker connected to a PWM capable pin on PORTC driven by timer 3 and the other on one of the PWM pins on PORTB driven by timer 1.
|
With one speaker connected to a PWM capable pin on PORTC driven by timer 3 and the other on one of the PWM pins on PORTB driven by timer 1.
|
||||||
|
|
||||||
The following pins can be configured as audio outputs in `config.h` - for one speaker set eiter one out of:
|
The following pins can be configured as audio outputs in `config.h` - for one speaker set either one out of:
|
||||||
|
|
||||||
* `#define AUDIO_PIN C4`
|
* `#define AUDIO_PIN C4`
|
||||||
* `#define AUDIO_PIN C5`
|
* `#define AUDIO_PIN C5`
|
||||||
@@ -166,7 +166,7 @@ The available keycodes for audio are:
|
|||||||
!> These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely.
|
!> These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely.
|
||||||
|
|
||||||
## Tempo
|
## Tempo
|
||||||
the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lenghts are defined relative to that.
|
the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lengths are defined relative to that.
|
||||||
The initial/default tempo is set to 120 bpm, but can be configured by setting `TEMPO_DEFAULT` in `config.c`.
|
The initial/default tempo is set to 120 bpm, but can be configured by setting `TEMPO_DEFAULT` in `config.c`.
|
||||||
There is also a set of functions to modify the tempo from within the user/keymap code:
|
There is also a set of functions to modify the tempo from within the user/keymap code:
|
||||||
```c
|
```c
|
||||||
@@ -291,7 +291,7 @@ You can configure the default, min and max frequencies, the stepping and built i
|
|||||||
|--------|---------------|-------------|
|
|--------|---------------|-------------|
|
||||||
| `AUDIO_CLICKY_FREQ_DEFAULT` | 440.0f | Sets the default/starting audio frequency for the clicky sounds. |
|
| `AUDIO_CLICKY_FREQ_DEFAULT` | 440.0f | Sets the default/starting audio frequency for the clicky sounds. |
|
||||||
| `AUDIO_CLICKY_FREQ_MIN` | 65.0f | Sets the lowest frequency (under 60f are a bit buggy). |
|
| `AUDIO_CLICKY_FREQ_MIN` | 65.0f | Sets the lowest frequency (under 60f are a bit buggy). |
|
||||||
| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the the highest frequency. Too high may result in coworkers attacking you. |
|
| `AUDIO_CLICKY_FREQ_MAX` | 1500.0f | Sets the highest frequency. Too high may result in coworkers attacking you. |
|
||||||
| `AUDIO_CLICKY_FREQ_FACTOR` | 1.18921f| Sets the stepping of UP/DOWN key codes. This is a multiplicative factor. The default steps the frequency up/down by a musical minor third. |
|
| `AUDIO_CLICKY_FREQ_FACTOR` | 1.18921f| Sets the stepping of UP/DOWN key codes. This is a multiplicative factor. The default steps the frequency up/down by a musical minor third. |
|
||||||
| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical, and `1.0f` will make this sound much like the 90's computer screen scrolling/typing effect. |
|
| `AUDIO_CLICKY_FREQ_RANDOMNESS` | 0.05f | Sets a factor of randomness for the clicks, Setting this to `0f` will make each click identical, and `1.0f` will make this sound much like the 90's computer screen scrolling/typing effect. |
|
||||||
| `AUDIO_CLICKY_DELAY_DURATION` | 1 | An integer note duration where 1 is 1/16th of the tempo, or a sixty-fourth note (see `quantum/audio/musical_notes.h` for implementation details). The main clicky effect will be delayed by this duration. Adjusting this to values around 6-12 will help compensate for loud switches. |
|
| `AUDIO_CLICKY_DELAY_DURATION` | 1 | An integer note duration where 1 is 1/16th of the tempo, or a sixty-fourth note (see `quantum/audio/musical_notes.h` for implementation details). The main clicky effect will be delayed by this duration. Adjusting this to values around 6-12 will help compensate for loud switches. |
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ BACKLIGHT_DRIVER = software
|
|||||||
|
|
||||||
#### Multiple Backlight Pins :id=multiple-backlight-pins
|
#### Multiple Backlight Pins :id=multiple-backlight-pins
|
||||||
|
|
||||||
Most keyboards have only one backlight pin which control all backlight LEDs (especially if the backlight is connected to an hardware PWM pin).
|
Most keyboards have only one backlight pin which controls all backlight LEDs (especially if the backlight is connected to a hardware PWM pin).
|
||||||
In software PWM, it is possible to define multiple backlight pins, which will be turned on and off at the same time during the PWM duty cycle.
|
In software PWM, it is possible to define multiple backlight pins, which will be turned on and off at the same time during the PWM duty cycle.
|
||||||
|
|
||||||
This feature allows to set, for instance, the Caps Lock LED's (or any other controllable LED) brightness at the same level as the other LEDs of the backlight. This is useful if you have mapped Control in place of Caps Lock and you need the Caps Lock LED to be part of the backlight instead of being activated when Caps Lock is on, as it is usually wired to a separate pin from the backlight.
|
This feature allows to set, for instance, the Caps Lock LED's (or any other controllable LED) brightness at the same level as the other LEDs of the backlight. This is useful if you have mapped Control in place of Caps Lock and you need the Caps Lock LED to be part of the backlight instead of being activated when Caps Lock is on, as it is usually wired to a separate pin from the backlight.
|
||||||
|
|||||||
@@ -81,3 +81,20 @@ void encoder_update_user(uint8_t index, bool clockwise) {
|
|||||||
## Hardware
|
## Hardware
|
||||||
|
|
||||||
The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.
|
The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.
|
||||||
|
|
||||||
|
## Multiple Encoders
|
||||||
|
|
||||||
|
Multiple encoders may share pins so long as each encoder has a distinct pair of pins.
|
||||||
|
|
||||||
|
For example you can support two encoders using only 3 pins like this
|
||||||
|
```
|
||||||
|
#define ENCODERS_PAD_A { B1, B1 }
|
||||||
|
#define ENCODERS_PAD_B { B2, B3 }
|
||||||
|
```
|
||||||
|
|
||||||
|
You could even support three encoders using only three pins (one per encoder) however in this configuration, rotating two encoders which share pins simultaneously will often generate incorrect output. For example:
|
||||||
|
```
|
||||||
|
#define ENCODERS_PAD_A { B1, B1, B2 }
|
||||||
|
#define ENCODERS_PAD_B { B2, B3, B3 }
|
||||||
|
```
|
||||||
|
Here rotating Encoder 0 `B1 B2` and Encoder 1 `B1 B3` could be interpreted as rotating Encoder 2 `B2 B3` or `B3 B2` depending on the timing. This may still be a useful configuration depending on your use case
|
||||||
@@ -19,12 +19,10 @@ These functions allow you to activate layers in various ways. Note that layers a
|
|||||||
|
|
||||||
### Caveats :id=caveats
|
### Caveats :id=caveats
|
||||||
|
|
||||||
Currently, `LT()` and `MT()` are limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. Specifically, dual function keys like `LT` and `MT` use a 16 bit keycode. 4 bits are used for the function identifier, the next 12 are divided into the parameters. Layer Tap uses 4 bits for the layer (and is why it's limited to layers 0-15, actually), while Mod Tap does the same, 4 bits for the identifier, 4 bits for which mods are used, and all of them use 8 bits for the keycode. Because of this, the keycode used is limited to `0xFF` (0-255), which are the basic keycodes only.
|
Currently, the `layer` argument of `LT()` is limited to layers 0-15, and the `kc` argument to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 4 bits are used for the function identifier and 4 bits for the layer, leaving only 8 bits for the keycode.
|
||||||
|
|
||||||
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
|
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
|
||||||
|
|
||||||
Additionally, if at least one right-handed modifier is specified in a Mod Tap or Layer Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two.
|
|
||||||
|
|
||||||
## Working with Layers :id=working-with-layers
|
## Working with Layers :id=working-with-layers
|
||||||
|
|
||||||
Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.
|
Care must be taken when switching layers, it's possible to lock yourself into a layer with no way to deactivate that layer (without unplugging your keyboard.) We've created some guidelines to help users avoid the most common problems.
|
||||||
|
|||||||
@@ -254,6 +254,9 @@ enum rgb_matrix_effects {
|
|||||||
RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard
|
RGB_MATRIX_RAINBOW_PINWHEELS, // Full dual gradients spinning two halfs of keyboard
|
||||||
RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue
|
RGB_MATRIX_RAINDROPS, // Randomly changes a single key's hue
|
||||||
RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation
|
RGB_MATRIX_JELLYBEAN_RAINDROPS, // Randomly changes a single key's hue and saturation
|
||||||
|
RGB_MATRIX_HUE_BREATHING, // Hue shifts up a slight ammount at the same time, then shifts back
|
||||||
|
RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left
|
||||||
|
RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right
|
||||||
#if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
#if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
|
||||||
RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM!
|
RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM!
|
||||||
RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation
|
RGB_MATRIX_DIGITAL_RAIN, // That famous computer simulation
|
||||||
@@ -281,8 +284,10 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|
|||||||
|
|
||||||
|Define |Description |
|
|Define |Description |
|
||||||
|-------------------------------------------------------|-----------------------------------------------|
|
|-------------------------------------------------------|-----------------------------------------------|
|
||||||
|
|`#define DISABLE_RGB_MATRIX_SOLID_COLOR` |Disables `RGB_MATRIX_SOLID_COLOR` |
|
||||||
|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` |
|
|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` |
|
||||||
|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|
|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Disables `MATRIX_GRADIENT_LEFT_RIGHT` |
|
||||||
|`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` |
|
|`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` |
|
||||||
|`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` |
|
|`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` |
|
||||||
|`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` |
|
|`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` |
|
||||||
@@ -293,20 +298,23 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|
|||||||
|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` |
|
|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` |
|
||||||
|`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
|
|`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
|
||||||
|`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` |
|
|`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|
||||||
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` |
|
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` |
|
||||||
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
|
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
|
||||||
|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|
|
||||||
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|
|
||||||
|`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` |
|
|`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` |
|
||||||
|`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` |
|
|`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|
||||||
|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` |
|
|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` |
|
||||||
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|
||||||
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|
||||||
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_HUE_BREATHING` |Disables `RGB_MATRIX_HUE_BREATHING` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_HUE_PENDULUM` |Disables `RGB_MATRIX_HUE_PENDULUM` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_HUE_WAVE ` |Disables `RGB_MATRIX_HUE_WAVE ` |
|
||||||
|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` |
|
|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` |
|
||||||
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|
||||||
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|
|
||||||
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|
||||||
|
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|
||||||
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
|
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
|
||||||
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|
||||||
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
|
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
|
||||||
|
|||||||
+84
-78
@@ -76,7 +76,7 @@ qk_tap_dance_action_t tap_dance_actions[] = {
|
|||||||
[TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
|
[TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add tap dance item in place of a key code
|
// Add tap dance item to your keymap in place of a keycode
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
// ...
|
// ...
|
||||||
TD(TD_ESC_CAPS)
|
TD(TD_ESC_CAPS)
|
||||||
@@ -206,20 +206,22 @@ You will need a few things that can be used for 'Quad Function Tap-Dance'.
|
|||||||
You'll need to add these to the top of your `keymap.c` file, before your keymap.
|
You'll need to add these to the top of your `keymap.c` file, before your keymap.
|
||||||
|
|
||||||
```c
|
```c
|
||||||
|
typedef enum {
|
||||||
|
TD_NONE,
|
||||||
|
TD_UNKNOWN,
|
||||||
|
TD_SINGLE_TAP,
|
||||||
|
TD_SINGLE_HOLD,
|
||||||
|
TD_DOUBLE_TAP,
|
||||||
|
TD_DOUBLE_HOLD,
|
||||||
|
TD_DOUBLE_SINGLE_TAP, // Send two single taps
|
||||||
|
TD_TRIPLE_TAP,
|
||||||
|
TD_TRIPLE_HOLD
|
||||||
|
} td_state_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool is_press_action;
|
bool is_press_action;
|
||||||
uint8_t state;
|
td_state_t state;
|
||||||
} tap;
|
} td_tap_t;
|
||||||
|
|
||||||
enum {
|
|
||||||
SINGLE_TAP = 1,
|
|
||||||
SINGLE_HOLD,
|
|
||||||
DOUBLE_TAP,
|
|
||||||
DOUBLE_HOLD,
|
|
||||||
DOUBLE_SINGLE_TAP, // Send two single taps
|
|
||||||
TRIPLE_TAP,
|
|
||||||
TRIPLE_HOLD
|
|
||||||
};
|
|
||||||
|
|
||||||
// Tap dance enums
|
// Tap dance enums
|
||||||
enum {
|
enum {
|
||||||
@@ -227,7 +229,7 @@ enum {
|
|||||||
SOME_OTHER_DANCE
|
SOME_OTHER_DANCE
|
||||||
};
|
};
|
||||||
|
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state);
|
td_state_t cur_dance(qk_tap_dance_state_t *state);
|
||||||
|
|
||||||
// For the x tap dance. Put it here so it can be used in any keymap
|
// For the x tap dance. Put it here so it can be used in any keymap
|
||||||
void x_finished(qk_tap_dance_state_t *state, void *user_data);
|
void x_finished(qk_tap_dance_state_t *state, void *user_data);
|
||||||
@@ -261,61 +263,61 @@ Now, at the bottom of your `keymap.c` file, you'll need to add the following:
|
|||||||
* Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
|
* Letters used in common words as a double. For example 'p' in 'pepper'. If a tap dance function existed on the
|
||||||
* letter 'p', the word 'pepper' would be quite frustating to type.
|
* letter 'p', the word 'pepper' would be quite frustating to type.
|
||||||
*
|
*
|
||||||
* For the third point, there does exist the 'DOUBLE_SINGLE_TAP', however this is not fully tested
|
* For the third point, there does exist the 'TD_DOUBLE_SINGLE_TAP', however this is not fully tested
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state) {
|
td_state_t cur_dance(qk_tap_dance_state_t *state) {
|
||||||
if (state->count == 1) {
|
if (state->count == 1) {
|
||||||
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
|
||||||
// Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'.
|
// Key has not been interrupted, but the key is still held. Means you want to send a 'HOLD'.
|
||||||
else return SINGLE_HOLD;
|
else return TD_SINGLE_HOLD;
|
||||||
} else if (state->count == 2) {
|
} else if (state->count == 2) {
|
||||||
// DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
|
// TD_DOUBLE_SINGLE_TAP is to distinguish between typing "pepper", and actually wanting a double tap
|
||||||
// action when hitting 'pp'. Suggested use case for this return value is when you want to send two
|
// action when hitting 'pp'. Suggested use case for this return value is when you want to send two
|
||||||
// keystrokes of the key, and not the 'double tap' action/macro.
|
// keystrokes of the key, and not the 'double tap' action/macro.
|
||||||
if (state->interrupted) return DOUBLE_SINGLE_TAP;
|
if (state->interrupted) return TD_DOUBLE_SINGLE_TAP;
|
||||||
else if (state->pressed) return DOUBLE_HOLD;
|
else if (state->pressed) return TD_DOUBLE_HOLD;
|
||||||
else return DOUBLE_TAP;
|
else return TD_DOUBLE_TAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assumes no one is trying to type the same letter three times (at least not quickly).
|
// Assumes no one is trying to type the same letter three times (at least not quickly).
|
||||||
// If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
|
// If your tap dance key is 'KC_W', and you want to type "www." quickly - then you will need to add
|
||||||
// an exception here to return a 'TRIPLE_SINGLE_TAP', and define that enum just like 'DOUBLE_SINGLE_TAP'
|
// an exception here to return a 'TD_TRIPLE_SINGLE_TAP', and define that enum just like 'TD_DOUBLE_SINGLE_TAP'
|
||||||
if (state->count == 3) {
|
if (state->count == 3) {
|
||||||
if (state->interrupted || !state->pressed) return TRIPLE_TAP;
|
if (state->interrupted || !state->pressed) return TD_TRIPLE_TAP;
|
||||||
else return TRIPLE_HOLD;
|
else return TD_TRIPLE_HOLD;
|
||||||
} else return 8; // Magic number. At some point this method will expand to work for more presses
|
} else return TD_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create an instance of 'tap' for the 'x' tap dance.
|
// Create an instance of 'td_tap_t' for the 'x' tap dance.
|
||||||
static tap xtap_state = {
|
static td_tap_t xtap_state = {
|
||||||
.is_press_action = true,
|
.is_press_action = true,
|
||||||
.state = 0
|
.state = TD_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
void x_finished(qk_tap_dance_state_t *state, void *user_data) {
|
void x_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
xtap_state.state = cur_dance(state);
|
xtap_state.state = cur_dance(state);
|
||||||
switch (xtap_state.state) {
|
switch (xtap_state.state) {
|
||||||
case SINGLE_TAP: register_code(KC_X); break;
|
case TD_SINGLE_TAP: register_code(KC_X); break;
|
||||||
case SINGLE_HOLD: register_code(KC_LCTRL); break;
|
case TD_SINGLE_HOLD: register_code(KC_LCTRL); break;
|
||||||
case DOUBLE_TAP: register_code(KC_ESC); break;
|
case TD_DOUBLE_TAP: register_code(KC_ESC); break;
|
||||||
case DOUBLE_HOLD: register_code(KC_LALT); break;
|
case TD_DOUBLE_HOLD: register_code(KC_LALT); break;
|
||||||
// Last case is for fast typing. Assuming your key is `f`:
|
// Last case is for fast typing. Assuming your key is `f`:
|
||||||
// For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
|
// For example, when typing the word `buffer`, and you want to make sure that you send `ff` and not `Esc`.
|
||||||
// In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
|
// In order to type `ff` when typing fast, the next character will have to be hit within the `TAPPING_TERM`, which by default is 200ms.
|
||||||
case DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
|
case TD_DOUBLE_SINGLE_TAP: tap_code(KC_X); register_code(KC_X);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void x_reset(qk_tap_dance_state_t *state, void *user_data) {
|
void x_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
switch (xtap_state.state) {
|
switch (xtap_state.state) {
|
||||||
case SINGLE_TAP: unregister_code(KC_X); break;
|
case TD_SINGLE_TAP: unregister_code(KC_X); break;
|
||||||
case SINGLE_HOLD: unregister_code(KC_LCTRL); break;
|
case TD_SINGLE_HOLD: unregister_code(KC_LCTRL); break;
|
||||||
case DOUBLE_TAP: unregister_code(KC_ESC); break;
|
case TD_DOUBLE_TAP: unregister_code(KC_ESC); break;
|
||||||
case DOUBLE_HOLD: unregister_code(KC_LALT);
|
case TD_DOUBLE_HOLD: unregister_code(KC_LALT);
|
||||||
case DOUBLE_SINGLE_TAP: unregister_code(KC_X);
|
case TD_DOUBLE_SINGLE_TAP: unregister_code(KC_X);
|
||||||
}
|
}
|
||||||
xtap_state.state = 0;
|
xtap_state.state = TD_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
qk_tap_dance_action_t tap_dance_actions[] = {
|
qk_tap_dance_action_t tap_dance_actions[] = {
|
||||||
@@ -343,9 +345,11 @@ enum td_keycodes {
|
|||||||
|
|
||||||
// Define a type containing as many tapdance states as you need
|
// Define a type containing as many tapdance states as you need
|
||||||
typedef enum {
|
typedef enum {
|
||||||
SINGLE_TAP,
|
TD_NONE,
|
||||||
SINGLE_HOLD,
|
TD_UNKNOWN,
|
||||||
DOUBLE_SINGLE_TAP
|
TD_SINGLE_TAP,
|
||||||
|
TD_SINGLE_HOLD,
|
||||||
|
TD_DOUBLE_SINGLE_TAP
|
||||||
} td_state_t;
|
} td_state_t;
|
||||||
|
|
||||||
// Create a global instance of the tapdance state type
|
// Create a global instance of the tapdance state type
|
||||||
@@ -354,7 +358,7 @@ static td_state_t td_state;
|
|||||||
// Declare your tapdance functions:
|
// Declare your tapdance functions:
|
||||||
|
|
||||||
// Function to determine the current tapdance state
|
// Function to determine the current tapdance state
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state);
|
td_state_t cur_dance(qk_tap_dance_state_t *state);
|
||||||
|
|
||||||
// `finished` and `reset` functions for each tapdance keycode
|
// `finished` and `reset` functions for each tapdance keycode
|
||||||
void altlp_finished(qk_tap_dance_state_t *state, void *user_data);
|
void altlp_finished(qk_tap_dance_state_t *state, void *user_data);
|
||||||
@@ -365,14 +369,14 @@ Below your `LAYOUT`, define each of the tapdance functions:
|
|||||||
|
|
||||||
```c
|
```c
|
||||||
// Determine the tapdance state to return
|
// Determine the tapdance state to return
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state) {
|
td_state_t cur_dance(qk_tap_dance_state_t *state) {
|
||||||
if (state->count == 1) {
|
if (state->count == 1) {
|
||||||
if (state->interrupted || !state->pressed) return SINGLE_TAP;
|
if (state->interrupted || !state->pressed) return TD_SINGLE_TAP;
|
||||||
else return SINGLE_HOLD;
|
else return TD_SINGLE_HOLD;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (state->count == 2) return DOUBLE_SINGLE_TAP;
|
if (state->count == 2) return TD_DOUBLE_SINGLE_TAP;
|
||||||
else return 3; // Any number higher than the maximum state value you return above
|
else return TD_UNKNOWN; // Any number higher than the maximum state value you return above
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle the possible states for each tapdance keycode you define:
|
// Handle the possible states for each tapdance keycode you define:
|
||||||
@@ -380,13 +384,13 @@ uint8_t cur_dance(qk_tap_dance_state_t *state) {
|
|||||||
void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
|
void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
td_state = cur_dance(state);
|
td_state = cur_dance(state);
|
||||||
switch (td_state) {
|
switch (td_state) {
|
||||||
case SINGLE_TAP:
|
case TD_SINGLE_TAP:
|
||||||
register_code16(KC_LPRN);
|
register_code16(KC_LPRN);
|
||||||
break;
|
break;
|
||||||
case SINGLE_HOLD:
|
case TD_SINGLE_HOLD:
|
||||||
register_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_on(_MY_LAYER)` here
|
register_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_on(_MY_LAYER)` here
|
||||||
break;
|
break;
|
||||||
case DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term
|
case TD_DOUBLE_SINGLE_TAP: // Allow nesting of 2 parens `((` within tapping term
|
||||||
tap_code16(KC_LPRN);
|
tap_code16(KC_LPRN);
|
||||||
register_code16(KC_LPRN);
|
register_code16(KC_LPRN);
|
||||||
}
|
}
|
||||||
@@ -394,13 +398,13 @@ void altlp_finished(qk_tap_dance_state_t *state, void *user_data) {
|
|||||||
|
|
||||||
void altlp_reset(qk_tap_dance_state_t *state, void *user_data) {
|
void altlp_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
switch (td_state) {
|
switch (td_state) {
|
||||||
case SINGLE_TAP:
|
case TD_SINGLE_TAP:
|
||||||
unregister_code16(KC_LPRN);
|
unregister_code16(KC_LPRN);
|
||||||
break;
|
break;
|
||||||
case SINGLE_HOLD:
|
case TD_SINGLE_HOLD:
|
||||||
unregister_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_off(_MY_LAYER)` here
|
unregister_mods(MOD_BIT(KC_LALT)); // For a layer-tap key, use `layer_off(_MY_LAYER)` here
|
||||||
break;
|
break;
|
||||||
case DOUBLE_SINGLE_TAP:
|
case TD_DOUBLE_SINGLE_TAP:
|
||||||
unregister_code16(KC_LPRN);
|
unregister_code16(KC_LPRN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -420,17 +424,19 @@ Tap Dance can be used to mimic MO(layer) and TG(layer) functionality. For this e
|
|||||||
The first step is to include the following code towards the beginning of your `keymap.c`:
|
The first step is to include the following code towards the beginning of your `keymap.c`:
|
||||||
|
|
||||||
```c
|
```c
|
||||||
|
// Define a type for as many tap dance states as you need
|
||||||
|
typedef enum {
|
||||||
|
TD_NONE,
|
||||||
|
TD_UNKNOWN,
|
||||||
|
TD_SINGLE_TAP,
|
||||||
|
TD_SINGLE_HOLD,
|
||||||
|
TD_DOUBLE_TAP
|
||||||
|
} td_state_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
bool is_press_action;
|
bool is_press_action;
|
||||||
uint8_t state;
|
td_state_t state;
|
||||||
} tap;
|
} td_tap_t;
|
||||||
|
|
||||||
// Define a type for as many tap dance states as you need
|
|
||||||
enum {
|
|
||||||
SINGLE_TAP = 1,
|
|
||||||
SINGLE_HOLD,
|
|
||||||
DOUBLE_TAP
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
QUOT_LAYR, // Our custom tap dance key; add any other tap dance keys to this enum
|
QUOT_LAYR, // Our custom tap dance key; add any other tap dance keys to this enum
|
||||||
@@ -439,7 +445,7 @@ enum {
|
|||||||
// Declare the functions to be used with your tap dance key(s)
|
// Declare the functions to be used with your tap dance key(s)
|
||||||
|
|
||||||
// Function associated with all tap dances
|
// Function associated with all tap dances
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state);
|
td_state_t cur_dance(qk_tap_dance_state_t *state);
|
||||||
|
|
||||||
// Functions associated with individual tap dances
|
// Functions associated with individual tap dances
|
||||||
void ql_finished(qk_tap_dance_state_t *state, void *user_data);
|
void ql_finished(qk_tap_dance_state_t *state, void *user_data);
|
||||||
@@ -450,31 +456,31 @@ Towards the bottom of your `keymap.c`, include the following code:
|
|||||||
|
|
||||||
```c
|
```c
|
||||||
// Determine the current tap dance state
|
// Determine the current tap dance state
|
||||||
uint8_t cur_dance(qk_tap_dance_state_t *state) {
|
td_state_t cur_dance(qk_tap_dance_state_t *state) {
|
||||||
if (state->count == 1) {
|
if (state->count == 1) {
|
||||||
if (!state->pressed) return SINGLE_TAP;
|
if (!state->pressed) return TD_SINGLE_TAP;
|
||||||
else return SINGLE_HOLD;
|
else return TD_SINGLE_HOLD;
|
||||||
} else if (state->count == 2) return DOUBLE_TAP;
|
} else if (state->count == 2) return TD_DOUBLE_TAP;
|
||||||
else return 8;
|
else return TD_UNKNOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize tap structure associated with example tap dance key
|
// Initialize tap structure associated with example tap dance key
|
||||||
static tap ql_tap_state = {
|
static td_tap_t ql_tap_state = {
|
||||||
.is_press_action = true,
|
.is_press_action = true,
|
||||||
.state = 0
|
.state = TD_NONE
|
||||||
};
|
};
|
||||||
|
|
||||||
// Functions that control what our tap dance key does
|
// Functions that control what our tap dance key does
|
||||||
void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
|
void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
ql_tap_state.state = cur_dance(state);
|
ql_tap_state.state = cur_dance(state);
|
||||||
switch (ql_tap_state.state) {
|
switch (ql_tap_state.state) {
|
||||||
case SINGLE_TAP:
|
case TD_SINGLE_TAP:
|
||||||
tap_code(KC_QUOT);
|
tap_code(KC_QUOT);
|
||||||
break;
|
break;
|
||||||
case SINGLE_HOLD:
|
case TD_SINGLE_HOLD:
|
||||||
layer_on(_MY_LAYER);
|
layer_on(_MY_LAYER);
|
||||||
break;
|
break;
|
||||||
case DOUBLE_TAP:
|
case TD_DOUBLE_TAP:
|
||||||
// Check to see if the layer is already set
|
// Check to see if the layer is already set
|
||||||
if (layer_state_is(_MY_LAYER)) {
|
if (layer_state_is(_MY_LAYER)) {
|
||||||
// If already set, then switch it off
|
// If already set, then switch it off
|
||||||
@@ -489,10 +495,10 @@ void ql_finished(qk_tap_dance_state_t *state, void *user_data) {
|
|||||||
|
|
||||||
void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
|
void ql_reset(qk_tap_dance_state_t *state, void *user_data) {
|
||||||
// If the key was held down and now is released then switch off the layer
|
// If the key was held down and now is released then switch off the layer
|
||||||
if (ql_tap_state.state == SINGLE_HOLD) {
|
if (ql_tap_state.state == TD_SINGLE_HOLD) {
|
||||||
layer_off(_MY_LAYER);
|
layer_off(_MY_LAYER);
|
||||||
}
|
}
|
||||||
ql_tap_state.state = 0;
|
ql_tap_state.state = TD_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Associate our tap dance key with its functionality
|
// Associate our tap dance key with its functionality
|
||||||
@@ -505,7 +511,7 @@ The above code is similar to that used in previous examples. The one point to no
|
|||||||
|
|
||||||
The use of `cur_dance()` and `ql_tap_state` mirrors the above examples.
|
The use of `cur_dance()` and `ql_tap_state` mirrors the above examples.
|
||||||
|
|
||||||
The `case:SINGLE_TAP` in `ql_finished` is similar to the above examples. The `SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`.
|
The `case: TD_SINGLE_TAP` in `ql_finished` is similar to the above examples. The `TD_SINGLE_HOLD` case works in conjunction with `ql_reset()` to switch to `_MY_LAYER` while the tap dance key is held, and to switch away from `_MY_LAYER` when the key is released. This mirrors the use of `MO(_MY_LAYER)`. The `TD_DOUBLE_TAP` case works by checking whether `_MY_LAYER` is the active layer, and toggling it on or off accordingly. This mirrors the use of `TG(_MY_LAYER)`.
|
||||||
|
|
||||||
`tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here.
|
`tap_dance_actions[]` works similar to the above examples. Note that I used `ACTION_TAP_DANCE_FN_ADVANCED_TIME()` instead of `ACTION_TAP_DANCE_FN_ADVANCED()`. This is because I like my `TAPPING_TERM` to be short (\~175ms) for my non-tap-dance keys but find that this is too quick for me to reliably complete tap dance actions - thus the increased time of 275ms here.
|
||||||
|
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ The `<target>` means the following
|
|||||||
|
|
||||||
The following targets are for developers:
|
The following targets are for developers:
|
||||||
|
|
||||||
* `show-path` shows the path of the source and object files.
|
* `show_path` shows the path of the source and object files.
|
||||||
* `dump-vars` dumps the makefile variable.
|
* `dump_vars` dumps the makefile variable.
|
||||||
* `objs-size` displays the size of individual object files.
|
* `objs-size` displays the size of individual object files.
|
||||||
* `show_build_options` shows the options set in 'rules.mk'.
|
* `show_build_options` shows the options set in 'rules.mk'.
|
||||||
* `check-md5` displays the md5 checksum of the generated binary file.
|
* `check-md5` displays the md5 checksum of the generated binary file.
|
||||||
|
|||||||
@@ -0,0 +1,574 @@
|
|||||||
|
# キーコードの概要
|
||||||
|
|
||||||
|
<!---
|
||||||
|
original document: 0.11.64:docs/keycodes.md
|
||||||
|
git diff 0.11.64 HEAD -- docs/keycodes.md | cat
|
||||||
|
-->
|
||||||
|
|
||||||
|
[キーマップ](ja/keymap.md) を定義するときは、それぞれのキーに有効な定義が必要です。このページは、QMK で使えるキーコードに相当するシンボルについて記述しています。
|
||||||
|
|
||||||
|
このページは参照のみです。それぞれのキーの種類毎のリンク先のページに、それぞれのキーの機能についてもっと詳細に記載しています。
|
||||||
|
|
||||||
|
## 基本的なキーコード :id=basic-keycodes
|
||||||
|
|
||||||
|
[基本的なキーコード](ja/keycodes_basic.md) も見てください。
|
||||||
|
|
||||||
|
?> 訳注: 以下の説明は、OS のキーボード配列の設定が「US」の場合のものです。OS のキーボード配列の設定が「JIS」の場合、一部のキーは下の表と異なる文字が入力されます。例えば、`KC_LBRC` は、OS のキーボード配列の設定が US であれば「`[` または `{`」が入力されますが、JIS の場合「`@` または <code>`</code>」が入力されます。
|
||||||
|
?> これは、OS がキーボードから送信されたキーコードを解釈する際に、キーボード配列の設定によって対応する文字を変えるためです。もし、OS のキーボード配列の設定を JIS にする場合、`#include "keymap_jp.h"` を `keymap.c` に追加すると`JP_AT` のような JIS キーボードのキーキャップに対応したキーを指定できます。
|
||||||
|
|
||||||
|
|キー |エイリアス |説明 |Windows |macOS |Linux<sup>1</sup>|
|
||||||
|
|-----------------------|------------------------------|-----------------------------------------|-------------|-------------|-----------------|
|
||||||
|
|`KC_NO` |`XXXXXXX` |このキーを無視します (何もしません) 。 |*N/A* |*N/A* |*N/A* |
|
||||||
|
|`KC_TRANSPARENT` |`KC_TRNS`, `_______` | 次に低いレイヤーの非透過キーを使う |*N/A* |*N/A* |*N/A* |
|
||||||
|
|`KC_A` | |`a` と `A` |✔ |✔ |✔ |
|
||||||
|
|`KC_B` | |`b` と `B` |✔ |✔ |✔ |
|
||||||
|
|`KC_C` | |`c` と `C` |✔ |✔ |✔ |
|
||||||
|
|`KC_D` | |`d` と `D` |✔ |✔ |✔ |
|
||||||
|
|`KC_E` | |`e` と `E` |✔ |✔ |✔ |
|
||||||
|
|`KC_F` | |`f` と `F` |✔ |✔ |✔ |
|
||||||
|
|`KC_G` | |`g` と `G` |✔ |✔ |✔ |
|
||||||
|
|`KC_H` | |`h` と `H` |✔ |✔ |✔ |
|
||||||
|
|`KC_I` | |`i` と `I` |✔ |✔ |✔ |
|
||||||
|
|`KC_J` | |`j` と `J` |✔ |✔ |✔ |
|
||||||
|
|`KC_K` | |`k` と `K` |✔ |✔ |✔ |
|
||||||
|
|`KC_L` | |`l` と `L` |✔ |✔ |✔ |
|
||||||
|
|`KC_M` | |`m` と `M` |✔ |✔ |✔ |
|
||||||
|
|`KC_N` | |`n` と `N` |✔ |✔ |✔ |
|
||||||
|
|`KC_O` | |`o` と `O` |✔ |✔ |✔ |
|
||||||
|
|`KC_P` | |`p` と `P` |✔ |✔ |✔ |
|
||||||
|
|`KC_Q` | |`q` と `Q` |✔ |✔ |✔ |
|
||||||
|
|`KC_R` | |`r` と `R` |✔ |✔ |✔ |
|
||||||
|
|`KC_S` | |`s` と `S` |✔ |✔ |✔ |
|
||||||
|
|`KC_T` | |`t` と `T` |✔ |✔ |✔ |
|
||||||
|
|`KC_U` | |`u` と `U` |✔ |✔ |✔ |
|
||||||
|
|`KC_V` | |`v` と `V` |✔ |✔ |✔ |
|
||||||
|
|`KC_W` | |`w` と `W` |✔ |✔ |✔ |
|
||||||
|
|`KC_X` | |`x` と `X` |✔ |✔ |✔ |
|
||||||
|
|`KC_Y` | |`y` と `Y` |✔ |✔ |✔ |
|
||||||
|
|`KC_Z` | |`z` と `Z` |✔ |✔ |✔ |
|
||||||
|
|`KC_1` | |`1` と `!` |✔ |✔ |✔ |
|
||||||
|
|`KC_2` | |`2` と `@` |✔ |✔ |✔ |
|
||||||
|
|`KC_3` | |`3` と `#` |✔ |✔ |✔ |
|
||||||
|
|`KC_4` | |`4` と `$` |✔ |✔ |✔ |
|
||||||
|
|`KC_5` | |`5` と `%` |✔ |✔ |✔ |
|
||||||
|
|`KC_6` | |`6` と `^` |✔ |✔ |✔ |
|
||||||
|
|`KC_7` | |`7` と `&` |✔ |✔ |✔ |
|
||||||
|
|`KC_8` | |`8` と `*` |✔ |✔ |✔ |
|
||||||
|
|`KC_9` | |`9` と `(` |✔ |✔ |✔ |
|
||||||
|
|`KC_0` | |`0` と `)` |✔ |✔ |✔ |
|
||||||
|
|`KC_ENTER` |`KC_ENT` |Return (Enter) |✔ |✔ |✔ |
|
||||||
|
|`KC_ESCAPE` |`KC_ESC` |Escape |✔ |✔ |✔ |
|
||||||
|
|`KC_BSPACE` |`KC_BSPC` |Delete (Backspace) |✔ |✔ |✔ |
|
||||||
|
|`KC_TAB` | |Tab |✔ |✔ |✔ |
|
||||||
|
|`KC_SPACE` |`KC_SPC` |Spacebar |✔ |✔ |✔ |
|
||||||
|
|`KC_MINUS` |`KC_MINS` |`-` と `_` |✔ |✔ |✔ |
|
||||||
|
|`KC_EQUAL` |`KC_EQL` |`=` と `+` |✔ |✔ |✔ |
|
||||||
|
|`KC_LBRACKET` |`KC_LBRC` |`[` と `{` |✔ |✔ |✔ |
|
||||||
|
|`KC_RBRACKET` |`KC_RBRC` |`]` と `}` |✔ |✔ |✔ |
|
||||||
|
|`KC_BSLASH` |`KC_BSLS` |`\` と `\|` |✔ |✔ |✔ |
|
||||||
|
|`KC_NONUS_HASH` |`KC_NUHS` |Non-US `#` と `~` |✔ |✔ |✔ |
|
||||||
|
|`KC_SCOLON` |`KC_SCLN` |`;` と `:` |✔ |✔ |✔ |
|
||||||
|
|`KC_QUOTE` |`KC_QUOT` |`'` と `"` |✔ |✔ |✔ |
|
||||||
|
|`KC_GRAVE` |`KC_GRV`, `KC_ZKHK` |<code>`</code> と `~`, JIS 全角/半角 |✔ |✔ |✔ |
|
||||||
|
|`KC_COMMA` |`KC_COMM` |`,` と `<` |✔ |✔ |✔ |
|
||||||
|
|`KC_DOT` | |`.` と `>` |✔ |✔ |✔ |
|
||||||
|
|`KC_SLASH` |`KC_SLSH` |`/` と `?` |✔ |✔ |✔ |
|
||||||
|
|`KC_CAPSLOCK` |`KC_CLCK`, `KC_CAPS` |Caps Lock |✔ |✔ |✔ |
|
||||||
|
|`KC_F1` | |F1 |✔ |✔ |✔ |
|
||||||
|
|`KC_F2` | |F2 |✔ |✔ |✔ |
|
||||||
|
|`KC_F3` | |F3 |✔ |✔ |✔ |
|
||||||
|
|`KC_F4` | |F4 |✔ |✔ |✔ |
|
||||||
|
|`KC_F5` | |F5 |✔ |✔ |✔ |
|
||||||
|
|`KC_F6` | |F6 |✔ |✔ |✔ |
|
||||||
|
|`KC_F7` | |F7 |✔ |✔ |✔ |
|
||||||
|
|`KC_F8` | |F8 |✔ |✔ |✔ |
|
||||||
|
|`KC_F9` | |F9 |✔ |✔ |✔ |
|
||||||
|
|`KC_F10` | |F10 |✔ |✔ |✔ |
|
||||||
|
|`KC_F11` | |F11 |✔ |✔ |✔ |
|
||||||
|
|`KC_F12` | |F12 |✔ |✔ |✔ |
|
||||||
|
|`KC_PSCREEN` |`KC_PSCR` |Print Screen |✔ |✔<sup>2</sup>|✔ |
|
||||||
|
|`KC_SCROLLLOCK` |`KC_SLCK`, `KC_BRMD` |Scroll Lock, 画面の明るさダウン (macOS) |✔ |✔<sup>2</sup>|✔ |
|
||||||
|
|`KC_PAUSE` |`KC_PAUS`, `KC_BRK`, `KC_BRMU`|Pause, 画面の明るさアップ (macOS) |✔ |✔<sup>2</sup>|✔ |
|
||||||
|
|`KC_INSERT` |`KC_INS` |Insert |✔ | |✔ |
|
||||||
|
|`KC_HOME` | |Home |✔ |✔ |✔ |
|
||||||
|
|`KC_PGUP` | |Page Up |✔ |✔ |✔ |
|
||||||
|
|`KC_DELETE` |`KC_DEL` |Forward Delete |✔ |✔ |✔ |
|
||||||
|
|`KC_END` | |End |✔ |✔ |✔ |
|
||||||
|
|`KC_PGDOWN` |`KC_PGDN` |Page Down |✔ |✔ |✔ |
|
||||||
|
|`KC_RIGHT` |`KC_RGHT` |右矢印 |✔ |✔ |✔ |
|
||||||
|
|`KC_LEFT` | |左矢印 |✔ |✔ |✔ |
|
||||||
|
|`KC_DOWN` | |下矢印 |✔ |✔ |✔ |
|
||||||
|
|`KC_UP` | |上矢印 |✔ |✔ |✔ |
|
||||||
|
|`KC_NUMLOCK` |`KC_NLCK` |テンキー Num Lock と Clear |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_SLASH` |`KC_PSLS` |テンキー `/` |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_ASTERISK` |`KC_PAST` |テンキー `*` |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_MINUS` |`KC_PMNS` |テンキー `-` |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_PLUS` |`KC_PPLS` |テンキー `+` |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_ENTER` |`KC_PENT` |テンキー Enter |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_1` |`KC_P1` |テンキー `1` と End |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_2` |`KC_P2` |テンキー `2` と下矢印 |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_3` |`KC_P3` |テンキー `3` と Page Down |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_4` |`KC_P4` |テンキー `4` と左矢印 |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_5` |`KC_P5` |テンキー `5` |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_6` |`KC_P6` |テンキー `6` と右矢印 |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_7` |`KC_P7` |テンキー `7` と Home |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_8` |`KC_P8` |テンキー `8` と上矢印 |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_9` |`KC_P9` |テンキー `9` と Page Up |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_0` |`KC_P0` |テンキー `0` と Insert |✔ |✔ |✔ |
|
||||||
|
|`KC_KP_DOT` |`KC_PDOT` |テンキー `.` と Delete |✔ |✔ |✔ |
|
||||||
|
|`KC_NONUS_BSLASH` |`KC_NUBS` |Non-US `\` と `\|` |✔ |✔ |✔ |
|
||||||
|
|`KC_APPLICATION` |`KC_APP` |アプリケーションキー (Windows コンテキストメニューキー) |✔ | |✔ |
|
||||||
|
|`KC_POWER` | |システム電源 | |✔<sup>3</sup>|✔ |
|
||||||
|
|`KC_KP_EQUAL` |`KC_PEQL` |テンキー `=` |✔ |✔ |✔ |
|
||||||
|
|`KC_F13` | |F13 |✔ |✔ |✔ |
|
||||||
|
|`KC_F14` | |F14 |✔ |✔ |✔ |
|
||||||
|
|`KC_F15` | |F15 |✔ |✔ |✔ |
|
||||||
|
|`KC_F16` | |F16 |✔ |✔ |✔ |
|
||||||
|
|`KC_F17` | |F17 |✔ |✔ |✔ |
|
||||||
|
|`KC_F18` | |F18 |✔ |✔ |✔ |
|
||||||
|
|`KC_F19` | |F19 |✔ |✔ |✔ |
|
||||||
|
|`KC_F20` | |F20 |✔ | |✔ |
|
||||||
|
|`KC_F21` | |F21 |✔ | |✔ |
|
||||||
|
|`KC_F22` | |F22 |✔ | |✔ |
|
||||||
|
|`KC_F23` | |F23 |✔ | |✔ |
|
||||||
|
|`KC_F24` | |F24 |✔ | |✔ |
|
||||||
|
|`KC_EXECUTE` |`KC_EXEC` |Execute | | |✔ |
|
||||||
|
|`KC_HELP` | |Help | | |✔ |
|
||||||
|
|`KC_MENU` | |Menu | | |✔ |
|
||||||
|
|`KC_SELECT` |`KC_SLCT` |Select | | |✔ |
|
||||||
|
|`KC_STOP` | |Stop | | |✔ |
|
||||||
|
|`KC_AGAIN` |`KC_AGIN` |Again | | |✔ |
|
||||||
|
|`KC_UNDO` | |アンドゥ | | |✔ |
|
||||||
|
|`KC_CUT` | |カット | | |✔ |
|
||||||
|
|`KC_COPY` | |コピー | | |✔ |
|
||||||
|
|`KC_PASTE` |`KC_PSTE` |ペースト | | |✔ |
|
||||||
|
|`KC_FIND` | |検索 | | |✔ |
|
||||||
|
|`KC__MUTE` | |ミュート | |✔ |✔ |
|
||||||
|
|`KC__VOLUP` | |音量アップ | |✔ |✔ |
|
||||||
|
|`KC__VOLDOWN` | |音量ダウン | |✔ |✔ |
|
||||||
|
|`KC_LOCKING_CAPS` |`KC_LCAP` |Caps Lock のロック |✔ |✔ | |
|
||||||
|
|`KC_LOCKING_NUM` |`KC_LNUM` |Num Lock のロック |✔ |✔ | |
|
||||||
|
|`KC_LOCKING_SCROLL` |`KC_LSCR` |Scroll Lock のロック |✔ |✔ | |
|
||||||
|
|`KC_KP_COMMA` |`KC_PCMM` |テンキー `,` | | |✔ |
|
||||||
|
|`KC_KP_EQUAL_AS400` | |AS/400 キーボードのテンキー `=` | | | |
|
||||||
|
|`KC_INT1` |`KC_RO` |JIS `\` と `_` |✔ | |✔ |
|
||||||
|
|`KC_INT2` |`KC_KANA` |JIS カタカナ/ひらがな |✔ | |✔ |
|
||||||
|
|`KC_INT3` |`KC_JYEN` |JIS `¥` と `\|` |✔ | |✔ |
|
||||||
|
|`KC_INT4` |`KC_HENK` |JIS 変換 |✔ | |✔ |
|
||||||
|
|`KC_INT5` |`KC_MHEN` |JIS 無変換 |✔ | |✔ |
|
||||||
|
|`KC_INT6` | |JIS テンキー `,` | | |✔ |
|
||||||
|
|`KC_INT7` | |International 7 | | | |
|
||||||
|
|`KC_INT8` | |International 8 | | | |
|
||||||
|
|`KC_INT9` | |International 9 | | | |
|
||||||
|
|`KC_LANG1` |`KC_HAEN` |ハングル/英語 | | |✔ |
|
||||||
|
|`KC_LANG2` |`KC_HANJ` |韓文漢字 | | |✔ |
|
||||||
|
|`KC_LANG3` | |JIS カタカナ | | |✔ |
|
||||||
|
|`KC_LANG4` | |JIS ひらがな | | |✔ |
|
||||||
|
|`KC_LANG5` | |JIS 全角/半角 | | |✔ |
|
||||||
|
|`KC_LANG6` | |Language 6 | | | |
|
||||||
|
|`KC_LANG7` | |Language 7 | | | |
|
||||||
|
|`KC_LANG8` | |Language 8 | | | |
|
||||||
|
|`KC_LANG9` | |Language 9 | | | |
|
||||||
|
|`KC_ALT_ERASE` |`KC_ERAS` |Alternate Erase | | | |
|
||||||
|
|`KC_SYSREQ` | |SysReq/Attention | | | |
|
||||||
|
|`KC_CANCEL` | |Cancel | | | |
|
||||||
|
|`KC_CLEAR` |`KC_CLR` |Clear | | |✔ |
|
||||||
|
|`KC_PRIOR` | |Prior | | | |
|
||||||
|
|`KC_RETURN` | |Return | | | |
|
||||||
|
|`KC_SEPARATOR` | |Separator | | | |
|
||||||
|
|`KC_OUT` | |Out | | | |
|
||||||
|
|`KC_OPER` | |Oper | | | |
|
||||||
|
|`KC_CLEAR_AGAIN` | |Clear/Again | | | |
|
||||||
|
|`KC_CRSEL` | |CrSel/Props | | | |
|
||||||
|
|`KC_EXSEL` | |ExSel | | | |
|
||||||
|
|`KC_LCTRL` |`KC_LCTL` |左 Control |✔ |✔ |✔ |
|
||||||
|
|`KC_LSHIFT` |`KC_LSFT` |左 Shift |✔ |✔ |✔ |
|
||||||
|
|`KC_LALT` |`KC_LOPT` |左 Alt (Option) |✔ |✔ |✔ |
|
||||||
|
|`KC_LGUI` |`KC_LCMD`, `KC_LWIN` |左 GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
|
||||||
|
|`KC_RCTRL` |`KC_RCTL` |右 Control |✔ |✔ |✔ |
|
||||||
|
|`KC_RSHIFT` |`KC_RSFT` |右 Shift |✔ |✔ |✔ |
|
||||||
|
|`KC_RALT` |`KC_ROPT`, `KC_ALGR` |右 Alt (Option/AltGr) |✔ |✔ |✔ |
|
||||||
|
|`KC_RGUI` |`KC_RCMD`, `KC_RWIN` |右 GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
|
||||||
|
|`KC_SYSTEM_POWER` |`KC_PWR` |システム電源オフ |✔ |✔<sup>3</sup>|✔ |
|
||||||
|
|`KC_SYSTEM_SLEEP` |`KC_SLEP` |システムスリープ |✔ |✔<sup>3</sup>|✔ |
|
||||||
|
|`KC_SYSTEM_WAKE` |`KC_WAKE` |システムスリープ解除 | |✔<sup>3</sup>|✔ |
|
||||||
|
|`KC_AUDIO_MUTE` |`KC_MUTE` |ミュート |✔ |✔ |✔ |
|
||||||
|
|`KC_AUDIO_VOL_UP` |`KC_VOLU` |音量アップ |✔ |✔<sup>4</sup>|✔ |
|
||||||
|
|`KC_AUDIO_VOL_DOWN` |`KC_VOLD` |音量ダウン |✔ |✔<sup>4</sup>|✔ |
|
||||||
|
|`KC_MEDIA_NEXT_TRACK` |`KC_MNXT` |次の曲へ |✔ |✔<sup>5</sup>|✔ |
|
||||||
|
|`KC_MEDIA_PREV_TRACK` |`KC_MPRV` |前の曲へ |✔ |✔<sup>5</sup>|✔ |
|
||||||
|
|`KC_MEDIA_STOP` |`KC_MSTP` |再生停止 |✔ | |✔ |
|
||||||
|
|`KC_MEDIA_PLAY_PAUSE` |`KC_MPLY` |再生/一時停止 |✔ |✔ |✔ |
|
||||||
|
|`KC_MEDIA_SELECT` |`KC_MSEL` |Media Player 起動 |✔ | |✔ |
|
||||||
|
|`KC_MEDIA_EJECT` |`KC_EJCT` |イジェクト | |✔ |✔ |
|
||||||
|
|`KC_MAIL` | |メール起動 |✔ | |✔ |
|
||||||
|
|`KC_CALCULATOR` |`KC_CALC` |電卓起動 |✔ | |✔ |
|
||||||
|
|`KC_MY_COMPUTER` |`KC_MYCM` |マイコンピュータを開く |✔ | |✔ |
|
||||||
|
|`KC_WWW_SEARCH` |`KC_WSCH` |ブラウザ検索 |✔ | |✔ |
|
||||||
|
|`KC_WWW_HOME` |`KC_WHOM` |ブラウザホーム画面 |✔ | |✔ |
|
||||||
|
|`KC_WWW_BACK` |`KC_WBAK` |ブラウザ戻る |✔ | |✔ |
|
||||||
|
|`KC_WWW_FORWARD` |`KC_WFWD` |ブラウザ進む |✔ | |✔ |
|
||||||
|
|`KC_WWW_STOP` |`KC_WSTP` |ブラウザ読み込み中止 |✔ | |✔ |
|
||||||
|
|`KC_WWW_REFRESH` |`KC_WREF` |ブラウザ再読み込み |✔ | |✔ |
|
||||||
|
|`KC_WWW_FAVORITES` |`KC_WFAV` |ブラウザお気に入り |✔ | |✔ |
|
||||||
|
|`KC_MEDIA_FAST_FORWARD`|`KC_MFFD` |次の曲へ |✔ |✔<sup>5</sup>|✔ |
|
||||||
|
|`KC_MEDIA_REWIND` |`KC_MRWD` |前の曲へ |✔<sup>6</sup>|✔<sup>5</sup>|✔ |
|
||||||
|
|`KC_BRIGHTNESS_UP` |`KC_BRIU` |画面の明るさアップ |✔ |✔ |✔ |
|
||||||
|
|`KC_BRIGHTNESS_DOWN` |`KC_BRID` |画面の明るさダウン |✔ |✔ |✔ |
|
||||||
|
|
||||||
|
<sup>1. Linux カーネル HID ドライバは [ほぼ全てのキーコード](https://github.com/torvalds/linux/blob/master/drivers/hid/hid-input.c) を識別しますが、デフォルトの関連付けは デスクトップ環境/ウィンドウマネージャによって決まります。</sup><br/>
|
||||||
|
<sup>2. F13-F15 として取り扱われます。</sup><br/>
|
||||||
|
<sup>3. 約3秒間押していると、プロンプトが表示されます。</sup><br/>
|
||||||
|
<sup>4. Shift と Option を押していると、ボリュームレベルの細かいコントロールが可能になります。</sup><br/>
|
||||||
|
<sup>5. iTunes では、タップすると1曲全体がスキップされます。押していると曲の中で早送り/巻き戻しになります。</sup><br/>
|
||||||
|
<sup>6. Windows Media Player は巻き戻しキーを識別しませんが、VLC では早送り/巻き戻しキーで再生速度が変更されます。</sup>
|
||||||
|
|
||||||
|
## Quantum キーコード :id=quantum-keycodes
|
||||||
|
|
||||||
|
[Quantum キーコード](ja/quantum_keycodes.md#qmk-keycodes) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス |説明 |
|
||||||
|
|--------------|-----------|---------------------------------------------------------|
|
||||||
|
|`RESET` | |ファームウエア書き込みのためにキーボードをブートローダーモードにします |
|
||||||
|
|`DEBUG` | |デバッグモードを切り替えます |
|
||||||
|
|`EEPROM_RESET`|`EEP_RST` |キーボードの EEPROM (不揮発メモリ) を再初期化します |
|
||||||
|
|
||||||
|
## オーディオキー :id=audio-keys
|
||||||
|
|
||||||
|
[オーディオ](ja/feature_audio.md) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス |説明 |
|
||||||
|
|----------------|------------|---------------------------------------|
|
||||||
|
|`AU_ON` | |オーディオモードオン |
|
||||||
|
|`AU_OFF` | |オーディオモードオフ |
|
||||||
|
|`AU_TOG` | |オーディオモードを切り替えます |
|
||||||
|
|`CLICKY_TOGGLE` |`CK_TOGG` |オーディオクリックモードを切り替えます |
|
||||||
|
|`CLICKY_UP` |`CK_UP` |クリック音の周波数を増やします |
|
||||||
|
|`CLICKY_DOWN` |`CK_DOWN` |クリック音の周波数を減らします |
|
||||||
|
|`CLICKY_RESET` |`CK_RST` |周波数をデフォルトに再設定します |
|
||||||
|
|`MU_ON` | |音楽モードをオンにします |
|
||||||
|
|`MU_OFF` | |音楽モードをオフにします |
|
||||||
|
|`MU_TOG` | |音楽モードを切り替えます |
|
||||||
|
|`MU_MOD` | |音楽モードを循環します |
|
||||||
|
|
||||||
|
## バックライト :id=backlighting
|
||||||
|
|
||||||
|
[バックライト](ja/feature_backlight.md) も見てください。
|
||||||
|
|
||||||
|
|キー |説明 |
|
||||||
|
|---------|-------------------------------------|
|
||||||
|
|`BL_TOGG`|バックライトをオンあるいはオフにする |
|
||||||
|
|`BL_STEP`|バックライトレベルを循環する |
|
||||||
|
|`BL_ON` |バックライトを最大輝度にセットする |
|
||||||
|
|`BL_OFF` |バックライトをオフにする |
|
||||||
|
|`BL_INC` |バックライトのレベルを上げる |
|
||||||
|
|`BL_DEC` |バックライトのレベルを下げる |
|
||||||
|
|`BL_BRTG`|バックライトの明滅動作を切り替える |
|
||||||
|
|
||||||
|
## ブートマジック :id=bootmagic
|
||||||
|
|
||||||
|
[ブートマジック](ja/feature_bootmagic.md) も見てください。
|
||||||
|
|
||||||
|
| キー | エイリアス| 説明 |
|
||||||
|
|------------------------------------|-----------|-------------------------------------------------------|
|
||||||
|
| `MAGIC_SWAP_CONTROL_CAPSLOCK` | `CL_SWAP` | Caps Lock と左 Control の入れ替え |
|
||||||
|
| `MAGIC_UNSWAP_CONTROL_CAPSLOCK` | `CL_NORM` | Caps Lock と左 Control の入れ替えの解除 |
|
||||||
|
| `MAGIC_CAPSLOCK_TO_CONTROL` | `CL_CTRL` | Caps Lock を Control として扱う |
|
||||||
|
| `MAGIC_UNCAPSLOCK_TO_CONTROL` | `CL_CAPS` | Caps Lock を Control として扱うことを止める |
|
||||||
|
| `MAGIC_SWAP_LCTL_LGUI` | `LCG_SWP` | 左 Control と GUI の入れ替え |
|
||||||
|
| `MAGIC_UNSWAP_LCTL_LGUI` | `LCG_NRM` | 左 Control と GUI の入れ替えを解除 |
|
||||||
|
| `MAGIC_SWAP_RCTL_RGUI` | `RCG_SWP` | 右 Control と GUI の入れ替え |
|
||||||
|
| `MAGIC_UNSWAP_RCTL_RGUI` | `RCG_NRM` | 右 Control と GUI の入れ替えを解除 |
|
||||||
|
| `MAGIC_SWAP_CTL_GUI` | `CG_SWAP` | 両側の Control と GUI の入れ替え |
|
||||||
|
| `MAGIC_UNSWAP_CTL_GUI` | `CG_NORM` | 両側の Control と GUI の入れ替えを解除 |
|
||||||
|
| `MAGIC_TOGGLE_CTL_GUI` | `CG_TOGG` | 両側の Control と GUI の入れ替えの切り替え |
|
||||||
|
| `MAGIC_SWAP_LALT_LGUI` | `LAG_SWP` | 左 Alt と GUI の入れ替え |
|
||||||
|
| `MAGIC_UNSWAP_LALT_LGUI` | `LAG_NRM` | 左 Alt と GUI の入れ替えを解除 |
|
||||||
|
| `MAGIC_SWAP_RALT_RGUI` | `RAG_SWP` | 右 Alt と GUI の入れ替え |
|
||||||
|
| `MAGIC_UNSWAP_RALT_RGUI` | `RAG_NRM` | 右 Alt と GUI の入れ替えを解除 |
|
||||||
|
| `MAGIC_SWAP_ALT_GUI` | `AG_SWAP` | 両側の Alt と GUI の入れ替え |
|
||||||
|
| `MAGIC_UNSWAP_ALT_GUI` | `AG_NORM` | 両側の Alt と GUI の入れ替えを解除 |
|
||||||
|
| `MAGIC_TOGGLE_ALT_GUI` | `AG_TOGG` | 両側の Alt と GUI の入れ替えの切り替え |
|
||||||
|
| `MAGIC_NO_GUI` | `GUI_OFF` | GUI キーを無効にする |
|
||||||
|
| `MAGIC_UNNO_GUI` | `GUI_ON` | GUI キーを有効にする |
|
||||||
|
| `MAGIC_SWAP_GRAVE_ESC` | `GE_SWAP` | <code>`</code> とエスケープの入れ替え |
|
||||||
|
| `MAGIC_UNSWAP_GRAVE_ESC` | `GE_NORM` | <code>`</code> とエスケープの入れ替えを解除 |
|
||||||
|
| `MAGIC_SWAP_BACKSLASH_BACKSPACE` | `BS_SWAP` | `\` と Backspace を入れ替え |
|
||||||
|
| `MAGIC_UNSWAP_BACKSLASH_BACKSPACE` | `BS_NORM` | `\` と Backspace の入れ替えを解除する |
|
||||||
|
| `MAGIC_HOST_NKRO` | `NK_ON` | N キーロールオーバーを有効にする |
|
||||||
|
| `MAGIC_UNHOST_NKRO` | `NK_OFF` | N キーロールオーバーを無効にする |
|
||||||
|
| `MAGIC_TOGGLE_NKRO` | `NK_TOGG` | N キーロールオーバーの有効・無効を切り替え |
|
||||||
|
| `MAGIC_EE_HANDS_LEFT` | `EH_LEFT` | 分割キーボードのマスター側を左手に設定(`EE_HANDS` 用) |
|
||||||
|
| `MAGIC_EE_HANDS_RIGHT` | `EH_RGHT` | 分割キーボードのマスター側を右手に設定(`EE_HANDS` 用) |
|
||||||
|
|
||||||
|
## Bluetooth :id=bluetooth
|
||||||
|
|
||||||
|
[Bluetooth](ja/feature_bluetooth.md) も見てください。
|
||||||
|
|
||||||
|
|
||||||
|
|キー |説明 |
|
||||||
|
|----------|--------------------------------------|
|
||||||
|
|`OUT_AUTO`|USB と Bluetooth を自動的に切り替える |
|
||||||
|
|`OUT_USB` |USB のみ |
|
||||||
|
|`OUT_BT` |Bluetooth のみ |
|
||||||
|
|
||||||
|
## 動的マクロ :id=dynamic-macros
|
||||||
|
|
||||||
|
[動的マクロ](ja/feature_dynamic_macros.md) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス |説明 |
|
||||||
|
|-----------------|---------|-------------------------------------|
|
||||||
|
|`DYN_REC_START1` |`DM_REC1`|マクロ 1 の記録を開始します |
|
||||||
|
|`DYN_REC_START2` |`DM_REC2`|マクロ 2 の記録を開始します |
|
||||||
|
|`DYN_MACRO_PLAY1`|`DM_PLY1`|マクロ 1 を再生します |
|
||||||
|
|`DYN_MACRO_PLAY2`|`DM_PLY2`|マクロ 2 を再生します |
|
||||||
|
|`DYN_REC_STOP` |`DM_RSTP`|現在記録中のマクロの記録を終了します |
|
||||||
|
|
||||||
|
## グレイブエスケープ :id=grave-escape
|
||||||
|
|
||||||
|
[グレイブエスケープ](ja/feature_grave_esc.md) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス |説明 |
|
||||||
|
|-----------|---------|------------------------------------------------------------------|
|
||||||
|
|`GRAVE_ESC`|`KC_GESC`|押された場合に Escape。Shift あるいは GUI が押されたままの場合は <code>`</code>|
|
||||||
|
|
||||||
|
## キーロック :id=key-lock
|
||||||
|
|
||||||
|
[キーロック](ja/feature_key_lock.md) も見てください。
|
||||||
|
|
||||||
|
|キー |説明 |
|
||||||
|
|---------|--------------------------------------------------|
|
||||||
|
|`KC_LOCK`|キーが再び押されるまで次のキーを押したままにします |
|
||||||
|
|
||||||
|
## レイヤー切り替え :id=layer-switching
|
||||||
|
|
||||||
|
[レイヤー切り替え](ja/feature_layers.md#switching-and-toggling-layers) も見てください。
|
||||||
|
|
||||||
|
|キー |説明 |
|
||||||
|
|----------------|--------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
|`DF(layer)` |指定されたレイヤーを基本 (デフォルト) レイヤーに設定する |
|
||||||
|
|`MO(layer)` |キーを押したら一時的に `layer` を切り替える。(切り替え先のレイヤーには `KC_TRNS` が必要です) |
|
||||||
|
|`OSL(layer)` |次のキーが押されるまで、一時的にレイヤーをアクティブにします。詳細は [ワンショットキー](ja/one_shot_keys.md) のとおり。 |
|
||||||
|
|`LM(layer, mod)`|`mod` がアクティブな状態で (MO のように) 一時的にレイヤーをアクティブにします。ここでは、`mod` は mods_bit のことです。Mod については [こちら](ja/mod_tap.md) で見ることができます。実装例: `LM(LAYER_1, MOD_LALT)` |
|
||||||
|
|`LT(layer, kc)` |押していると `layer` をオンにし、タップすると `kc` になります。 |
|
||||||
|
|`TG(layer)` |`layer` のオン・オフを切り替え |
|
||||||
|
|`TO(layer)` |`layer` をオンにして、デフォルトレイヤーを除く他のレイヤーをオフにします。 |
|
||||||
|
|`TT(layer)` |複数回タップしない限り `MO` のように動作し、複数回タップすると `layer` をオンにトグルします。 |
|
||||||
|
|
||||||
|
## リーダーキー :id=leader-key
|
||||||
|
|
||||||
|
[リーダーキー](ja/feature_leader_key.md) も見てください。
|
||||||
|
|
||||||
|
|キー |説明 |
|
||||||
|
|---------|-------------------------------|
|
||||||
|
|`KC_LEAD`|リーダーキーのシーケンスを開始 |
|
||||||
|
|
||||||
|
## マウスキー :id=mouse-keys
|
||||||
|
|
||||||
|
[マウスキー](ja/feature_mouse_keys.md) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス |説明 |
|
||||||
|
|----------------|---------|-------------------------|
|
||||||
|
|`KC_MS_UP` |`KC_MS_U`|マウスカーソルを上に移動 |
|
||||||
|
|`KC_MS_DOWN` |`KC_MS_D`|マウスカーソルを下に移動 |
|
||||||
|
|`KC_MS_LEFT` |`KC_MS_L`|マウスカーソルを左に移動 |
|
||||||
|
|`KC_MS_RIGHT` |`KC_MS_R`|マウスカーソルを右に移動 |
|
||||||
|
|`KC_MS_BTN1` |`KC_BTN1`|ボタン1を押す |
|
||||||
|
|`KC_MS_BTN2` |`KC_BTN2`|ボタン2を押す |
|
||||||
|
|`KC_MS_BTN3` |`KC_BTN3`|ボタン3を押す |
|
||||||
|
|`KC_MS_BTN4` |`KC_BTN4`|ボタン4を押す |
|
||||||
|
|`KC_MS_BTN5` |`KC_BTN5`|ボタン5を押す |
|
||||||
|
|`KC_MS_WH_UP` |`KC_WH_U`|ホイールを向こう側に回転 |
|
||||||
|
|`KC_MS_WH_DOWN` |`KC_WH_D`|ホイールを手前側に回転 |
|
||||||
|
|`KC_MS_WH_LEFT` |`KC_WH_L`|ホイールを左に倒す |
|
||||||
|
|`KC_MS_WH_RIGHT`|`KC_WH_R`|ホイールを右に倒す |
|
||||||
|
|`KC_MS_ACCEL0` |`KC_ACL0`|速度を0に設定 |
|
||||||
|
|`KC_MS_ACCEL1` |`KC_ACL1`|速度を1に設定 |
|
||||||
|
|`KC_MS_ACCEL2` |`KC_ACL2`|速度を2に設定 |
|
||||||
|
|
||||||
|
## 修飾キー :id=modifiers
|
||||||
|
|
||||||
|
[修飾キー](ja/feature_advanced_keycodes.md#modifier-keys) も見てください。
|
||||||
|
|
||||||
|
| キー | エイリアス | 説明 |
|
||||||
|
|------------|---------------------------------|---------------------------------------------------------------|
|
||||||
|
| `LCTL(kc)` | `C(kc)` | 左 Control を押しながら `kc` を押します。 |
|
||||||
|
| `LSFT(kc)` | `S(kc)` | 左 Shift を押しながら `kc` を押します。 |
|
||||||
|
| `LALT(kc)` | `A(kc)`, `LOPT(kc)` | 左 Alt を押しながら `kc`を押します。 |
|
||||||
|
| `LGUI(kc)` | `G(kc)`, `LCMD(kc)`, `LWIN(kc)` | 左 GUI を押しながら `kc` を押します。 |
|
||||||
|
| `RCTL(kc)` | | 右 Control を押しながら `kc` を押します。 |
|
||||||
|
| `RSFT(kc)` | | 右 Shift を押しながら `kc` を押します。 |
|
||||||
|
| `RALT(kc)` | `ROPT(kc)`, `ALGR(kc)` | 右 Alt (AltGr) を押しながら `kc` を押します。 |
|
||||||
|
| `RGUI(kc)` | `RCMD(kc)`, `LWIN(kc)` | 右 GUI を押しながら `kc` を押します。 |
|
||||||
|
| `SGUI(kc)` | `SCMD(kc)`, `SWIN(kc)` | 左 Shift と GUI を押しながら `kc` を押します。 |
|
||||||
|
| `LCA(kc)` | | 左 Control と Alt を押しながら `kc` を押します。 |
|
||||||
|
| `LSA(kc)` | | 左 Shift と Alt を押しながら `kc` を押します。 |
|
||||||
|
| `RSA(kc)` |`SAGR(kc)` | 右 Shift と Alt (AltGr) を押しながら `kc` を押します。 |
|
||||||
|
| `RCS(kc)` | | 右 Control と Shift を押しながら `kc` を押します。 |
|
||||||
|
| `LCAG(kc)` | | 左 Control、Alt、GUI を押しながら `kc` を押します。 |
|
||||||
|
| `MEH(kc)` | | 左 Control、Shift、Alt を押しながら `kc` を押します。 |
|
||||||
|
| `HYPR(kc)` | | 左 Control、Shift、Alt、GUI を押しながら `kc` を押します。 |
|
||||||
|
| `KC_MEH` | | 左 Control、Shift、Alt |
|
||||||
|
| `KC_HYPR` | | 左 Control、Shift、Alt、GUI |
|
||||||
|
|
||||||
|
|
||||||
|
## モッドタップキー :id=mod-tap-keys
|
||||||
|
|
||||||
|
[モッドタップキー](ja/mod_tap.md) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス | 説明 |
|
||||||
|
|--------------|-------------------------------------------------------------------|------------------------------------------------------------------------|
|
||||||
|
| `MT(mod, kc)`| |押したままの場合は `mod` 、タップした場合は `kc` |
|
||||||
|
| `LCTL_T(kc)` | `CTL_T(kc)` | 押したままの場合は左 Control、タップした場合は `kc` |
|
||||||
|
| `LSFT_T(kc)` | `SFT_T(kc)` | 押したままの場合は左 Shift、タップした場合は `kc` |
|
||||||
|
| `LALT_T(kc)` | `LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` | 押したままの場合は左 Alt、タップした場合は `kc` |
|
||||||
|
| `LGUI_T(kc)` | `LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)` | 押したままの場合は左 GUI、タップした場合は `kc` |
|
||||||
|
| `RCTL_T(kc)` | | 押したままの場合は右 Control、タップした場合は `kc` |
|
||||||
|
| `RSFT_T(kc)` | | 押したままの場合は右 Shift、タップした場合は `kc` |
|
||||||
|
| `RALT_T(kc)` | `ROPT_T(kc)`, `ALGR_T(kc)` | 押したままの場合は右 Alt (AltGr) 、タップした場合は `kc` |
|
||||||
|
| `RGUI_T(kc)` | `RCMD_T(kc)`, `RWIN_T(kc)` | 押したままの場合は右 GUI、タップした場合は `kc` |
|
||||||
|
| `SGUI_T(kc)` | `SCMD_T(kc)`, `SWIN_T(kc)` | 押したままの場合は左 Shift と GUI、タップした場合は `kc` |
|
||||||
|
| `LCA_T(kc)` | | 押したままの場合は左 Control と Alt、タップした場合は `kc` |
|
||||||
|
| `LSA_T(kc)` | | 押したままの場合は左 Shift と Alt、タップした場合は `kc` |
|
||||||
|
| `RSA_T(kc)` |`SAGR_T(kc)` | 押したままの場合は右 Shift と Alt (AltGr) 、タップした場合は `kc` |
|
||||||
|
| `RCS_T(kc)` | | 押したままの場合は右 Control と Shift、タップした場合は `kc` |
|
||||||
|
| `LCAG_T(kc)` | | 押したままの場合は左 Control、Alt、GUI、タップした場合は `kc` |
|
||||||
|
| `RCAG_T(kc)` | | 押したままの場合は右 Control、Alt、GUI、タップした場合は `kc` |
|
||||||
|
| `C_S_T(kc)` | | 押したままの場合は左 Control と Shift、タップした場合は `kc` |
|
||||||
|
| `MEH_T(kc)` | | 押したままの場合は左 Control、Shift、Alt、タップした場合は `kc` |
|
||||||
|
| `HYPR_T(kc)` | `ALL_T(kc)` | 押したままの場合は左 Control、Shift、Alt、GUI、タップした場合は `kc` - より詳しくは[ここ](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)を見てください |
|
||||||
|
|
||||||
|
## RGB ライト :id=rgb-lighting
|
||||||
|
|
||||||
|
[RGB ライト](ja/feature_rgblight.md) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス|説明 |
|
||||||
|
|-------------------|----------|---------------------------------------------------------------------|
|
||||||
|
|`RGB_TOG` | |RGB ライトのオン・オフを切り替え |
|
||||||
|
|`RGB_MODE_FORWARD` |`RGB_MOD` |RGB モードを順送りで変更し、Shift を押していると逆順で変更します。 |
|
||||||
|
|`RGB_MODE_REVERSE` |`RGB_RMOD`|RGB モードを逆順で変更し、Shift を押していると順送りで変更します。 |
|
||||||
|
|`RGB_HUI` | |色相 (HUE) を増加させ、Shift を押していると減少させます。 |
|
||||||
|
|`RGB_HUD` | |色相 (HUE) を減少させ、Shift を押していると増加させます。 |
|
||||||
|
|`RGB_SAI` | |彩度 (SAT) を増加させ、Shift を押していると減少させます。 |
|
||||||
|
|`RGB_SAD` | |彩度 (SAT) を減少させ、Shift を押していると増加させます。 |
|
||||||
|
|`RGB_VAI` | |明度 (VAL/brightness) を増加させ、Shift を押していると減少させます。 |
|
||||||
|
|`RGB_VAD` | |明度 (VAL/brightness) を減少させ、Shift を押していると増加させます。 |
|
||||||
|
|`RGB_MODE_PLAIN` |`RGB_M_P `|静止(動き無し) モードに固定します |
|
||||||
|
|`RGB_MODE_BREATHE` |`RGB_M_B` |明滅アニメーションモード |
|
||||||
|
|`RGB_MODE_RAINBOW` |`RGB_M_R` |レインボーアニメーションモード |
|
||||||
|
|`RGB_MODE_SWIRL` |`RGB_M_SW`|渦巻アニメーションモード |
|
||||||
|
|`RGB_MODE_SNAKE` |`RGB_M_SN`|スネークアニメーションモード |
|
||||||
|
|`RGB_MODE_KNIGHT` |`RGB_M_K` |「ナイトライダー」アニメーションモード |
|
||||||
|
|`RGB_MODE_XMAS` |`RGB_M_X` |クリスマスアニメーションモード |
|
||||||
|
|`RGB_MODE_GRADIENT`|`RGB_M_G` |固定階調アニメーションモード |
|
||||||
|
|`RGB_MODE_RGBTEST` |`RGB_M_T` |赤、緑、青のテストアニメーションモード |
|
||||||
|
|
||||||
|
## RGB マトリックスライト :id=rgb-matrix-lighting
|
||||||
|
|
||||||
|
[RGB マトリックスライト](ja/feature_rgb_matrix.md) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス|説明 |
|
||||||
|
|-------------------|----------|--------------------------------------------------------------------------------------------------------|
|
||||||
|
|`RGB_TOG` | |RGB ライトのオン・オフを切り替え |
|
||||||
|
|`RGB_MODE_FORWARD` |`RGB_MOD` |RGB モードを順送りで変更し、Shift を押していると逆順で変更します。 |
|
||||||
|
|`RGB_MODE_REVERSE` |`RGB_RMOD`|RGB モードを逆順で変更し、Shift を押していると順送りで変更します。 |
|
||||||
|
|`RGB_HUI` | |色相 (HUE) を増加させ、Shift を押していると減少させます。 |
|
||||||
|
|`RGB_HUD` | |色相 (HUE) を減少させ、Shift を押していると増加させます。 |
|
||||||
|
|`RGB_SAI` | |彩度 (SAT) を増加させ、Shift を押していると減少させます。 |
|
||||||
|
|`RGB_SAD` | |彩度 (SAT) を減少させ、Shift を押していると増加させます。 |
|
||||||
|
|`RGB_VAI` | |明度 (VAL/brightness) を増加させ、Shift を押していると減少させます。 |
|
||||||
|
|`RGB_VAD` | |明度 (VAL/brightness) を減少させ、Shift を押していると増加させます。 |
|
||||||
|
|`RGB_SPI` | |エフェクトのスピード (EEPROM はまだサポートしていません) を増加させ、Shift を押していると減少させます。 |
|
||||||
|
|`RGB_SPD` | |エフェクトのスピード (EEPROM はまだサポートしていません) を減少させ、Shift を押していると増加させます。 |
|
||||||
|
|
||||||
|
## 感熱式プリンタ :id=thermal-printer
|
||||||
|
|
||||||
|
[感熱式プリンタ](ja/feature_thermal_printer.md) も見てください。
|
||||||
|
|
||||||
|
|キー |説明 |
|
||||||
|
|-----------|---------------------------------|
|
||||||
|
|`PRINT_ON` |ユーザが入力した全ての印刷を開始 |
|
||||||
|
|`PRINT_OFF`|ユーザが入力した全ての印刷を停止 |
|
||||||
|
|
||||||
|
## US ANSI シフト済シンボル :id=us-ansi-shifted-symbols
|
||||||
|
|
||||||
|
[US ANSI シフト済シンボル](ja/keycodes_us_ansi_shifted.md) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス |説明|
|
||||||
|
|------------------------|-------------------|-----------|
|
||||||
|
|`KC_TILDE` |`KC_TILD` |`~` |
|
||||||
|
|`KC_EXCLAIM` |`KC_EXLM` |`!` |
|
||||||
|
|`KC_AT` | |`@` |
|
||||||
|
|`KC_HASH` | |`#` |
|
||||||
|
|`KC_DOLLAR` |`KC_DLR` |`$` |
|
||||||
|
|`KC_PERCENT` |`KC_PERC` |`%` |
|
||||||
|
|`KC_CIRCUMFLEX` |`KC_CIRC` |`^` |
|
||||||
|
|`KC_AMPERSAND` |`KC_AMPR` |`&` |
|
||||||
|
|`KC_ASTERISK` |`KC_ASTR` |`*` |
|
||||||
|
|`KC_LEFT_PAREN` |`KC_LPRN` |`(` |
|
||||||
|
|`KC_RIGHT_PAREN` |`KC_RPRN` |`)` |
|
||||||
|
|`KC_UNDERSCORE` |`KC_UNDS` |`_` |
|
||||||
|
|`KC_PLUS` | |`+` |
|
||||||
|
|`KC_LEFT_CURLY_BRACE` |`KC_LCBR` |`{` |
|
||||||
|
|`KC_RIGHT_CURLY_BRACE` |`KC_RCBR` |`}` |
|
||||||
|
|`KC_PIPE` | |`\|` |
|
||||||
|
|`KC_COLON` |`KC_COLN` |`:` |
|
||||||
|
|`KC_DOUBLE_QUOTE` |`KC_DQUO`, `KC_DQT`|`"` |
|
||||||
|
|`KC_LEFT_ANGLE_BRACKET` |`KC_LABK`, `KC_LT` |`<` |
|
||||||
|
|`KC_RIGHT_ANGLE_BRACKET`|`KC_RABK`, `KC_GT` |`>` |
|
||||||
|
|`KC_QUESTION` |`KC_QUES` |`?` |
|
||||||
|
|
||||||
|
## ワンショットキー :id=one-shot-keys
|
||||||
|
|
||||||
|
[ワンショットキー](ja/one_shot_keys.md) も見てください。
|
||||||
|
|
||||||
|
|キー |説明 |
|
||||||
|
|------------|--------------------------------|
|
||||||
|
|`OSM(mod)` | 次のキーが押されるまで、`mod` を押したままにします |
|
||||||
|
|`OSL(layer)`| 次のキーが押されるまで、一時的にレイヤーをアクティブにします |
|
||||||
|
|
||||||
|
## Space Cadet :id=space-cadet
|
||||||
|
|
||||||
|
[Space Cadet](ja/feature_space_cadet.md) も見てください。
|
||||||
|
|
||||||
|
|キー |説明 |
|
||||||
|
|-----------|-------------------------------------------|
|
||||||
|
|`KC_LCPO` |押したままの場合は左 Control、タップした場合は `(` |
|
||||||
|
|`KC_RCPC` |押したままの場合は右 Control、タップした場合は `)` |
|
||||||
|
|`KC_LSPO` |押したままの場合は左 Shift、タップした場合は `(`、 |
|
||||||
|
|`KC_RSPC` |押したままの場合は右 Shift、タップした場合は `)`、 |
|
||||||
|
|`KC_LAPO` |押したままの場合は左 Alt、タップした場合は `(`、 |
|
||||||
|
|`KC_RAPC` |押したままの場合は右 Alt、タップした場合は `)`、 |
|
||||||
|
|`KC_SFTENT`|押したままの場合は右 Shift、タップした場合は Enter |
|
||||||
|
|
||||||
|
## スワップハンド :id=swap-hands
|
||||||
|
|
||||||
|
[スワップハンド](ja/feature_swap_hands.md) も見てください。
|
||||||
|
|
||||||
|
|キー |説明 |
|
||||||
|
|-------------|----------------------------------------------------------------------------------|
|
||||||
|
| `SH_T(key)` | タップで `key` を送信する。押している時に一時的に入れ替え。 |
|
||||||
|
| `SH_ON` | 入れ替えをオンにして、そのままにする。 |
|
||||||
|
| `SH_OFF` | 入れ替えをオフにして、そのままにする。既知の状態に戻るのに適しています。 |
|
||||||
|
| `SH_MON` | 押すとスワップハンドし、放すと通常に戻る (一時的)。 |
|
||||||
|
| `SH_MOFF` | 一時的に入れ替えをオフする。 |
|
||||||
|
| `SH_TG` | キーを押すたびにオンとオフを切り替える。 |
|
||||||
|
| `SH_TT` | タップで切り替える。押している時に一時的に切り替える。 |
|
||||||
|
| `SH_OS` | ワンショットスワップハンド: 押している時あるいは次のキーを押すまで切り替える。 |
|
||||||
|
|
||||||
|
## ユニコードサポート :id=unicode-support
|
||||||
|
|
||||||
|
[ユニコードサポート](ja/feature_unicode.md) も見てください。
|
||||||
|
|
||||||
|
|キー |エイリアス |説明 |
|
||||||
|
|----------------------|-----------|----------------------------------------------------------------------|
|
||||||
|
|`UC(c)` | |コードポイント `c` のユニコードを送信 |
|
||||||
|
|`X(i)` | |`unicode_map` のインデックス `i` のユニコードを送信 |
|
||||||
|
|`XP(i, j)` | |Shift/Capsが有効なら、インデックス `i` または `j` のユニコードを送信 |
|
||||||
|
|`UNICODE_MODE_FORWARD`|`UC_MOD` |ユニコード入力方式を順送りで選択 |
|
||||||
|
|`UNICODE_MODE_REVERSE`|`UC_RMOD` |ユニコード入力方式を逆順で選択 |
|
||||||
|
|`UNICODE_MODE_OSX` |`UC_M_OS` |ユニコード入力方式を macOS 方式に切り替え |
|
||||||
|
|`UNICODE_MODE_LNX` |`UC_M_LN` |ユニコード入力方式を Linux 方式に切り替え |
|
||||||
|
|`UNICODE_MODE_WIN` |`UC_M_WI` |ユニコード入力方式を Windows 方式に切り替え |
|
||||||
|
|`UNICODE_MODE_BSD` |`UC_M_BS` |ユニコード入力方式を BSD 方式に切り替え (実装されていません) |
|
||||||
|
|`UNICODE_MODE_WINC` |`UC_M_WC` |ユニコード入力方式を WinCompose を使う Windows 方式に切り替え |
|
||||||
+5
-3
@@ -50,11 +50,13 @@ For convenience, QMK includes some Mod-Tap shortcuts to make common combinations
|
|||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since any modifiers specified in the keycode are ignored.
|
Currently, the `kc` argument of `MT()` is limited to the [Basic Keycode set](keycodes_basic.md), meaning you can't use keycodes like `LCTL()`, `KC_TILD`, or anything greater than `0xFF`. This is because QMK uses 16-bit keycodes, of which 3 bits are used for the function identifier, 1 bit for selecting right or left mods, and 4 bits to tell which mods are used, leaving only 8 bits for the keycode. Additionally, if at least one right-handed modifier is specified in a Mod-Tap, it will cause all modifiers specified to become right-handed, so it is not possible to mix and match the two - for example, Left Control and Right Shift would become Right Control and Right Shift.
|
||||||
|
|
||||||
Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.
|
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
|
||||||
|
|
||||||
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
|
You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them.
|
||||||
|
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
|
||||||
|
It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options.md#behaviors-that-can-be-configured).
|
||||||
|
|
||||||
## Other Resources
|
## Other Resources
|
||||||
|
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ For example, the `planck/rev5` with a `default` keymap will have this filename:
|
|||||||
planck_rev5_default.hex
|
planck_rev5_default.hex
|
||||||
```
|
```
|
||||||
|
|
||||||
Once you have located your firmware file drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.
|
Once you have located your firmware file, drag it into the "Local file" box in QMK Toolbox, or click "Open" and navigate to where your firmware file is stored.
|
||||||
|
|
||||||
### Flash Your Keyboard
|
### Flash Your Keyboard
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,8 @@ Install the QMK CLI by running:
|
|||||||
|
|
||||||
### ** Linux/WSL **
|
### ** Linux/WSL **
|
||||||
|
|
||||||
|
?> **Note for WSL users**: By default, the installation process will clone the QMK repository into your WSL home directory, but if you have cloned manually, ensure that it is located inside the WSL instance instead of the Windows filesystem (ie. not in `/mnt`), as accessing it is currently [extremely slow](https://github.com/microsoft/WSL/issues/4197).
|
||||||
|
|
||||||
#### Prerequisites
|
#### Prerequisites
|
||||||
|
|
||||||
You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them:
|
You will need to install Git and Python. It's very likely that you already have both, but if not, one of the following commands should install them:
|
||||||
@@ -102,19 +104,13 @@ You can also try the `qmk-git` package from AUR:
|
|||||||
|
|
||||||
### ** FreeBSD **
|
### ** FreeBSD **
|
||||||
|
|
||||||
#### Prerequisites
|
|
||||||
|
|
||||||
You will need to install Git and Python. It's possible that you already have both, but if not, run the following commands to install them:
|
|
||||||
|
|
||||||
pkg install git python3
|
|
||||||
|
|
||||||
Make sure that `$HOME/.local/bin` is added to your `$PATH` so that locally installed Python packages are available.
|
|
||||||
|
|
||||||
#### Installation
|
#### Installation
|
||||||
|
|
||||||
Install the QMK CLI by running:
|
Install the FreeBSD package for QMK CLI by running:
|
||||||
|
|
||||||
python3 -m pip install --user qmk
|
pkg install -g "py*-qmk"
|
||||||
|
|
||||||
|
NOTE: remember to follow the instructions printed at the end of installation (use `pkg info -Dg "py*-qmk"` to show them again).
|
||||||
|
|
||||||
<!-- tabs:end -->
|
<!-- tabs:end -->
|
||||||
|
|
||||||
@@ -160,17 +156,11 @@ After installing QMK you can set it up with this command:
|
|||||||
|
|
||||||
In most situations you will want to answer `y` to all of the prompts.
|
In most situations you will want to answer `y` to all of the prompts.
|
||||||
|
|
||||||
?>**Note on FreeBSD**:
|
|
||||||
It is suggested to run `qmk setup` as a non-`root` user to start with, but this will likely identify packages that need to be installed to your
|
|
||||||
base system using `pkg`. However the installation will probably fail when run as an unprivileged user.
|
|
||||||
To manually install the base dependencies, run `./util/qmk_install.sh` either as `root`, or with `sudo`.
|
|
||||||
Once that completes, re-run `qmk setup` to complete the setup and checks.
|
|
||||||
|
|
||||||
<!-- tabs:end -->
|
<!-- tabs:end -->
|
||||||
|
|
||||||
?> The qmk home folder can be specified at setup with `qmk setup -H <path>`, and modified afterwards using the [cli configuration](cli_configuration.md?id=single-key-example) and the variable `user.qmk_home`. For all available options run `qmk setup --help`.
|
?> The qmk home folder can be specified at setup with `qmk setup -H <path>`, and modified afterwards using the [cli configuration](cli_configuration.md?id=single-key-example) and the variable `user.qmk_home`. For all available options run `qmk setup --help`.
|
||||||
|
|
||||||
?> If you already know [how to use GitHub](getting_started_github.md), we recommend that you create your own fork and use `qmk setup <github_username>/qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message.
|
?> If you already know how to use GitHub, [we recommend that you follow these instructions](getting_started_github.md) and use `qmk setup <github_username>/qmk_firmware` to clone your personal fork. If you don't know what that means you can safely ignore this message.
|
||||||
|
|
||||||
## 4. Test Your Build Environment
|
## 4. Test Your Build Environment
|
||||||
|
|
||||||
|
|||||||
+14
-12
@@ -50,7 +50,7 @@ This is the most important plugin as it will allow Eclipse to _understand_ AVR C
|
|||||||
### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console)
|
### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console)
|
||||||
This plugin is necessary to properly display the colored build output generated by the QMK makefile.
|
This plugin is necessary to properly display the colored build output generated by the QMK makefile.
|
||||||
|
|
||||||
1. Open <kbd><kbd>Help</kbd> > <kbd>Eclipse Marketplace…</kbd></kbd>
|
1. Open <kbd>Help</kbd> > <kbd>Eclipse Marketplace…</kbd>
|
||||||
2. Search for _ANSI Escape in Console_
|
2. Search for _ANSI Escape in Console_
|
||||||
3. Click the <samp>Install</samp> button of the plugin
|
3. Click the <samp>Install</samp> button of the plugin
|
||||||
4. Follow the instructions and agree again with the security warning for unsigned content.
|
4. Follow the instructions and agree again with the security warning for unsigned content.
|
||||||
@@ -59,7 +59,7 @@ Once both plugins are installed, restart Eclipse as prompted.
|
|||||||
|
|
||||||
# Configure Eclipse for QMK
|
# Configure Eclipse for QMK
|
||||||
## Importing the Project
|
## Importing the Project
|
||||||
1. Click <kbd><kbd>File</kbd> > <kbd>New</kbd> > <kbd>Makefile Project with Existing Code</kbd></kbd>
|
1. Click <kbd>File</kbd> > <kbd>New</kbd> > <kbd>Makefile Project with Existing Code</kbd>
|
||||||
2. On the next screen:
|
2. On the next screen:
|
||||||
* Select the directory where you cloned the repository as _Existing Code Location_;
|
* Select the directory where you cloned the repository as _Existing Code Location_;
|
||||||
* (Optional) Give a different name to the project¹, e.g. _QMK_ or _Quantum_;
|
* (Optional) Give a different name to the project¹, e.g. _QMK_ or _Quantum_;
|
||||||
@@ -73,16 +73,18 @@ Once both plugins are installed, restart Eclipse as prompted.
|
|||||||
¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably `qmk_firmware`).
|
¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably `qmk_firmware`).
|
||||||
|
|
||||||
## Build Your Keyboard
|
## Build Your Keyboard
|
||||||
We will now configure a make target that cleans the project and builds the keymap of your choice.
|
|
||||||
|
|
||||||
1. On the right side of the screen, select the <kbd>Make Target</kbd> tab
|
We will now change the default make target of the the project from `all` to the
|
||||||
2. Expand the folder structure to the keyboard of your choice, e.g. `qmk_firmware/keyboards/ergodox`
|
specific keyboard and keymap combination we are working on,
|
||||||
3. Right-click on the keyboard folder and select <kbd>New…</kbd> (or select the folder and click the <kbd>New Make Target</kbd> icon above the tree)
|
e.g. `kinesis/kint36:stapelberg`. This way, project-wide actions like cleaning
|
||||||
4. Choose a name for your build target, e.g. _clean \<your keymap\>_
|
and building the project will complete quickly, instead of taking a long time or
|
||||||
5. Make Target: this is the arguments that you give to `make` when building from the command line. If your target name does not match these arguments, uncheck <kbd>Same as target name</kbd> and input the correct arguments, e.g. `clean <your keymap>`
|
outright locking up Eclipse.
|
||||||
6. Leave the other options checked and click <kbd>OK</kbd>. Your make target will now appear under the selected keyboard.
|
|
||||||
7. (Optional) Toggle the <kbd>Hide Empty Folders</kbd> icon button above the targets tree to only show your build target.
|
1. Focus an editor tab within the project
|
||||||
8. Double-click the build target you created to trigger a build.
|
2. Open the `Project` > `Properties` window, then select the `C/C++ Build` list
|
||||||
9. Select the <kbd>Console</kbd> view at the bottom to view the running build.
|
entry and switch to the `Behavior` tab.
|
||||||
|
3. Change the default `Make build target` text fields for all enabled builds
|
||||||
|
from `all` to e.g. `kinesis/kint41:stapelberg`.
|
||||||
|
4. Verify your setup works by selecting `Project` > `Clean...`.
|
||||||
|
|
||||||
[1]: https://en.wikipedia.org/wiki/Eclipse_(software)
|
[1]: https://en.wikipedia.org/wiki/Eclipse_(software)
|
||||||
@@ -68,6 +68,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
|||||||
- bare minimum required code for a board to boot into QMK should be present
|
- bare minimum required code for a board to boot into QMK should be present
|
||||||
- initialisation code for the matrix and critical devices
|
- initialisation code for the matrix and critical devices
|
||||||
- mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps
|
- mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps
|
||||||
|
- VIAL-related files or changes will not be accepted, as they are not used by QMK firmware (no VIAL-specific core code has been submitted or merged)
|
||||||
- `keyboard.c`
|
- `keyboard.c`
|
||||||
- empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed
|
- empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed
|
||||||
- commented-out functions removed too
|
- commented-out functions removed too
|
||||||
@@ -94,6 +95,8 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
|||||||
- standard layouts preferred in these keymaps, if possible
|
- standard layouts preferred in these keymaps, if possible
|
||||||
- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
|
- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
|
||||||
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
|
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
|
||||||
|
- Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards)
|
||||||
|
|
||||||
|
|
||||||
Also, specific to ChibiOS:
|
Also, specific to ChibiOS:
|
||||||
- **strong** preference to using existing ChibiOS board definitions.
|
- **strong** preference to using existing ChibiOS board definitions.
|
||||||
@@ -127,3 +130,9 @@ There are instructions on how to keep your fork updated here:
|
|||||||
|
|
||||||
Thanks for contributing!
|
Thanks for contributing!
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Review Process
|
||||||
|
|
||||||
|
In general, we want to see two (or more) approvals that are meaningful (e.g. that have inspected code) before a PR will be considered for merge. These reviews are not limited to collaborators -- any community member willing to put in the time is welcomed (and encouraged). The only difference is that your checkmark won't be green, and that's fine!
|
||||||
|
|
||||||
|
Additionally, PR reviews are something that is done in our free time. We are not paid nor compensated for the time we spend reviewing, as it is a labor of love. As such, this means that it can take time for us to get to your Pull Request. Things like family, or life can get in the way of us getting to PRs, and burnout is a serious concern. The QMK firmware repository averages 200 PRs opened and 200 PRs merged every month, so please have patience.
|
||||||
@@ -34,14 +34,14 @@
|
|||||||
typedef union {
|
typedef union {
|
||||||
uint32_t raw;
|
uint32_t raw;
|
||||||
struct {
|
struct {
|
||||||
bool enable : 1;
|
bool enable : 1;
|
||||||
uint8_t feedback : 2;
|
uint8_t feedback : 2;
|
||||||
uint8_t mode : 7;
|
uint8_t mode : 7;
|
||||||
bool buzz : 1;
|
bool buzz : 1;
|
||||||
uint8_t dwell : 7;
|
uint8_t dwell : 7;
|
||||||
bool cont : 1;
|
bool cont : 1;
|
||||||
uint8_t amplitude : 8;
|
uint8_t amplitude : 8;
|
||||||
uint16_t reserved : 7;
|
uint8_t reserved : 5;
|
||||||
};
|
};
|
||||||
} haptic_config_t;
|
} haptic_config_t;
|
||||||
|
|
||||||
|
|||||||
@@ -206,6 +206,8 @@ void clear_screen(void) {
|
|||||||
send_data(0);
|
send_data(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(micro_oled_screen_current, 0, LCDWIDTH * LCDHEIGHT / 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** \brief Clear SSD1306's memory.
|
/** \brief Clear SSD1306's memory.
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 0xCB - Conor Burns
|
||||||
|
|
||||||
|
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 "1337.h"
|
||||||
|
|
||||||
|
void eeconfig_init_kb(void) {
|
||||||
|
#ifdef BACKLIGHT_ENABLE
|
||||||
|
backlight_enable();
|
||||||
|
backlight_level(5);
|
||||||
|
#endif
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
rgblight_enable();
|
||||||
|
rgblight_sethsv(0, 255, 255);
|
||||||
|
#ifdef RGBLIGHT_ANIMATIONS
|
||||||
|
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 2);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
eeconfig_update_kb(0);
|
||||||
|
eeconfig_init_user();
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 0xCB - Conor Burns
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
/* This a shortcut to help you visually see your layout.
|
||||||
|
*
|
||||||
|
* The first section contains all of the arguments representing the physical
|
||||||
|
* layout of the board and position of the keys.
|
||||||
|
*
|
||||||
|
* The second converts the arguments into a two-dimensional array which
|
||||||
|
* represents the switch matrix.
|
||||||
|
*/
|
||||||
|
#define LAYOUT( \
|
||||||
|
KA1, KA2, KA3, \
|
||||||
|
KB1, KB2, KB3, \
|
||||||
|
KC1, KC2, KC3 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ KA1, KA2, KA3 }, \
|
||||||
|
{ KB1, KB2, KB3 }, \
|
||||||
|
{ KC1, KC2, KC3 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 0xCB - Conor Burns
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xCB00
|
||||||
|
#define PRODUCT_ID 0x1337
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER 0xCB
|
||||||
|
#define PRODUCT 1337
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
#define MATRIX_ROWS 3
|
||||||
|
#define MATRIX_COLS 3
|
||||||
|
|
||||||
|
/* Keyboard Matrix Assignments */
|
||||||
|
#define DIRECT_PINS { \
|
||||||
|
{ D2, D4, F4 }, \
|
||||||
|
{ D7, B1, B3 }, \
|
||||||
|
{ E6, B4, B2 } \
|
||||||
|
}
|
||||||
|
#define TAP_CODE_DELAY 10
|
||||||
|
#define ENCODER_DIRECTION_FLIP
|
||||||
|
#define ENCODER_RESOLUTION 4
|
||||||
|
#define ENCODERS_PAD_A { F5 }
|
||||||
|
#define ENCODERS_PAD_B { F6 }
|
||||||
|
|
||||||
|
#define BACKLIGHT_PIN B5
|
||||||
|
#define BACKLIGHT_BREATHING
|
||||||
|
#define BACKLIGHT_LEVELS 7
|
||||||
|
|
||||||
|
#define RGB_DI_PIN D3
|
||||||
|
#ifdef RGB_DI_PIN
|
||||||
|
#define RGBLED_NUM 5
|
||||||
|
#define RGBLIGHT_HUE_STEP 8
|
||||||
|
#define RGBLIGHT_SAT_STEP 8
|
||||||
|
#define RGBLIGHT_VAL_STEP 8
|
||||||
|
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
|
||||||
|
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
|
||||||
|
// #define RGBLIGHT_ANIMATIONS
|
||||||
|
#define RGBLIGHT_EFFECT_BREATHING
|
||||||
|
#define RGBLIGHT_EFFECT_SNAKE
|
||||||
|
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||||
|
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||||
|
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
|
/* Oled Size */
|
||||||
|
#define OLED_DISPLAY_128X64
|
||||||
|
#define OLED_FONT_END 255
|
||||||
|
#define OLED_FONT_H "gfxfont.c"
|
||||||
|
|
||||||
|
/* QMK DFU */
|
||||||
|
#define QMK_LED B0
|
||||||
@@ -0,0 +1,276 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 0xCB - Conor Burns
|
||||||
|
|
||||||
|
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 "progmem.h"
|
||||||
|
|
||||||
|
static const unsigned char font[] PROGMEM = {
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
||||||
|
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
|
||||||
|
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
|
||||||
|
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
|
||||||
|
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
|
||||||
|
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
|
||||||
|
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
|
||||||
|
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
|
||||||
|
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
|
||||||
|
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
|
||||||
|
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
|
||||||
|
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
|
||||||
|
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
|
||||||
|
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
|
||||||
|
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
|
||||||
|
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
|
||||||
|
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
|
||||||
|
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
|
||||||
|
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
|
||||||
|
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
|
||||||
|
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
|
||||||
|
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
|
||||||
|
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
|
||||||
|
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
|
||||||
|
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
|
||||||
|
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
|
||||||
|
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
|
||||||
|
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
|
||||||
|
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
|
||||||
|
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
|
||||||
|
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
|
||||||
|
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
|
||||||
|
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
|
||||||
|
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
|
||||||
|
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
|
||||||
|
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
|
||||||
|
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
|
||||||
|
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
|
||||||
|
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
|
||||||
|
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
|
||||||
|
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
|
||||||
|
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
|
||||||
|
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
|
||||||
|
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
|
||||||
|
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
|
||||||
|
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
|
||||||
|
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
|
||||||
|
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
|
||||||
|
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
|
||||||
|
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
|
||||||
|
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
|
||||||
|
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
|
||||||
|
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
|
||||||
|
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
|
||||||
|
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
|
||||||
|
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
|
||||||
|
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
|
||||||
|
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
|
||||||
|
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
|
||||||
|
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
|
||||||
|
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
|
||||||
|
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
||||||
|
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
|
||||||
|
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
|
||||||
|
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
|
||||||
|
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
|
||||||
|
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
|
||||||
|
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
|
||||||
|
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
|
||||||
|
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
|
||||||
|
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
|
||||||
|
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
|
||||||
|
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
||||||
|
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
|
||||||
|
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
|
||||||
|
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
|
||||||
|
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
|
||||||
|
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
|
||||||
|
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
|
||||||
|
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
|
||||||
|
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
|
||||||
|
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
|
||||||
|
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
|
||||||
|
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
|
||||||
|
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
|
||||||
|
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
|
||||||
|
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
|
||||||
|
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
|
||||||
|
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
|
||||||
|
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
|
||||||
|
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
|
||||||
|
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
|
||||||
|
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
|
||||||
|
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
|
||||||
|
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
|
||||||
|
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
|
||||||
|
0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
|
||||||
|
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
|
||||||
|
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
|
||||||
|
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
|
||||||
|
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
|
||||||
|
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
|
||||||
|
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
|
||||||
|
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
|
||||||
|
0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
|
||||||
|
0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
|
||||||
|
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
|
||||||
|
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
|
||||||
|
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
|
||||||
|
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
|
||||||
|
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
|
||||||
|
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
|
||||||
|
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
|
||||||
|
0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00,
|
||||||
|
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
|
||||||
|
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
|
||||||
|
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
|
||||||
|
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
|
||||||
|
0x00, 0xE0, 0xFC, 0x1E, 0x06, 0xC6,
|
||||||
|
0xC6, 0x06, 0x1E, 0xFC, 0xE0, 0x00,
|
||||||
|
0x00, 0x00, 0x60, 0xE0, 0x80, 0x00,
|
||||||
|
0x00, 0x80, 0xE0, 0x60, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0xE0, 0xF8, 0x3C, 0x0E,
|
||||||
|
0x06, 0x06, 0x06, 0x0E, 0x0C, 0x00,
|
||||||
|
0x00, 0x00, 0xFE, 0xFE, 0x86, 0x86,
|
||||||
|
0x86, 0x86, 0x8C, 0x78, 0x70, 0x00,
|
||||||
|
0x00, 0x0E, 0x0E, 0x06, 0x06, 0xFE,
|
||||||
|
0xFE, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x0C, 0x8E, 0x86, 0x86, 0x86,
|
||||||
|
0x86, 0x86, 0xCE, 0xFE, 0x7C, 0x00,
|
||||||
|
0x00, 0x06, 0x06, 0x06, 0x06, 0x06,
|
||||||
|
0x06, 0xE6, 0xE6, 0x3E, 0x3E, 0x00,
|
||||||
|
0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||||
|
0x01, 0x01, 0x06, 0x78, 0x80, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xE0, 0x1C, 0x02, 0x01, 0x04, 0x18,
|
||||||
|
0x00, 0x00, 0x00, 0x02, 0x0C, 0x00,
|
||||||
|
0x80, 0x80, 0x71, 0x02, 0x1C, 0xE0,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x80, 0x78, 0x06, 0x01, 0x01,
|
||||||
|
0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||||
|
0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||||
|
0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC,
|
||||||
|
0xFC, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||||
|
0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0,
|
||||||
|
0x00, 0x00, 0x40, 0xF0, 0xFC, 0xFF,
|
||||||
|
0xFF, 0xFC, 0xF0, 0xC0, 0x00, 0x00,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x07, 0x3F, 0x78, 0x60, 0x63,
|
||||||
|
0x63, 0x60, 0x78, 0x3F, 0x07, 0x00,
|
||||||
|
0x00, 0x00, 0x60, 0x79, 0x19, 0x06,
|
||||||
|
0x06, 0x19, 0x79, 0x60, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x07, 0x1F, 0x3C, 0x70,
|
||||||
|
0x60, 0x60, 0x60, 0x70, 0x30, 0x00,
|
||||||
|
0x00, 0x00, 0x7F, 0x7F, 0x61, 0x61,
|
||||||
|
0x61, 0x61, 0x31, 0x1E, 0x0E, 0x00,
|
||||||
|
0x00, 0x60, 0x60, 0x60, 0x60, 0x7F,
|
||||||
|
0x7F, 0x60, 0x60, 0x60, 0x60, 0x00,
|
||||||
|
0x00, 0x30, 0x71, 0x61, 0x61, 0x61,
|
||||||
|
0x61, 0x61, 0x73, 0x7F, 0x3E, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x7F,
|
||||||
|
0x7F, 0x01, 0x01, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x03, 0xBC,
|
||||||
|
0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||||
|
0x87, 0x38, 0x40, 0x80, 0x08, 0x08,
|
||||||
|
0x08, 0x04, 0x04, 0x02, 0x02, 0x01,
|
||||||
|
0x00, 0x00, 0x80, 0x40, 0x38, 0x87,
|
||||||
|
0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
|
||||||
|
0xBC, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
|
||||||
|
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
|
||||||
|
0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
|
||||||
|
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
|
||||||
|
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0,
|
||||||
|
0xFC, 0xFE, 0xFC, 0xF8, 0xF9, 0xF3,
|
||||||
|
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
|
||||||
|
0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x70, 0xD0, 0x70, 0x00, 0x07, 0x05,
|
||||||
|
0x07, 0x02, 0x02, 0x82, 0xC2, 0x42,
|
||||||
|
0x7E, 0xC0, 0xC0, 0xC0, 0x40, 0x7E,
|
||||||
|
0x42, 0xC2, 0x82, 0x02, 0x02, 0x07,
|
||||||
|
0x05, 0x07, 0x00, 0x70, 0xD0, 0x70,
|
||||||
|
0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
|
||||||
|
0x10, 0xC8, 0xC8, 0x84, 0x04, 0x02,
|
||||||
|
0x02, 0x02, 0x02, 0xC2, 0xC2, 0xC2,
|
||||||
|
0xC2, 0xC4, 0xC4, 0xC8, 0x88, 0x90,
|
||||||
|
0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x01, 0xFD, 0x05, 0x04, 0x04, 0x04,
|
||||||
|
0x1F, 0x30, 0x40, 0x87, 0x9F, 0x1F,
|
||||||
|
0x01, 0x81, 0xFF, 0xFF, 0x00, 0x00,
|
||||||
|
0x1E, 0x9E, 0x86, 0x40, 0x30, 0x1F,
|
||||||
|
0x04, 0x04, 0x04, 0x05, 0xFD, 0x01,
|
||||||
|
0x00, 0x0F, 0x70, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3E,
|
||||||
|
0x0F, 0x03, 0x00, 0xFF, 0xFF, 0x01,
|
||||||
|
0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x80, 0x70, 0x0F, 0x00,
|
||||||
|
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
|
||||||
|
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
|
||||||
|
0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE,
|
||||||
|
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
|
||||||
|
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00,
|
||||||
|
0xC0, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x07, 0x03, 0x03,
|
||||||
|
0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF,
|
||||||
|
0xDF, 0x9F, 0x3F, 0x3C, 0x70, 0x40,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0xC0, 0x5F, 0xD0, 0x90, 0x90, 0x90,
|
||||||
|
0xFC, 0x06, 0x01, 0xF8, 0xFC, 0xFC,
|
||||||
|
0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00,
|
||||||
|
0x3C, 0x3C, 0x30, 0x01, 0x06, 0xFC,
|
||||||
|
0x90, 0x90, 0x90, 0xD0, 0x5F, 0xC0,
|
||||||
|
0x00, 0xF0, 0x0E, 0x01, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x01, 0x03, 0x07, 0x1E,
|
||||||
|
0x3C, 0xF0, 0xE0, 0xFF, 0xFF, 0x80,
|
||||||
|
0x80, 0x80, 0x80, 0xC1, 0xC1, 0xFF,
|
||||||
|
0x3E, 0x00, 0x01, 0x0E, 0xF0, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x07, 0x05, 0x07, 0x00, 0x70, 0x50,
|
||||||
|
0x70, 0x20, 0x20, 0x20, 0x21, 0x3F,
|
||||||
|
0x01, 0x61, 0x9F, 0x9F, 0x61, 0x01,
|
||||||
|
0x3F, 0x21, 0x20, 0x20, 0x20, 0x70,
|
||||||
|
0x50, 0x70, 0x00, 0x07, 0x05, 0x07,
|
||||||
|
0x00, 0x00, 0x00, 0x01, 0x02, 0x04,
|
||||||
|
0x08, 0x10, 0x13, 0x23, 0x20, 0x40,
|
||||||
|
0x40, 0x40, 0x40, 0x43, 0x43, 0x40,
|
||||||
|
0x40, 0x20, 0x20, 0x10, 0x10, 0x08,
|
||||||
|
0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
|
||||||
|
0x07, 0x07, 0x07, 0x07, 0x0F, 0x0F,
|
||||||
|
0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
|
||||||
|
0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F,
|
||||||
|
0x3F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF,
|
||||||
|
0x00, 0x80, 0xC0, 0x70, 0x7C, 0x3F,
|
||||||
|
0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07,
|
||||||
|
0x07, 0x03, 0x03, 0x02, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x02, 0x03, 0x03, 0x07,
|
||||||
|
0x07, 0x07, 0x0F, 0x0F, 0x1E, 0x3E,
|
||||||
|
0x3C, 0x7C, 0x70, 0xC0, 0x80, 0x00,
|
||||||
|
};
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "0xCB 1337",
|
||||||
|
"url": "https://0xCB.dev",
|
||||||
|
"maintainer": "Conor-Burns",
|
||||||
|
"width": 3,
|
||||||
|
"height": 3,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
{"x":2, "y":1},
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
{"x":2, "y":2}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 0xCB - Conor Burns
|
||||||
|
|
||||||
|
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
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_HOME,
|
||||||
|
_MISC,
|
||||||
|
_RGB,
|
||||||
|
_BLED
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_HOME] = LAYOUT(
|
||||||
|
KC_MPRV, KC_MNXT, KC_MPLY,
|
||||||
|
KC_PGUP, KC_PGDN, TO(3),
|
||||||
|
KC_HOME, KC_END, TO(1)
|
||||||
|
),
|
||||||
|
[_MISC] = LAYOUT(
|
||||||
|
_______, _______, _______,
|
||||||
|
_______, _______, TO(0),
|
||||||
|
_______, _______, TO(2)
|
||||||
|
),
|
||||||
|
[_RGB] = LAYOUT(
|
||||||
|
RGB_HUI, RGB_HUD, RGB_MOD,
|
||||||
|
RGB_SAI, RGB_SAD, TO(1),
|
||||||
|
RGB_SPI, RGB_SPD, TO(3)
|
||||||
|
),
|
||||||
|
[_BLED] = LAYOUT(
|
||||||
|
BL_STEP, BL_BRTG, BL_TOGG,
|
||||||
|
BL_ON, BL_OFF, TO(2),
|
||||||
|
BL_INC, BL_DEC, TO(0)
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
||||||
|
#ifdef ENCODER_ENABLE
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (IS_LAYER_ON(_RGB)) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
if (clockwise) {
|
||||||
|
rgblight_increase_val();
|
||||||
|
} else {
|
||||||
|
rgblight_decrease_val();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} else if (IS_LAYER_ON(_BLED)) {
|
||||||
|
if (clockwise) {
|
||||||
|
backlight_increase();
|
||||||
|
} else {
|
||||||
|
backlight_decrease();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* oled stuff :) */
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
uint16_t startup_timer;
|
||||||
|
|
||||||
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
|
startup_timer = timer_read();
|
||||||
|
return rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render_logo(void) {
|
||||||
|
static const char PROGMEM raw_logo[] = {
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
|
||||||
|
0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
|
||||||
|
0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
};
|
||||||
|
oled_write_raw_P(raw_logo, sizeof(raw_logo));
|
||||||
|
}
|
||||||
|
static void render_logo_font(void) {
|
||||||
|
static const char PROGMEM qmk_logo[] = {
|
||||||
|
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
|
||||||
|
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
|
||||||
|
0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5,
|
||||||
|
0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
oled_write_P(qmk_logo, false);
|
||||||
|
}
|
||||||
|
/* Shows the name of the current layer and locks for the host (CAPS etc.) */
|
||||||
|
static void render_info(void) {
|
||||||
|
oled_write_P(PSTR("Layer: "), false);
|
||||||
|
|
||||||
|
switch (get_highest_layer(layer_state)) {
|
||||||
|
case _HOME:
|
||||||
|
oled_write_ln_P(PSTR("HOME"), false);
|
||||||
|
break;
|
||||||
|
case _MISC:
|
||||||
|
oled_write_ln_P(PSTR("MISC"), false);
|
||||||
|
break;
|
||||||
|
case _RGB:
|
||||||
|
oled_write_ln_P(PSTR("RGB"), false);
|
||||||
|
break;
|
||||||
|
case _BLED:
|
||||||
|
oled_write_ln_P(PSTR("Backlight"), false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
oled_write_ln_P(PSTR("Undefined"), false);
|
||||||
|
}
|
||||||
|
led_t led_state = host_keyboard_led_state();
|
||||||
|
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||||
|
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||||
|
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||||
|
}
|
||||||
|
static void render_rgbled_status(bool full) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
char buf[30];
|
||||||
|
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
||||||
|
if (full) {
|
||||||
|
snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n",
|
||||||
|
rgblight_get_mode(),
|
||||||
|
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
|
||||||
|
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
|
||||||
|
rgblight_get_val()/RGBLIGHT_VAL_STEP);
|
||||||
|
} else {
|
||||||
|
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
|
||||||
|
}
|
||||||
|
oled_write(buf, false);
|
||||||
|
} else {
|
||||||
|
oled_write_ln_P(PSTR("\n"), false);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
void oled_task_user(void) {
|
||||||
|
static bool finished_timer = false;
|
||||||
|
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
|
||||||
|
render_logo();
|
||||||
|
} else {
|
||||||
|
if (!finished_timer) {
|
||||||
|
oled_clear();
|
||||||
|
finished_timer = true;
|
||||||
|
}
|
||||||
|
render_info();
|
||||||
|
render_rgbled_status(true);
|
||||||
|
render_logo_font();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 0xCB - Conor Burns
|
||||||
|
|
||||||
|
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
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_HOME,
|
||||||
|
_MISC,
|
||||||
|
_RGB,
|
||||||
|
_BLED
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_HOME] = LAYOUT(
|
||||||
|
KC_MPRV, KC_MNXT, KC_MPLY,
|
||||||
|
KC_PGUP, KC_PGDN, TO(3),
|
||||||
|
KC_HOME, KC_END, TO(1)
|
||||||
|
),
|
||||||
|
[_MISC] = LAYOUT(
|
||||||
|
_______, _______, _______,
|
||||||
|
_______, _______, TO(0),
|
||||||
|
_______, _______, TO(2)
|
||||||
|
),
|
||||||
|
[_RGB] = LAYOUT(
|
||||||
|
RGB_HUI, RGB_HUD, RGB_MOD,
|
||||||
|
RGB_SAI, RGB_SAD, TO(1),
|
||||||
|
RGB_SPI, RGB_SPD, TO(3)
|
||||||
|
),
|
||||||
|
[_BLED] = LAYOUT(
|
||||||
|
BL_STEP, BL_BRTG, BL_TOGG,
|
||||||
|
BL_ON, BL_OFF, TO(2),
|
||||||
|
BL_INC, BL_DEC, TO(0)
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
||||||
|
#ifdef ENCODER_ENABLE
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (IS_LAYER_ON(_RGB)) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
if (clockwise) {
|
||||||
|
rgblight_increase_val();
|
||||||
|
} else {
|
||||||
|
rgblight_decrease_val();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} else if (IS_LAYER_ON(_BLED)) {
|
||||||
|
if (clockwise) {
|
||||||
|
backlight_increase();
|
||||||
|
} else {
|
||||||
|
backlight_decrease();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code16(C(A(KC_UP)));
|
||||||
|
} else {
|
||||||
|
tap_code16(C(A(KC_DOWN)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* oled stuff :) */
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
uint16_t startup_timer;
|
||||||
|
|
||||||
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
|
startup_timer = timer_read();
|
||||||
|
return rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render_logo(void) {
|
||||||
|
static const char PROGMEM raw_logo[] = {
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
|
||||||
|
0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
|
||||||
|
0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
};
|
||||||
|
oled_write_raw_P(raw_logo, sizeof(raw_logo));
|
||||||
|
}
|
||||||
|
static void render_logo_font(void) {
|
||||||
|
static const char PROGMEM qmk_logo[] = {
|
||||||
|
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
|
||||||
|
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
|
||||||
|
0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5,
|
||||||
|
0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
oled_write_P(qmk_logo, false);
|
||||||
|
}
|
||||||
|
/* Shows the name of the current layer and locks for the host (CAPS etc.) */
|
||||||
|
static void render_info(void) {
|
||||||
|
oled_write_P(PSTR("Layer: "), false);
|
||||||
|
|
||||||
|
switch (get_highest_layer(layer_state)) {
|
||||||
|
case _HOME:
|
||||||
|
oled_write_ln_P(PSTR("HOME"), false);
|
||||||
|
break;
|
||||||
|
case _MISC:
|
||||||
|
oled_write_ln_P(PSTR("MISC"), false);
|
||||||
|
break;
|
||||||
|
case _RGB:
|
||||||
|
oled_write_ln_P(PSTR("RGB"), false);
|
||||||
|
break;
|
||||||
|
case _BLED:
|
||||||
|
oled_write_ln_P(PSTR("Backlight"), false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
oled_write_ln_P(PSTR("Undefined"), false);
|
||||||
|
}
|
||||||
|
led_t led_state = host_keyboard_led_state();
|
||||||
|
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||||
|
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||||
|
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||||
|
}
|
||||||
|
static void render_rgbled_status(bool full) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
char buf[30];
|
||||||
|
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
||||||
|
if (full) {
|
||||||
|
snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n",
|
||||||
|
rgblight_get_mode(),
|
||||||
|
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
|
||||||
|
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
|
||||||
|
rgblight_get_val()/RGBLIGHT_VAL_STEP);
|
||||||
|
} else {
|
||||||
|
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
|
||||||
|
}
|
||||||
|
oled_write(buf, false);
|
||||||
|
} else {
|
||||||
|
oled_write_ln_P(PSTR("\n"), false);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
void oled_task_user(void) {
|
||||||
|
static bool finished_timer = false;
|
||||||
|
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
|
||||||
|
render_logo();
|
||||||
|
} else {
|
||||||
|
if (!finished_timer) {
|
||||||
|
oled_clear();
|
||||||
|
finished_timer = true;
|
||||||
|
}
|
||||||
|
render_info();
|
||||||
|
render_rgbled_status(true);
|
||||||
|
render_logo_font();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 0xCB - Conor Burns
|
||||||
|
|
||||||
|
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
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_HOME,
|
||||||
|
_MISC,
|
||||||
|
_RGB,
|
||||||
|
_BLED
|
||||||
|
};
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
[_HOME] = LAYOUT(
|
||||||
|
KC_MPRV, KC_MNXT, KC_MPLY,
|
||||||
|
KC_PGUP, KC_PGDN, TO(3),
|
||||||
|
KC_HOME, KC_END, TO(1)
|
||||||
|
),
|
||||||
|
[_MISC] = LAYOUT(
|
||||||
|
_______, _______, _______,
|
||||||
|
_______, _______, TO(0),
|
||||||
|
_______, _______, TO(2)
|
||||||
|
),
|
||||||
|
[_RGB] = LAYOUT(
|
||||||
|
RGB_HUI, RGB_HUD, RGB_MOD,
|
||||||
|
RGB_SAI, RGB_SAD, TO(1),
|
||||||
|
RGB_SPI, RGB_SPD, TO(3)
|
||||||
|
),
|
||||||
|
[_BLED] = LAYOUT(
|
||||||
|
BL_STEP, BL_BRTG, BL_TOGG,
|
||||||
|
BL_ON, BL_OFF, TO(2),
|
||||||
|
BL_INC, BL_DEC, TO(0)
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
||||||
|
#ifdef ENCODER_ENABLE
|
||||||
|
void encoder_update_user(uint8_t index, bool clockwise) {
|
||||||
|
if (IS_LAYER_ON(_RGB)) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
if (clockwise) {
|
||||||
|
rgblight_increase_val();
|
||||||
|
} else {
|
||||||
|
rgblight_decrease_val();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
} else if (IS_LAYER_ON(_BLED)) {
|
||||||
|
if (clockwise) {
|
||||||
|
backlight_increase();
|
||||||
|
} else {
|
||||||
|
backlight_decrease();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (clockwise) {
|
||||||
|
tap_code(KC_VOLU);
|
||||||
|
} else {
|
||||||
|
tap_code(KC_VOLD);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* oled stuff :) */
|
||||||
|
#ifdef OLED_DRIVER_ENABLE
|
||||||
|
uint16_t startup_timer;
|
||||||
|
|
||||||
|
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||||
|
startup_timer = timer_read();
|
||||||
|
return rotation;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void render_logo(void) {
|
||||||
|
static const char PROGMEM raw_logo[] = {
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
|
||||||
|
0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
|
||||||
|
0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
};
|
||||||
|
oled_write_raw_P(raw_logo, sizeof(raw_logo));
|
||||||
|
}
|
||||||
|
static void render_logo_font(void) {
|
||||||
|
static const char PROGMEM qmk_logo[] = {
|
||||||
|
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
|
||||||
|
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
|
||||||
|
0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5,
|
||||||
|
0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00
|
||||||
|
};
|
||||||
|
|
||||||
|
oled_write_P(qmk_logo, false);
|
||||||
|
}
|
||||||
|
/* Shows the name of the current layer and locks for the host (CAPS etc.) */
|
||||||
|
static void render_info(void) {
|
||||||
|
oled_write_P(PSTR("Layer: "), false);
|
||||||
|
|
||||||
|
switch (get_highest_layer(layer_state)) {
|
||||||
|
case _HOME:
|
||||||
|
oled_write_ln_P(PSTR("HOME"), false);
|
||||||
|
break;
|
||||||
|
case _MISC:
|
||||||
|
oled_write_ln_P(PSTR("MISC"), false);
|
||||||
|
break;
|
||||||
|
case _RGB:
|
||||||
|
oled_write_ln_P(PSTR("RGB"), false);
|
||||||
|
break;
|
||||||
|
case _BLED:
|
||||||
|
oled_write_ln_P(PSTR("Backlight"), false);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
oled_write_ln_P(PSTR("Undefined"), false);
|
||||||
|
}
|
||||||
|
led_t led_state = host_keyboard_led_state();
|
||||||
|
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||||
|
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||||
|
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||||
|
}
|
||||||
|
static void render_rgbled_status(bool full) {
|
||||||
|
#ifdef RGBLIGHT_ENABLE
|
||||||
|
char buf[30];
|
||||||
|
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
||||||
|
if (full) {
|
||||||
|
snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n",
|
||||||
|
rgblight_get_mode(),
|
||||||
|
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
|
||||||
|
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
|
||||||
|
rgblight_get_val()/RGBLIGHT_VAL_STEP);
|
||||||
|
} else {
|
||||||
|
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
|
||||||
|
}
|
||||||
|
oled_write(buf, false);
|
||||||
|
} else {
|
||||||
|
oled_write_ln_P(PSTR("\n"), false);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
void oled_task_user(void) {
|
||||||
|
static bool finished_timer = false;
|
||||||
|
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
|
||||||
|
render_logo();
|
||||||
|
} else {
|
||||||
|
if (!finished_timer) {
|
||||||
|
oled_clear();
|
||||||
|
finished_timer = true;
|
||||||
|
}
|
||||||
|
render_info();
|
||||||
|
render_rgbled_status(true);
|
||||||
|
render_logo_font();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# 0xCB 1337
|
||||||
|
|
||||||
|
Macro keypad
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Conor Burns](https://github.com/conor-burns)
|
||||||
|
* Hardware Supported: https://github.com/conor-burns/0xcb-1337
|
||||||
|
* Hardware Availability: Soon on tindie or order your own parts - the hardware in the repo is Open Source :D
|
||||||
|
* PCB renders :)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
To go to bootloader press row 0 col 0 key (top left) while plugging in the board.
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make 0xcb/1337:default
|
||||||
|
|
||||||
|
Flashing example for this keyboard:
|
||||||
|
|
||||||
|
make 0xcb/1337: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).
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = qmk-dfu
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = no # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality on B7 by default
|
||||||
|
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
||||||
|
UNICODE_ENABLE = no # Unicode
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
|
||||||
|
ENCODER_ENABLE = yes
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
OLED_DRIVER_ENABLE = yes
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "2Key2CrawlPad",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 6.5,
|
||||||
|
"height": 2,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"label":"K00", "x":0, "y":0},
|
||||||
|
{"label":"K01", "x":1, "y":0},
|
||||||
|
{"label":"K02", "x":2, "y":0},
|
||||||
|
{"label":"K03", "x":3, "y":0},
|
||||||
|
{"label":"K15", "x":4, "y":0},
|
||||||
|
|
||||||
|
{"label":"K10", "x":0, "y":1},
|
||||||
|
{"label":"K11", "x":1, "y":1},
|
||||||
|
{"label":"K12", "x":2, "y":1},
|
||||||
|
{"label":"K13", "x":3, "y":1},
|
||||||
|
{"label":"K14", "x":4, "y":1},
|
||||||
|
{"label":"K16", "x":5.5, "y":0.5}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,197 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "40percent.club 4x4",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"height": 4,
|
||||||
|
"width": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_ortho_4x4": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
{"x":2, "y":1},
|
||||||
|
{"x":3, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
{"x":2, "y":2},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
{"x":2, "y":3},
|
||||||
|
{"x":3, "y":3}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_ortho_4x8": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
{"x":2, "y":1},
|
||||||
|
{"x":3, "y":1},
|
||||||
|
{"x":4, "y":1},
|
||||||
|
{"x":5, "y":1},
|
||||||
|
{"x":6, "y":1},
|
||||||
|
{"x":7, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
{"x":2, "y":2},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
{"x":2, "y":3},
|
||||||
|
{"x":3, "y":3},
|
||||||
|
{"x":4, "y":3},
|
||||||
|
{"x":5, "y":3},
|
||||||
|
{"x":6, "y":3},
|
||||||
|
{"x":7, "y":3}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_ortho_4x12": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
{"x":8, "y":0},
|
||||||
|
{"x":9, "y":0},
|
||||||
|
{"x":10, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
{"x":2, "y":1},
|
||||||
|
{"x":3, "y":1},
|
||||||
|
{"x":4, "y":1},
|
||||||
|
{"x":5, "y":1},
|
||||||
|
{"x":6, "y":1},
|
||||||
|
{"x":7, "y":1},
|
||||||
|
{"x":8, "y":1},
|
||||||
|
{"x":9, "y":1},
|
||||||
|
{"x":10, "y":1},
|
||||||
|
{"x":11, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
{"x":2, "y":2},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
{"x":2, "y":3},
|
||||||
|
{"x":3, "y":3},
|
||||||
|
{"x":4, "y":3},
|
||||||
|
{"x":5, "y":3},
|
||||||
|
{"x":6, "y":3},
|
||||||
|
{"x":7, "y":3},
|
||||||
|
{"x":8, "y":3},
|
||||||
|
{"x":9, "y":3},
|
||||||
|
{"x":10, "y":3},
|
||||||
|
{"x":11, "y":3}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_ortho_4x16": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
{"x":8, "y":0},
|
||||||
|
{"x":9, "y":0},
|
||||||
|
{"x":10, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
{"x":2, "y":1},
|
||||||
|
{"x":3, "y":1},
|
||||||
|
{"x":4, "y":1},
|
||||||
|
{"x":5, "y":1},
|
||||||
|
{"x":6, "y":1},
|
||||||
|
{"x":7, "y":1},
|
||||||
|
{"x":8, "y":1},
|
||||||
|
{"x":9, "y":1},
|
||||||
|
{"x":10, "y":1},
|
||||||
|
{"x":11, "y":1},
|
||||||
|
{"x":12, "y":1},
|
||||||
|
{"x":13, "y":1},
|
||||||
|
{"x":14, "y":1},
|
||||||
|
{"x":15, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
{"x":2, "y":2},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
{"x":15, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
{"x":2, "y":3},
|
||||||
|
{"x":3, "y":3},
|
||||||
|
{"x":4, "y":3},
|
||||||
|
{"x":5, "y":3},
|
||||||
|
{"x":6, "y":3},
|
||||||
|
{"x":7, "y":3},
|
||||||
|
{"x":8, "y":3},
|
||||||
|
{"x":9, "y":3},
|
||||||
|
{"x":10, "y":3},
|
||||||
|
{"x":11, "y":3},
|
||||||
|
{"x":12, "y":3},
|
||||||
|
{"x":13, "y":3},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
{"x":15, "y":3}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,183 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "40percent.club 4x4",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"height": 4,
|
||||||
|
"width": 4,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_ortho_5x5": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
{"x":2, "y":1},
|
||||||
|
{"x":3, "y":1},
|
||||||
|
{"x":4, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
{"x":2, "y":2},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
{"x":2, "y":3},
|
||||||
|
{"x":3, "y":3},
|
||||||
|
{"x":4, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
{"x":2, "y":4},
|
||||||
|
{"x":3, "y":4},
|
||||||
|
{"x":4, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_ortho_5x10": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
{"x":8, "y":0},
|
||||||
|
{"x":9, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
{"x":2, "y":1},
|
||||||
|
{"x":3, "y":1},
|
||||||
|
{"x":4, "y":1},
|
||||||
|
{"x":5, "y":1},
|
||||||
|
{"x":6, "y":1},
|
||||||
|
{"x":7, "y":1},
|
||||||
|
{"x":8, "y":1},
|
||||||
|
{"x":9, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
{"x":2, "y":2},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
{"x":2, "y":3},
|
||||||
|
{"x":3, "y":3},
|
||||||
|
{"x":4, "y":3},
|
||||||
|
{"x":5, "y":3},
|
||||||
|
{"x":6, "y":3},
|
||||||
|
{"x":7, "y":3},
|
||||||
|
{"x":8, "y":3},
|
||||||
|
{"x":9, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
{"x":2, "y":4},
|
||||||
|
{"x":3, "y":4},
|
||||||
|
{"x":4, "y":4},
|
||||||
|
{"x":5, "y":4},
|
||||||
|
{"x":6, "y":4},
|
||||||
|
{"x":7, "y":4},
|
||||||
|
{"x":8, "y":4},
|
||||||
|
{"x":9, "y":4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_ortho_5x15": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
{"x":8, "y":0},
|
||||||
|
{"x":9, "y":0},
|
||||||
|
{"x":10, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1},
|
||||||
|
{"x":1, "y":1},
|
||||||
|
{"x":2, "y":1},
|
||||||
|
{"x":3, "y":1},
|
||||||
|
{"x":4, "y":1},
|
||||||
|
{"x":5, "y":1},
|
||||||
|
{"x":6, "y":1},
|
||||||
|
{"x":7, "y":1},
|
||||||
|
{"x":8, "y":1},
|
||||||
|
{"x":9, "y":1},
|
||||||
|
{"x":10, "y":1},
|
||||||
|
{"x":11, "y":1},
|
||||||
|
{"x":12, "y":1},
|
||||||
|
{"x":13, "y":1},
|
||||||
|
{"x":14, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
{"x":2, "y":2},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
{"x":2, "y":3},
|
||||||
|
{"x":3, "y":3},
|
||||||
|
{"x":4, "y":3},
|
||||||
|
{"x":5, "y":3},
|
||||||
|
{"x":6, "y":3},
|
||||||
|
{"x":7, "y":3},
|
||||||
|
{"x":8, "y":3},
|
||||||
|
{"x":9, "y":3},
|
||||||
|
{"x":10, "y":3},
|
||||||
|
{"x":11, "y":3},
|
||||||
|
{"x":12, "y":3},
|
||||||
|
{"x":13, "y":3},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
{"x":2, "y":4},
|
||||||
|
{"x":3, "y":4},
|
||||||
|
{"x":4, "y":4},
|
||||||
|
{"x":5, "y":4},
|
||||||
|
{"x":6, "y":4},
|
||||||
|
{"x":7, "y":4},
|
||||||
|
{"x":8, "y":4},
|
||||||
|
{"x":9, "y":4},
|
||||||
|
{"x":10, "y":4},
|
||||||
|
{"x":11, "y":4},
|
||||||
|
{"x":12, "y":4},
|
||||||
|
{"x":13, "y":4},
|
||||||
|
{"x":14, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "AEKISO60 Rev A",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "4pplet",
|
||||||
|
"width": 15,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0, "w":1.25},
|
||||||
|
{"x":1.25, "y":0},
|
||||||
|
{"x":2.25, "y":0},
|
||||||
|
{"x":3.25, "y":0},
|
||||||
|
{"x":4.25, "y":0},
|
||||||
|
{"x":5.25, "y":0},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0},
|
||||||
|
{"x":8.25, "y":0},
|
||||||
|
{"x":9.25, "y":0},
|
||||||
|
{"x":10.25, "y":0},
|
||||||
|
{"x":11.25, "y":0},
|
||||||
|
{"x":12.25, "y":0},
|
||||||
|
{"x":13.25, "y":0, "w":1.75},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.75},
|
||||||
|
{"x":1.75, "y":1},
|
||||||
|
{"x":2.75, "y":1},
|
||||||
|
{"x":3.75, "y":1},
|
||||||
|
{"x":4.75, "y":1},
|
||||||
|
{"x":5.75, "y":1},
|
||||||
|
{"x":6.75, "y":1},
|
||||||
|
{"x":7.75, "y":1},
|
||||||
|
{"x":8.75, "y":1},
|
||||||
|
{"x":9.75, "y":1},
|
||||||
|
{"x":10.75, "y":1},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":2},
|
||||||
|
{"x":2, "y":2},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
{"x":4, "y":2},
|
||||||
|
{"x":5, "y":2},
|
||||||
|
{"x":6, "y":2},
|
||||||
|
{"x":7, "y":2},
|
||||||
|
{"x":8, "y":2},
|
||||||
|
{"x":9, "y":2},
|
||||||
|
{"x":10, "y":2},
|
||||||
|
{"x":11, "y":2},
|
||||||
|
{"x":12, "y":2},
|
||||||
|
{"x":13, "y":2},
|
||||||
|
{"x":14, "y":1, "h":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":1.5},
|
||||||
|
{"x":1.5, "y":3},
|
||||||
|
{"x":2.5, "y":3},
|
||||||
|
{"x":3.5, "y":3},
|
||||||
|
{"x":4.5, "y":3},
|
||||||
|
{"x":5.5, "y":3},
|
||||||
|
{"x":6.5, "y":3},
|
||||||
|
{"x":7.5, "y":3},
|
||||||
|
{"x":8.5, "y":3},
|
||||||
|
{"x":9.5, "y":3},
|
||||||
|
{"x":10.5, "y":3},
|
||||||
|
{"x":11.5, "y":3},
|
||||||
|
{"x":12.5, "y":3, "w":1.5},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.5},
|
||||||
|
{"x":1.5, "y":4, "w":1.25},
|
||||||
|
{"x":2.75, "y":4, "w":1.5},
|
||||||
|
{"x":4.25, "y":4, "w":2.75},
|
||||||
|
{"x":7, "y":4},
|
||||||
|
{"x":8, "y":4, "w":2.75},
|
||||||
|
{"x":10.75, "y":4, "w":1.5},
|
||||||
|
{"x":12.25, "y":4, "w":1.25},
|
||||||
|
{"x":13.5, "y":4, "w":1.5}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Steezy60 Rev A",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "4pplet",
|
||||||
|
"width": 15,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
{"x":8, "y":0},
|
||||||
|
{"x":9, "y":0},
|
||||||
|
{"x":10, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1, "w":1.5},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2},
|
||||||
|
{"x":13.75, "y":2, "w":1.25},
|
||||||
|
|
||||||
|
{"x":0, "y":3},
|
||||||
|
{"x":1, "y":3},
|
||||||
|
{"x":2, "y":3},
|
||||||
|
{"x":3, "y":3},
|
||||||
|
{"x":4, "y":3},
|
||||||
|
{"x":5, "y":3},
|
||||||
|
{"x":6, "y":3},
|
||||||
|
{"x":7, "y":3},
|
||||||
|
{"x":8, "y":3},
|
||||||
|
{"x":9, "y":3},
|
||||||
|
{"x":10, "y":3},
|
||||||
|
{"x":11, "y":3},
|
||||||
|
{"x":12, "y":3},
|
||||||
|
{"x":13, "y":3},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4},
|
||||||
|
{"x":1, "y":4},
|
||||||
|
{"x":2, "y":4},
|
||||||
|
{"x":3, "y":4},
|
||||||
|
{"x":4, "y":4, "w":2.25},
|
||||||
|
{"x":6.25, "y":4, "w":1.5},
|
||||||
|
{"x":7.75, "y":4, "w":2.25},
|
||||||
|
{"x":10, "y":4},
|
||||||
|
{"x":11, "y":4},
|
||||||
|
{"x":12, "y":4},
|
||||||
|
{"x":13, "y":4},
|
||||||
|
{"x":14, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "6-Ball",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "qmk",
|
||||||
|
"width": 3,
|
||||||
|
"height": 3,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0.5},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0.5},
|
||||||
|
|
||||||
|
{"x":0, "y":1.5},
|
||||||
|
{"x":1, "y":2},
|
||||||
|
{"x":2, "y":1.5}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,210 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Framework",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "stevennguyen",
|
||||||
|
"width": 12,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_ortho_5x12": {
|
||||||
|
"layout": [
|
||||||
|
{"x": 0, "y": 0},
|
||||||
|
{"x": 1, "y": 0},
|
||||||
|
{"x": 2, "y": 0},
|
||||||
|
{"x": 3, "y": 0},
|
||||||
|
{"x": 4, "y": 0},
|
||||||
|
{"x": 5, "y": 0},
|
||||||
|
{"x": 6, "y": 0},
|
||||||
|
{"x": 7, "y": 0},
|
||||||
|
{"x": 8, "y": 0},
|
||||||
|
{"x": 9, "y": 0},
|
||||||
|
{"x": 10, "y": 0},
|
||||||
|
{"x": 11, "y": 0},
|
||||||
|
|
||||||
|
{"x": 0, "y": 1},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 2, "y": 1},
|
||||||
|
{"x": 3, "y": 1},
|
||||||
|
{"x": 4, "y": 1},
|
||||||
|
{"x": 5, "y": 1},
|
||||||
|
{"x": 6, "y": 1},
|
||||||
|
{"x": 7, "y": 1},
|
||||||
|
{"x": 8, "y": 1},
|
||||||
|
{"x": 9, "y": 1},
|
||||||
|
{"x": 10, "y": 1},
|
||||||
|
{"x": 11, "y": 1},
|
||||||
|
|
||||||
|
{"x": 0, "y": 2},
|
||||||
|
{"x": 1, "y": 2},
|
||||||
|
{"x": 2, "y": 2},
|
||||||
|
{"x": 3, "y": 2},
|
||||||
|
{"x": 4, "y": 2},
|
||||||
|
{"x": 5, "y": 2},
|
||||||
|
{"x": 6, "y": 2},
|
||||||
|
{"x": 7, "y": 2},
|
||||||
|
{"x": 8, "y": 2},
|
||||||
|
{"x": 9, "y": 2},
|
||||||
|
{"x": 10, "y": 2},
|
||||||
|
{"x": 11, "y": 2},
|
||||||
|
|
||||||
|
{"x": 0, "y": 3},
|
||||||
|
{"x": 1, "y": 3},
|
||||||
|
{"x": 2, "y": 3},
|
||||||
|
{"x": 3, "y": 3},
|
||||||
|
{"x": 4, "y": 3},
|
||||||
|
{"x": 5, "y": 3},
|
||||||
|
{"x": 6, "y": 3},
|
||||||
|
{"x": 7, "y": 3},
|
||||||
|
{"x": 8, "y": 3},
|
||||||
|
{"x": 9, "y": 3},
|
||||||
|
{"x": 10, "y": 3},
|
||||||
|
{"x": 11, "y": 3},
|
||||||
|
|
||||||
|
{"x": 0, "y": 4},
|
||||||
|
{"x": 1, "y": 4},
|
||||||
|
{"x": 2, "y": 4},
|
||||||
|
{"x": 3, "y": 4},
|
||||||
|
{"x": 4, "y": 4},
|
||||||
|
{"x": 5, "y": 4},
|
||||||
|
{"x": 6, "y": 4},
|
||||||
|
{"x": 7, "y": 4},
|
||||||
|
{"x": 8, "y": 4},
|
||||||
|
{"x": 9, "y": 4},
|
||||||
|
{"x": 10, "y": 4},
|
||||||
|
{"x": 11, "y": 4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_ortho_5x12_1x2uC": {
|
||||||
|
"layout": [
|
||||||
|
{"x": 0, "y": 0},
|
||||||
|
{"x": 1, "y": 0},
|
||||||
|
{"x": 2, "y": 0},
|
||||||
|
{"x": 3, "y": 0},
|
||||||
|
{"x": 4, "y": 0},
|
||||||
|
{"x": 5, "y": 0},
|
||||||
|
{"x": 6, "y": 0},
|
||||||
|
{"x": 7, "y": 0},
|
||||||
|
{"x": 8, "y": 0},
|
||||||
|
{"x": 9, "y": 0},
|
||||||
|
{"x": 10, "y": 0},
|
||||||
|
{"x": 11, "y": 0},
|
||||||
|
|
||||||
|
{"x": 0, "y": 1},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 2, "y": 1},
|
||||||
|
{"x": 3, "y": 1},
|
||||||
|
{"x": 4, "y": 1},
|
||||||
|
{"x": 5, "y": 1},
|
||||||
|
{"x": 6, "y": 1},
|
||||||
|
{"x": 7, "y": 1},
|
||||||
|
{"x": 8, "y": 1},
|
||||||
|
{"x": 9, "y": 1},
|
||||||
|
{"x": 10, "y": 1},
|
||||||
|
{"x": 11, "y": 1},
|
||||||
|
|
||||||
|
{"x": 0, "y": 2},
|
||||||
|
{"x": 1, "y": 2},
|
||||||
|
{"x": 2, "y": 2},
|
||||||
|
{"x": 3, "y": 2},
|
||||||
|
{"x": 4, "y": 2},
|
||||||
|
{"x": 5, "y": 2},
|
||||||
|
{"x": 6, "y": 2},
|
||||||
|
{"x": 7, "y": 2},
|
||||||
|
{"x": 8, "y": 2},
|
||||||
|
{"x": 9, "y": 2},
|
||||||
|
{"x": 10, "y": 2},
|
||||||
|
{"x": 11, "y": 2},
|
||||||
|
|
||||||
|
{"x": 0, "y": 3},
|
||||||
|
{"x": 1, "y": 3},
|
||||||
|
{"x": 2, "y": 3},
|
||||||
|
{"x": 3, "y": 3},
|
||||||
|
{"x": 4, "y": 3},
|
||||||
|
{"x": 5, "y": 3},
|
||||||
|
{"x": 6, "y": 3},
|
||||||
|
{"x": 7, "y": 3},
|
||||||
|
{"x": 8, "y": 3},
|
||||||
|
{"x": 9, "y": 3},
|
||||||
|
{"x": 10, "y": 3},
|
||||||
|
{"x": 11, "y": 3},
|
||||||
|
|
||||||
|
{"x": 0, "y": 4},
|
||||||
|
{"x": 1, "y": 4},
|
||||||
|
{"x": 2, "y": 4},
|
||||||
|
{"x": 3, "y": 4},
|
||||||
|
{"x": 4, "y": 4},
|
||||||
|
{"x": 5, "y": 4, "w": 2},
|
||||||
|
{"x": 7, "y": 4},
|
||||||
|
{"x": 8, "y": 4},
|
||||||
|
{"x": 9, "y": 4},
|
||||||
|
{"x": 10, "y": 4},
|
||||||
|
{"x": 11, "y": 4}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LAYOUT_preonic_2x2u": {
|
||||||
|
"layout": [
|
||||||
|
{"x": 0, "y": 0},
|
||||||
|
{"x": 1, "y": 0},
|
||||||
|
{"x": 2, "y": 0},
|
||||||
|
{"x": 3, "y": 0},
|
||||||
|
{"x": 4, "y": 0},
|
||||||
|
{"x": 5, "y": 0},
|
||||||
|
{"x": 6, "y": 0},
|
||||||
|
{"x": 7, "y": 0},
|
||||||
|
{"x": 8, "y": 0},
|
||||||
|
{"x": 9, "y": 0},
|
||||||
|
{"x": 10, "y": 0},
|
||||||
|
{"x": 11, "y": 0},
|
||||||
|
|
||||||
|
{"x": 0, "y": 1},
|
||||||
|
{"x": 1, "y": 1},
|
||||||
|
{"x": 2, "y": 1},
|
||||||
|
{"x": 3, "y": 1},
|
||||||
|
{"x": 4, "y": 1},
|
||||||
|
{"x": 5, "y": 1},
|
||||||
|
{"x": 6, "y": 1},
|
||||||
|
{"x": 7, "y": 1},
|
||||||
|
{"x": 8, "y": 1},
|
||||||
|
{"x": 9, "y": 1},
|
||||||
|
{"x": 10, "y": 1},
|
||||||
|
{"x": 11, "y": 1},
|
||||||
|
|
||||||
|
{"x": 0, "y": 2},
|
||||||
|
{"x": 1, "y": 2},
|
||||||
|
{"x": 2, "y": 2},
|
||||||
|
{"x": 3, "y": 2},
|
||||||
|
{"x": 4, "y": 2},
|
||||||
|
{"x": 5, "y": 2},
|
||||||
|
{"x": 6, "y": 2},
|
||||||
|
{"x": 7, "y": 2},
|
||||||
|
{"x": 8, "y": 2},
|
||||||
|
{"x": 9, "y": 2},
|
||||||
|
{"x": 10, "y": 2},
|
||||||
|
{"x": 11, "y": 2},
|
||||||
|
|
||||||
|
{"x": 0, "y": 3},
|
||||||
|
{"x": 1, "y": 3},
|
||||||
|
{"x": 2, "y": 3},
|
||||||
|
{"x": 3, "y": 3},
|
||||||
|
{"x": 4, "y": 3},
|
||||||
|
{"x": 5, "y": 3},
|
||||||
|
{"x": 6, "y": 3},
|
||||||
|
{"x": 7, "y": 3},
|
||||||
|
{"x": 8, "y": 3},
|
||||||
|
{"x": 9, "y": 3},
|
||||||
|
{"x": 10, "y": 3},
|
||||||
|
{"x": 11, "y": 3},
|
||||||
|
|
||||||
|
{"x": 0, "y": 4},
|
||||||
|
{"x": 1, "y": 4},
|
||||||
|
{"x": 2, "y": 4},
|
||||||
|
{"x": 3, "y": 4},
|
||||||
|
{"x": 4, "y": 4, "w": 2},
|
||||||
|
{"x": 6, "y": 4, "w": 2},
|
||||||
|
{"x": 8, "y": 4},
|
||||||
|
{"x": 9, "y": 4},
|
||||||
|
{"x": 10, "y": 4},
|
||||||
|
{"x": 11, "y": 4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1 +1,2 @@
|
|||||||
VIA_ENABLE = yes
|
VIA_ENABLE = yes
|
||||||
|
LEADER_ENABLE = no
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Constellation",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "Xelus22",
|
||||||
|
"width": 16,
|
||||||
|
"height": 5,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_all": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0},
|
||||||
|
{"x":1, "y":0},
|
||||||
|
{"x":2, "y":0},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0},
|
||||||
|
{"x":5, "y":0},
|
||||||
|
{"x":6, "y":0},
|
||||||
|
{"x":7, "y":0},
|
||||||
|
{"x":8, "y":0},
|
||||||
|
{"x":9, "y":0},
|
||||||
|
{"x":10, "y":0},
|
||||||
|
{"x":11, "y":0},
|
||||||
|
{"x":12, "y":0},
|
||||||
|
{"x":13, "y":0},
|
||||||
|
{"x":14, "y":0},
|
||||||
|
{"x":15, "y":0},
|
||||||
|
|
||||||
|
{"x":0, "y":1, "w":1.5},
|
||||||
|
{"x":1.5, "y":1},
|
||||||
|
{"x":2.5, "y":1},
|
||||||
|
{"x":3.5, "y":1},
|
||||||
|
{"x":4.5, "y":1},
|
||||||
|
{"x":5.5, "y":1},
|
||||||
|
{"x":6.5, "y":1},
|
||||||
|
{"x":7.5, "y":1},
|
||||||
|
{"x":8.5, "y":1},
|
||||||
|
{"x":9.5, "y":1},
|
||||||
|
{"x":10.5, "y":1},
|
||||||
|
{"x":11.5, "y":1},
|
||||||
|
{"x":12.5, "y":1},
|
||||||
|
{"x":13.5, "y":1, "w":1.5},
|
||||||
|
{"x":15, "y":1},
|
||||||
|
|
||||||
|
{"x":0, "y":2, "w":1.75},
|
||||||
|
{"x":1.75, "y":2},
|
||||||
|
{"x":2.75, "y":2},
|
||||||
|
{"x":3.75, "y":2},
|
||||||
|
{"x":4.75, "y":2},
|
||||||
|
{"x":5.75, "y":2},
|
||||||
|
{"x":6.75, "y":2},
|
||||||
|
{"x":7.75, "y":2},
|
||||||
|
{"x":8.75, "y":2},
|
||||||
|
{"x":9.75, "y":2},
|
||||||
|
{"x":10.75, "y":2},
|
||||||
|
{"label":"\"", "x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2, "w":2.25},
|
||||||
|
{"x":15, "y":2},
|
||||||
|
|
||||||
|
{"x":0, "y":3, "w":2.25},
|
||||||
|
{"x":2.25, "y":3},
|
||||||
|
{"x":3.25, "y":3},
|
||||||
|
{"x":4.25, "y":3},
|
||||||
|
{"x":5.25, "y":3},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3},
|
||||||
|
{"x":8.25, "y":3},
|
||||||
|
{"x":9.25, "y":3},
|
||||||
|
{"x":10.25, "y":3},
|
||||||
|
{"x":11.25, "y":3},
|
||||||
|
{"x":12.25, "y":3, "w":1.75},
|
||||||
|
{"x":14, "y":3},
|
||||||
|
{"x":15, "y":3},
|
||||||
|
|
||||||
|
{"x":0, "y":4, "w":1.25},
|
||||||
|
{"x":1.25, "y":4, "w":1.25},
|
||||||
|
{"x":2.5, "y":4, "w":1.25},
|
||||||
|
{"x":3.75, "y":4, "w":6.25},
|
||||||
|
{"x":10, "y":4, "w":1.5},
|
||||||
|
{"x":11.5, "y":4, "w":1.5},
|
||||||
|
{"x":13, "y":4},
|
||||||
|
{"x":14, "y":4},
|
||||||
|
{"x":15, "y":4}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -70,4 +70,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||||||
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
)
|
)
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -0,0 +1,87 @@
|
|||||||
|
/* Copyright 2021 eithanshavit
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_MAIN,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define RAISE MO(_RAISE)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_MAIN] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, 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_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
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_UP,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
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_LEFT, KC_DOWN, KC_RIGHT,
|
||||||
|
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[3] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Default Breeze Layout + VIA support
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This is the default suggested layout for Breeze Split Keyboard, with VIA support.
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
# LTO: link time optimization makes the build take slightly longer
|
||||||
|
# but makes the resulting .hex file smaller, which allows you to
|
||||||
|
# fit more features into smaller MCUs:
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
# Support for these features make the hex file larger, but we want 'em:
|
||||||
|
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Support USB N-key roll over.
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
/* Copyright 2021 eithanshavit
|
/* Copyright 2021 Afternoon Labs
|
||||||
*
|
*
|
||||||
* This program is free software: you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
Split ergonomics meets productivity. Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb cluster, arrow keys, and a 6 key macro cluster, with ortholinear column-staggered.
|
Split ergonomics meets productivity. Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb cluster, arrow keys, and a 6 key macro cluster, with ortholinear column-staggered.
|
||||||
|
|
||||||
* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit)
|
* Keyboard Maintainer: [AfternoonLabs](https://github.com/afternoonlabs)
|
||||||
* Hardware Supported: Breeze Rev1 PCB
|
* Hardware Supported: Breeze Rev1 PCB
|
||||||
* Hardware Availability: Coming soon
|
* Hardware Availability: [store.afternoonlab.com](https://store.afternoonlabs.com)
|
||||||
|
|
||||||
Make example for this keyboard (after setting up your build environment):
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ BOOTLOADER = caterina
|
|||||||
#
|
#
|
||||||
SPLIT_KEYBOARD = yes
|
SPLIT_KEYBOARD = yes
|
||||||
BOOTMAGIC_ENABLE = lite
|
BOOTMAGIC_ENABLE = lite
|
||||||
MOUSEKEY_ENABLE = no # Mouse keys
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
EXTRAKEY_ENABLE = no # Audio control and System control
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
CONSOLE_ENABLE = yes # Console for debug
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_MAIN,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define RAISE MO(_RAISE)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_MAIN] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, 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_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
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_UP,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_LEFT, KC_DOWN, KC_RIGHT,
|
||||||
|
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
)
|
||||||
|
};
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# Default Ocean Breeze Layout
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
This is the default suggested layout for Ocean Breeze Split Keyboard.
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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 "oceanbreeze.h"
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#ifdef KEYBOARD_afternoonlabs_oceanbreeze_rev1
|
||||||
|
# include "rev1.h"
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x616C
|
||||||
|
#define PRODUCT_ID 0x0003
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER AfternoonLabs
|
||||||
|
#define PRODUCT OceanBreeze
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
// Rows are doubled-up
|
||||||
|
#define MATRIX_ROWS 12
|
||||||
|
#define MATRIX_COLS 9
|
||||||
|
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS \
|
||||||
|
{ F4, F5, F6, F7, B1, B6 }
|
||||||
|
#define MATRIX_COL_PINS \
|
||||||
|
{ B2, D1, D0, D4, C6, D7, E6, B4, B5 }
|
||||||
|
|
||||||
|
#define SPLIT_HAND_PIN B3
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define SOFT_SERIAL_PIN D2
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define BOOTMAGIC_LITE_ROW_RIGHT 0
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
|
||||||
|
#define BOOTMAGIC_LITE_ROW_LEFT 0
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN_LEFT 5
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "OceanBreeze",
|
||||||
|
"url": "afternoonlabs.com",
|
||||||
|
"productId": "0x0003",
|
||||||
|
"maintainer": "afternoonlabs",
|
||||||
|
"width": 19,
|
||||||
|
"height": 6,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0.375},
|
||||||
|
{"x":1, "y":0.375},
|
||||||
|
{"x":2, "y":0.125},
|
||||||
|
{"x":3, "y":0},
|
||||||
|
{"x":4, "y":0.125},
|
||||||
|
{"x":5, "y":0.25},
|
||||||
|
{"x":9.75, "y":0.25},
|
||||||
|
{"x":10.75, "y":0.125},
|
||||||
|
{"x":11.75, "y":0},
|
||||||
|
{"x":12.75, "y":0.125},
|
||||||
|
{"x":13.75, "y":0.375},
|
||||||
|
{"x":14.75, "y":0.375},
|
||||||
|
{"x":16, "y":0.375},
|
||||||
|
{"x":17, "y":0.375},
|
||||||
|
{"x":18, "y":0.375},
|
||||||
|
|
||||||
|
{"x":0, "y":1.375},
|
||||||
|
{"x":1, "y":1.375},
|
||||||
|
{"x":2, "y":1.125},
|
||||||
|
{"x":3, "y":1},
|
||||||
|
{"x":4, "y":1.125},
|
||||||
|
{"x":5, "y":1.25},
|
||||||
|
{"x":9.75, "y":1.25},
|
||||||
|
{"x":10.75, "y":1.125},
|
||||||
|
{"x":11.75, "y":1},
|
||||||
|
{"x":12.75, "y":1.125},
|
||||||
|
{"x":13.75, "y":1.375},
|
||||||
|
{"x":14.75, "y":1.375},
|
||||||
|
{"x":16, "y":1.375},
|
||||||
|
{"x":17, "y":1.375},
|
||||||
|
{"x":18, "y":1.375},
|
||||||
|
|
||||||
|
{"x":0, "y":2.375},
|
||||||
|
{"x":1, "y":2.375},
|
||||||
|
{"x":2, "y":2.125},
|
||||||
|
{"x":3, "y":2},
|
||||||
|
{"x":4, "y":2.125},
|
||||||
|
{"x":5, "y":2.25},
|
||||||
|
{"x":9.75, "y":2.25},
|
||||||
|
{"x":10.75, "y":2.125},
|
||||||
|
{"x":11.75, "y":2},
|
||||||
|
{"x":12.75, "y":2.125},
|
||||||
|
{"x":13.75, "y":2.375},
|
||||||
|
{"x":14.75, "y":2.375},
|
||||||
|
{"x":17, "y":2.375},
|
||||||
|
|
||||||
|
{"x":0, "y":3.375},
|
||||||
|
{"x":1, "y":3.375},
|
||||||
|
{"x":2, "y":3.125},
|
||||||
|
{"x":3, "y":3},
|
||||||
|
{"x":4, "y":3.125},
|
||||||
|
{"x":5, "y":3.25},
|
||||||
|
{"x":6.25, "y":3.75},
|
||||||
|
{"x":8.5, "y":3.75},
|
||||||
|
{"x":9.75, "y":3.25},
|
||||||
|
{"x":10.75, "y":3.125},
|
||||||
|
{"x":11.75, "y":3},
|
||||||
|
{"x":12.75, "y":3.125},
|
||||||
|
{"x":13.75, "y":3.375},
|
||||||
|
{"x":14.75, "y":3.375},
|
||||||
|
{"x":16, "y":3.375},
|
||||||
|
{"x":17, "y":3.375},
|
||||||
|
{"x":18, "y":3.375},
|
||||||
|
|
||||||
|
{"x":2.5, "y":4.25},
|
||||||
|
{"x":3.5, "y":4.25},
|
||||||
|
{"x":4.5, "y":4.5},
|
||||||
|
{"x":6.25, "y":4.75},
|
||||||
|
{"x":8.5, "y":4.75},
|
||||||
|
{"x":10.25, "y":4.5},
|
||||||
|
{"x":11.25, "y":4.25},
|
||||||
|
{"x":12.25, "y":4.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Breeze
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Special Edition of the [Breeze](https://afternoonlabs.com). This one has two 1Us instead of the larger 2U on the thumb cluster.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [AfternoonLabs](https://github.com/afternoonlabs)
|
||||||
|
* Hardware Supported: Ocean Breeze Rev1 PCB
|
||||||
|
* Hardware Availability: [store.afternoonlab.com](https://store.afternoonlabs.com)
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make afternoonlabs/oceanbreeze/rev1:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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 "oceanbreeze.h"
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "oceanbreeze.h"
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define XXX KC_NO
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, MC0, MC1, MC2, \
|
||||||
|
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, MC3, MC4, MC5, \
|
||||||
|
L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, AUP, \
|
||||||
|
L30, L31, L32, L33, L34, L35, LT4, RT1, R30, R31, R32, R33, R34, R35, ALT, ADN, ART, \
|
||||||
|
LT0, LT1, LT2, LT3, RT2, RT3, RT4, RT5 \
|
||||||
|
) { \
|
||||||
|
{ L05, L04, L03, L02, L01, L00, XXX, XXX, XXX }, \
|
||||||
|
{ L15, L14, L13, L12, L11, L10, XXX, XXX, XXX }, \
|
||||||
|
{ L25, L24, L23, L22, L21, L20, XXX, XXX, XXX }, \
|
||||||
|
{ L35, L34, L33, L32, L31, L30, XXX, XXX, XXX }, \
|
||||||
|
{ LT3, LT2, LT1, LT0, XXX, XXX, XXX, XXX, XXX }, \
|
||||||
|
{ LT4, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX }, \
|
||||||
|
{ R00, R01, R02, R03, R04, R05, MC0, MC1, MC2 }, \
|
||||||
|
{ R10, R11, R12, R13, R14, R15, MC3, MC4, MC5 }, \
|
||||||
|
{ R20, R21, R22, R23, R24, R25, XXX, AUP, XXX }, \
|
||||||
|
{ R30, R31, R32, R33, R34, R35, ALT, ADN, ART }, \
|
||||||
|
{ RT2, RT3, RT4, RT5, XXX, XXX, XXX, XXX, XXX }, \
|
||||||
|
{ RT1, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_MAIN,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define RAISE MO(_RAISE)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_MAIN] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_LBRC, KC_RBRC, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_UP, 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_LEFT, KC_DOWN, KC_RIGHT, 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_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Default Southern Breeze Layout
|
||||||
|
|
||||||
|
This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half).
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# LTO: link time optimization makes the build take slightly longer
|
||||||
|
# but makes the resulting .hex file smaller, which allows you to
|
||||||
|
# fit more features into smaller MCUs:
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
# Support for these features make the hex file larger, but we want 'em:
|
||||||
|
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Support USB N-key roll over.
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_MAIN,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define RAISE MO(_RAISE)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_MAIN] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_LBRC, KC_RBRC, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
KC_UP, 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_LEFT, KC_DOWN, KC_RIGHT, 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_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[3] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Default Southern Breeze Layout
|
||||||
|
|
||||||
|
This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half).
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
# LTO: link time optimization makes the build take slightly longer
|
||||||
|
# but makes the resulting .hex file smaller, which allows you to
|
||||||
|
# fit more features into smaller MCUs:
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
# Support for these features make the hex file larger, but we want 'em:
|
||||||
|
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Support USB N-key roll over.
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x616C
|
||||||
|
#define PRODUCT_ID 0x0005
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER AfternoonLabs
|
||||||
|
#define PRODUCT Southern Breeze
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
// Rows are doubled-up
|
||||||
|
#define MATRIX_ROWS 10
|
||||||
|
#define MATRIX_COLS 9
|
||||||
|
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS \
|
||||||
|
{ F4, F5, F6, F7, B1 }
|
||||||
|
#define MATRIX_COL_PINS \
|
||||||
|
{ B2, D1, D0, D4, C6, D7, E6, B4, B5 }
|
||||||
|
|
||||||
|
#define SPLIT_HAND_PIN B3
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define SOFT_SERIAL_PIN D2
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define BOOTMAGIC_LITE_ROW_RIGHT 0
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
|
||||||
|
#define BOOTMAGIC_LITE_ROW_LEFT 0
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN_LEFT 5
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Southern Breeze",
|
||||||
|
"url": "afternoonlabs.com/breeze",
|
||||||
|
"productId": "0x0005",
|
||||||
|
"maintainer": "eithanshavit",
|
||||||
|
"width": 19,
|
||||||
|
"height": 6,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0.375},
|
||||||
|
{"x":1, "y":0.375},
|
||||||
|
{"x":2, "y":0.375},
|
||||||
|
{"x":3.25, "y":0.375},
|
||||||
|
{"x":4.25, "y":0.375},
|
||||||
|
{"x":5.25, "y":0.125},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0.125},
|
||||||
|
{"x":8.25, "y":0.25},
|
||||||
|
{"x":13, "y":0.25},
|
||||||
|
{"x":14, "y":0.125},
|
||||||
|
{"x":15, "y":0},
|
||||||
|
{"x":16, "y":0.125},
|
||||||
|
{"x":17, "y":0.375},
|
||||||
|
{"x":18, "y":0.375},
|
||||||
|
|
||||||
|
{"x":0, "y":1.375},
|
||||||
|
{"x":1, "y":1.375},
|
||||||
|
{"x":2, "y":1.375},
|
||||||
|
{"x":3.25, "y":1.375},
|
||||||
|
{"x":4.25, "y":1.375},
|
||||||
|
{"x":5.25, "y":1.125},
|
||||||
|
{"x":6.25, "y":1},
|
||||||
|
{"x":7.25, "y":1.125},
|
||||||
|
{"x":8.25, "y":1.25},
|
||||||
|
{"x":13, "y":1.25},
|
||||||
|
{"x":14, "y":1.125},
|
||||||
|
{"x":15, "y":1},
|
||||||
|
{"x":16, "y":1.125},
|
||||||
|
{"x":17, "y":1.375},
|
||||||
|
{"x":18, "y":1.375},
|
||||||
|
|
||||||
|
{"x":1, "y":2.375},
|
||||||
|
{"x":3.25, "y":2.375},
|
||||||
|
{"x":4.25, "y":2.375},
|
||||||
|
{"x":5.25, "y":2.125},
|
||||||
|
{"x":6.25, "y":2},
|
||||||
|
{"x":7.25, "y":2.125},
|
||||||
|
{"x":8.25, "y":2.25},
|
||||||
|
{"x":13, "y":2.25},
|
||||||
|
{"x":14, "y":2.125},
|
||||||
|
{"x":15, "y":2},
|
||||||
|
{"x":16, "y":2.125},
|
||||||
|
{"x":17, "y":2.375},
|
||||||
|
{"x":18, "y":2.375},
|
||||||
|
|
||||||
|
{"x":0, "y":3.375},
|
||||||
|
{"x":1, "y":3.375},
|
||||||
|
{"x":2, "y":3.375},
|
||||||
|
{"x":3.25, "y":3.375},
|
||||||
|
{"x":4.25, "y":3.375},
|
||||||
|
{"x":5.25, "y":3.125},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3.125},
|
||||||
|
{"x":8.25, "y":3.25},
|
||||||
|
{"x":13, "y":3.25},
|
||||||
|
{"x":14, "y":3.125},
|
||||||
|
{"x":15, "y":3},
|
||||||
|
{"x":16, "y":3.125},
|
||||||
|
{"x":17, "y":3.375},
|
||||||
|
{"x":18, "y":3.375},
|
||||||
|
|
||||||
|
{"x":5.75, "y":4.25},
|
||||||
|
{"x":6.75, "y":4.25},
|
||||||
|
{"x":7.75, "y":4.5},
|
||||||
|
{"x":9.5, "y":3.75, "h":2, "r":30},
|
||||||
|
{"x":11.75, "y":3.75, "h":2, "r":-30},
|
||||||
|
{"x":13.5, "y":4.5},
|
||||||
|
{"x":14.5, "y":4.25},
|
||||||
|
{"x":15.5, "y":4.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Southern Breeze
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Split ergonomics meets productivity. Southern Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb cluster, arrow keys, and a 6 key macro cluster, with ortholinear column-staggered.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit)
|
||||||
|
* Hardware Supported: Breeze Rev1 PCB
|
||||||
|
* Hardware Availability: Coming soon
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make afternoonlabs/southern_breeze/rev1:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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 "rev1.h"
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "southern_breeze.h"
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
|
||||||
|
LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
|
||||||
|
LWUP, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
|
||||||
|
LWLT, LWDN, LWRT, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
|
||||||
|
LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \
|
||||||
|
{ L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \
|
||||||
|
{ L25, L24, L23, L22, L21, L20, KC_NO, LWUP, KC_NO }, \
|
||||||
|
{ L35, L34, L33, L32, L31, L30, LWRT, LWDN, LWLT }, \
|
||||||
|
{ LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ R00, R01, R02, R03, R04, R05, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ R10, R11, R12, R13, R14, R15, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ R20, R21, R22, R23, R24, R25, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ R30, R31, R32, R33, R34, R35, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = no # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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 "southern_breeze.h"
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#ifdef KEYBOARD_afternoonlabs_southern_breeze_rev1
|
||||||
|
# include "rev1.h"
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "config_common.h"
|
||||||
|
|
||||||
|
#define NO_ACTION_MACRO
|
||||||
|
#define NO_ACTION_FUNCTION
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_MAIN,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define RAISE MO(_RAISE)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_MAIN] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, KC_WH_U, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
KC_BTN1, KC_WH_D, KC_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
KC_MS_U, 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_UP,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
KC_MS_L, KC_MS_D, KC_MS_R, 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_LEFT, KC_DOWN, KC_RIGHT,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Default Summer Breeze Layout
|
||||||
|
|
||||||
|
This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters).
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# LTO: link time optimization makes the build take slightly longer
|
||||||
|
# but makes the resulting .hex file smaller, which allows you to
|
||||||
|
# fit more features into smaller MCUs:
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
# Support for these features make the hex file larger, but we want 'em:
|
||||||
|
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Support USB N-key roll over.
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include QMK_KEYBOARD_H
|
||||||
|
|
||||||
|
enum layer_names {
|
||||||
|
_MAIN,
|
||||||
|
_LOWER,
|
||||||
|
_RAISE,
|
||||||
|
};
|
||||||
|
|
||||||
|
#define LOWER MO(_LOWER)
|
||||||
|
#define RAISE MO(_RAISE)
|
||||||
|
|
||||||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
|
|
||||||
|
[_MAIN] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, KC_WH_U, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
KC_BTN1, KC_WH_D, KC_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
KC_MS_U, 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_UP,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
KC_MS_L, KC_MS_D, KC_MS_R, 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_LEFT, KC_DOWN, KC_RIGHT,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_LOWER] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[_RAISE] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
),
|
||||||
|
|
||||||
|
[3] = LAYOUT(
|
||||||
|
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||||
|
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
|
||||||
|
_______, _______, _______, _______, _______, _______, _______, _______
|
||||||
|
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
|
||||||
|
)
|
||||||
|
|
||||||
|
};
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Default Summer Breeze Layout
|
||||||
|
|
||||||
|
This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters).
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
VIA_ENABLE = yes
|
||||||
|
# LTO: link time optimization makes the build take slightly longer
|
||||||
|
# but makes the resulting .hex file smaller, which allows you to
|
||||||
|
# fit more features into smaller MCUs:
|
||||||
|
LTO_ENABLE = yes
|
||||||
|
# Support for these features make the hex file larger, but we want 'em:
|
||||||
|
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
|
||||||
|
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
|
||||||
|
COMMAND_ENABLE = yes # Commands for debug and configuration
|
||||||
|
NKRO_ENABLE = yes # Support USB N-key roll over.
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0x616C
|
||||||
|
#define PRODUCT_ID 0x0004
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER AfternoonLabs
|
||||||
|
#define PRODUCT Summer Breeze
|
||||||
|
|
||||||
|
/* key matrix size */
|
||||||
|
// Rows are doubled-up
|
||||||
|
#define MATRIX_ROWS 10
|
||||||
|
#define MATRIX_COLS 9
|
||||||
|
|
||||||
|
// wiring of each half
|
||||||
|
#define MATRIX_ROW_PINS \
|
||||||
|
{ F4, F5, F6, F7, B1 }
|
||||||
|
#define MATRIX_COL_PINS \
|
||||||
|
{ B2, D1, D0, D4, C6, D7, E6, B4, B5 }
|
||||||
|
|
||||||
|
#define SPLIT_HAND_PIN B3
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
#define SOFT_SERIAL_PIN D2
|
||||||
|
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
#define BOOTMAGIC_LITE_ROW_RIGHT 0
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
|
||||||
|
#define BOOTMAGIC_LITE_ROW_LEFT 0
|
||||||
|
#define BOOTMAGIC_LITE_COLUMN_LEFT 5
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Summer Breeze",
|
||||||
|
"url": "afternoonlabs.com/breeze",
|
||||||
|
"productId": "0x0004",
|
||||||
|
"maintainer": "eithanshavit",
|
||||||
|
"width": 19,
|
||||||
|
"height": 6,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT": {
|
||||||
|
"layout": [
|
||||||
|
{"x":0, "y":0.375},
|
||||||
|
{"x":1, "y":0.375},
|
||||||
|
{"x":2, "y":0.375},
|
||||||
|
{"x":3.25, "y":0.375},
|
||||||
|
{"x":4.25, "y":0.375},
|
||||||
|
{"x":5.25, "y":0.125},
|
||||||
|
{"x":6.25, "y":0},
|
||||||
|
{"x":7.25, "y":0.125},
|
||||||
|
{"x":8.25, "y":0.25},
|
||||||
|
{"x":13, "y":0.25},
|
||||||
|
{"x":14, "y":0.125},
|
||||||
|
{"x":15, "y":0},
|
||||||
|
{"x":16, "y":0.125},
|
||||||
|
{"x":17, "y":0.375},
|
||||||
|
{"x":18, "y":0.375},
|
||||||
|
{"x":19.25, "y":0.375},
|
||||||
|
{"x":20.25, "y":0.375},
|
||||||
|
{"x":21.25, "y":0.375},
|
||||||
|
|
||||||
|
{"x":0, "y":1.375},
|
||||||
|
{"x":1, "y":1.375},
|
||||||
|
{"x":2, "y":1.375},
|
||||||
|
{"x":3.25, "y":1.375},
|
||||||
|
{"x":4.25, "y":1.375},
|
||||||
|
{"x":5.25, "y":1.125},
|
||||||
|
{"x":6.25, "y":1},
|
||||||
|
{"x":7.25, "y":1.125},
|
||||||
|
{"x":8.25, "y":1.25},
|
||||||
|
{"x":13, "y":1.25},
|
||||||
|
{"x":14, "y":1.125},
|
||||||
|
{"x":15, "y":1},
|
||||||
|
{"x":16, "y":1.125},
|
||||||
|
{"x":17, "y":1.375},
|
||||||
|
{"x":18, "y":1.375},
|
||||||
|
{"x":19.25, "y":1.375},
|
||||||
|
{"x":20.25, "y":1.375},
|
||||||
|
{"x":21.25, "y":1.375},
|
||||||
|
|
||||||
|
{"x":1, "y":2.375},
|
||||||
|
{"x":3.25, "y":2.375},
|
||||||
|
{"x":4.25, "y":2.375},
|
||||||
|
{"x":5.25, "y":2.125},
|
||||||
|
{"x":6.25, "y":2},
|
||||||
|
{"x":7.25, "y":2.125},
|
||||||
|
{"x":8.25, "y":2.25},
|
||||||
|
{"x":13, "y":2.25},
|
||||||
|
{"x":14, "y":2.125},
|
||||||
|
{"x":15, "y":2},
|
||||||
|
{"x":16, "y":2.125},
|
||||||
|
{"x":17, "y":2.375},
|
||||||
|
{"x":18, "y":2.375},
|
||||||
|
{"x":20.25, "y":2.375},
|
||||||
|
|
||||||
|
{"x":0, "y":3.375},
|
||||||
|
{"x":1, "y":3.375},
|
||||||
|
{"x":2, "y":3.375},
|
||||||
|
{"x":3.25, "y":3.375},
|
||||||
|
{"x":4.25, "y":3.375},
|
||||||
|
{"x":5.25, "y":3.125},
|
||||||
|
{"x":6.25, "y":3},
|
||||||
|
{"x":7.25, "y":3.125},
|
||||||
|
{"x":8.25, "y":3.25},
|
||||||
|
{"x":13, "y":3.25},
|
||||||
|
{"x":14, "y":3.125},
|
||||||
|
{"x":15, "y":3},
|
||||||
|
{"x":16, "y":3.125},
|
||||||
|
{"x":17, "y":3.375},
|
||||||
|
{"x":18, "y":3.375},
|
||||||
|
{"x":19.25, "y":3.375},
|
||||||
|
{"x":20.25, "y":3.375},
|
||||||
|
{"x":21.25, "y":3.375},
|
||||||
|
|
||||||
|
{"x":5.75, "y":4.25},
|
||||||
|
{"x":6.75, "y":4.25},
|
||||||
|
{"x":7.75, "y":4.5},
|
||||||
|
{"x":9.5, "y":3.75, "h":2, "r":30},
|
||||||
|
{"x":11.75, "y":3.75, "h":2, "r":-30},
|
||||||
|
{"x":13.5, "y":4.5},
|
||||||
|
{"x":14.5, "y":4.25},
|
||||||
|
{"x":15.5, "y":4.25}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
# Summer Breeze
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Split ergonomics meets productivity. Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb clusters, arrow keys, and two 6 key macro clusters, with ortholinear column-staggered.
|
||||||
|
|
||||||
|
* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit)
|
||||||
|
* Hardware Supported: Breeze Rev1 PCB
|
||||||
|
* Hardware Availability: Coming soon
|
||||||
|
|
||||||
|
Make example for this keyboard (after setting up your build environment):
|
||||||
|
|
||||||
|
make afternoonlabs/summer_breeze/rev1:default
|
||||||
|
|
||||||
|
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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 "rev1.h"
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "summer_breeze.h"
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT( \
|
||||||
|
LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, MC0, MC1, MC2, \
|
||||||
|
LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, MC3, MC4, MC5, \
|
||||||
|
LW21, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, AUP, \
|
||||||
|
LW30, LW31, LW32, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, ALT, ADN, ART, \
|
||||||
|
LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \
|
||||||
|
) \
|
||||||
|
{ \
|
||||||
|
{ L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \
|
||||||
|
{ L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \
|
||||||
|
{ L25, L24, L23, L22, L21, L20, KC_NO, LW01, KC_NO }, \
|
||||||
|
{ L35, L34, L33, L32, L31, L30, LW32, LW31, LW30 }, \
|
||||||
|
{ LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ R00, R01, R02, R03, R04, R05, MC0, MC1, MC2 }, \
|
||||||
|
{ R10, R11, R12, R13, R14, R15, MC3, MC4, MC5 }, \
|
||||||
|
{ R20, R21, R22, R23, R24, R25, KC_NO, AUP, KC_NO }, \
|
||||||
|
{ R30, R31, R32, R33, R34, R35, ALT, ADN, ART }, \
|
||||||
|
{ RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# MCU name
|
||||||
|
MCU = atmega32u4
|
||||||
|
|
||||||
|
# Bootloader selection
|
||||||
|
BOOTLOADER = caterina
|
||||||
|
|
||||||
|
# Build Options
|
||||||
|
# change yes to no to disable
|
||||||
|
#
|
||||||
|
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
|
||||||
|
MOUSEKEY_ENABLE = no # Mouse keys
|
||||||
|
EXTRAKEY_ENABLE = no # Audio control and System control
|
||||||
|
CONSOLE_ENABLE = yes # Console for debug
|
||||||
|
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||||
|
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||||
|
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||||
|
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||||
|
NKRO_ENABLE = no # USB Nkey Rollover
|
||||||
|
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||||
|
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||||
|
BLUETOOTH_ENABLE = no # Enable Bluetooth
|
||||||
|
AUDIO_ENABLE = no # Audio output
|
||||||
|
SPLIT_KEYBOARD = yes
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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 "summer_breeze.h"
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
/* Copyright 2021 Afternoon Labs
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
|
||||||
|
#ifdef KEYBOARD_afternoonlabs_summer_breeze_rev1
|
||||||
|
# include "rev1.h"
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Andrew Kannan
|
||||||
|
|
||||||
|
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 "andromeda.h"
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Andrew Kannan
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 2 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "quantum.h"
|
||||||
|
|
||||||
|
#define LAYOUT_tkl_ansi_wkl( \
|
||||||
|
K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \
|
||||||
|
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
|
||||||
|
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
|
||||||
|
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \
|
||||||
|
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K415, \
|
||||||
|
K500, K502, K507, K511, K513, K514, K515, K516 \
|
||||||
|
) { \
|
||||||
|
{ K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \
|
||||||
|
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
|
||||||
|
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 , K214, K215, K216 }, \
|
||||||
|
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC_NO, KC_NO, KC_NO }, \
|
||||||
|
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO, K415, KC_NO }, \
|
||||||
|
{ K500, KC_NO, K502, KC_NO, KC_NO, KC_NO, KC_NO, K507, KC_NO, KC_NO, KC_NO, K511, KC_NO, K513, K514, K515, K516 } \
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Andrew Kannan
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
/* USB Device descriptor parameter */
|
||||||
|
#define VENDOR_ID 0xA103
|
||||||
|
#define PRODUCT_ID 0x000A
|
||||||
|
#define DEVICE_VER 0x0001
|
||||||
|
#define MANUFACTURER ai03 Design Studio
|
||||||
|
#define PRODUCT Andromeda
|
||||||
|
|
||||||
|
#define MATRIX_ROWS 6
|
||||||
|
#define MATRIX_COLS 17
|
||||||
|
|
||||||
|
#define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B2, B1, B0, A7, A6, B5, B8, B9 }
|
||||||
|
#define MATRIX_ROW_PINS { B4, B3, A15, A3, A4, A5 }
|
||||||
|
#define DIODE_DIRECTION COL2ROW
|
||||||
|
|
||||||
|
/* define if matrix has ghost */
|
||||||
|
//#define MATRIX_HAS_GHOST
|
||||||
|
|
||||||
|
/* Set 0 if debouncing isn't needed */
|
||||||
|
#define DEBOUNCE 5
|
||||||
|
|
||||||
|
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||||
|
#define LOCKING_SUPPORT_ENABLE
|
||||||
|
/* Locking resynchronize hack */
|
||||||
|
#define LOCKING_RESYNC_ENABLE
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"keyboard_name": "Andromeda",
|
||||||
|
"url": "",
|
||||||
|
"maintainer": "ai03",
|
||||||
|
"width": 18.25,
|
||||||
|
"height": 6.25,
|
||||||
|
"layouts": {
|
||||||
|
"LAYOUT_tkl_ansi_wkl": {
|
||||||
|
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"label":"Alt", "x":11, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loaded 100 of 1877 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user