Compare commits
173 Commits
develop
...
miryoku_bl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f48cd135c | ||
|
|
e1307cc3a7 | ||
|
|
aebc99a4e0 | ||
|
|
7f413e9f01 | ||
|
|
a4b36f0b4b | ||
|
|
9b41e8168d | ||
|
|
e206a1684e | ||
|
|
62a90945c7 | ||
|
|
0b62a4ef72 | ||
|
|
c55c7fed83 | ||
|
|
40380c2684 | ||
|
|
a68b620112 | ||
|
|
aa7628641c | ||
|
|
ea4136bc2b | ||
|
|
cdf640578b | ||
|
|
7138fa4582 | ||
|
|
ccb37b155c | ||
|
|
64b84385cd | ||
|
|
e90d9fcfff | ||
|
|
d61a5f4343 | ||
|
|
713427c086 | ||
|
|
e1afcda1c0 | ||
|
|
ab4013a69e | ||
|
|
974c01b4f8 | ||
|
|
387b64a79b | ||
|
|
6d8a1aa676 | ||
|
|
952cdc7be5 | ||
|
|
e0a09ff728 | ||
|
|
990ee8075e | ||
|
|
697f53a154 | ||
|
|
cefef18ceb | ||
|
|
6e5ff018e3 | ||
|
|
75b7140cbd | ||
|
|
28c11ed348 | ||
|
|
d732b0b849 | ||
|
|
6d965d486c | ||
|
|
ce417226b2 | ||
|
|
0382a25e35 | ||
|
|
83dcbefeed | ||
|
|
18335ddda5 | ||
|
|
051485c579 | ||
|
|
5012dfd719 | ||
|
|
641698d356 | ||
|
|
75edefe541 | ||
|
|
7e6eba674a | ||
|
|
26b35a54cf | ||
|
|
38700f7e3f | ||
|
|
ed72c423be | ||
|
|
bc6db2823c | ||
|
|
fb706f42a2 | ||
|
|
9132c64389 | ||
|
|
6e0acf0548 | ||
|
|
2c375e6478 | ||
|
|
a5e68e5f74 | ||
|
|
e9b36bebb2 | ||
|
|
df7b56e0ea | ||
|
|
2e766a9c7a | ||
|
|
4ba3fdfad2 | ||
|
|
655c24d29d | ||
|
|
eab2b8faa0 | ||
|
|
d058091d0b | ||
|
|
596319c92f | ||
|
|
4d17fe2a99 | ||
|
|
1d045e854b | ||
|
|
f7176f070f | ||
|
|
687883cf7d | ||
|
|
f56cf93fa1 | ||
|
|
1fd30b3391 | ||
|
|
37f205ec1a | ||
|
|
26e0bfd494 | ||
|
|
a434507ab4 | ||
|
|
ee8c86702e | ||
|
|
246cf99b4b | ||
|
|
eb52984a94 | ||
|
|
a5272a1575 | ||
|
|
d06ce0153b | ||
|
|
c58610bea3 | ||
|
|
12de0297ed | ||
|
|
4992df56b8 | ||
|
|
f3f0bf6dbe | ||
|
|
8a5e8ed88e | ||
|
|
fb6557acf1 | ||
|
|
2d7240f730 | ||
|
|
1d1c407e4e | ||
|
|
9152928f02 | ||
|
|
15a106b1ef | ||
|
|
ac9f9f9efb | ||
|
|
ec83c0b185 | ||
|
|
d300811009 | ||
|
|
27e6e27d3a | ||
|
|
5687fc7646 | ||
|
|
ebe36ea83c | ||
|
|
6b205c3064 | ||
|
|
b5d0c44690 | ||
|
|
d0e0b9e583 | ||
|
|
b0dc99fbd8 | ||
|
|
5b8dae0d61 | ||
|
|
fd56a2a1dc | ||
|
|
be9f6e679b | ||
|
|
b53356f7ab | ||
|
|
c402bac023 | ||
|
|
a030e8094f | ||
|
|
c3c401f91d | ||
|
|
b63e388692 | ||
|
|
81f3f0f3e9 | ||
|
|
d0c36a7683 | ||
|
|
c6cc638752 | ||
|
|
621dbdf8ee | ||
|
|
896f38c52c | ||
|
|
f56580404d | ||
|
|
5bb8f7ae84 | ||
|
|
d31d1488e8 | ||
|
|
6bdbf77238 | ||
|
|
e2630f9b40 | ||
|
|
c94241d447 | ||
|
|
e0b1637e15 | ||
|
|
a6b2b1ca41 | ||
|
|
02cb5db67b | ||
|
|
00c3946fbe | ||
|
|
3ee17cd5d3 | ||
|
|
d6ce42ae5b | ||
|
|
67dae1222f | ||
|
|
8d0f97d110 | ||
|
|
153bcdcd8d | ||
|
|
37ac5e68e6 | ||
|
|
b035cd094b | ||
|
|
15cb7ded76 | ||
|
|
5428d922a5 | ||
|
|
3303f7ea5d | ||
|
|
bb4abc8a9f | ||
|
|
0e4221fdf7 | ||
|
|
4f374640d0 | ||
|
|
e624ce959a | ||
|
|
8cd78b392f | ||
|
|
5ace174cd3 | ||
|
|
b1e6b3798a | ||
|
|
0bb9eada83 | ||
|
|
ac75242132 | ||
|
|
650a0b8ad4 | ||
|
|
0f07fcc8d4 | ||
|
|
b6a636d954 | ||
|
|
44cd8a2f88 | ||
|
|
f55d2cd6b6 | ||
|
|
63af5cd50e | ||
|
|
8bb7d24fba | ||
|
|
50b12ece13 | ||
|
|
c5b0e3a6a3 | ||
|
|
a1a5dd6ddd | ||
|
|
da52450152 | ||
|
|
7b9d471ba0 | ||
|
|
319da117b7 | ||
|
|
f8e89a1fe4 | ||
|
|
e437560144 | ||
|
|
d026803147 | ||
|
|
687b7341ed | ||
|
|
0f323a45ce | ||
|
|
1b3f7fcf7d | ||
|
|
f3f634ef67 | ||
|
|
b2ee950d9e | ||
|
|
2f7a06cf73 | ||
|
|
7654c2a23b | ||
|
|
012fa6dd45 | ||
|
|
54dca8cbff | ||
|
|
3eb04fee87 | ||
|
|
0996bca9e9 | ||
|
|
c18d5ebd2d | ||
|
|
915d7a18d7 | ||
|
|
e62fc866db | ||
|
|
c91296f001 | ||
|
|
99a39a1198 | ||
|
|
4283e69ac7 | ||
|
|
a71e58270c | ||
|
|
e0bd6fac10 |
1
.github/FUNDING.yml
vendored
Normal file
1
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1 @@
|
||||
github: [manna-harbour]
|
||||
41
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
41
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,41 +0,0 @@
|
||||
name: Bug report
|
||||
description: Create a report to help us improve QMK Firmware.
|
||||
title: "[Bug] "
|
||||
labels: ["bug", "help wanted"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Provide a general summary of the bug in the title above.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the Bug
|
||||
description: A clear and concise description of what the bug is.
|
||||
- type: input
|
||||
attributes:
|
||||
label: Keyboard Used
|
||||
description: The name of the keyboard from the `make` or `qmk compile`/`qmk flash` commands, eg. `planck/rev6`.
|
||||
- type: input
|
||||
attributes:
|
||||
label: Link to product page (if applicable)
|
||||
- type: input
|
||||
attributes:
|
||||
label: Operating System
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: qmk doctor Output
|
||||
description: Output from running the `qmk doctor` command.
|
||||
render: text
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is AutoHotKey / Karabiner installed
|
||||
options:
|
||||
- label: AutoHotKey (Windows)
|
||||
- label: Karabiner (macOS)
|
||||
- type: input
|
||||
attributes:
|
||||
label: Other keyboard-related software installed
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional Context
|
||||
description: Add any other relevant information about the problem here.
|
||||
8
.github/ISSUE_TEMPLATE/config.yml
vendored
8
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,8 +0,0 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: QMK Discord
|
||||
url: https://discord.gg/Uq7gcHh
|
||||
about: Ask questions, discuss issues and features. Chill.
|
||||
- name: OLKB Subreddit
|
||||
url: https://www.reddit.com/r/olkb
|
||||
about: All things OLKB and QMK.
|
||||
24
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
24
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -1,24 +0,0 @@
|
||||
name: Feature request
|
||||
description: Suggest a new feature or changes to existing features.
|
||||
title: "[Feature Request] "
|
||||
labels: ["enhancement", "help wanted"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Provide a general summary of the changes you want in the title above.
|
||||
|
||||
Please refrain from asking maintainers to add support for specific keyboards -- it is unlikely they will have hardware available, and will not be able to help.
|
||||
Your best bet is to take the initiative, add support, then submit a PR yourself.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Feature Request Type
|
||||
options:
|
||||
- label: Core functionality
|
||||
- label: Add-on hardware support (eg. audio, RGB, OLED screen, etc.)
|
||||
- label: Alteration (enhancement/optimization) of existing feature(s)
|
||||
- label: New behavior
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
description: A few sentences describing what it is that you'd like to see in QMK. Additional information (such as links to spec sheets, licensing info, other related issues or PRs, etc) would be helpful.
|
||||
19
.github/ISSUE_TEMPLATE/other_issues.yml
vendored
19
.github/ISSUE_TEMPLATE/other_issues.yml
vendored
@@ -1,19 +0,0 @@
|
||||
name: Other issues
|
||||
description: Anything else that doesn't fall into the above categories.
|
||||
labels: ["help wanted", "question"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Provide a general summary of the changes you want in the title above.
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Please check [https://docs.qmk.fm/#/support](https://docs.qmk.fm/#/support) for additional resources first. If that doesn't answer your question, choose the bug report template instead, as that may be more appropriate.
|
||||
|
||||
Please refrain from asking maintainers to add support for specific keyboards -- it is unlikely they will have hardware available, and will not be able to help.
|
||||
Your best bet is to take the initiative, add support, then submit a PR yourself.
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Issue Description
|
||||
description: Describe your issue in as much detail as possible.
|
||||
11
.github/ISSUE_TEMPLATE/zzz_blank.md
vendored
11
.github/ISSUE_TEMPLATE/zzz_blank.md
vendored
@@ -1,11 +0,0 @@
|
||||
---
|
||||
name: Blank issue
|
||||
about: If you're 100% sure that you don't need one of the other issue templates, use
|
||||
this one instead.
|
||||
title: ''
|
||||
labels: help wanted, question
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
|
||||
35
.github/PULL_REQUEST_TEMPLATE.md
vendored
35
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,35 +0,0 @@
|
||||
<!--- Provide a general summary of your changes in the title above. -->
|
||||
|
||||
<!--- This template is entirely optional and can be removed, but is here to help both you and us. -->
|
||||
<!--- Anything on lines wrapped in comments like these will not show up in the final text. -->
|
||||
|
||||
## Description
|
||||
|
||||
<!--- Describe your changes in detail here. -->
|
||||
|
||||
## Types of Changes
|
||||
|
||||
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply. -->
|
||||
- [ ] Core
|
||||
- [ ] Bugfix
|
||||
- [ ] New feature
|
||||
- [ ] Enhancement/optimization
|
||||
- [ ] Keyboard (addition or update)
|
||||
- [ ] Keymap/layout/userspace (addition or update)
|
||||
- [ ] Documentation
|
||||
|
||||
## Issues Fixed or Closed by This PR
|
||||
|
||||
*
|
||||
|
||||
## Checklist
|
||||
|
||||
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
|
||||
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
|
||||
- [ ] My code follows the code style of this project: [**C**](https://docs.qmk.fm/#/coding_conventions_c), [**Python**](https://docs.qmk.fm/#/coding_conventions_python)
|
||||
- [ ] I have read the [**PR Checklist** document](https://docs.qmk.fm/#/pr_checklist) and have made the appropriate changes.
|
||||
- [ ] My change requires a change to the documentation.
|
||||
- [ ] I have updated the documentation accordingly.
|
||||
- [ ] I have read the [**CONTRIBUTING** document](https://docs.qmk.fm/#/contributing).
|
||||
- [ ] I have added tests to cover my changes.
|
||||
- [ ] I have tested the changes and verified that they work and don't break anything (as well as I can manage).
|
||||
9
.github/dependabot.yml
vendored
9
.github/dependabot.yml
vendored
@@ -1,9 +0,0 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
labels: CI
|
||||
reviewers:
|
||||
- "qmk/collaborators"
|
||||
schedule:
|
||||
interval: "daily"
|
||||
42
.github/labeler.yml
vendored
42
.github/labeler.yml
vendored
@@ -1,42 +0,0 @@
|
||||
core:
|
||||
- quantum/**/*
|
||||
- tmk_core/**/*
|
||||
- drivers/**/*
|
||||
- tests/**/*
|
||||
- util/**/*
|
||||
- platforms/**/*
|
||||
- builddefs/**/*
|
||||
- Makefile
|
||||
- '*.mk'
|
||||
dependencies:
|
||||
- any:
|
||||
- 'lib/**/*'
|
||||
- '!lib/python/**/*'
|
||||
keyboard:
|
||||
- any:
|
||||
- 'keyboards/**/*'
|
||||
- '!keyboards/**/keymaps/**/*'
|
||||
keymap:
|
||||
- users/**/*
|
||||
- layouts/**/*
|
||||
- keyboards/**/keymaps/**/*
|
||||
via:
|
||||
- keyboards/**/keymaps/via/*
|
||||
cli:
|
||||
- requirements.txt
|
||||
- lib/python/**/*
|
||||
python:
|
||||
- '**/*.py'
|
||||
documentation:
|
||||
- docs/**/*
|
||||
translation:
|
||||
- docs/fr-fr/**/*
|
||||
- docs/es/**/*
|
||||
- docs/ja/**/*
|
||||
- docs/he-il/**/*
|
||||
- docs/pt-br/**/*
|
||||
- docs/zh-cn/**/*
|
||||
- docs/de/**/*
|
||||
- docs/ru-ru/**/*
|
||||
CI:
|
||||
- .github/**/*
|
||||
50
.github/workflows/api.yml
vendored
50
.github/workflows/api.yml
vendored
@@ -1,50 +0,0 @@
|
||||
name: Update API Data
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
paths:
|
||||
- 'keyboards/**'
|
||||
- 'layouts/community/**'
|
||||
- 'lib/python/**'
|
||||
- 'data/**'
|
||||
- '.github/workflows/api.yml'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
api_data:
|
||||
runs-on: ubuntu-latest
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
# protect against those who work in their fork on 'important' branches
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 1
|
||||
persist-credentials: false
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Generate API Data
|
||||
run: |
|
||||
qmk generate-api
|
||||
|
||||
- name: Upload API Data
|
||||
uses: jakejarvis/s3-sync-action@master
|
||||
with:
|
||||
args: --acl public-read --follow-symlinks --delete
|
||||
env:
|
||||
AWS_S3_BUCKET: ${{ github.ref == 'refs/heads/develop' && secrets['API_SPACE_DEVELOP'] || secrets['API_SPACE_MASTER'] }}
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
|
||||
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
|
||||
SOURCE_DIR: '.build/api_data'
|
||||
20
.github/workflows/auto_approve.yml
vendored
20
.github/workflows/auto_approve.yml
vendored
@@ -1,20 +0,0 @@
|
||||
name: Automatic Approve
|
||||
|
||||
permissions: {}
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "*/5 * * * *"
|
||||
|
||||
jobs:
|
||||
automatic_approve:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: mheap/automatic-approve-action@v1
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
workflows: "format.yml,lint.yml,unit_test.yml"
|
||||
dangerous_files: "lib/python/,Makefile,paths.mk,builddefs/"
|
||||
37
.github/workflows/auto_tag.yml
vendored
37
.github/workflows/auto_tag.yml
vendored
@@ -1,37 +0,0 @@
|
||||
name: Essential files modified
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- builddefs/**/*
|
||||
- drivers/**/*
|
||||
- platforms/**/*
|
||||
- quantum/**/*
|
||||
- tests/**/*
|
||||
- tmk_core/**/*
|
||||
- util/**/*
|
||||
- Makefile
|
||||
- '*.mk'
|
||||
|
||||
jobs:
|
||||
tag:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# protect against those who develop with their fork on master
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Bump version and push tag
|
||||
uses: anothrNick/github-tag-action@1.61.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
DEFAULT_BUMP: 'patch'
|
||||
11
.github/workflows/build-example-contra.yml
vendored
Normal file
11
.github/workflows/build-example-contra.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Build Example contra'
|
||||
on:
|
||||
- workflow_dispatch
|
||||
jobs:
|
||||
build:
|
||||
uses: ./.github/workflows/main.yml
|
||||
with:
|
||||
keyboard: '["contra"]'
|
||||
11
.github/workflows/build-example-crkbd.yml
vendored
Normal file
11
.github/workflows/build-example-crkbd.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Build Example crkbd'
|
||||
on:
|
||||
- workflow_dispatch
|
||||
jobs:
|
||||
build:
|
||||
uses: ./.github/workflows/main.yml
|
||||
with:
|
||||
keyboard: '["crkbd"]'
|
||||
11
.github/workflows/build-example-ergodox_ez.yml
vendored
Normal file
11
.github/workflows/build-example-ergodox_ez.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Build Example ergodox_ez'
|
||||
on:
|
||||
- workflow_dispatch
|
||||
jobs:
|
||||
build:
|
||||
uses: ./.github/workflows/main.yml
|
||||
with:
|
||||
keyboard: '["ergodox_ez"]'
|
||||
11
.github/workflows/build-example-keebio_levinson.yml
vendored
Normal file
11
.github/workflows/build-example-keebio_levinson.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Build Example keebio/levinson'
|
||||
on:
|
||||
- workflow_dispatch
|
||||
jobs:
|
||||
build:
|
||||
uses: ./.github/workflows/main.yml
|
||||
with:
|
||||
keyboard: '["keebio/levinson"]'
|
||||
11
.github/workflows/build-example-planck_rev6.yml
vendored
Normal file
11
.github/workflows/build-example-planck_rev6.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Build Example planck/rev6'
|
||||
on:
|
||||
- workflow_dispatch
|
||||
jobs:
|
||||
build:
|
||||
uses: ./.github/workflows/main.yml
|
||||
with:
|
||||
keyboard: '["planck/rev6"]'
|
||||
12
.github/workflows/build-example-xmk.yml
vendored
Normal file
12
.github/workflows/build-example-xmk.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
# Copyright 2022 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Build Example 𝑥MK'
|
||||
on:
|
||||
- workflow_dispatch
|
||||
jobs:
|
||||
build:
|
||||
uses: ./.github/workflows/main.yml
|
||||
with:
|
||||
keyboard: '["converter/xmk"]'
|
||||
merge: '["manna-harbour/qmk_firmware/xmk"]'
|
||||
113
.github/workflows/build-inputs.yml
vendored
Normal file
113
.github/workflows/build-inputs.yml
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Build Inputs'
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
keyboard:
|
||||
description: 'Keyboard'
|
||||
required: true
|
||||
alphas:
|
||||
description: 'Miryoku Alphas'
|
||||
required: false
|
||||
default: 'default'
|
||||
type: choice
|
||||
options:
|
||||
- "default"
|
||||
- "AZERTY"
|
||||
- "BEAKL15"
|
||||
- "Colemak"
|
||||
- "ColemakDHK"
|
||||
- "Dvorak"
|
||||
- "Halmak"
|
||||
- "QWERTY"
|
||||
- "QWERTZ"
|
||||
- "Workman"
|
||||
nav:
|
||||
description: 'Miryoku Nav'
|
||||
required: false
|
||||
default: 'default'
|
||||
type: choice
|
||||
options:
|
||||
- "default"
|
||||
- "invertedT"
|
||||
- "vi"
|
||||
clipboard:
|
||||
description: 'Miryoku Clipboard'
|
||||
required: false
|
||||
default: 'default'
|
||||
type: choice
|
||||
options:
|
||||
- "default"
|
||||
- "fun"
|
||||
- "Mac"
|
||||
- "Win"
|
||||
layers:
|
||||
description: 'Miryoku Layers'
|
||||
required: false
|
||||
default: 'default'
|
||||
type: choice
|
||||
options:
|
||||
- "default"
|
||||
- "flip"
|
||||
mapping:
|
||||
description: 'Miryoku Mapping'
|
||||
required: false
|
||||
default: 'default'
|
||||
rules:
|
||||
description: 'custom_rules.mk'
|
||||
required: false
|
||||
default: 'default'
|
||||
custom_config:
|
||||
description: 'custom_config.h'
|
||||
required: false
|
||||
default: 'default'
|
||||
merge:
|
||||
description: 'Merge QMK Branches'
|
||||
required: false
|
||||
default: 'default'
|
||||
jobs:
|
||||
process-inputs:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
keyboard: ${{ steps.process-inputs.outputs.keyboard }}
|
||||
alphas: ${{ steps.process-inputs.outputs.alphas }}
|
||||
nav: ${{ steps.process-inputs.outputs.nav }}
|
||||
clipboard: ${{ steps.process-inputs.outputs.clipboard }}
|
||||
layers: ${{ steps.process-inputs.outputs.layers }}
|
||||
mapping: ${{ steps.process-inputs.outputs.mapping }}
|
||||
rules: ${{ steps.process-inputs.outputs.rules }}
|
||||
custom_config: ${{ steps.process-inputs.outputs.custom_config }}
|
||||
merge: ${{ steps.process-inputs.outputs.merge }}
|
||||
steps:
|
||||
- name: Process inputs
|
||||
id: process-inputs
|
||||
run: |
|
||||
set-output()
|
||||
{
|
||||
json=`echo "$2" | jq -cnR 'inputs | split(",";"")'`
|
||||
echo "$1=$json" >> $GITHUB_OUTPUT
|
||||
}
|
||||
set-output "keyboard" "${{ github.event.inputs.keyboard }}"
|
||||
set-output "alphas" "${{ github.event.inputs.alphas }}"
|
||||
set-output "nav" "${{ github.event.inputs.nav }}"
|
||||
set-output "clipboard" "${{ github.event.inputs.clipboard }}"
|
||||
set-output "layers" "${{ github.event.inputs.layers }}"
|
||||
set-output "mapping" "${{ github.event.inputs.mapping }}"
|
||||
set-output "rules" "${{ github.event.inputs.rules }}"
|
||||
set-output "custom_config" "${{ github.event.inputs.custom_config }}"
|
||||
set-output "merge" "${{ github.event.inputs.merge }}"
|
||||
build:
|
||||
uses: ./.github/workflows/main.yml
|
||||
needs: process-inputs
|
||||
with:
|
||||
keyboard: ${{ needs.process-inputs.outputs.keyboard }}
|
||||
alphas: ${{ needs.process-inputs.outputs.alphas }}
|
||||
nav: ${{ needs.process-inputs.outputs.nav }}
|
||||
clipboard: ${{ needs.process-inputs.outputs.clipboard }}
|
||||
layers: ${{ needs.process-inputs.outputs.layers }}
|
||||
mapping: ${{ needs.process-inputs.outputs.mapping }}
|
||||
rules: ${{ needs.process-inputs.outputs.rules }}
|
||||
custom_config: ${{ needs.process-inputs.outputs.custom_config }}
|
||||
merge: ${{ needs.process-inputs.outputs.merge }}
|
||||
40
.github/workflows/ci_builds.yml
vendored
40
.github/workflows/ci_builds.yml
vendored
@@ -1,40 +0,0 @@
|
||||
name: CI Builds
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
|
||||
jobs:
|
||||
ci_builds:
|
||||
name: "CI Build"
|
||||
runs-on: self-hosted
|
||||
timeout-minutes: 1380
|
||||
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
keymap:
|
||||
- default
|
||||
- via
|
||||
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
steps:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements.txt
|
||||
|
||||
- name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }})
|
||||
run: qmk mass-compile -j $(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) -km ${{ matrix.keymap }}
|
||||
34
.github/workflows/cli.yml
vendored
34
.github/workflows/cli.yml
vendored
@@ -1,34 +0,0 @@
|
||||
name: CLI CI
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
pull_request:
|
||||
paths:
|
||||
- 'lib/python/**'
|
||||
- 'requirements.txt'
|
||||
- '.github/workflows/cli.yml'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
steps:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
- name: Run tests
|
||||
run: qmk pytest
|
||||
37
.github/workflows/develop_update.yml
vendored
37
.github/workflows/develop_update.yml
vendored
@@ -1,37 +0,0 @@
|
||||
name: Update develop after master merge
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
develop_update:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Disable automatic eol conversion
|
||||
run: |
|
||||
echo "* -text" > .git/info/attributes
|
||||
|
||||
- name: Checkout develop
|
||||
run: |
|
||||
git fetch origin master develop
|
||||
git checkout develop
|
||||
|
||||
- name: Update develop from master
|
||||
run: |
|
||||
git config --global user.name "QMK Bot"
|
||||
git config --global user.email "hello@qmk.fm"
|
||||
git merge origin/master
|
||||
git push origin develop
|
||||
46
.github/workflows/docs.yml
vendored
46
.github/workflows/docs.yml
vendored
@@ -1,46 +0,0 @@
|
||||
name: Generate Docs
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- 'tmk_core/**'
|
||||
- 'quantum/**'
|
||||
- 'platforms/**'
|
||||
- 'docs/**'
|
||||
- '.github/workflows/docs.yml'
|
||||
|
||||
jobs:
|
||||
generate:
|
||||
runs-on: ubuntu-latest
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
# protect against those who develop with their fork on master
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 1
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
apt-get update && apt-get install -y rsync nodejs npm doxygen
|
||||
npm install -g moxygen
|
||||
|
||||
- name: Build docs
|
||||
run: |
|
||||
qmk --verbose generate-docs
|
||||
|
||||
- name: Deploy
|
||||
uses: JamesIves/github-pages-deploy-action@v4.4.1
|
||||
with:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
BASE_BRANCH: master
|
||||
BRANCH: gh-pages
|
||||
FOLDER: .build/docs
|
||||
GIT_CONFIG_EMAIL: hello@qmk.fm
|
||||
42
.github/workflows/feature_branch_update.yml
vendored
42
.github/workflows/feature_branch_update.yml
vendored
@@ -1,42 +0,0 @@
|
||||
name: Update feature branches after develop merge
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- develop
|
||||
|
||||
jobs:
|
||||
feature_branch_update:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
if: github.repository == 'qmk/qmk_firmware'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
branch:
|
||||
- xap
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Disable automatic eol conversion
|
||||
run: |
|
||||
echo "* -text" > .git/info/attributes
|
||||
|
||||
- name: Checkout branch
|
||||
run: |
|
||||
git fetch origin develop ${{ matrix.branch }}
|
||||
git checkout ${{ matrix.branch }}
|
||||
|
||||
- name: Update branch from develop
|
||||
run: |
|
||||
git config --global user.name "QMK Bot"
|
||||
git config --global user.email "hello@qmk.fm"
|
||||
git merge origin/develop
|
||||
git push origin ${{ matrix.branch }}
|
||||
55
.github/workflows/format.yml
vendored
55
.github/workflows/format.yml
vendored
@@ -1,55 +0,0 @@
|
||||
name: PR Lint Format
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'drivers/**'
|
||||
- 'lib/arm_atsam/**'
|
||||
- 'lib/lib8tion/**'
|
||||
- 'lib/python/**'
|
||||
- 'platforms/**'
|
||||
- 'quantum/**'
|
||||
- 'tests/**'
|
||||
- 'tmk_core/**'
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
steps:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Get changed files
|
||||
id: file_changes
|
||||
uses: tj-actions/changed-files@v35
|
||||
|
||||
- name: Run qmk formatters
|
||||
shell: 'bash {0}'
|
||||
run: |
|
||||
echo '${{ steps.file_changes.outputs.added_files}}' '${{ steps.file_changes.outputs.modified_files}}' > ~/files_changed.txt
|
||||
qmk format-c --core-only $(< ~/files_changed.txt) || true
|
||||
qmk format-python $(< ~/files_changed.txt) || true
|
||||
qmk format-text $(< ~/files_changed.txt) || true
|
||||
|
||||
- name: Fail when formatting required
|
||||
run: |
|
||||
git diff
|
||||
for file in $(git diff --name-only); do
|
||||
echo "File '${file}' Requires Formatting"
|
||||
echo "::error file=${file}::Requires Formatting"
|
||||
done
|
||||
test -z "$(git diff --name-only)"
|
||||
59
.github/workflows/format_push.yml
vendored
59
.github/workflows/format_push.yml
vendored
@@ -1,59 +0,0 @@
|
||||
name: Lint Format
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
steps:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Disable automatic eol conversion
|
||||
run: |
|
||||
echo "* -text" > .git/info/attributes
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Run qmk formatters
|
||||
shell: 'bash {0}'
|
||||
run: |
|
||||
qmk format-c -a
|
||||
qmk format-python -a
|
||||
qmk format-text -a
|
||||
git diff
|
||||
|
||||
- uses: rlespinasse/github-slug-action@v3.x
|
||||
|
||||
- name: Become QMK Bot
|
||||
run: |
|
||||
git config user.name 'QMK Bot'
|
||||
git config user.email 'hello@qmk.fm'
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
if: ${{ github.repository == 'qmk/qmk_firmware'}}
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
delete-branch: true
|
||||
branch: bugfix/format_${{ env.GITHUB_REF_SLUG }}
|
||||
author: QMK Bot <hello@qmk.fm>
|
||||
committer: QMK Bot <hello@qmk.fm>
|
||||
commit-message: Format code according to conventions
|
||||
title: '[CI] Format code according to conventions'
|
||||
18
.github/workflows/labeler.yml
vendored
18
.github/workflows/labeler.yml
vendored
@@ -1,18 +0,0 @@
|
||||
name: "Pull Request Labeler"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types: [opened, synchronize, reopened, ready_for_review, locked]
|
||||
|
||||
jobs:
|
||||
triage:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/labeler@main
|
||||
with:
|
||||
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
configuration-path: '.github/labeler.yml'
|
||||
74
.github/workflows/lint.yml
vendored
74
.github/workflows/lint.yml
vendored
@@ -1,74 +0,0 @@
|
||||
name: PR Lint keyboards
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'keyboards/**'
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
steps:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Get changed files
|
||||
id: file_changes
|
||||
uses: tj-actions/changed-files@v35
|
||||
|
||||
- name: Print info
|
||||
run: |
|
||||
git rev-parse --short HEAD
|
||||
echo ${{ github.event.pull_request.base.sha }}
|
||||
echo '${{ steps.file_changes.outputs.all_changed_files}}'
|
||||
|
||||
- name: Run qmk lint
|
||||
shell: 'bash {0}'
|
||||
run: |
|
||||
QMK_CHANGES=$(echo -e '${{ steps.file_changes.outputs.all_changed_files}}' | sed 's/ /\n/g')
|
||||
QMK_KEYBOARDS=$(qmk list-keyboards)
|
||||
|
||||
exit_code=0
|
||||
|
||||
for KB in $QMK_KEYBOARDS; do
|
||||
KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)')
|
||||
if [[ -z "$KEYBOARD_CHANGES" ]]; then
|
||||
# skip as no changes for this keyboard
|
||||
continue
|
||||
fi
|
||||
|
||||
KEYMAP_ONLY=$(echo "$KEYBOARD_CHANGES" | grep -cv /keymaps/)
|
||||
if [[ $KEYMAP_ONLY -gt 0 ]]; then
|
||||
echo "linting ${KB}"
|
||||
|
||||
qmk lint --keyboard ${KB} && qmk info -l --keyboard ${KB}
|
||||
exit_code=$(($exit_code + $?))
|
||||
fi
|
||||
done
|
||||
|
||||
qmk format-text ${{ steps.file_changes.outputs.all_changed_files}} || true
|
||||
for file in ${{ steps.file_changes.outputs.all_changed_files}}; do
|
||||
if ! git diff --quiet $file; then
|
||||
echo "File '${file}' Requires Formatting"
|
||||
echo "::error file=${file}::Requires Formatting"
|
||||
exit_code=$(($exit_code + 1))
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ $exit_code -gt 255 ]]; then
|
||||
exit 255
|
||||
fi
|
||||
exit $exit_code
|
||||
126
.github/workflows/main.yml
vendored
Normal file
126
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,126 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Main'
|
||||
on:
|
||||
workflow_call:
|
||||
inputs:
|
||||
keyboard:
|
||||
type: string
|
||||
default: '["default"]'
|
||||
alphas:
|
||||
type: string
|
||||
default: '["default"]'
|
||||
nav:
|
||||
type: string
|
||||
default: '["default"]'
|
||||
clipboard:
|
||||
type: string
|
||||
default: '["default"]'
|
||||
layers:
|
||||
type: string
|
||||
default: '["default"]'
|
||||
mapping:
|
||||
type: string
|
||||
default: '["default"]'
|
||||
rules:
|
||||
type: string
|
||||
default: '["default"]'
|
||||
custom_config:
|
||||
type: string
|
||||
default: '["default"]'
|
||||
merge:
|
||||
type: string
|
||||
default: '["default"]'
|
||||
jobs:
|
||||
main:
|
||||
runs-on: ubuntu-latest
|
||||
container: qmkfm/qmk_cli
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
keyboard: ${{ fromJSON(inputs.keyboard) }}
|
||||
alphas: ${{ fromJSON(inputs.alphas) }}
|
||||
nav: ${{ fromJSON(inputs.nav) }}
|
||||
clipboard: ${{ fromJSON(inputs.clipboard) }}
|
||||
layers: ${{ fromJSON(inputs.layers) }}
|
||||
mapping: ${{ fromJSON(inputs.mapping) }}
|
||||
rules: ${{ fromJSON(inputs.rules) }}
|
||||
custom_config: ${{ fromJSON(inputs.custom_config) }}
|
||||
merge: ${{ fromJSON(inputs.merge) }}
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Merge branches
|
||||
if: ${{ matrix.merge != '' && matrix.merge != 'default' }}
|
||||
run: |
|
||||
git config --global --add safe.directory '*'
|
||||
git config user.name "${GITHUB_ACTOR}"
|
||||
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
|
||||
git fetch --unshallow
|
||||
revert=`git log --grep='^\[miryoku-github\]' --pretty='format:%H' | tr '\n' ' '`
|
||||
git revert $revert
|
||||
for merge in ${{ matrix.merge }}
|
||||
do
|
||||
user=`echo "$merge" | cut -f 1 -d '/'`
|
||||
repo=`echo "$merge" | cut -f 2 -d '/'`
|
||||
branch=`echo "$merge" | cut -f 3- -d '/'`
|
||||
remote="$user-$repo"
|
||||
git remote add "$remote" "https://github.com/$user/$repo.git"
|
||||
git fetch "$remote" "$branch"
|
||||
git merge "$remote/$branch"
|
||||
git remote remove "$remote"
|
||||
git status
|
||||
done
|
||||
- name: Submodules
|
||||
run: |
|
||||
git config --global --add safe.directory '*'
|
||||
make git-submodule
|
||||
- name: Process inputs
|
||||
id: inputs
|
||||
run: |
|
||||
artifact_dir="artifacts"
|
||||
mkdir "$artifact_dir"
|
||||
user='users/manna-harbour_miryoku'
|
||||
rules="$user/custom_rules.mk"
|
||||
config="$user/custom_config.h"
|
||||
|
||||
artifact_build_name=`echo "miryoku_qmk ${{ matrix.keyboard }}" | tr '/' '_'`
|
||||
for option in "alphas=${{ matrix.alphas }}" "nav=${{ matrix.nav }}" "clipboard=${{ matrix.clipboard }}" "layers=${{ matrix.layers }}" "mapping=${{ matrix.mapping }}"
|
||||
do
|
||||
if ! expr "$option" : '.*=default$'
|
||||
then
|
||||
artifact_build_name="$artifact_build_name "`echo "$option" | tr '=' '_'`
|
||||
option=`echo "MIRYOKU_$option" | tr 'a-z' 'A-Z'`
|
||||
echo "$option" >> "$rules"
|
||||
fi
|
||||
done
|
||||
if [ -n "${{ matrix.rules }}" -a "${{ matrix.rules }}" != 'default' ]
|
||||
then
|
||||
artifact_build_name="$artifact_build_name rules_"`echo "${{ matrix.rules }}" | md5sum | cut -d ' ' -f 1`
|
||||
echo "${{ matrix.rules }}" >> "$rules"
|
||||
fi
|
||||
if [ -n "${{ matrix.custom_config }}" -a "${{ matrix.custom_config }}" != 'default' ]
|
||||
then
|
||||
artifact_build_name="$artifact_build_name config_"`echo "${{ matrix.custom_config }}" | md5sum | cut -d ' ' -f 1`
|
||||
echo "${{ matrix.custom_config }}" >> "$config"
|
||||
fi
|
||||
cp "$rules" "$config" "$artifact_dir"
|
||||
if [ -n "${{ matrix.merge }}" -a "${{ matrix.merge }}" != 'default' ]
|
||||
then
|
||||
artifact_build_name="$artifact_build_name merge_"`echo "${{ matrix.merge }}" | md5sum | cut -d ' ' -f 1`
|
||||
fi
|
||||
artifact_build_name=`echo $artifact_build_name | tr ' ' '-'`
|
||||
echo "artifact_build_name=$artifact_build_name" >> $GITHUB_OUTPUT
|
||||
echo "artifact_dir=$artifact_dir" >> $GITHUB_OUTPUT
|
||||
- name: Build
|
||||
run: qmk compile -kb ${{ matrix.keyboard }} -km manna-harbour_miryoku
|
||||
- name: Copy firmware
|
||||
run: |
|
||||
cp *manna-harbour_miryoku* "${{ steps.inputs.outputs.artifact_dir }}"
|
||||
- name: Archive artifacts
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ${{ steps.inputs.outputs.artifact_build_name }}
|
||||
path: ${{ steps.inputs.outputs.artifact_dir }}
|
||||
continue-on-error: true
|
||||
36
.github/workflows/regen.yml
vendored
36
.github/workflows/regen.yml
vendored
@@ -1,36 +0,0 @@
|
||||
name: PR Regenerate Files
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'data/constants/**'
|
||||
- 'lib/python/**'
|
||||
|
||||
jobs:
|
||||
regen:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
steps:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Run qmk generators
|
||||
run: |
|
||||
util/regen.sh
|
||||
git diff
|
||||
|
||||
- name: Fail when regeneration required
|
||||
run: |
|
||||
git diff
|
||||
for file in $(git diff --name-only); do
|
||||
echo "File '${file}' Requires Regeneration"
|
||||
echo "::error file=${file}::Requires Regeneration"
|
||||
done
|
||||
test -z "$(git diff --name-only)"
|
||||
46
.github/workflows/regen_push.yml
vendored
46
.github/workflows/regen_push.yml
vendored
@@ -1,46 +0,0 @@
|
||||
name: Regenerate Files
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
|
||||
jobs:
|
||||
regen:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
steps:
|
||||
- name: Disable safe.directory check
|
||||
run : git config --global --add safe.directory '*'
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Run qmk generators
|
||||
run: |
|
||||
util/regen.sh
|
||||
git diff
|
||||
|
||||
- uses: rlespinasse/github-slug-action@v3.x
|
||||
|
||||
- name: Become QMK Bot
|
||||
run: |
|
||||
git config user.name 'QMK Bot'
|
||||
git config user.email 'hello@qmk.fm'
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
if: ${{ github.repository == 'qmk/qmk_firmware'}}
|
||||
with:
|
||||
token: ${{ secrets.QMK_BOT_TOKEN }}
|
||||
delete-branch: true
|
||||
branch: bugfix/regen_${{ env.GITHUB_REF_SLUG }}
|
||||
author: QMK Bot <hello@qmk.fm>
|
||||
committer: QMK Bot <hello@qmk.fm>
|
||||
commit-message: Regenerate Files
|
||||
title: '[CI] Regenerate Files'
|
||||
65
.github/workflows/stale.yml
vendored
65
.github/workflows/stale.yml
vendored
@@ -1,65 +0,0 @@
|
||||
name: 'Close stale issues and PRs'
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v7
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
remove-stale-when-updated: true
|
||||
exempt-draft-pr: true
|
||||
ascending: true
|
||||
operations-per-run: 150
|
||||
|
||||
stale-issue-label: stale
|
||||
days-before-issue-stale: 90
|
||||
days-before-issue-close: 30
|
||||
exempt-issue-labels: bug,in progress,on hold,discussion,to do
|
||||
|
||||
stale-issue-message: >
|
||||
This issue has been automatically marked as stale because it has not had activity in the
|
||||
last 90 days. It will be closed in the next 30 days unless it is tagged properly or other activity
|
||||
occurs.
|
||||
|
||||
For maintainers: Please label with `bug`, `in progress`, `on hold`, `discussion` or `to do` to prevent
|
||||
the issue from being re-flagged.
|
||||
|
||||
close-issue-message: >
|
||||
This issue has been automatically closed because it has not had activity in the last 30 days.
|
||||
If this issue is still valid, re-open the issue and let us know.
|
||||
|
||||
// [stale-action-closed]
|
||||
|
||||
stale-pr-label: stale
|
||||
days-before-pr-stale: 45
|
||||
days-before-pr-close: 30
|
||||
exempt-pr-labels: bug,awaiting review,breaking_change,in progress,on hold
|
||||
|
||||
stale-pr-message: >
|
||||
Thank you for your contribution!
|
||||
|
||||
This pull request has been automatically marked as stale because it has not had
|
||||
activity in the last 45 days. It will be closed in 30 days if no further activity occurs.
|
||||
Please feel free to give a status update now, or re-open when it's ready.
|
||||
|
||||
For maintainers: Please label with `bug`, `awaiting review`, `breaking_change`, `in progress`, or `on hold`
|
||||
to prevent the issue from being re-flagged.
|
||||
|
||||
close-pr-message: >
|
||||
Thank you for your contribution!
|
||||
|
||||
This pull request has been automatically closed because it has not had activity in the last 30 days.
|
||||
Please feel free to give a status update now, ping for review, or re-open when it's ready.
|
||||
|
||||
// [stale-action-closed]
|
||||
38
.github/workflows/test-all-configs.yml
vendored
Normal file
38
.github/workflows/test-all-configs.yml
vendored
Normal file
@@ -0,0 +1,38 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Test All Configs'
|
||||
on:
|
||||
- workflow_dispatch
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'manna-harbour'
|
||||
uses: ./.github/workflows/main.yml
|
||||
with:
|
||||
keyboard: '["crkbd"]'
|
||||
alphas: '[
|
||||
"default",
|
||||
"azerty",
|
||||
"colemak",
|
||||
"colemakdhk",
|
||||
"dvorak",
|
||||
"halmak",
|
||||
"workman",
|
||||
"qwerty",
|
||||
"qwertz"
|
||||
]'
|
||||
nav: '[
|
||||
"default",
|
||||
"vi",
|
||||
"invertedt"
|
||||
]'
|
||||
clipboard: '[
|
||||
"default",
|
||||
"fun",
|
||||
"mac",
|
||||
"win"
|
||||
]'
|
||||
layers: '[
|
||||
"default",
|
||||
"flip"
|
||||
]'
|
||||
14
.github/workflows/test-build.yml
vendored
Normal file
14
.github/workflows/test-build.yml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Test Build'
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'manna-harbour'
|
||||
uses: ./.github/workflows/main.yml
|
||||
with:
|
||||
keyboard: '["crkbd"]'
|
||||
86
.github/workflows/test-inputs.yml
vendored
Normal file
86
.github/workflows/test-inputs.yml
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
# Copyright 2021 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Test Inputs'
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
keyboard:
|
||||
description: 'Keyboard'
|
||||
required: true
|
||||
alphas:
|
||||
description: 'Miryoku Alphas'
|
||||
required: false
|
||||
default: 'default'
|
||||
nav:
|
||||
description: 'Miryoku Nav'
|
||||
required: false
|
||||
default: 'default'
|
||||
clipboard:
|
||||
description: 'Miryoku Clipboard'
|
||||
required: false
|
||||
default: 'default'
|
||||
layers:
|
||||
description: 'Miryoku Layers'
|
||||
required: false
|
||||
default: 'default'
|
||||
mapping:
|
||||
description: 'Miryoku Mapping'
|
||||
required: false
|
||||
default: 'default'
|
||||
rules:
|
||||
description: 'custom_rules.mk'
|
||||
required: false
|
||||
default: 'default'
|
||||
custom_config:
|
||||
description: 'custom_config.h'
|
||||
required: false
|
||||
default: 'default'
|
||||
merge:
|
||||
description: 'Merge QMK Branches'
|
||||
required: false
|
||||
default: 'default'
|
||||
jobs:
|
||||
process-inputs:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
keyboard: ${{ steps.process-inputs.outputs.keyboard }}
|
||||
alphas: ${{ steps.process-inputs.outputs.alphas }}
|
||||
nav: ${{ steps.process-inputs.outputs.nav }}
|
||||
clipboard: ${{ steps.process-inputs.outputs.clipboard }}
|
||||
layers: ${{ steps.process-inputs.outputs.layers }}
|
||||
mapping: ${{ steps.process-inputs.outputs.mapping }}
|
||||
rules: ${{ steps.process-inputs.outputs.rules }}
|
||||
custom_config: ${{ steps.process-inputs.outputs.custom_config }}
|
||||
merge: ${{ steps.process-inputs.outputs.merge }}
|
||||
steps:
|
||||
- name: Process inputs
|
||||
id: process-inputs
|
||||
run: |
|
||||
set-output()
|
||||
{
|
||||
json=`echo "$2" | jq -cnR 'inputs | split(",";"")'`
|
||||
echo "$1=$json" >> $GITHUB_OUTPUT
|
||||
}
|
||||
set-output "keyboard" "${{ github.event.inputs.keyboard }}"
|
||||
set-output "alphas" "${{ github.event.inputs.alphas }}"
|
||||
set-output "nav" "${{ github.event.inputs.nav }}"
|
||||
set-output "clipboard" "${{ github.event.inputs.clipboard }}"
|
||||
set-output "layers" "${{ github.event.inputs.layers }}"
|
||||
set-output "mapping" "${{ github.event.inputs.mapping }}"
|
||||
set-output "rules" "${{ github.event.inputs.rules }}"
|
||||
set-output "custom_config" "${{ github.event.inputs.custom_config }}"
|
||||
set-output "merge" "${{ github.event.inputs.merge }}"
|
||||
build:
|
||||
uses: ./.github/workflows/main.yml
|
||||
needs: process-inputs
|
||||
with:
|
||||
keyboard: ${{ needs.process-inputs.outputs.keyboard }}
|
||||
alphas: ${{ needs.process-inputs.outputs.alphas }}
|
||||
nav: ${{ needs.process-inputs.outputs.nav }}
|
||||
clipboard: ${{ needs.process-inputs.outputs.clipboard }}
|
||||
layers: ${{ needs.process-inputs.outputs.layers }}
|
||||
mapping: ${{ needs.process-inputs.outputs.mapping }}
|
||||
rules: ${{ needs.process-inputs.outputs.rules }}
|
||||
custom_config: ${{ needs.process-inputs.outputs.custom_config }}
|
||||
merge: ${{ needs.process-inputs.outputs.merge }}
|
||||
16
.github/workflows/test-merge.yml
vendored
Normal file
16
.github/workflows/test-merge.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
# Copyright 2022 Manna Harbour
|
||||
# https://github.com/manna-harbour/miryoku
|
||||
|
||||
name: 'Test Merge'
|
||||
on:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'manna-harbour'
|
||||
uses: ./.github/workflows/main.yml
|
||||
with:
|
||||
keyboard: '["crkbd"]'
|
||||
merge: '[
|
||||
"qmk/qmk_firmware/master",
|
||||
"qmk/qmk_firmware/develop"
|
||||
]'
|
||||
35
.github/workflows/unit_test.yml
vendored
35
.github/workflows/unit_test.yml
vendored
@@ -1,35 +0,0 @@
|
||||
name: Unit Tests
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- develop
|
||||
pull_request:
|
||||
paths:
|
||||
- 'builddefs/**'
|
||||
- 'quantum/**'
|
||||
- 'platforms/**'
|
||||
- 'tmk_core/**'
|
||||
- 'tests/**'
|
||||
- '*.mk'
|
||||
- 'Makefile'
|
||||
- '.github/workflows/unit_test.yml'
|
||||
|
||||
jobs:
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container: qmkfm/qmk_cli
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Install dependencies
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
- name: Run tests
|
||||
run: make test:all
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -30,6 +30,9 @@ quantum/version.h
|
||||
*.qmk
|
||||
*.uf2
|
||||
|
||||
# DD config at wrong location
|
||||
/keyboards/**/keymaps/*/info.json
|
||||
|
||||
# Old-style QMK Makefiles
|
||||
/keyboards/**/Makefile
|
||||
|
||||
|
||||
@@ -29,6 +29,11 @@ KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
|
||||
TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
|
||||
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
|
||||
|
||||
ifeq ($(strip $(DUMP_CI_METADATA)),yes)
|
||||
$(info CI Metadata: KEYBOARD=$(KEYBOARD))
|
||||
$(info CI Metadata: KEYMAP=$(KEYMAP))
|
||||
endif
|
||||
|
||||
# Force expansion
|
||||
TARGET := $(TARGET)
|
||||
|
||||
|
||||
@@ -253,7 +253,7 @@
|
||||
"0x002F": {
|
||||
"group": "basic",
|
||||
"key": "KC_LEFT_BRACKET",
|
||||
"label": "]",
|
||||
"label": "[",
|
||||
"aliases": [
|
||||
"KC_LBRC"
|
||||
]
|
||||
@@ -261,7 +261,7 @@
|
||||
"0x0030": {
|
||||
"group": "basic",
|
||||
"key": "KC_RIGHT_BRACKET",
|
||||
"label": "[",
|
||||
"label": "]",
|
||||
"aliases": [
|
||||
"KC_RBRC"
|
||||
]
|
||||
@@ -1512,4 +1512,4 @@
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ qmk compile [-c] <configuratorExport.json>
|
||||
qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] -kb <keyboard_name> -km <keymap_name>
|
||||
```
|
||||
|
||||
**Usage in Keyboard Directory**:
|
||||
**Usage in Keyboard Directory**:
|
||||
|
||||
Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with `--keymap <keymap_name>`
|
||||
```
|
||||
@@ -44,7 +44,7 @@ $ qmk compile
|
||||
or with optional keymap argument
|
||||
|
||||
```
|
||||
$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4
|
||||
$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4
|
||||
$ qmk compile -km 66_iso
|
||||
Ψ Compiling keymap with make clueboard/66/rev4:66_iso
|
||||
...
|
||||
@@ -58,7 +58,7 @@ $ qmk compile
|
||||
...
|
||||
```
|
||||
|
||||
**Usage in Layout Directory**:
|
||||
**Usage in Layout Directory**:
|
||||
|
||||
Must be under `qmk_firmware/layouts/`, and in a keymap folder.
|
||||
```
|
||||
@@ -149,6 +149,34 @@ To exit out into the parent shell, simply type `exit`.
|
||||
qmk cd
|
||||
```
|
||||
|
||||
## `qmk find`
|
||||
|
||||
This command allows for searching through keyboard/keymap targets, filtering by specific criteria. `info.json` and `rules.mk` files contribute to the search data, as well as keymap configurations, and the results can be filtered using "dotty" syntax matching the overall `info.json` file format.
|
||||
|
||||
For example, one could search for all keyboards using STM32F411:
|
||||
|
||||
```
|
||||
qmk find -f 'processor=STM32F411'
|
||||
```
|
||||
|
||||
...and one can further constrain the list to keyboards using STM32F411 as well as rgb_matrix support:
|
||||
|
||||
```
|
||||
qmk find -f 'processor=STM32F411' -f 'features.rgb_matrix=true'
|
||||
```
|
||||
|
||||
**Usage**:
|
||||
|
||||
```
|
||||
qmk find [-h] [-km KEYMAP] [-f FILTER]
|
||||
|
||||
options:
|
||||
-km KEYMAP, --keymap KEYMAP
|
||||
The keymap name to build. Default is 'default'.
|
||||
-f FILTER, --filter FILTER
|
||||
Filter the list of keyboards based on the supplied value in rules.mk. Matches info.json structure, and accepts the formats 'features.rgblight=true' or 'exists(matrix_pins.direct)'. May be passed multiple times, all filters need to match. Value may include wildcards such as '*' and '?'.
|
||||
```
|
||||
|
||||
## `qmk console`
|
||||
|
||||
This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLE=yes`.
|
||||
@@ -269,7 +297,8 @@ qmk json2c [-o OUTPUT] filename
|
||||
|
||||
## `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 with your keymap. In some cases not using the C pre-processor helps.
|
||||
|
||||
**Usage**:
|
||||
@@ -442,7 +471,7 @@ $ qmk import-kbfirmware ~/Downloads/gh62.json
|
||||
|
||||
## `qmk format-text`
|
||||
|
||||
This command formats text files to have proper line endings.
|
||||
This command formats text files to have proper line endings.
|
||||
|
||||
Every text file in the repository needs to have Unix (LF) line ending.
|
||||
If you are working on **Windows**, you must ensure that line endings are corrected in order to get your PRs merged.
|
||||
@@ -453,7 +482,7 @@ qmk format-text
|
||||
|
||||
## `qmk format-c`
|
||||
|
||||
This command formats C code using clang-format.
|
||||
This command formats C code using clang-format.
|
||||
|
||||
Run it with no arguments to format all core code that has been changed. Default checks `origin/master` with `git diff`, branch can be changed using `-b <branch_name>`
|
||||
|
||||
@@ -556,7 +585,7 @@ qmk kle2json [-f] <filename>
|
||||
**Examples**:
|
||||
|
||||
```
|
||||
$ qmk kle2json kle.txt
|
||||
$ qmk kle2json kle.txt
|
||||
☒ File info.json already exists, use -f or --force to overwrite.
|
||||
```
|
||||
|
||||
|
||||
@@ -202,6 +202,62 @@ This function gets called at the end of all QMK processing, before starting the
|
||||
|
||||
Similar to `matrix_scan_*`, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throtting their behaviour if you do indeed require implementing something special.
|
||||
|
||||
### Example `void housekeeping_task_user(void)` implementation
|
||||
|
||||
This example will show you how to use `void housekeeping_task_user(void)` to turn off [RGB Light](feature_rgblight.md). For RGB Matrix, the [builtin](https://docs.qmk.fm/#/feature_rgb_matrix?id=additional-configh-options) `RGB_MATRIX_TIMEOUT` should be used.
|
||||
|
||||
First, add the following lines to your keymap's `config.h`:
|
||||
|
||||
```c
|
||||
#define RGBLIGHT_SLEEP // enable rgblight_suspend() and rgblight_wakeup() in keymap.c
|
||||
#define RGBLIGHT_TIMEOUT 900000 // ms to wait until rgblight time out, 900K ms is 15min.
|
||||
```
|
||||
|
||||
Next, add the following code to your `keymap.c`:
|
||||
|
||||
```c
|
||||
static uint32_t key_timer; // timer for last keyboard activity, use 32bit value and function to make longer idle time possible
|
||||
static void refresh_rgb(void); // refreshes the activity timer and RGB, invoke whenever any activity happens
|
||||
static void check_rgb_timeout(void); // checks if enough time has passed for RGB to timeout
|
||||
bool is_rgb_timeout = false; // store if RGB has timed out or not in a boolean
|
||||
|
||||
void refresh_rgb(void) {
|
||||
key_timer = timer_read32(); // store time of last refresh
|
||||
if (is_rgb_timeout)
|
||||
{
|
||||
is_rgb_timeout = false;
|
||||
rgblight_wakeup();
|
||||
}
|
||||
}
|
||||
void check_rgb_timeout(void) {
|
||||
if (!is_rgb_timeout && timer_elapsed32(key_timer) > RGBLIGHT_TIMEOUT) // check if RGB has already timeout and if enough time has passed
|
||||
{
|
||||
rgblight_suspend();
|
||||
is_rgb_timeout = true;
|
||||
}
|
||||
}
|
||||
/* Then, call the above functions from QMK's built in post processing functions like so */
|
||||
/* Runs at the end of each scan loop, check if RGB timeout has occured or not */
|
||||
void housekeeping_task_user(void) {
|
||||
#ifdef RGBLIGHT_TIMEOUT
|
||||
check_rgb_timeout();
|
||||
#endif
|
||||
}
|
||||
/* Runs after each key press, check if activity occurred */
|
||||
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
#ifdef RGBLIGHT_TIMEOUT
|
||||
if (record->event.pressed)
|
||||
refresh_rgb();
|
||||
#endif
|
||||
}
|
||||
/* Runs after each encoder tick, check if activity occurred */
|
||||
void post_encoder_update_user(uint8_t index, bool clockwise) {
|
||||
#ifdef RGBLIGHT_TIMEOUT
|
||||
refresh_rgb();
|
||||
#endif
|
||||
}
|
||||
```
|
||||
|
||||
# Keyboard Idling/Wake Code
|
||||
|
||||
If the board supports it, it can be "idled", by stopping a number of functions. A good example of this is RGB lights or backlights. This can save on power consumption, or may be better behavior for your keyboard.
|
||||
@@ -209,7 +265,7 @@ If the board supports it, it can be "idled", by stopping a number of functions.
|
||||
This is controlled by two functions: `suspend_power_down_*` and `suspend_wakeup_init_*`, which are called when the system board is idled and when it wakes up, respectively.
|
||||
|
||||
|
||||
### Example suspend_power_down_user() and suspend_wakeup_init_user() Implementation
|
||||
### Example `suspend_power_down_user()` and `suspend_wakeup_init_user()` Implementation
|
||||
|
||||
|
||||
```c
|
||||
|
||||
@@ -37,9 +37,9 @@ For more information on bitwise operators in C, click [here](https://en.wikipedi
|
||||
|
||||
In practice, this means that you can check whether a given modifier is active with `get_mods() & MOD_BIT(KC_<modifier>)` (see the [list of modifier keycodes](keycodes_basic.md#modifiers)) or with `get_mods() & MOD_MASK_<modifier>` if the difference between left and right hand modifiers is not important and you want to match both. Same thing can be done for one-shot modifiers if you replace `get_mods()` with `get_oneshot_mods()`.
|
||||
|
||||
To check that *only* a specific set of mods is active at a time, AND the modifier state and your desired mod mask as explained above and compare the result to the mod mask itself: `get_mods() & <mod mask> == <mod mask>`.
|
||||
To check that *only* a specific set of mods is active at a time, use a simple equality operator: `get_mods() == <mod mask>`.
|
||||
|
||||
For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods() & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.
|
||||
For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition.
|
||||
|
||||
The full list of mod masks is as follows:
|
||||
|
||||
@@ -91,7 +91,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
case KC_ESC:
|
||||
// Detect the activation of only Left Alt
|
||||
if ((get_mods() & MOD_BIT(KC_LALT)) == MOD_BIT(KC_LALT)) {
|
||||
if (get_mods() == MOD_BIT(KC_LALT)) {
|
||||
if (record->event.pressed) {
|
||||
// No need to register KC_LALT because it's already active.
|
||||
// The Alt modifier will apply on this KC_TAB.
|
||||
@@ -160,6 +160,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
};
|
||||
```
|
||||
Alternatively, this can be done with [Key Overrides](feature_key_overrides?id=simple-example).
|
||||
|
||||
# Advanced topics :id=advanced-topics
|
||||
|
||||
@@ -180,3 +181,7 @@ This page used to encompass a large set of features. We have moved many sections
|
||||
## Tap-Hold Configuration Options :id=tap-hold-configuration-options
|
||||
|
||||
* [Tap-Hold Configuration Options](tap_hold.md)
|
||||
|
||||
## Key Overrides :id=key-overrides
|
||||
|
||||
* [Key Overrides](feature_key_overrides.md)
|
||||
|
||||
@@ -236,6 +236,18 @@ bool apply_autocorrect(uint8_t backspaces, const char *str) {
|
||||
}
|
||||
```
|
||||
|
||||
### Autocorrect Status
|
||||
|
||||
Additional user callback functions to manipulate Autocorrect:
|
||||
|
||||
| Function | Description |
|
||||
|----------------------------|----------------------------------------------|
|
||||
| `autocorrect_enable()` | Turns Autocorrect on. |
|
||||
| `autocorrect_disable()` | Turns Autocorrect off. |
|
||||
| `autocorrect_toggle()` | Toggles Autocorrect. |
|
||||
| `autocorrect_is_enabled()` | Returns true if Autocorrect is currently on. |
|
||||
|
||||
|
||||
## Appendix: Trie binary data format :id=appendix
|
||||
|
||||
This section details how the trie is serialized to byte data in autocorrect_data. You don’t need to care about this to use this autocorrection implementation. But it is documented for the record in case anyone is interested in modifying the implementation, or just curious how it works.
|
||||
|
||||
@@ -58,7 +58,7 @@ const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
|
||||
const uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END};
|
||||
const uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
combo_t key_combos[] = {
|
||||
[AB_ESC] = COMBO(ab_combo, KC_ESC),
|
||||
[JK_TAB] = COMBO(jk_combo, KC_TAB),
|
||||
[QW_SFT] = COMBO(qw_combo, KC_LSFT),
|
||||
|
||||
@@ -17,7 +17,6 @@ Currently the following converters are available:
|
||||
| `promicro` | `bit_c_pro` |
|
||||
| `promicro` | `stemcell` |
|
||||
| `promicro` | `bonsai_c4` |
|
||||
| `promicro` | `elite_pi` |
|
||||
| `promicro` | `rp2040_ce` |
|
||||
| `promicro` | `elite_pi` |
|
||||
| `promicro` | `helios` |
|
||||
|
||||
@@ -57,78 +57,78 @@ susceptible to noise, you must choose a debounce method that will also mitigate
|
||||
if the scanning is slow, and you are using a timestamp-based algorithm, you might end up making a debouncing decision based on only two
|
||||
sampled values, which will limit the noise-resistance of the algorithm.
|
||||
* Currently all built-in debounce algorithms support timestamp-based debouncing only. In the future we might
|
||||
implement cycles-based debouncing, and it will be selectable via a ```config.h``` macro.
|
||||
implement cycles-based debouncing, and it will be selectable via a `config.h` macro.
|
||||
|
||||
2) Symmetric vs Asymmetric
|
||||
* Symmetric - apply the same debouncing algorithm, to both key-up and key-down events.
|
||||
* Recommended naming convention: ```sym_*```
|
||||
* Recommended naming convention: `sym_*`
|
||||
* Asymmetric - apply different debouncing algorithms to key-down and key-up events. E.g. Eager key-down, Defer key-up.
|
||||
* Recommended naming convention: ```asym_*``` followed by details of the type of algorithm in use, in order, for key-down and then key-up
|
||||
* Recommended naming convention: `asym_*` followed by details of the type of algorithm in use, in order, for key-down and then key-up
|
||||
|
||||
3) Eager vs Defer
|
||||
* Eager - any key change is reported immediately. All further inputs for DEBOUNCE ms are ignored.
|
||||
* Eager algorithms are not noise-resistant.
|
||||
* Recommended naming conventions:
|
||||
* ```sym_eager_*```
|
||||
* ```asym_eager_*_*```: key-down is using eager algorithm
|
||||
* ```asym_*_eager_*```: key-up is using eager algorithm
|
||||
* `sym_eager_*`
|
||||
* `asym_eager_*_*`: key-down is using eager algorithm
|
||||
* `asym_*_eager_*`: key-up is using eager algorithm
|
||||
* Defer - wait for no changes for DEBOUNCE ms before reporting change.
|
||||
* Defer algorithms are noise-resistant
|
||||
* Recommended naming conventions:
|
||||
* ```sym_defer_*```
|
||||
* ```asym_defer_*_*```: key-down is using defer algorithm
|
||||
* ```asym_*_defer_*```: key-up is using defer algorithm
|
||||
* `sym_defer_*`
|
||||
* `asym_defer_*_*`: key-down is using defer algorithm
|
||||
* `asym_*_defer_*`: key-up is using defer algorithm
|
||||
|
||||
4) Global vs Per-Key vs Per-Row
|
||||
* Global - one timer for all keys. Any key change state affects global timer
|
||||
* Recommended naming convention: ```*_g```
|
||||
* Recommended naming convention: `*_g`
|
||||
* Per-key - one timer per key
|
||||
* Recommended naming convention: ```*_pk```
|
||||
* Recommended naming convention: `*_pk`
|
||||
* Per-row - one timer per row
|
||||
* Recommended naming convention: ```*_pr```
|
||||
* Recommended naming convention: `*_pr`
|
||||
* Per-key and per-row algorithms consume more resources (in terms of performance,
|
||||
and ram usage), but fast typists might prefer them over global.
|
||||
|
||||
## Debounce algorithms supported by QMK
|
||||
## Supported Debounce Algorithms
|
||||
|
||||
QMK supports multiple debounce algorithms through its debounce API.
|
||||
QMK supports multiple algorithms through its debounce API.
|
||||
|
||||
### Debounce selection
|
||||
### Debounce Time
|
||||
|
||||
| DEBOUNCE_TYPE | Description | What else is needed |
|
||||
| ------------- | --------------------------------------------------- | ----------------------------- |
|
||||
| Not defined | Use the default algorithm, currently sym_defer_g | Nothing |
|
||||
| custom | Use your own debounce code | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions |
|
||||
| Anything Else | Use another algorithm from quantum/debounce/* | Nothing |
|
||||
Default debounce time is 5 milliseconds and it can be changed with the following line in `config.h`:
|
||||
```
|
||||
#define DEBOUNCE 10
|
||||
```
|
||||
?> Setting `DEBOUNCE` to `0` will disable this feature.
|
||||
|
||||
**Regarding split keyboards**:
|
||||
The debounce code is compatible with split keyboards.
|
||||
### Debounce Method
|
||||
|
||||
### Selecting an included debouncing method
|
||||
Keyboards may select one of the already implemented debounce methods, by adding to ```rules.mk``` the following line:
|
||||
Keyboards may select one of the core debounce methods by adding the following line into `rules.mk`:
|
||||
```
|
||||
DEBOUNCE_TYPE = <name of algorithm>
|
||||
```
|
||||
Where name of algorithm is one of:
|
||||
* ```sym_defer_g``` - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE``` milliseconds of no changes has occurred, all input changes are pushed.
|
||||
* This is the current default algorithm. This is the highest performance algorithm with lowest memory usage, and it's also noise-resistant.
|
||||
* ```sym_eager_pr``` - debouncing per row. On any state change, response is immediate, followed by locking the row ```DEBOUNCE``` milliseconds of no further input for that row.
|
||||
For use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive / low scan rate, and fingers usually only hit one row at a time. This could be
|
||||
appropriate for the ErgoDox models; the matrix is rotated 90°, and hence its "rows" are really columns, and each finger only hits a single "row" at a time in normal use.
|
||||
* ```sym_eager_pk``` - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key
|
||||
* ```sym_defer_pr``` - debouncing per row. On any state change, a per-row timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that row, the entire row is pushed. Can improve responsiveness over `sym_defer_g` while being less susceptible than per-key debouncers to noise.
|
||||
* ```sym_defer_pk``` - debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key status change is pushed.
|
||||
* ```asym_eager_defer_pk``` - debouncing per key. On a key-down state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key-up status change is pushed.
|
||||
Name of algorithm is one of:
|
||||
|
||||
### A couple algorithms that could be implemented in the future:
|
||||
* ```sym_defer_pr```
|
||||
* ```sym_eager_g```
|
||||
| Algorithm | Description |
|
||||
| --------------------- | ----------- |
|
||||
| `sym_defer_g` | Debouncing per keyboard. On any state change, a global timer is set. When `DEBOUNCE` milliseconds of no changes has occurred, all input changes are pushed. This is the highest performance algorithm with lowest memory usage and is noise-resistant. |
|
||||
| `sym_defer_pr` | Debouncing per row. On any state change, a per-row timer is set. When `DEBOUNCE` milliseconds of no changes have occurred on that row, the entire row is pushed. This can improve responsiveness over `sym_defer_g` while being less susceptible to noise than per-key algorithm. |
|
||||
| `sym_defer_pk` | Debouncing per key. On any state change, a per-key timer is set. When `DEBOUNCE` milliseconds of no changes have occurred on that key, the key status change is pushed. |
|
||||
| `sym_eager_pr` | Debouncing per row. On any state change, response is immediate, followed by `DEBOUNCE` milliseconds of no further input for that row. |
|
||||
| `sym_eager_pk` | Debouncing per key. On any state change, response is immediate, followed by `DEBOUNCE` milliseconds of no further input for that key. |
|
||||
| `asym_eager_defer_pk` | Debouncing per key. On a key-down state change, response is immediate, followed by `DEBOUNCE` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When `DEBOUNCE` milliseconds of no changes have occurred on that key, the key-up status change is pushed. |
|
||||
|
||||
### Use your own debouncing code
|
||||
You have the option to implement you own debouncing algorithm. To do this:
|
||||
* Set ```DEBOUNCE_TYPE = custom``` in ```rules.mk```.
|
||||
* Add ```SRC += debounce.c``` in ```rules.mk```
|
||||
* Add your own ```debounce.c```. Look at current implementations in ```quantum/debounce``` for examples.
|
||||
?> `sym_defer_g` is the default if `DEBOUNCE_TYPE` is undefined.
|
||||
|
||||
?> `sym_eager_pr` is suitable for use in keyboards where refreshing `NUM_KEYS` 8-bit counters is computationally expensive or has low scan rate while fingers usually hit one row at a time. This could be appropriate for the ErgoDox models where the matrix is rotated 90°. Hence its "rows" are really columns and each finger only hits a single "row" at a time with normal usage.
|
||||
|
||||
### Implementing your own debouncing code
|
||||
|
||||
You have the option to implement you own debouncing algorithm with the following steps:
|
||||
|
||||
* Set `DEBOUNCE_TYPE = custom` in `rules.mk`.
|
||||
* Add `SRC += debounce.c` in `rules.mk`
|
||||
* Implement your own `debounce.c`. See `quantum/debounce` for examples.
|
||||
* Debouncing occurs after every raw matrix scan.
|
||||
* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly.
|
||||
* If the algorithm might be applicable to other keyboards, please consider adding it to ```quantum/debounce```
|
||||
* Use num_rows instead of MATRIX_ROWS to support split keyboards correctly.
|
||||
* If your custom algorithm is applicable to other keyboards, please consider making a pull request.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Key Overrides
|
||||
# Key Overrides :id=key-overrides
|
||||
|
||||
Key overrides allow you to override modifier-key combinations to send a different modifier-key combination or perform completely custom actions. Don't want `shift` + `1` to type `!` on your computer? Use a key override to make your keyboard type something different when you press `shift` + `1`. The general behavior is like this: If `modifiers w` + `key x` are pressed, replace these keys with `modifiers y` + `key z` in the keyboard report.
|
||||
|
||||
@@ -10,13 +10,13 @@ You can use key overrides in a similar way to momentary layer/fn keys to activat
|
||||
- Create custom shortcuts or change existing ones: E.g. Send `ctrl`+`shift`+`z` when `ctrl`+`y` is pressed.
|
||||
- Run custom code when `ctrl` + `alt` + `esc` is pressed.
|
||||
|
||||
## Setup
|
||||
## Setup :id=setup
|
||||
|
||||
To enable this feature, you need to add `KEY_OVERRIDE_ENABLE = yes` to your `rules.mk`.
|
||||
|
||||
Then, in your `keymap.c` file, you'll need to define the array `key_overrides`, which defines all key overrides to be used. Each override is a value of type `key_override_t`. The array `key_overrides` is `NULL`-terminated and contains pointers to `key_override_t` values (`const key_override_t **`).
|
||||
|
||||
## Creating Key Overrides
|
||||
## Creating Key Overrides :id=creating-key-overrides
|
||||
|
||||
The `key_override_t` struct has many options that allow you to precisely tune your overrides. The full reference is shown below. Instead of manually creating a `key_override_t` value, it is recommended to use these dedicated initializers:
|
||||
|
||||
@@ -34,7 +34,7 @@ Additionally takes a bitmask `options` that specifies additional options. See `k
|
||||
|
||||
For more customization possibilities, you may directly create a `key_override_t`, which allows you to customize even more behavior. Read further below for details and examples.
|
||||
|
||||
## Simple Example
|
||||
## Simple Example :id=simple-example
|
||||
|
||||
This shows how the mentioned example of sending `delete` when `shift` + `backspace` are pressed is realized:
|
||||
|
||||
@@ -48,9 +48,9 @@ const key_override_t **key_overrides = (const key_override_t *[]){
|
||||
};
|
||||
```
|
||||
|
||||
## Intermediate Difficulty Examples
|
||||
## Intermediate Difficulty Examples :id=intermediate-difficulty-examples
|
||||
|
||||
### Media Controls & Screen Brightness
|
||||
### Media Controls & Screen Brightness :id=media-controls-amp-screen-brightness
|
||||
|
||||
In this example a single key is configured to control media, volume and screen brightness by using key overrides.
|
||||
|
||||
@@ -102,7 +102,7 @@ const key_override_t **key_overrides = (const key_override_t *[]){
|
||||
};
|
||||
```
|
||||
|
||||
### Flexible macOS-friendly Grave Escape
|
||||
### Flexible macOS-friendly Grave Escape :id=flexible-macos-friendly-grave-escape
|
||||
The [Grave Escape feature](feature_grave_esc.md) is limited in its configurability and has [bugs when used on macOS](feature_grave_esc.md#caveats). Key overrides can be used to achieve a similar functionality as Grave Escape, but with more customization and without bugs on macOS.
|
||||
|
||||
```c
|
||||
@@ -121,8 +121,8 @@ const key_override_t **key_overrides = (const key_override_t *[]){
|
||||
|
||||
In addition to not encountering unexpected bugs on macOS, you can also change the behavior as you wish. Instead setting `GUI` + `ESC` = `` ` `` you may change it to an arbitrary other modifier, for example `Ctrl` + `ESC` = `` ` ``.
|
||||
|
||||
## Advanced Examples
|
||||
### Modifiers as Layer Keys
|
||||
## Advanced Examples :id=advanced-examples
|
||||
### Modifiers as Layer Keys :id=modifiers-as-layer-keys
|
||||
|
||||
Do you really need a dedicated key to toggle your fn layer? With key overrides, perhaps not. This example shows how you can configure to use `rGUI` + `rAlt` (right GUI and right alt) to access a momentary layer like an fn layer. With this you completely eliminate the need to use a dedicated layer key. Of course the choice of modifier keys can be changed as needed, `rGUI` + `rAlt` is just an example here.
|
||||
|
||||
@@ -150,7 +150,7 @@ const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) |
|
||||
.enabled = NULL};
|
||||
```
|
||||
|
||||
## Keycodes
|
||||
## Keycodes :id=keycodes
|
||||
|
||||
|Keycode |Aliases |Description |
|
||||
|------------------------|---------|----------------------|
|
||||
@@ -158,7 +158,7 @@ const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) |
|
||||
|`QK_KEY_OVERRIDE_ON` |`KO_ON` |Turn on key overrides |
|
||||
|`QK_KEY_OVERRIDE_OFF` |`KO_OFF` |Turn off key overrides|
|
||||
|
||||
## Reference for `key_override_t`
|
||||
## Reference for `key_override_t` :id=reference-for-key_override_t
|
||||
|
||||
Advanced users may need more customization than what is offered by the simple `ko_make` initializers. For this, directly create a `key_override_t` value and set all members. Below is a reference for all members of `key_override_t`.
|
||||
|
||||
@@ -175,7 +175,7 @@ Advanced users may need more customization than what is offered by the simple `k
|
||||
| `void *context` | A context that will be passed to the custom action function. |
|
||||
| `bool *enabled` | If this points to false this override will not be used. Set to NULL to always have this override enabled. |
|
||||
|
||||
### Reference for `ko_option_t`
|
||||
## Reference for `ko_option_t` :id=reference-for-ko_option_t
|
||||
|
||||
Bitfield with various options controlling the behavior of a key override.
|
||||
|
||||
@@ -189,11 +189,11 @@ Bitfield with various options controlling the behavior of a key override.
|
||||
| `ko_option_no_reregister_trigger` | If set, the trigger key will never be registered again after the override is deactivated. |
|
||||
| `ko_options_default` | The default options used by the `ko_make_xxx` functions |
|
||||
|
||||
## For Advanced Users: Inner Workings
|
||||
## For Advanced Users: Inner Workings :id=for-advanced-users-inner-workings
|
||||
|
||||
This section explains how a key override works in detail, explaining where each member of `key_override_t` comes into play. Understanding this is essential to be able to take full advantage of all the options offered by key overrides.
|
||||
|
||||
#### Activation
|
||||
#### Activation :id=activation
|
||||
|
||||
When the necessary keys are pressed (`trigger_mods` + `trigger`), the override is 'activated' and the replacement key is registered in the keyboard report (`replacement`), while the `trigger` key is removed from the keyboard report. The trigger modifiers may also be removed from the keyboard report upon activation of an override (`suppressed_mods`). The override will not activate if any of the `negative_modifiers` are pressed.
|
||||
|
||||
@@ -207,11 +207,11 @@ Use the `option` member to customize which of these events are allowed to activa
|
||||
|
||||
In any case, a key override can only activate if the `trigger` key is the _last_ non-modifier key that was pressed down. This emulates the behavior of how standard OSes (macOS, Windows, Linux) handle normal key input (to understand: Hold down `a`, then also hold down `b`, then hold down `shift`; `B` will be typed but not `A`).
|
||||
|
||||
#### Deactivation
|
||||
#### Deactivation :id=deactivation
|
||||
|
||||
An override is 'deactivated' when one of the trigger keys (`trigger_mods`, `trigger`) is lifted, another non-modifier key is pressed down, or one of the `negative_modifiers` is pressed down. When an override deactivates, the `replacement` key is removed from the keyboard report, while the `suppressed_mods` that are still held down are re-added to the keyboard report. By default, the `trigger` key is re-added to the keyboard report if it is still held down and no other non-modifier key has been pressed since. This again emulates the behavior of how standard OSes handle normal key input (To understand: hold down `a`, then also hold down `b`, then also `shift`, then release `b`; `A` will not be typed even though you are holding the `a` and `shift` keys). Use the `option` field `ko_option_no_reregister_trigger` to prevent re-registering the trigger key in all cases.
|
||||
|
||||
#### Key Repeat Delay
|
||||
#### Key Repeat Delay :id=key-repeat-delay
|
||||
|
||||
A third way in which standard OS-handling of modifier-key input is emulated in key overrides is with a ['key repeat delay'](https://www.dummies.com/computers/pcs/set-your-keyboards-repeat-delay-and-repeat-rate/). To explain what this is, let's look at how normal keyboard input is handled by mainstream OSes again: If you hold down `a`, followed by `shift`, you will see the letter `a` is first typed, then for a short moment nothing is typed and then repeating `A`s are typed. Take note that, although shift is pressed down just after `a` is pressed, it takes a moment until `A` is typed. This is caused by the aforementioned key repeat delay, and it is a feature that prevents unwanted repeated characters from being typed.
|
||||
|
||||
@@ -222,6 +222,6 @@ This applies equally to releasing a modifier: When you hold `shift`, then press
|
||||
The duration of the key repeat delay is controlled with the `KEY_OVERRIDE_REPEAT_DELAY` macro. Define this value in your `config.h` file to change it. It is 500ms by default.
|
||||
|
||||
|
||||
## Difference to Combos
|
||||
## Difference to Combos :id=difference-to-combos
|
||||
|
||||
Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interacton with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable.
|
||||
|
||||
@@ -20,13 +20,13 @@ To use the ADNS 5050 sensor, add this to your `rules.mk`
|
||||
POINTING_DEVICE_DRIVER = adns5050
|
||||
```
|
||||
|
||||
The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source.
|
||||
The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source.
|
||||
|
||||
| Setting | Description | Default |
|
||||
| ------------------- | ------------------------------------------------------------------ | -------------------------- |
|
||||
| `ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
|
||||
| `ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
|
||||
| `ADNS5050_CS_PIN` | (Required) The pin connected to the Chip Select pin of the sensor. | `POINTING_DEVICE_CS_PIN` |
|
||||
| Setting (`config.h`) | Description | Default |
|
||||
| -------------------- | ------------------------------------------------------------------ | -------------------------- |
|
||||
| `ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
|
||||
| `ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
|
||||
| `ADNS5050_CS_PIN` | (Required) The pin connected to the Chip Select pin of the sensor. | `POINTING_DEVICE_CS_PIN` |
|
||||
|
||||
|
||||
|
||||
@@ -40,9 +40,9 @@ To use the ADNS 9800 sensor, add this to your `rules.mk`
|
||||
POINTING_DEVICE_DRIVER = adns9800
|
||||
```
|
||||
|
||||
The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking.
|
||||
The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking.
|
||||
|
||||
| Setting | Description | Default |
|
||||
| Setting (`config.h`) | Description | Default |
|
||||
| ----------------------- | ---------------------------------------------------------------------- | ------------------------ |
|
||||
| `ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|
||||
| `ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|
||||
@@ -63,7 +63,7 @@ POINTING_DEVICE_DRIVER = analog_joystick
|
||||
|
||||
The Analog Joystick is an analog (ADC) driven sensor. There are a variety of joysticks that you can use for this.
|
||||
|
||||
| Setting | Description | Default |
|
||||
| Setting (`config.h`) | Description | Default |
|
||||
| --------------------------------- | -------------------------------------------------------------------------- | ------------- |
|
||||
| `ANALOG_JOYSTICK_X_AXIS_PIN` | (Required) The pin used for the vertical/X axis. | _not defined_ |
|
||||
| `ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ |
|
||||
@@ -153,7 +153,7 @@ Additionally, `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE` is supported in thi
|
||||
|
||||
#### Relative mode gestures
|
||||
|
||||
| Gesture Setting | Description | Default |
|
||||
| Gesture Setting (`config.h`) | Description | Default |
|
||||
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
|
||||
| `CIRQUE_PINNACLE_TAP_ENABLE` | (Optional) Enable tap to "left click". Works on both sides of a split keyboard. | _not defined_ |
|
||||
| `CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE` | (Optional) Tap in upper right corner (half of the finger needs to be outside of the trackpad) of the trackpad will result in "right click". `CIRQUE_PINNACLE_TAP_ENABLE` must be enabled. | _not defined_ |
|
||||
@@ -172,10 +172,10 @@ POINTING_DEVICE_DRIVER = paw3204
|
||||
|
||||
The paw 3204 sensor uses a serial type protocol for communication, and requires an additional light source.
|
||||
|
||||
| Setting | Description | Default |
|
||||
| ------------------ |--------------------------------------------------------------- | -------------------------- |
|
||||
| `PAW3204_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
|
||||
| `PAW3204_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
|
||||
| Setting (`config.h`) | Description | Default |
|
||||
| -------------------- |--------------------------------------------------------------- | -------------------------- |
|
||||
| `PAW3204_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
|
||||
| `PAW3204_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
|
||||
|
||||
The CPI range is 400-1600, with supported values of (400, 500, 600, 800, 1000, 1200 and 1600). Defaults to 1000 CPI.
|
||||
|
||||
@@ -189,7 +189,7 @@ POINTING_DEVICE_DRIVER = pimoroni_trackball
|
||||
|
||||
The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball.
|
||||
|
||||
| Setting | Description | Default |
|
||||
| Setting (`config.h`) | Description | Default |
|
||||
| ------------------------------------ | ---------------------------------------------------------------------------------- | ------- |
|
||||
| `PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` |
|
||||
| `PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackball in milliseconds. | `100` |
|
||||
@@ -220,7 +220,7 @@ The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI.
|
||||
Both PMW 3360 and PMW 3389 are SPI driven optical sensors, that use a built in IR LED for surface tracking.
|
||||
If you have different CS wiring on each half you can use `PMW33XX_CS_PIN_RIGHT` or `PMW33XX_CS_PINS_RIGHT` in combination with `PMW33XX_CS_PIN` or `PMW33XX_CS_PINS` to configure both sides independently. If `_RIGHT` values aren't provided, they default to be the same as the left ones.
|
||||
|
||||
| Setting | Description | Default |
|
||||
| Setting (`config.h`) | Description | Default |
|
||||
| ---------------------------- | ------------------------------------------------------------------------------------------- | ------------------------ |
|
||||
| `PMW33XX_CS_PIN` | (Required) Sets the Chip Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` |
|
||||
| `PMW33XX_CS_PINS` | (Alternative) Sets the Chip Select pins connected to multiple sensors. | `{PMW33XX_CS_PIN}` |
|
||||
@@ -434,6 +434,75 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
|
||||
This allows you to toggle between scrolling and cursor movement by pressing the DRAG_SCROLL key.
|
||||
|
||||
### Advanced Drag Scroll
|
||||
|
||||
Sometimes, like with the Cirque trackpad, you will run into issues where the scrolling may be too fast.
|
||||
|
||||
Here is a slightly more advanced example of drag scrolling. You will be able to change the scroll speed based on the values in set in `SCROLL_DIVISOR_H` and `SCROLL_DIVISOR_V`. This bit of code is also set up so that instead of toggling the scrolling state with set_scrolling = !set_scrolling, the set_scrolling variable is set directly to record->event.pressed. This way, the drag scrolling will only be active while the DRAG_SCROLL button is held down.
|
||||
|
||||
```c
|
||||
enum custom_keycodes {
|
||||
DRAG_SCROLL = SAFE_RANGE,
|
||||
};
|
||||
|
||||
bool set_scrolling = false;
|
||||
|
||||
// Modify these values to adjust the scrolling speed
|
||||
#define SCROLL_DIVISOR_H 8.0
|
||||
#define SCROLL_DIVISOR_V 8.0
|
||||
|
||||
// Variables to store accumulated scroll values
|
||||
float scroll_accumulated_h = 0;
|
||||
float scroll_accumulated_v = 0;
|
||||
|
||||
// Function to handle mouse reports and perform drag scrolling
|
||||
report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
|
||||
// Check if drag scrolling is active
|
||||
if (set_scrolling) {
|
||||
// Calculate and accumulate scroll values based on mouse movement and divisors
|
||||
scroll_accumulated_h += (float)mouse_report.x / SCROLL_DIVISOR_H;
|
||||
scroll_accumulated_v += (float)mouse_report.y / SCROLL_DIVISOR_V;
|
||||
|
||||
// Assign integer parts of accumulated scroll values to the mouse report
|
||||
mouse_report.h = (int8_t)scroll_accumulated_h;
|
||||
mouse_report.v = (int8_t)scroll_accumulated_v;
|
||||
|
||||
// Update accumulated scroll values by subtracting the integer parts
|
||||
scroll_accumulated_h -= (int8_t)scroll_accumulated_h;
|
||||
scroll_accumulated_v -= (int8_t)scroll_accumulated_v;
|
||||
|
||||
// Clear the X and Y values of the mouse report
|
||||
mouse_report.x = 0;
|
||||
mouse_report.y = 0;
|
||||
}
|
||||
return mouse_report;
|
||||
}
|
||||
|
||||
// Function to handle key events and enable/disable drag scrolling
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case DRAG_SCROLL:
|
||||
// Toggle set_scrolling when DRAG_SCROLL key is pressed or released
|
||||
set_scrolling = record->event.pressed;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Function to handle layer changes and disable drag scrolling when not in AUTO_MOUSE_DEFAULT_LAYER
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
// Disable set_scrolling if the current layer is not the AUTO_MOUSE_DEFAULT_LAYER
|
||||
if (get_highest_layer(state) != AUTO_MOUSE_DEFAULT_LAYER) {
|
||||
set_scrolling = false;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
## Split Examples
|
||||
|
||||
The following examples make use the `SPLIT_POINTING_ENABLE` functionality and show how to manipulate the mouse report for a scrolling mode.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Word Per Minute (WPM) Calculcation
|
||||
# Word Per Minute (WPM) Calculation
|
||||
|
||||
The WPM feature uses time between keystrokes to compute a rolling average words per minute rate and makes this available for various uses.
|
||||
|
||||
|
||||
@@ -35,6 +35,40 @@ To use a 5V/16MHz Pro Micro as an ISP flashing tool, you will first need to load
|
||||
|
||||
!> Note that the `10` pin on the Pro Micro should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Pro Micro to the `RESET` on the keyboard.
|
||||
|
||||
|
||||
### Arduino Uno / Micro as ISP
|
||||
|
||||
[Arduino Uno](https://store.arduino.cc/products/arduino-uno-rev3)
|
||||
[Arduino Micro](https://store.arduino.cc/products/arduino-micro)
|
||||
|
||||
A standard Uno or Micro can be used as an ISP flashing tool using the [example "ArduinoISP" sketch](https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP#load-the-sketch) to emulate an STK500 ISP. Also works with Sparkfun Pro Micros and clones.
|
||||
|
||||
**AVRDUDE Programmer**: `stk500v1`
|
||||
**AVRDUDE Port**: Serial
|
||||
|
||||
#### Wiring
|
||||
|
||||
|Uno |Keyboard|
|
||||
|-----------|--------|
|
||||
|`5V` |`VCC` |
|
||||
|`GND` |`GND` |
|
||||
|`10` (`B2`)|`RESET` |
|
||||
|`13` (`B5`)|`SCLK` |
|
||||
|`11` (`B3`)|`MOSI` |
|
||||
|`12` (`B4`)|`MISO` |
|
||||
|
||||
|Micro |Keyboard|
|
||||
|-----------|--------|
|
||||
|`5V` |`VCC` |
|
||||
|`GND` |`GND` |
|
||||
|`10` (`B6`)|`RESET` |
|
||||
|`15` (`B1`)|`SCLK` |
|
||||
|`16` (`B2`)|`MOSI` |
|
||||
|`14` (`B3`)|`MISO` |
|
||||
|
||||
!> Note that the `10` pin on the Uno/Micro should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Uno/Micro to the `RESET` on the keyboard.
|
||||
|
||||
|
||||
### Teensy 2.0 as ISP
|
||||
|
||||
[PJRC Teensy 2.0](https://www.pjrc.com/store/teensy.html)
|
||||
@@ -57,6 +91,7 @@ To use a Teensy 2.0 as an ISP flashing tool, you will first need to load a [spec
|
||||
|
||||
!> Note that the `B0` pin on the Teensy should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Teensy to the `RESET` on the keyboard.
|
||||
|
||||
|
||||
### SparkFun PocketAVR / USBtinyISP
|
||||
|
||||
[SparkFun PocketAVR](https://www.sparkfun.com/products/9825)
|
||||
|
||||
@@ -56,11 +56,17 @@ QMK maintains a Homebrew tap and formula which will automatically install the CL
|
||||
|
||||
You will need to install Homebrew. Follow the instructions on https://brew.sh.
|
||||
|
||||
!> **NOTE:** If you are using Apple Silicon, such as the M1, you will need to install a rosetta compatible version of Homebrew. This version does not override the base Homebrew. This can be done by running `arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"`. See here: [Rosetta-compatible Homebrew](https://stackoverflow.com/questions/64882584/how-to-run-the-homebrew-installer-under-rosetta-2-on-m1-macbook)
|
||||
|
||||
#### Installation
|
||||
|
||||
Install the QMK CLI by running:
|
||||
|
||||
brew install qmk/qmk/qmk
|
||||
|
||||
Install the QMK CLI on an Apple Silicon Mac by running:
|
||||
|
||||
arch -x86_64 brew install qmk/qmk/qmk
|
||||
|
||||
### ** Linux/WSL **
|
||||
|
||||
@@ -166,6 +172,8 @@ For example, to build a firmware for a Clueboard 66% you would use:
|
||||
|
||||
qmk compile -kb clueboard/66/rev3 -km default
|
||||
|
||||
?> The keyboard option is the path relative to the keyboard directory, the above example would be found in `qmk_firmware/keyboards/clueboard/66/rev3`. If you're unsure you can view a full list of supported keyboards with `qmk list-keyboards`.
|
||||
|
||||
When it is done you should have a lot of output that ends similar to this:
|
||||
|
||||
```
|
||||
|
||||
@@ -46,16 +46,7 @@ Before starting, you will want to make sure that you have all of the build tools
|
||||
|
||||
This part is super simple. However, there is some configuration that we need to do to ensure things are configured correctly.
|
||||
|
||||
### Configuring VS Code
|
||||
|
||||
First, we need to set up IntelliSense. This isn't strictly required, but it will make your life a LOT easier. To do this, we need to create the `.vscode/c_cpp_properties.json` file in the QMK Firmware folder, You can do this all manually, but I've done most of the work already.
|
||||
|
||||
Grab [this file](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) and save it. You may need to edit this file, if you didn't install MSYS2 to the default location, or are using WSL/LxSS.
|
||||
|
||||
Once you have saved this file, you will need to reload VS Code, if it was already running.
|
||||
|
||||
?> You should see an `extensions.json` and `settings.json` file in the `.vscode` folder, as well.
|
||||
|
||||
#### MSYS2 Setup
|
||||
|
||||
Now, we will set up the MSYS2 window to show up in VSCode as the integrated terminal. This has a number of advantages. Mostly, you can control+click on errors and jump to those files. This makes debugging much easier. It's also nice, in that you don't have to jump to another window.
|
||||
|
||||
@@ -110,8 +101,50 @@ This installs a bunch of Git related tools that may make using Git with QMK Firm
|
||||
Restart once you've installed any extensions
|
||||
|
||||
# Configure VS Code for QMK
|
||||
|
||||
1. Click <kbd><kbd>File</kbd> > <kbd>Open Folder</kbd></kbd>
|
||||
2. Open the QMK Firmware folder that you cloned from GitHub.
|
||||
3. Click <kbd><kbd>File</kbd> > <kbd>Save Workspace As...</kbd></kbd>
|
||||
|
||||
## Configuring VS Code
|
||||
|
||||
Using the [standard `compile_commands.json` database](https://clang.llvm.org/docs/JSONCompilationDatabase.html), we can get VS code C/C++ extension to use the exact same includes and defines used for your keyboard and keymap.
|
||||
|
||||
1. Run `qmk generate-compilation-database -kb <keyboard> -km <keymap>` to generate the `compile_commands.json`.
|
||||
1. Create `.vscode/c_cpp_properties.json` with the following content:
|
||||
```
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "qmk",
|
||||
"compilerArgs": ["-mmcu=atmega32u4"],
|
||||
"compilerPath": "/usr/bin/avr-gcc",
|
||||
"cStandard": "gnu11",
|
||||
"cppStandard": "gnu++14",
|
||||
"compileCommands": "${workspaceFolder}/compile_commands.json",
|
||||
"intelliSenseMode": "linux-gcc-arm",
|
||||
"browse": {
|
||||
"path": [
|
||||
"${workspaceFolder}"
|
||||
],
|
||||
"limitSymbolsToIncludedHeaders": true,
|
||||
"databaseFilename": ""
|
||||
}
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
```
|
||||
|
||||
Change values in `.vscode/c_cpp_properties.json` for your environment:
|
||||
|
||||
1. Copy the `-mmcu` argument from `compile_commands.json` into your `compilerArgs`. This is to work around a [bug in vscode c/c++ extension](https://github.com/microsoft/vscode-cpptools/issues/6478).
|
||||
1. Use the `compilerPath` from `compile_commands.json`.
|
||||
1. Modify `cStandard`, `cppStandard` and `intelliSenseMode` values to the correct values for your platform. See [this section](https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference#_configuration-properties) for reference. For WSL, it should still be gcc-x64.
|
||||
|
||||
And now you're ready to code QMK Firmware in VS Code
|
||||
|
||||
|
||||
## Troubleshooting VSCode C/C++ extension
|
||||
|
||||
If the defines are not matching what you expect, open the source code and run action `C/C++: Log Diagnostics`. This will list the exact list of defines and include paths defined in `compile_commands.json`, and if it's not part of your compilation database, it will tell you so.
|
||||
@@ -53,6 +53,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
|
||||
|
||||
- keyboard moves within the repository *must* go through the `develop` branch instead of `master`, so as to ensure compatibility for users
|
||||
- `data/mappings/keyboard_aliases.hjson` must be updated to reflect the move, so users with pre-created configurator keymap.json files continue to detect the correct keyboard
|
||||
- keyboard updates and refactors (eg. to data driven) *must* go through `develop` to reduce `master` -> `develop` merge conflicts
|
||||
- PR submissions from a `kbfirmware` export (or equivalent) will not be accepted unless converted to new QMK standards -- try `qmk import-kbfirmware` first
|
||||
- `info.json`
|
||||
- With the move to [data driven](https://docs.qmk.fm/#/data_driven_config) keyboard configuration, we encourage contributors to utilise as many features as possible of the info.json [schema](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema).
|
||||
|
||||
0
keyboards/0xcb/splaytoraid/32u4/rules.mk
Normal file
0
keyboards/0xcb/splaytoraid/32u4/rules.mk
Normal file
22
keyboards/0xcb/splaytoraid/config.h
Normal file
22
keyboards/0xcb/splaytoraid/config.h
Normal file
@@ -0,0 +1,22 @@
|
||||
// Copyright 2023 Conor Burns (@Conor-Burns)
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RGB_DI_PIN D0
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 18
|
||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
|
||||
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING
|
||||
#define RGB_MATRIX_DEFAULT_HUE 152
|
||||
#define RGB_MATRIX_DEFAULT_SAT 232
|
||||
#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
|
||||
#define RGB_MATRIX_DEFAULT_SPD 50
|
||||
|
||||
#define ENABLE_RGB_MATRIX_BREATHING
|
||||
#define ENABLE_RGB_MATRIX_SOLID_COLOR
|
||||
#define ENABLE_RGB_MATRIX_BAND_SAT
|
||||
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_ALL
|
||||
#define ENABLE_RGB_MATRIX_RAINDROPS
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
153
keyboards/0xcb/splaytoraid/info.json
Normal file
153
keyboards/0xcb/splaytoraid/info.json
Normal file
@@ -0,0 +1,153 @@
|
||||
{
|
||||
"manufacturer": "Freya",
|
||||
"keyboard_name": "splaytoraid",
|
||||
"maintainer": "freya-irl",
|
||||
"url": "https://github.com/freya-irl/splaytoraid40",
|
||||
"development_board": "promicro",
|
||||
"bootloader": "qmk-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"cols": ["F5", "F6", "F7", "F4", "B3", "B1", "B2"],
|
||||
"rows": ["D3", "D2", "D1", "D4", "D7", "E6", "B4", "C6"]
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0xCB00",
|
||||
"vid": "0x2004"
|
||||
},
|
||||
"features": {
|
||||
"extrakey": true,
|
||||
"rgb_matrix": true,
|
||||
"bootmagic": true,
|
||||
"console": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"bootmagic": {
|
||||
"matrix": [1, 0]
|
||||
},
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true,
|
||||
"rotary": [
|
||||
{
|
||||
"pin_a": "B5",
|
||||
"pin_b": "B6",
|
||||
"resolution": 4
|
||||
}
|
||||
]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "WS2812",
|
||||
"layout": [
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 0, "y": 0 },
|
||||
{ "flags": 4, "matrix": [1, 0], "x": 20, "y": 0 },
|
||||
{ "flags": 4, "matrix": [7, 0], "x": 61, "y": 0 },
|
||||
{ "flags": 4, "matrix": [7, 1], "x": 163, "y": 0 },
|
||||
{ "flags": 4, "matrix": [5, 0], "x": 203, "y": 0 },
|
||||
{ "flags": 4, "matrix": [4, 2], "x": 224, "y": 0 },
|
||||
{ "flags": 4, "matrix": [6, 2], "x": 0, "y": 21 },
|
||||
{ "flags": 4, "matrix": [6, 1], "x": 224, "y": 21 },
|
||||
{ "flags": 4, "matrix": [3, 3], "x": 20, "y": 43 },
|
||||
{ "flags": 4, "matrix": [7, 3], "x": 61, "y": 43 },
|
||||
{ "flags": 4, "matrix": [6, 4], "x": 163, "y": 43 },
|
||||
{ "flags": 4, "matrix": [6, 3], "x": 203, "y": 43 },
|
||||
{ "flags": 4, "matrix": [4, 3], "x": 61, "y": 64 },
|
||||
{ "flags": 4, "matrix": [5, 5], "x": 81, "y": 64 },
|
||||
{ "flags": 4, "matrix": [7, 4], "x": 101, "y": 64 },
|
||||
{ "flags": 4, "matrix": [7, 5], "x": 122, "y": 64 },
|
||||
{ "flags": 4, "matrix": [1, 5], "x": 142, "y": 64 },
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 163, "y": 64 }
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_36": {
|
||||
"layout": [
|
||||
{ "label": "K10", "matrix": [1, 0], "x": 0, "y": 0 },
|
||||
{ "label": "K11", "matrix": [1, 1], "x": 1, "y": 0 },
|
||||
{ "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "label": "K01", "matrix": [0, 1], "x": 3, "y": 0 },
|
||||
{ "label": "K12", "matrix": [1, 2], "x": 4, "y": 0 },
|
||||
{ "label": "K52", "matrix": [5, 2], "x": 6, "y": 0 },
|
||||
{ "label": "K04", "matrix": [0, 4], "x": 7, "y": 0 },
|
||||
{ "label": "K03", "matrix": [0, 3], "x": 8, "y": 0 },
|
||||
{ "label": "K14", "matrix": [1, 4], "x": 9, "y": 0 },
|
||||
{ "label": "K15", "matrix": [1, 5], "x": 10, "y": 0 },
|
||||
{ "label": "K30", "matrix": [3, 0], "x": 0, "y": 1 },
|
||||
{ "label": "K31", "matrix": [3, 1], "x": 1, "y": 1 },
|
||||
{ "label": "K22", "matrix": [2, 2], "x": 2, "y": 1 },
|
||||
{ "label": "K21", "matrix": [2, 1], "x": 3, "y": 1 },
|
||||
{ "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 },
|
||||
{ "label": "K53", "matrix": [5, 3], "x": 6, "y": 1 },
|
||||
{ "label": "K24", "matrix": [2, 4], "x": 7, "y": 1 },
|
||||
{ "label": "K23", "matrix": [2, 3], "x": 8, "y": 1 },
|
||||
{ "label": "K34", "matrix": [3, 4], "x": 9, "y": 1 },
|
||||
{ "label": "K35", "matrix": [3, 5], "x": 10, "y": 1 },
|
||||
{ "label": "K50", "matrix": [5, 0], "x": 0, "y": 2 },
|
||||
{ "label": "K51", "matrix": [5, 1], "x": 1, "y": 2 },
|
||||
{ "label": "K42", "matrix": [4, 2], "x": 2, "y": 2 },
|
||||
{ "label": "K41", "matrix": [4, 1], "x": 3, "y": 2 },
|
||||
{ "label": "K32", "matrix": [3, 2], "x": 4, "y": 2 },
|
||||
{ "label": "K72", "matrix": [7, 2], "x": 6, "y": 2 },
|
||||
{ "label": "K44", "matrix": [4, 4], "x": 7, "y": 2 },
|
||||
{ "label": "K43", "matrix": [4, 3], "x": 8, "y": 2 },
|
||||
{ "label": "K54", "matrix": [5, 4], "x": 9, "y": 2 },
|
||||
{ "label": "K55", "matrix": [5, 5], "x": 10, "y": 2 },
|
||||
{ "label": "K62", "matrix": [6, 2], "x": 2, "y": 3 },
|
||||
{ "label": "K61", "matrix": [6, 1], "x": 3, "y": 3 },
|
||||
{ "label": "K33", "matrix": [3, 3], "x": 4, "y": 3 },
|
||||
{ "label": "K66", "matrix": [6, 6], "x": 5, "y": 3 },
|
||||
{ "label": "K73", "matrix": [7, 3], "x": 6, "y": 3 },
|
||||
{ "label": "K64", "matrix": [6, 4], "x": 7, "y": 3 },
|
||||
{ "label": "K63", "matrix": [6, 3], "x": 8, "y": 3 }
|
||||
]
|
||||
},
|
||||
"LAYOUT_40": {
|
||||
"layout": [
|
||||
{ "label": "K70", "matrix": [7, 0], "x": 0, "y": 0 },
|
||||
{ "label": "K10", "matrix": [1, 0], "x": 1, "y": 0 },
|
||||
{ "label": "K11", "matrix": [1, 1], "x": 2, "y": 0 },
|
||||
{ "label": "K02", "matrix": [0, 2], "x": 3, "y": 0 },
|
||||
{ "label": "K01", "matrix": [0, 1], "x": 4, "y": 0 },
|
||||
{ "label": "K12", "matrix": [1, 2], "x": 5, "y": 0 },
|
||||
{ "label": "K52", "matrix": [5, 2], "x": 7, "y": 0 },
|
||||
{ "label": "K04", "matrix": [0, 4], "x": 8, "y": 0 },
|
||||
{ "label": "K03", "matrix": [0, 3], "x": 9, "y": 0 },
|
||||
{ "label": "K14", "matrix": [1, 4], "x": 10, "y": 0 },
|
||||
{ "label": "K15", "matrix": [1, 5], "x": 11, "y": 0 },
|
||||
{ "label": "K75", "matrix": [7, 5], "x": 12, "y": 0 },
|
||||
{ "label": "K71", "matrix": [7, 1], "x": 0, "y": 1 },
|
||||
{ "label": "K30", "matrix": [3, 0], "x": 1, "y": 1 },
|
||||
{ "label": "K31", "matrix": [3, 1], "x": 2, "y": 1 },
|
||||
{ "label": "K22", "matrix": [2, 2], "x": 3, "y": 1 },
|
||||
{ "label": "K21", "matrix": [2, 1], "x": 4, "y": 1 },
|
||||
{ "label": "K13", "matrix": [1, 3], "x": 5, "y": 1 },
|
||||
{ "label": "K53", "matrix": [5, 3], "x": 7, "y": 1 },
|
||||
{ "label": "K24", "matrix": [2, 4], "x": 8, "y": 1 },
|
||||
{ "label": "K23", "matrix": [2, 3], "x": 9, "y": 1 },
|
||||
{ "label": "K34", "matrix": [3, 4], "x": 10, "y": 1 },
|
||||
{ "label": "K35", "matrix": [3, 5], "x": 11, "y": 1 },
|
||||
{ "label": "K74", "matrix": [7, 4], "x": 12, "y": 1 },
|
||||
{ "label": "K50", "matrix": [5, 0], "x": 1, "y": 2 },
|
||||
{ "label": "K51", "matrix": [5, 1], "x": 2, "y": 2 },
|
||||
{ "label": "K42", "matrix": [4, 2], "x": 3, "y": 2 },
|
||||
{ "label": "K41", "matrix": [4, 1], "x": 4, "y": 2 },
|
||||
{ "label": "K32", "matrix": [3, 2], "x": 5, "y": 2 },
|
||||
{ "label": "K72", "matrix": [7, 2], "x": 7, "y": 2 },
|
||||
{ "label": "K44", "matrix": [4, 4], "x": 8, "y": 2 },
|
||||
{ "label": "K43", "matrix": [4, 3], "x": 9, "y": 2 },
|
||||
{ "label": "K54", "matrix": [5, 4], "x": 10, "y": 2 },
|
||||
{ "label": "K55", "matrix": [5, 5], "x": 11, "y": 2 },
|
||||
{ "label": "K62", "matrix": [6, 2], "x": 3, "y": 3 },
|
||||
{ "label": "K61", "matrix": [6, 1], "x": 4, "y": 3 },
|
||||
{ "label": "K33", "matrix": [3, 3], "x": 5, "y": 3 },
|
||||
{ "label": "K66", "matrix": [6, 6], "x": 6, "y": 3 },
|
||||
{ "label": "K73", "matrix": [7, 3], "x": 7, "y": 3 },
|
||||
{ "label": "K64", "matrix": [6, 4], "x": 8, "y": 3 },
|
||||
{ "label": "K63", "matrix": [6, 3], "x": 9, "y": 3 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
49
keyboards/0xcb/splaytoraid/keymaps/default/keymap.c
Normal file
49
keyboards/0xcb/splaytoraid/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,49 @@
|
||||
// Copyright 2023 Conor Burns (@Conor-Burns)
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_40(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||
KC_LSFT, KC_ESC, KC_ENT, KC_MPLY, KC_SPC, KC_DEL, KC_RSFT
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_40(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_40(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_40(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_LOWER] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
|
||||
[_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
|
||||
[_ADJUST] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }
|
||||
};
|
||||
1
keyboards/0xcb/splaytoraid/keymaps/default/rules.mk
Normal file
1
keyboards/0xcb/splaytoraid/keymaps/default/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
21
keyboards/0xcb/splaytoraid/keymaps/pi/config.h
Normal file
21
keyboards/0xcb/splaytoraid/keymaps/pi/config.h
Normal file
@@ -0,0 +1,21 @@
|
||||
// Copyright 2023 Dreipunkteinsvier (@dreipunkteinsvier)
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#define TAPPING_TERM 180
|
||||
|
||||
// Prevent normal rollover on alphas from accidentally triggering mods.
|
||||
#define IGNORE_MOD_TAP_INTERRUPT
|
||||
|
||||
#undef LOCKING_SUPPORT_ENABLE
|
||||
#undef LOCKING_RESYNC_ENABLE
|
||||
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
#define COMBO_COUNT 9
|
||||
#define COMBO_TERM 20
|
||||
#define COMBO_ONLY_FROM_LAYER 0
|
||||
#endif
|
||||
|
||||
#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
|
||||
304
keyboards/0xcb/splaytoraid/keymaps/pi/keymap.c
Normal file
304
keyboards/0xcb/splaytoraid/keymaps/pi/keymap.c
Normal file
@@ -0,0 +1,304 @@
|
||||
// Copyright 2023 Dreipunkteinsvier (@dreipunkteinsvier)
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
// │ D E F I N I T I O N S │
|
||||
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
|
||||
|
||||
enum splaytoraid40_layers {
|
||||
_QWERTY,
|
||||
_COLEMAK,
|
||||
_NAVIGATION,
|
||||
_MEDIA,
|
||||
_NUMBERS,
|
||||
_FUNCTION,
|
||||
};
|
||||
|
||||
// ┌───────────────────────────────────────────────────────────┐
|
||||
// │ d e f i n e k e y c o d e s │
|
||||
// └───────────────────────────────────────────────────────────┘
|
||||
|
||||
enum custom_keycodes {
|
||||
COLEMAK = SAFE_RANGE,
|
||||
QWERTY
|
||||
};
|
||||
|
||||
// ┌───────────────────────────────────────────────────────────┐
|
||||
// │ d e f i n e m a c r o n a m e s │
|
||||
// └───────────────────────────────────────────────────────────┘
|
||||
|
||||
// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐
|
||||
#define HM_A LGUI_T(KC_A)
|
||||
#define HM_S LALT_T(KC_S)
|
||||
#define HM_D LCTL_T(KC_D)
|
||||
#define HM_F LSFT_T(KC_F)
|
||||
#define HM_G RALT_T(KC_G)
|
||||
|
||||
// RIGHT HAND HOME ROW MODS ├──────────────────────────────────┐
|
||||
#define HM_H RALT_T(KC_H)
|
||||
#define HM_J RSFT_T(KC_J)
|
||||
#define HM_K LCTL_T(KC_K)
|
||||
#define HM_L LALT_T(KC_L)
|
||||
#define HM_SCLN LGUI_T(KC_SCLN)
|
||||
|
||||
// CTRL + ARROWS ├─────────────────────────────────────────────┐
|
||||
#define CT_LEFT LCTL(KC_LEFT)
|
||||
#define CT_DOWN LCTL(KC_DOWN)
|
||||
#define CT_UP LCTL(KC_UP)
|
||||
#define CT_RGHT LCTL(KC_RGHT)
|
||||
|
||||
// THUMB KEY LAYER TAPS ├──────────────────────────────────────┐
|
||||
#define TB_TAB LT(_MEDIA, KC_TAB)
|
||||
#define TB_ENT LT(_NAVIGATION, KC_ENT)
|
||||
#define TB_SPC LT(_NUMBERS, KC_SPC)
|
||||
#define TB_BSPC LT(_FUNCTION, KC_BSPC)
|
||||
|
||||
// ┌───────────────────────────────────────────────────────────┐
|
||||
// │ d e f i n e c o m b o s │
|
||||
// └───────────────────────────────────────────────────────────┘
|
||||
// vertical combos for umlauts
|
||||
const uint16_t PROGMEM ae_combo[] = {KC_Q, HM_A, COMBO_END};
|
||||
const uint16_t PROGMEM ss_combo[] = {KC_W, HM_S, COMBO_END};
|
||||
const uint16_t PROGMEM ue_combo[] = {KC_U, HM_J, COMBO_END};
|
||||
const uint16_t PROGMEM oe_combo[] = {KC_O, HM_L, COMBO_END};
|
||||
// horizontal combos for mods
|
||||
const uint16_t PROGMEM del_combo[] = {HM_H, HM_J, COMBO_END};
|
||||
const uint16_t PROGMEM bsp_combo[] = {HM_J, HM_K, COMBO_END};
|
||||
const uint16_t PROGMEM ent_combo[] = {HM_K, HM_L, COMBO_END};
|
||||
const uint16_t PROGMEM tab_combo[] = {HM_F, HM_D, COMBO_END};
|
||||
const uint16_t PROGMEM esc_combo[] = {HM_D, HM_S, COMBO_END};
|
||||
|
||||
combo_t key_combos[COMBO_COUNT] = {
|
||||
COMBO(ae_combo, RALT(KC_Q)),
|
||||
COMBO(ss_combo, RALT(KC_S)),
|
||||
COMBO(ue_combo, RALT(KC_Y)),
|
||||
COMBO(oe_combo, RALT(KC_P)),
|
||||
COMBO(del_combo, KC_DEL),
|
||||
COMBO(bsp_combo, KC_BSPC),
|
||||
COMBO(ent_combo, KC_ENT),
|
||||
COMBO(tab_combo, KC_TAB),
|
||||
COMBO(esc_combo, KC_ESC)
|
||||
};
|
||||
|
||||
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
// │ K E Y M A P S │
|
||||
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ q w e r t y │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ Q │ W │ E │ R │ T │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ Y │ U │ I │ O │ P │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ A │ S │ D │ F │ G ├─╯ ╰─┤ H │ J │ K │ L │ ; │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ Z │ X │ C │ V │ B ││ ││ ││ N │ M │ , │ . │ / │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ ESC │ TAB │ ENTER │ │ SPACE │ BSPACE │ DEL │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_QWERTY] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
HM_A, HM_S, HM_D, HM_F, HM_G, HM_H, HM_J, HM_K, HM_L, HM_SCLN,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||
KC_ESC, TB_TAB, TB_ENT, KC_MPLY, TB_SPC, TB_BSPC, KC_DEL
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ c o l e m a k │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ Q │ W │ F │ P │ G │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ J │ L │ U │ Y │ ; │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ A │ R │ S │ T │ D ├─╯ ╰─┤ H │ N │ E │ I │ O │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ Z │ X │ C │ V │ B ││ ││ ││ K │ M │ , │ . │ / │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ ESC │ TAB │ ENTER │ │ SPACE │ BSPACE │ DEL │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_COLEMAK] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||
KC_ESC, TB_TAB, TB_ENT, _______, TB_SPC, TB_BSPC, KC_DEL
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ n a v i g a t i o n │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ │ │ │ │ { │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ } │ CTRL ← │ CTRL ↓ │ CTRL ↑ │ CTRL → │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ │ │ │ │ ( ├─╯ ╰─┤ ) │ ← │ ↓ │ ↑ │ → │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ │ │ │ │ [ ││ ││ ││ ] │ HOME │ PG↓ │ PG↑ │ END │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_NAVIGATION] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
_______, _______, _______, _______, KC_LCBR, KC_RCBR, CT_LEFT, CT_DOWN, CT_UP, CT_RGHT,
|
||||
KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_LPRN, KC_RPRN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
||||
_______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ m e d i a & s y m b o l │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ _ │ & │ * │ ( │ ) │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ + │ $ │ % │ ^ │ " ├─╯ ╰─┤ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ ~ │ ! │ @ │ # │ | ││ ││ ││ │ │ │ │ │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_MEDIA] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
KC_UNDS, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||
KC_PLUS, KC_DLR, KC_PERC, KC_CIRC, KC_DQUO, RGB_M_P, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, QWERTY, COLEMAK, _______, _______, QK_BOOTLOADER,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ n u m b e r s │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ - │ 7 │ 8 │ 9 │ 0 │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ = │ 4 │ 5 │ 6 │ ' ├─╯ ╰─┤ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ ` │ 1 │ 2 │ 3 │ \ ││ ││ ││ │ │ │ │ │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_NUMBERS] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
KC_MINS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______,
|
||||
KC_EQL, KC_4, KC_5, KC_6, KC_QUOT, KC_RALT, KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ f u n t i o n │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ F12 │ F7 │ F8 │ F9 │ PRT SCR │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ F11 │ F4 │ F5 │ F6 │ ├─╯ ╰─┤ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ F10 │ F1 │ F2 │ F3 │ INS ││ ││ ││ │ │ │ │ │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_FUNCTION] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, _______, _______, _______, _______, _______,
|
||||
KC_F11, KC_F4, KC_F5, KC_F6, _______, KC_RALT, KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI,
|
||||
KC_F10, KC_F1, KC_F2, KC_F3, KC_INS, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ t e m p l a t e │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ │ │ │ │ ││ ││ ││ │ │ │ │ │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
/*
|
||||
[_TEMPLATE] = LAYOUT_saegewerk(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
)*/
|
||||
};
|
||||
|
||||
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
// │ D I E S U N D D A S │
|
||||
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
|
||||
bool caps_word_press_user(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
// Keycodes that continue Caps Word, with shift applied.
|
||||
case KC_A ... KC_Z:
|
||||
add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to the next key.
|
||||
return true;
|
||||
|
||||
// Keycodes that continue Caps Word, without shifting.
|
||||
case KC_1 ... KC_0:
|
||||
case KC_BSPC:
|
||||
case KC_DEL:
|
||||
case KC_MINS:
|
||||
case KC_UNDS:
|
||||
case KC_LSFT:
|
||||
case KC_RSFT:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false; // Deactivate Caps Word.
|
||||
}
|
||||
}
|
||||
|
||||
// ┌───────────────────────────────────────────────────────────┐
|
||||
// │ e n c o d e r │
|
||||
// └───────────────────────────────────────────────────────────┘
|
||||
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[_NAVIGATION] = { ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
|
||||
[_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_COLEMAK] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_MEDIA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_NUMBERS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FUNCTION] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
3
keyboards/0xcb/splaytoraid/keymaps/pi/rules.mk
Normal file
3
keyboards/0xcb/splaytoraid/keymaps/pi/rules.mk
Normal file
@@ -0,0 +1,3 @@
|
||||
COMBO_ENABLE = yes
|
||||
CAPS_WORD_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
48
keyboards/0xcb/splaytoraid/keymaps/via/keymap.c
Normal file
48
keyboards/0xcb/splaytoraid/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,48 @@
|
||||
// Copyright 2023 Conor Burns (@Conor-Burns)
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_40(
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
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_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||
KC_LSFT, KC_ESC, KC_ENT, KC_MPLY, KC_SPC, KC_DEL, KC_RSFT
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_40(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_40(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_40(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_LOWER] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
|
||||
[_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
|
||||
[_ADJUST] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }
|
||||
};
|
||||
2
keyboards/0xcb/splaytoraid/keymaps/via/rules.mk
Normal file
2
keyboards/0xcb/splaytoraid/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
36
keyboards/0xcb/splaytoraid/readme.md
Normal file
36
keyboards/0xcb/splaytoraid/readme.md
Normal file
@@ -0,0 +1,36 @@
|
||||
# splaytoraid
|
||||
|
||||

|
||||
|
||||
A 40% ergonomic keyboard with a stacked acrylic case and RGB underglow.
|
||||
|
||||
* Keyboard Maintainer: [freya](https://github.com/freya-irl)
|
||||
* Hardware Supported: PCB kit and Pro Micro compatible controller
|
||||
* Hardware Availability: [here](https://keeb.supply/products/splaytoraid-messenger-edition)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 0xcb/splaytoraid:default
|
||||
make 0xcb/splaytoraid/32u4:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make 0xcb/splaytoraid:default:flash
|
||||
make 0xcb/splaytoraid/32u4:default:flash
|
||||
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the left top 4. col key (usually Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Press the button on the controller (Helios) for more than 500ms or just press it (Pluto)
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
||||
|
||||
Please note that the default bootloader for the `32u4` version is QMK DFU, for compatibility with [0xCB Pluto](https://github.com/0xCB-dev/0xCB-Pluto). Generic Pro Micros often use a different bootloader, such as `caterina`.
|
||||
|
||||
If the incorrect bootloader is specified, bootmagic reset and the `QK_BOOT` keycode will not work.
|
||||
|
||||
To avoid this problem, set the correct bootloader in your custom keymap's `rules.mk` file before compiling, or flash using an appropriate target (ex: `make 0xcb/splaytoraid/32u4:default:avrdude`). See [flashing instructions and bootloader information](https://docs.qmk.fm/#/flashing) for more details.
|
||||
25
keyboards/0xcb/splaytoraid/rp2040_ce/config.h
Normal file
25
keyboards/0xcb/splaytoraid/rp2040_ce/config.h
Normal file
@@ -0,0 +1,25 @@
|
||||
// Copyright 2023 Conor Burns (@Conor-Burns)
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
||||
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
||||
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
|
||||
#define ENABLE_RGB_MATRIX_DUAL_BEACON
|
||||
#define ENABLE_RGB_MATRIX_HUE_BREATHING
|
||||
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
#define ENABLE_RGB_MATRIX_SPLASH
|
||||
#define ENABLE_RGB_MATRIX_MULTISPLASH
|
||||
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
3
keyboards/0xcb/splaytoraid/rp2040_ce/readme.md
Normal file
3
keyboards/0xcb/splaytoraid/rp2040_ce/readme.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# rp2040_ce
|
||||
|
||||
This folder is set as default in the parent rules.mk - it will build firmware compatible with the RP2040 Community Edition. See [here](https://docs.qmk.fm/#/platformdev_rp2040?id=rp2040_ce) for a list.
|
||||
2
keyboards/0xcb/splaytoraid/rp2040_ce/rules.mk
Normal file
2
keyboards/0xcb/splaytoraid/rp2040_ce/rules.mk
Normal file
@@ -0,0 +1,2 @@
|
||||
WS2812_DRIVER = vendor
|
||||
CONVERT_TO = rp2040_ce
|
||||
1
keyboards/0xcb/splaytoraid/rules.mk
Normal file
1
keyboards/0xcb/splaytoraid/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
DEFAULT_FOLDER = 0xcb/splaytoraid/rp2040_ce
|
||||
@@ -3,26 +3,14 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 10
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
# define OLED_DISPLAY_128X32
|
||||
#define OLED_DISPLAY_128X32
|
||||
#define I2C1_SCL_PIN GP17
|
||||
#define I2C1_SDA_PIN GP16
|
||||
#define I2C_DRIVER I2CD0
|
||||
#define OLED_BRIGHTNESS 128
|
||||
#define OLED_FONT_H "keyboards/1upkeyboards/pi40/lib/glcdfont.c"
|
||||
#endif
|
||||
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
#define MATRIX_ROW_PINS { GP21, GP20, GP19, GP18 }
|
||||
#define MATRIX_COL_PINS { GP1, GP2, GP3, GP4, GP5, GP6, GP7, GP8, GP9, GP10, GP11, GP12 }
|
||||
|
||||
#define RGB_DI_PIN GP0
|
||||
#define RGB_MATRIX_LED_COUNT 47
|
||||
#define RGBLED_NUM 47
|
||||
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
# define RGBLIGHT_LIMIT_VAL 150
|
||||
|
||||
6
keyboards/1upkeyboards/pi40/grid_v1_1/config.h
Normal file
6
keyboards/1upkeyboards/pi40/grid_v1_1/config.h
Normal file
@@ -0,0 +1,6 @@
|
||||
// Copyright 2022 ziptyze (@ziptyze)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 48
|
||||
149
keyboards/1upkeyboards/pi40/grid_v1_1/info.json
Normal file
149
keyboards/1upkeyboards/pi40/grid_v1_1/info.json
Normal file
@@ -0,0 +1,149 @@
|
||||
{
|
||||
"keyboard_name": "pi40",
|
||||
"manufacturer": "1upkeyboards",
|
||||
"maintainer": "ziptyze",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"usb": {
|
||||
"vid": "0x6F75",
|
||||
"pid": "0x5600",
|
||||
"device_version": "1.1.0"
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 10
|
||||
},
|
||||
"features": {
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"rgb_matrix": true,
|
||||
"rgblight": false
|
||||
},
|
||||
"matrix_pins": {
|
||||
"rows": [ "GP21", "GP20", "GP19", "GP18" ],
|
||||
"cols": [ "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP22" ]
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true,
|
||||
"rotary": [
|
||||
{
|
||||
"pin_a": "GP14",
|
||||
"pin_b": "GP13"
|
||||
}
|
||||
]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "WS2812",
|
||||
"layout": [
|
||||
{ "flags": 1, "matrix": [0, 0], "x": 9, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 28, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 46, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 65, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 84, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 5], "x": 102, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 6], "x": 121, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 7], "x": 140, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 8], "x": 159, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 9], "x": 177, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 10], "x": 196, "y": 8 },
|
||||
{ "flags": 1, "matrix": [0, 11], "x": 215, "y": 8 },
|
||||
{ "flags": 1, "matrix": [1, 11], "x": 215, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 10], "x": 196, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 9], "x": 177, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 8], "x": 159, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 7], "x": 140, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 6], "x": 121, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 5], "x": 102, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 4], "x": 84, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 3], "x": 65, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 2], "x": 46, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 1], "x": 28, "y": 24 },
|
||||
{ "flags": 1, "matrix": [1, 0], "x": 9, "y": 24 },
|
||||
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 1], "x": 28, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 2], "x": 46, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 3], "x": 65, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 4], "x": 84, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 5], "x": 102, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 6], "x": 121, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 7], "x": 140, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 8], "x": 159, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 9], "x": 177, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 10], "x": 196, "y": 40 },
|
||||
{ "flags": 1, "matrix": [2, 11], "x": 215, "y": 40 },
|
||||
{ "flags": 1, "matrix": [3, 11], "x": 215, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 10], "x": 196, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 9], "x": 177, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 8], "x": 159, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 7], "x": 140, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 6], "x": 121, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 4], "x": 84, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 3], "x": 65, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 2], "x": 46, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 1], "x": 28, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 0], "x": 9, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 5], "x": 102, "y": 56 }
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x12": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 12], "x": 11, "y": 0 },
|
||||
{ "matrix": [0, 0], "x": 0, "y": 1 },
|
||||
{ "matrix": [0, 1], "x": 1, "y": 1 },
|
||||
{ "matrix": [0, 2], "x": 2, "y": 1 },
|
||||
{ "matrix": [0, 3], "x": 3, "y": 1 },
|
||||
{ "matrix": [0, 4], "x": 4, "y": 1 },
|
||||
{ "matrix": [0, 5], "x": 5, "y": 1 },
|
||||
{ "matrix": [0, 6], "x": 6, "y": 1 },
|
||||
{ "matrix": [0, 7], "x": 7, "y": 1 },
|
||||
{ "matrix": [0, 8], "x": 8, "y": 1 },
|
||||
{ "matrix": [0, 9], "x": 9, "y": 1 },
|
||||
{ "matrix": [0, 10], "x": 10, "y": 1 },
|
||||
{ "matrix": [0, 11], "x": 11, "y": 1 },
|
||||
{ "matrix": [1, 0], "x": 0, "y": 2 },
|
||||
{ "matrix": [1, 1], "x": 1, "y": 2 },
|
||||
{ "matrix": [1, 2], "x": 2, "y": 2 },
|
||||
{ "matrix": [1, 3], "x": 3, "y": 2 },
|
||||
{ "matrix": [1, 4], "x": 4, "y": 2 },
|
||||
{ "matrix": [1, 5], "x": 5, "y": 2 },
|
||||
{ "matrix": [1, 6], "x": 6, "y": 2 },
|
||||
{ "matrix": [1, 7], "x": 7, "y": 2 },
|
||||
{ "matrix": [1, 8], "x": 8, "y": 2 },
|
||||
{ "matrix": [1, 9], "x": 9, "y": 2 },
|
||||
{ "matrix": [1, 10], "x": 10, "y": 2 },
|
||||
{ "matrix": [1, 11], "x": 11, "y": 2 },
|
||||
{ "matrix": [2, 0], "x": 0, "y": 3 },
|
||||
{ "matrix": [2, 1], "x": 1, "y": 3 },
|
||||
{ "matrix": [2, 2], "x": 2, "y": 3 },
|
||||
{ "matrix": [2, 3], "x": 3, "y": 3 },
|
||||
{ "matrix": [2, 4], "x": 4, "y": 3 },
|
||||
{ "matrix": [2, 5], "x": 5, "y": 3 },
|
||||
{ "matrix": [2, 6], "x": 6, "y": 3 },
|
||||
{ "matrix": [2, 7], "x": 7, "y": 3 },
|
||||
{ "matrix": [2, 8], "x": 8, "y": 3 },
|
||||
{ "matrix": [2, 9], "x": 9, "y": 3 },
|
||||
{ "matrix": [2, 10], "x": 10, "y": 3 },
|
||||
{ "matrix": [2, 11], "x": 11, "y": 3 },
|
||||
{ "matrix": [3, 0], "x": 0, "y": 4 },
|
||||
{ "matrix": [3, 1], "x": 1, "y": 4 },
|
||||
{ "matrix": [3, 2], "x": 2, "y": 4 },
|
||||
{ "matrix": [3, 3], "x": 3, "y": 4 },
|
||||
{ "matrix": [3, 4], "x": 4, "y": 4 },
|
||||
{ "matrix": [3, 5], "x": 5, "y": 4 },
|
||||
{ "matrix": [3, 6], "x": 6, "y": 4 },
|
||||
{ "matrix": [3, 7], "x": 7, "y": 4 },
|
||||
{ "matrix": [3, 8], "x": 8, "y": 4 },
|
||||
{ "matrix": [3, 9], "x": 9, "y": 4 },
|
||||
{ "matrix": [3, 10], "x": 10, "y": 4 },
|
||||
{ "matrix": [3, 11], "x": 11, "y": 4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
0
keyboards/1upkeyboards/pi40/grid_v1_1/rules.mk
Normal file
0
keyboards/1upkeyboards/pi40/grid_v1_1/rules.mk
Normal file
@@ -1,123 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "pi40",
|
||||
"manufacturer": "1upkeyboards",
|
||||
"usb": {
|
||||
"vid": "0x6F75",
|
||||
"pid": "0x5600",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP14", "pin_b": "GP13"}
|
||||
]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "matrix": [3, 6], "x": 11, "y": 0 },
|
||||
{ "matrix": [0, 0], "x": 0, "y": 1 },
|
||||
{ "matrix": [0, 1], "x": 1, "y": 1 },
|
||||
{ "matrix": [0, 2], "x": 2, "y": 1 },
|
||||
{ "matrix": [0, 3], "x": 3, "y": 1 },
|
||||
{ "matrix": [0, 4], "x": 4, "y": 1 },
|
||||
{ "matrix": [0, 5], "x": 5, "y": 1 },
|
||||
{ "matrix": [0, 6], "x": 6, "y": 1 },
|
||||
{ "matrix": [0, 7], "x": 7, "y": 1 },
|
||||
{ "matrix": [0, 8], "x": 8, "y": 1 },
|
||||
{ "matrix": [0, 9], "x": 9, "y": 1 },
|
||||
{ "matrix": [0, 10], "x": 10, "y": 1 },
|
||||
{ "matrix": [0, 11], "x": 11, "y": 1 },
|
||||
{ "matrix": [1, 0], "x": 0, "y": 2 },
|
||||
{ "matrix": [1, 1], "x": 1, "y": 2 },
|
||||
{ "matrix": [1, 2], "x": 2, "y": 2 },
|
||||
{ "matrix": [1, 3], "x": 3, "y": 2 },
|
||||
{ "matrix": [1, 4], "x": 4, "y": 2 },
|
||||
{ "matrix": [1, 5], "x": 5, "y": 2 },
|
||||
{ "matrix": [1, 6], "x": 6, "y": 2 },
|
||||
{ "matrix": [1, 7], "x": 7, "y": 2 },
|
||||
{ "matrix": [1, 8], "x": 8, "y": 2 },
|
||||
{ "matrix": [1, 9], "x": 9, "y": 2 },
|
||||
{ "matrix": [1, 10], "x": 10, "y": 2 },
|
||||
{ "matrix": [1, 11], "x": 11, "y": 2 },
|
||||
{ "matrix": [2, 0], "x": 0, "y": 3 },
|
||||
{ "matrix": [2, 1], "x": 1, "y": 3 },
|
||||
{ "matrix": [2, 2], "x": 2, "y": 3 },
|
||||
{ "matrix": [2, 3], "x": 3, "y": 3 },
|
||||
{ "matrix": [2, 4], "x": 4, "y": 3 },
|
||||
{ "matrix": [2, 5], "x": 5, "y": 3 },
|
||||
{ "matrix": [2, 6], "x": 6, "y": 3 },
|
||||
{ "matrix": [2, 7], "x": 7, "y": 3 },
|
||||
{ "matrix": [2, 8], "x": 8, "y": 3 },
|
||||
{ "matrix": [2, 9], "x": 9, "y": 3 },
|
||||
{ "matrix": [2, 10], "x": 10, "y": 3 },
|
||||
{ "matrix": [2, 11], "x": 11, "y": 3 },
|
||||
{ "matrix": [3, 0], "x": 0, "y": 4 },
|
||||
{ "matrix": [3, 1], "x": 1, "y": 4 },
|
||||
{ "matrix": [3, 2], "x": 2, "y": 4 },
|
||||
{ "matrix": [3, 3], "x": 3, "y": 4 },
|
||||
{ "matrix": [3, 4], "x": 4, "y": 4 },
|
||||
{ "matrix": [3, 5], "x": 5, "y": 4, "w": 2},
|
||||
{ "matrix": [3, 7], "x": 7, "y": 4 },
|
||||
{ "matrix": [3, 8], "x": 8, "y": 4 },
|
||||
{ "matrix": [3, 9], "x": 9, "y": 4 },
|
||||
{ "matrix": [3, 10], "x": 10, "y": 4 },
|
||||
{ "matrix": [3, 11], "x": 11, "y": 4 }
|
||||
]
|
||||
},
|
||||
"LAYOUT_ortho_4x12": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "matrix": [1, 0], "x": 0, "y": 1 },
|
||||
{ "matrix": [1, 1], "x": 1, "y": 1 },
|
||||
{ "matrix": [1, 2], "x": 2, "y": 1 },
|
||||
{ "matrix": [1, 3], "x": 3, "y": 1 },
|
||||
{ "matrix": [1, 4], "x": 4, "y": 1 },
|
||||
{ "matrix": [1, 5], "x": 5, "y": 1 },
|
||||
{ "matrix": [1, 6], "x": 6, "y": 1 },
|
||||
{ "matrix": [1, 7], "x": 7, "y": 1 },
|
||||
{ "matrix": [1, 8], "x": 8, "y": 1 },
|
||||
{ "matrix": [1, 9], "x": 9, "y": 1 },
|
||||
{ "matrix": [1, 10], "x": 10, "y": 1 },
|
||||
{ "matrix": [1, 11], "x": 11, "y": 1 },
|
||||
{ "matrix": [2, 0], "x": 0, "y": 2 },
|
||||
{ "matrix": [2, 1], "x": 1, "y": 2 },
|
||||
{ "matrix": [2, 2], "x": 2, "y": 2 },
|
||||
{ "matrix": [2, 3], "x": 3, "y": 2 },
|
||||
{ "matrix": [2, 4], "x": 4, "y": 2 },
|
||||
{ "matrix": [2, 5], "x": 5, "y": 2 },
|
||||
{ "matrix": [2, 6], "x": 6, "y": 2 },
|
||||
{ "matrix": [2, 7], "x": 7, "y": 2 },
|
||||
{ "matrix": [2, 8], "x": 8, "y": 2 },
|
||||
{ "matrix": [2, 9], "x": 9, "y": 2 },
|
||||
{ "matrix": [2, 10], "x": 10, "y": 2 },
|
||||
{ "matrix": [2, 11], "x": 11, "y": 2 },
|
||||
{ "matrix": [3, 0], "x": 0, "y": 3 },
|
||||
{ "matrix": [3, 1], "x": 1, "y": 3 },
|
||||
{ "matrix": [3, 2], "x": 2, "y": 3 },
|
||||
{ "matrix": [3, 3], "x": 3, "y": 3 },
|
||||
{ "matrix": [3, 4], "x": 4, "y": 3 },
|
||||
{ "matrix": [3, 5], "x": 5, "y": 3 },
|
||||
{ "matrix": [3, 6], "x": 6, "y": 3, "label": "ENC" },
|
||||
{ "matrix": [3, 7], "x": 7, "y": 3 },
|
||||
{ "matrix": [3, 8], "x": 8, "y": 3 },
|
||||
{ "matrix": [3, 9], "x": 9, "y": 3 },
|
||||
{ "matrix": [3, 10], "x": 10, "y": 3 },
|
||||
{ "matrix": [3, 11], "x": 11, "y": 3 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -26,8 +26,8 @@ enum layer_names {
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* |RGBTOG|
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* |RGBTOG|
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||
@@ -39,17 +39,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |Adjust| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ONE] = LAYOUT (
|
||||
[_ONE] = LAYOUT_ortho_4x12 (
|
||||
RGB_TOG,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||
@@ -61,17 +61,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_TWO] = LAYOUT (
|
||||
[_TWO] = LAYOUT_ortho_4x12 (
|
||||
KC_MUTE,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
@@ -83,17 +83,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | Mute | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_THREE] = LAYOUT (
|
||||
[_THREE] = LAYOUT_ortho_4x12 (
|
||||
KC_MUTE,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
|
||||
@@ -105,12 +105,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | Mute | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FOUR] = LAYOUT (
|
||||
[_FOUR] = LAYOUT_ortho_4x12 (
|
||||
KC_MUTE,
|
||||
_______, QK_BOOT, DB_TOGG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
|
||||
_______, QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
@@ -32,8 +32,8 @@ enum layer_names {
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* |RGBTOG|
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* |RGBTOG|
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
|
||||
@@ -45,17 +45,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* |Adjust| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ONE] = LAYOUT (
|
||||
[_ONE] = LAYOUT_ortho_4x12 (
|
||||
RGB_TOG,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||
@@ -67,17 +67,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_TWO] = LAYOUT (
|
||||
[_TWO] = LAYOUT_ortho_4x12 (
|
||||
KC_MUTE,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
@@ -89,17 +89,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | Mute | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_THREE] = LAYOUT (
|
||||
[_THREE] = LAYOUT_ortho_4x12 (
|
||||
KC_MUTE,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
|
||||
@@ -111,17 +111,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | Mute | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FOUR] = LAYOUT (
|
||||
[_FOUR] = LAYOUT_ortho_4x12 (
|
||||
KC_MUTE,
|
||||
_______, QK_BOOT, DB_TOGG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
|
||||
_______, QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
@@ -133,17 +133,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FIVE] = LAYOUT (
|
||||
[_FIVE] = LAYOUT_ortho_4x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
@@ -155,17 +155,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_SIX] = LAYOUT (
|
||||
[_SIX] = LAYOUT_ortho_4x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
@@ -177,17 +177,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_SEVEN] = LAYOUT (
|
||||
[_SEVEN] = LAYOUT_ortho_4x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
@@ -199,17 +199,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_EIGHT] = LAYOUT (
|
||||
[_EIGHT] = LAYOUT_ortho_4x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
@@ -221,17 +221,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_NINE] = LAYOUT (
|
||||
[_NINE] = LAYOUT_ortho_4x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
@@ -243,12 +243,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_TEN] = LAYOUT (
|
||||
[_TEN] = LAYOUT_ortho_4x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
4
keyboards/1upkeyboards/pi40/mit_v1_0/config.h
Normal file
4
keyboards/1upkeyboards/pi40/mit_v1_0/config.h
Normal file
@@ -0,0 +1,4 @@
|
||||
// Copyright 2022 ziptyze (@ziptyze)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 47
|
||||
148
keyboards/1upkeyboards/pi40/mit_v1_0/info.json
Normal file
148
keyboards/1upkeyboards/pi40/mit_v1_0/info.json
Normal file
@@ -0,0 +1,148 @@
|
||||
{
|
||||
"keyboard_name": "pi40",
|
||||
"manufacturer": "1upkeyboards",
|
||||
"maintainer": "ziptyze",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"usb": {
|
||||
"vid": "0x6F75",
|
||||
"pid": "0x5600",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 10
|
||||
},
|
||||
"features": {
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"rgb_matrix": true,
|
||||
"rgblight": false
|
||||
},
|
||||
"matrix_pins": {
|
||||
"rows": [ "GP21", "GP20", "GP19", "GP18" ],
|
||||
"cols": [ "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP22" ]
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true,
|
||||
"rotary": [
|
||||
{
|
||||
"pin_a": "GP14",
|
||||
"pin_b": "GP13"
|
||||
}
|
||||
]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "WS2812",
|
||||
"layout": [
|
||||
{ "flags": 1, "matrix": [0, 0], "x": 9, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 28, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 46, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 65, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 84, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 5], "x": 102, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 6], "x": 121, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 7], "x": 140, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 8], "x": 159, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 9], "x": 177, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 10], "x": 196, "y": 8 },
|
||||
{ "flags": 1, "matrix": [0, 11], "x": 215, "y": 8 },
|
||||
{ "flags": 1, "matrix": [1, 11], "x": 215, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 10], "x": 196, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 9], "x": 177, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 8], "x": 159, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 7], "x": 140, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 6], "x": 121, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 5], "x": 102, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 4], "x": 84, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 3], "x": 65, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 2], "x": 46, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 1], "x": 28, "y": 24 },
|
||||
{ "flags": 1, "matrix": [1, 0], "x": 9, "y": 24 },
|
||||
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 1], "x": 28, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 2], "x": 46, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 3], "x": 65, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 4], "x": 84, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 5], "x": 102, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 6], "x": 121, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 7], "x": 140, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 8], "x": 159, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 9], "x": 177, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 10], "x": 196, "y": 40 },
|
||||
{ "flags": 1, "matrix": [2, 11], "x": 215, "y": 40 },
|
||||
{ "flags": 1, "matrix": [3, 11], "x": 215, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 10], "x": 196, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 9], "x": 177, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 8], "x": 159, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 7], "x": 140, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 5], "x": 112, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 4], "x": 84, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 3], "x": 65, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 2], "x": 46, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 1], "x": 28, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 0], "x": 9, "y": 56 }
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x12": {
|
||||
"layout": [
|
||||
{ "matrix": [3, 6], "x": 11, "y": 0 },
|
||||
{ "matrix": [0, 0], "x": 0, "y": 1 },
|
||||
{ "matrix": [0, 1], "x": 1, "y": 1 },
|
||||
{ "matrix": [0, 2], "x": 2, "y": 1 },
|
||||
{ "matrix": [0, 3], "x": 3, "y": 1 },
|
||||
{ "matrix": [0, 4], "x": 4, "y": 1 },
|
||||
{ "matrix": [0, 5], "x": 5, "y": 1 },
|
||||
{ "matrix": [0, 6], "x": 6, "y": 1 },
|
||||
{ "matrix": [0, 7], "x": 7, "y": 1 },
|
||||
{ "matrix": [0, 8], "x": 8, "y": 1 },
|
||||
{ "matrix": [0, 9], "x": 9, "y": 1 },
|
||||
{ "matrix": [0, 10], "x": 10, "y": 1 },
|
||||
{ "matrix": [0, 11], "x": 11, "y": 1 },
|
||||
{ "matrix": [1, 0], "x": 0, "y": 2 },
|
||||
{ "matrix": [1, 1], "x": 1, "y": 2 },
|
||||
{ "matrix": [1, 2], "x": 2, "y": 2 },
|
||||
{ "matrix": [1, 3], "x": 3, "y": 2 },
|
||||
{ "matrix": [1, 4], "x": 4, "y": 2 },
|
||||
{ "matrix": [1, 5], "x": 5, "y": 2 },
|
||||
{ "matrix": [1, 6], "x": 6, "y": 2 },
|
||||
{ "matrix": [1, 7], "x": 7, "y": 2 },
|
||||
{ "matrix": [1, 8], "x": 8, "y": 2 },
|
||||
{ "matrix": [1, 9], "x": 9, "y": 2 },
|
||||
{ "matrix": [1, 10], "x": 10, "y": 2 },
|
||||
{ "matrix": [1, 11], "x": 11, "y": 2 },
|
||||
{ "matrix": [2, 0], "x": 0, "y": 3 },
|
||||
{ "matrix": [2, 1], "x": 1, "y": 3 },
|
||||
{ "matrix": [2, 2], "x": 2, "y": 3 },
|
||||
{ "matrix": [2, 3], "x": 3, "y": 3 },
|
||||
{ "matrix": [2, 4], "x": 4, "y": 3 },
|
||||
{ "matrix": [2, 5], "x": 5, "y": 3 },
|
||||
{ "matrix": [2, 6], "x": 6, "y": 3 },
|
||||
{ "matrix": [2, 7], "x": 7, "y": 3 },
|
||||
{ "matrix": [2, 8], "x": 8, "y": 3 },
|
||||
{ "matrix": [2, 9], "x": 9, "y": 3 },
|
||||
{ "matrix": [2, 10], "x": 10, "y": 3 },
|
||||
{ "matrix": [2, 11], "x": 11, "y": 3 },
|
||||
{ "matrix": [3, 0], "x": 0, "y": 4 },
|
||||
{ "matrix": [3, 1], "x": 1, "y": 4 },
|
||||
{ "matrix": [3, 2], "x": 2, "y": 4 },
|
||||
{ "matrix": [3, 3], "x": 3, "y": 4 },
|
||||
{ "matrix": [3, 4], "x": 4, "y": 4 },
|
||||
{ "matrix": [3, 5], "x": 5, "y": 4 },
|
||||
{ "matrix": [0, 12], "x": 6, "y": 4 },
|
||||
{ "matrix": [3, 7], "x": 7, "y": 4 },
|
||||
{ "matrix": [3, 8], "x": 8, "y": 4 },
|
||||
{ "matrix": [3, 9], "x": 9, "y": 4 },
|
||||
{ "matrix": [3, 10], "x": 10, "y": 4 },
|
||||
{ "matrix": [3, 11], "x": 11, "y": 4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
0
keyboards/1upkeyboards/pi40/mit_v1_0/rules.mk
Normal file
0
keyboards/1upkeyboards/pi40/mit_v1_0/rules.mk
Normal file
4
keyboards/1upkeyboards/pi40/mit_v1_1/config.h
Normal file
4
keyboards/1upkeyboards/pi40/mit_v1_1/config.h
Normal file
@@ -0,0 +1,4 @@
|
||||
// Copyright 2022 ziptyze (@ziptyze)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 47
|
||||
148
keyboards/1upkeyboards/pi40/mit_v1_1/info.json
Normal file
148
keyboards/1upkeyboards/pi40/mit_v1_1/info.json
Normal file
@@ -0,0 +1,148 @@
|
||||
{
|
||||
"keyboard_name": "pi40",
|
||||
"manufacturer": "1upkeyboards",
|
||||
"maintainer": "ziptyze",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"usb": {
|
||||
"vid": "0x6F75",
|
||||
"pid": "0x5600",
|
||||
"device_version": "1.1.0"
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 10
|
||||
},
|
||||
"features": {
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"rgb_matrix": true,
|
||||
"rgblight": false
|
||||
},
|
||||
"matrix_pins": {
|
||||
"rows": [ "GP21", "GP20", "GP19", "GP18" ],
|
||||
"cols": [ "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP22" ]
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true,
|
||||
"rotary": [
|
||||
{
|
||||
"pin_a": "GP14",
|
||||
"pin_b": "GP13"
|
||||
}
|
||||
]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "WS2812",
|
||||
"layout": [
|
||||
{ "flags": 1, "matrix": [0, 0], "x": 9, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 28, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 46, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 65, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 84, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 5], "x": 102, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 6], "x": 121, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 7], "x": 140, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 8], "x": 159, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 9], "x": 177, "y": 8 },
|
||||
{ "flags": 4, "matrix": [0, 10], "x": 196, "y": 8 },
|
||||
{ "flags": 1, "matrix": [0, 11], "x": 215, "y": 8 },
|
||||
{ "flags": 1, "matrix": [1, 11], "x": 215, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 10], "x": 196, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 9], "x": 177, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 8], "x": 159, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 7], "x": 140, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 6], "x": 121, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 5], "x": 102, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 4], "x": 84, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 3], "x": 65, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 2], "x": 46, "y": 24 },
|
||||
{ "flags": 4, "matrix": [1, 1], "x": 28, "y": 24 },
|
||||
{ "flags": 1, "matrix": [1, 0], "x": 9, "y": 24 },
|
||||
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 1], "x": 28, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 2], "x": 46, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 3], "x": 65, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 4], "x": 84, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 5], "x": 102, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 6], "x": 121, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 7], "x": 140, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 8], "x": 159, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 9], "x": 177, "y": 40 },
|
||||
{ "flags": 4, "matrix": [2, 10], "x": 196, "y": 40 },
|
||||
{ "flags": 1, "matrix": [2, 11], "x": 215, "y": 40 },
|
||||
{ "flags": 1, "matrix": [3, 11], "x": 215, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 10], "x": 196, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 9], "x": 177, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 8], "x": 159, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 7], "x": 140, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 5], "x": 112, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 4], "x": 84, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 3], "x": 65, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 2], "x": 46, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 1], "x": 28, "y": 56 },
|
||||
{ "flags": 1, "matrix": [3, 0], "x": 9, "y": 56 }
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x12": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 12], "x": 11, "y": 0 },
|
||||
{ "matrix": [0, 0], "x": 0, "y": 1 },
|
||||
{ "matrix": [0, 1], "x": 1, "y": 1 },
|
||||
{ "matrix": [0, 2], "x": 2, "y": 1 },
|
||||
{ "matrix": [0, 3], "x": 3, "y": 1 },
|
||||
{ "matrix": [0, 4], "x": 4, "y": 1 },
|
||||
{ "matrix": [0, 5], "x": 5, "y": 1 },
|
||||
{ "matrix": [0, 6], "x": 6, "y": 1 },
|
||||
{ "matrix": [0, 7], "x": 7, "y": 1 },
|
||||
{ "matrix": [0, 8], "x": 8, "y": 1 },
|
||||
{ "matrix": [0, 9], "x": 9, "y": 1 },
|
||||
{ "matrix": [0, 10], "x": 10, "y": 1 },
|
||||
{ "matrix": [0, 11], "x": 11, "y": 1 },
|
||||
{ "matrix": [1, 0], "x": 0, "y": 2 },
|
||||
{ "matrix": [1, 1], "x": 1, "y": 2 },
|
||||
{ "matrix": [1, 2], "x": 2, "y": 2 },
|
||||
{ "matrix": [1, 3], "x": 3, "y": 2 },
|
||||
{ "matrix": [1, 4], "x": 4, "y": 2 },
|
||||
{ "matrix": [1, 5], "x": 5, "y": 2 },
|
||||
{ "matrix": [1, 6], "x": 6, "y": 2 },
|
||||
{ "matrix": [1, 7], "x": 7, "y": 2 },
|
||||
{ "matrix": [1, 8], "x": 8, "y": 2 },
|
||||
{ "matrix": [1, 9], "x": 9, "y": 2 },
|
||||
{ "matrix": [1, 10], "x": 10, "y": 2 },
|
||||
{ "matrix": [1, 11], "x": 11, "y": 2 },
|
||||
{ "matrix": [2, 0], "x": 0, "y": 3 },
|
||||
{ "matrix": [2, 1], "x": 1, "y": 3 },
|
||||
{ "matrix": [2, 2], "x": 2, "y": 3 },
|
||||
{ "matrix": [2, 3], "x": 3, "y": 3 },
|
||||
{ "matrix": [2, 4], "x": 4, "y": 3 },
|
||||
{ "matrix": [2, 5], "x": 5, "y": 3 },
|
||||
{ "matrix": [2, 6], "x": 6, "y": 3 },
|
||||
{ "matrix": [2, 7], "x": 7, "y": 3 },
|
||||
{ "matrix": [2, 8], "x": 8, "y": 3 },
|
||||
{ "matrix": [2, 9], "x": 9, "y": 3 },
|
||||
{ "matrix": [2, 10], "x": 10, "y": 3 },
|
||||
{ "matrix": [2, 11], "x": 11, "y": 3 },
|
||||
{ "matrix": [3, 0], "x": 0, "y": 4 },
|
||||
{ "matrix": [3, 1], "x": 1, "y": 4 },
|
||||
{ "matrix": [3, 2], "x": 2, "y": 4 },
|
||||
{ "matrix": [3, 3], "x": 3, "y": 4 },
|
||||
{ "matrix": [3, 4], "x": 4, "y": 4 },
|
||||
{ "matrix": [3, 5], "x": 5, "y": 4 },
|
||||
{ "matrix": [3, 6], "x": 6, "y": 4 },
|
||||
{ "matrix": [3, 7], "x": 7, "y": 4 },
|
||||
{ "matrix": [3, 8], "x": 8, "y": 4 },
|
||||
{ "matrix": [3, 9], "x": 9, "y": 4 },
|
||||
{ "matrix": [3, 10], "x": 10, "y": 4 },
|
||||
{ "matrix": [3, 11], "x": 11, "y": 4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
0
keyboards/1upkeyboards/pi40/mit_v1_1/rules.mk
Normal file
0
keyboards/1upkeyboards/pi40/mit_v1_1/rules.mk
Normal file
@@ -57,28 +57,6 @@ static const char PROGMEM my_logo[] = {
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
led_config_t g_led_config = { {
|
||||
// Key Matrix to LED Index
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
|
||||
{ 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12 },
|
||||
{ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 },
|
||||
{ 46, 45, 44, 43, 42, 41, NO_LED, 40, 39, 38, 37, 36 }
|
||||
}, {
|
||||
// LED Index to Physical Position
|
||||
{ 9, 8 }, { 28, 8 }, { 46, 8 }, { 65, 8 }, { 84, 8 }, { 102, 8 }, { 121, 8 }, { 140, 8 }, { 159, 8 }, { 177, 8 }, { 196, 8 }, { 215, 8 },
|
||||
{ 215, 24 }, { 196, 24 }, { 177, 24 }, { 159, 24 }, { 140, 24 }, { 121, 24 }, { 102, 24 }, { 84, 24 }, { 65, 24 }, { 46, 24 }, { 28, 24 }, { 9, 24 },
|
||||
{ 9, 40 }, { 28, 40 }, { 46, 40 }, { 65, 40 }, { 84, 40 }, { 102, 40 }, { 121, 40 }, { 140, 40 }, { 159, 40 }, { 177, 40 }, { 196, 40 }, { 215, 40 },
|
||||
{ 215, 56 }, { 196, 56 }, { 177, 56 }, { 159, 56 }, { 140, 56 }, { 112, 56 }, { 84, 56 }, { 65, 56 }, { 46, 56 }, { 28, 56 }, { 9, 56 }
|
||||
}, {
|
||||
// LED Index to Flag
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
|
||||
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
} };
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
void init_timer(void){
|
||||
|
||||
@@ -1,21 +1,6 @@
|
||||
# Build Options
|
||||
# change yes to no to disable
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
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
|
||||
NKRO_ENABLE = no # Enable N-Key Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RGB_MATRIX_DRIVER = WS2812
|
||||
|
||||
WS2812_DRIVER = vendor
|
||||
ENCODER_ENABLE = yes
|
||||
|
||||
OLED_ENABLE = yes
|
||||
OLED_DRIVER = SSD1306
|
||||
OLED_DRIVER = SSD1306
|
||||
|
||||
DEFAULT_FOLDER = 1upkeyboards/pi40/mit_v1_0
|
||||
|
||||
71
keyboards/1upkeyboards/pi50/config.h
Normal file
71
keyboards/1upkeyboards/pi50/config.h
Normal file
@@ -0,0 +1,71 @@
|
||||
// Copyright 2023 ziptyze
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define OLED_DISPLAY_128X32
|
||||
#define I2C1_SCL_PIN GP11
|
||||
#define I2C1_SDA_PIN GP10
|
||||
#define I2C_DRIVER I2CD1
|
||||
#define OLED_BRIGHTNESS 128
|
||||
#define OLED_FONT_H "keyboards/1upkeyboards/pi50/lib/glcdfont.c"
|
||||
|
||||
#define RGB_DI_PIN GP0
|
||||
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
|
||||
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
# define RGBLIGHT_LIMIT_VAL 150
|
||||
# define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
|
||||
# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150
|
||||
// RGB Matrix Animation modes. Explicitly enabled
|
||||
// For full list of effects, see:
|
||||
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
|
||||
# define ENABLE_RGB_MATRIX_ALPHAS_MODS
|
||||
# define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
# define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
|
||||
# define ENABLE_RGB_MATRIX_BREATHING
|
||||
# define ENABLE_RGB_MATRIX_BAND_SAT
|
||||
# define ENABLE_RGB_MATRIX_BAND_VAL
|
||||
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||
# define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
||||
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||
# define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_ALL
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
# define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
||||
# define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||
# define ENABLE_RGB_MATRIX_DUAL_BEACON
|
||||
# define ENABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
# define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||
# define ENABLE_RGB_MATRIX_RAINDROPS
|
||||
# define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
# define ENABLE_RGB_MATRIX_HUE_BREATHING
|
||||
# define ENABLE_RGB_MATRIX_HUE_PENDULUM
|
||||
# define ENABLE_RGB_MATRIX_HUE_WAVE
|
||||
# define ENABLE_RGB_MATRIX_PIXEL_RAIN
|
||||
# define ENABLE_RGB_MATRIX_PIXEL_FLOW
|
||||
# define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
||||
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
|
||||
# define ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
# define ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
|
||||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
# define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||
# define ENABLE_RGB_MATRIX_SPLASH
|
||||
# define ENABLE_RGB_MATRIX_MULTISPLASH
|
||||
# define ENABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
# define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
|
||||
/* 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
|
||||
4
keyboards/1upkeyboards/pi50/grid/config.h
Normal file
4
keyboards/1upkeyboards/pi50/grid/config.h
Normal file
@@ -0,0 +1,4 @@
|
||||
// Copyright 2023 ziptyze (@ziptyze)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 60
|
||||
142
keyboards/1upkeyboards/pi50/grid/info.json
Normal file
142
keyboards/1upkeyboards/pi50/grid/info.json
Normal file
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"rgb_matrix": {
|
||||
"layout": [
|
||||
{ "flags": 1, "matrix": [0, 0], "x": 10, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 0], "x": 28, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 46, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 1], "x": 65, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 84, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 2], "x": 102, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 121, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 3], "x": 140, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 159, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 4], "x": 177, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 5], "x": 196, "y": 7 },
|
||||
{ "flags": 1, "matrix": [1, 5], "x": 215, "y": 7 },
|
||||
|
||||
{ "flags": 1, "matrix": [3, 5], "x": 215, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 5], "x": 196, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 4], "x": 177, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 4], "x": 159, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 3], "x": 140, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 3], "x": 121, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 2], "x": 102, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 2], "x": 84, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 1], "x": 65, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 1], "x": 46, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 0], "x": 28, "y": 19 },
|
||||
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 19 },
|
||||
|
||||
{ "flags": 1, "matrix": [4, 0], "x": 9, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 0], "x": 28, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 1], "x": 46, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 1], "x": 65, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 2], "x": 84, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 2], "x": 102, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 3], "x": 121, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 3], "x": 140, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 4], "x": 159, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 4], "x": 177, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 5], "x": 196, "y": 32 },
|
||||
{ "flags": 1, "matrix": [5, 5], "x": 215, "y": 32 },
|
||||
|
||||
{ "flags": 1, "matrix": [7, 5], "x": 215, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 5], "x": 196, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 4], "x": 177, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 4], "x": 159, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 3], "x": 140, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 3], "x": 121, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 2], "x": 102, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 2], "x": 84, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 1], "x": 65, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 1], "x": 46, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 0], "x": 28, "y": 45 },
|
||||
{ "flags": 1, "matrix": [6, 0], "x": 9, "y": 45 },
|
||||
|
||||
{ "flags": 1, "matrix": [8, 0], "x": 9, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 0], "x": 28, "y": 57 },
|
||||
{ "flags": 1, "matrix": [8, 1], "x": 46, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 1], "x": 65, "y": 57 },
|
||||
{ "flags": 1, "matrix": [8, 2], "x": 84, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 2], "x": 102, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 3], "x": 140, "y": 57 },
|
||||
{ "flags": 1, "matrix": [8, 4], "x": 159, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 4], "x": 177, "y": 57 },
|
||||
{ "flags": 1, "matrix": [8, 5], "x": 196, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 5], "x": 215, "y": 57 },
|
||||
{ "flags": 1, "matrix": [8, 3], "x": 121, "y": 57 }
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_5x12": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 6], "x": 11, "y": 0 },
|
||||
|
||||
{ "matrix": [0, 0], "x": 0, "y": 1 },
|
||||
{ "matrix": [1, 0], "x": 1, "y": 1 },
|
||||
{ "matrix": [0, 1], "x": 2, "y": 1 },
|
||||
{ "matrix": [1, 1], "x": 3, "y": 1 },
|
||||
{ "matrix": [0, 2], "x": 4, "y": 1 },
|
||||
{ "matrix": [1, 2], "x": 5, "y": 1 },
|
||||
{ "matrix": [0, 3], "x": 6, "y": 1 },
|
||||
{ "matrix": [1, 3], "x": 7, "y": 1 },
|
||||
{ "matrix": [0, 4], "x": 8, "y": 1 },
|
||||
{ "matrix": [1, 4], "x": 9, "y": 1 },
|
||||
{ "matrix": [0, 5], "x": 10, "y": 1 },
|
||||
{ "matrix": [1, 5], "x": 11, "y": 1 },
|
||||
|
||||
{ "matrix": [2, 0], "x": 0, "y": 2 },
|
||||
{ "matrix": [3, 0], "x": 1, "y": 2 },
|
||||
{ "matrix": [2, 1], "x": 2, "y": 2 },
|
||||
{ "matrix": [3, 1], "x": 3, "y": 2 },
|
||||
{ "matrix": [2, 2], "x": 4, "y": 2 },
|
||||
{ "matrix": [3, 2], "x": 5, "y": 2 },
|
||||
{ "matrix": [2, 3], "x": 6, "y": 2 },
|
||||
{ "matrix": [3, 3], "x": 7, "y": 2 },
|
||||
{ "matrix": [2, 4], "x": 8, "y": 2 },
|
||||
{ "matrix": [3, 4], "x": 9, "y": 2 },
|
||||
{ "matrix": [2, 5], "x": 10, "y": 2 },
|
||||
{ "matrix": [3, 5], "x": 11, "y": 2 },
|
||||
|
||||
{ "matrix": [4, 0], "x": 0, "y": 3 },
|
||||
{ "matrix": [5, 0], "x": 1, "y": 3 },
|
||||
{ "matrix": [4, 1], "x": 2, "y": 3 },
|
||||
{ "matrix": [5, 1], "x": 3, "y": 3 },
|
||||
{ "matrix": [4, 2], "x": 4, "y": 3 },
|
||||
{ "matrix": [5, 2], "x": 5, "y": 3 },
|
||||
{ "matrix": [4, 3], "x": 6, "y": 3 },
|
||||
{ "matrix": [5, 3], "x": 7, "y": 3 },
|
||||
{ "matrix": [4, 4], "x": 8, "y": 3 },
|
||||
{ "matrix": [5, 4], "x": 9, "y": 3 },
|
||||
{ "matrix": [4, 5], "x": 10, "y": 3 },
|
||||
{ "matrix": [5, 5], "x": 11, "y": 3 },
|
||||
|
||||
{ "matrix": [6, 0], "x": 0, "y": 4 },
|
||||
{ "matrix": [7, 0], "x": 1, "y": 4 },
|
||||
{ "matrix": [6, 1], "x": 2, "y": 4 },
|
||||
{ "matrix": [7, 1], "x": 3, "y": 4 },
|
||||
{ "matrix": [6, 2], "x": 4, "y": 4 },
|
||||
{ "matrix": [7, 2], "x": 5, "y": 4 },
|
||||
{ "matrix": [6, 3], "x": 6, "y": 4 },
|
||||
{ "matrix": [7, 3], "x": 7, "y": 4 },
|
||||
{ "matrix": [6, 4], "x": 8, "y": 4 },
|
||||
{ "matrix": [7, 4], "x": 9, "y": 4 },
|
||||
{ "matrix": [6, 5], "x": 10, "y": 4 },
|
||||
{ "matrix": [7, 5], "x": 11, "y": 4 },
|
||||
|
||||
{ "matrix": [8, 0], "x": 0, "y": 5 },
|
||||
{ "matrix": [9, 0], "x": 1, "y": 5 },
|
||||
{ "matrix": [8, 1], "x": 2, "y": 5 },
|
||||
{ "matrix": [9, 1], "x": 3, "y": 5 },
|
||||
{ "matrix": [8, 2], "x": 4, "y": 5 },
|
||||
{ "matrix": [9, 2], "x": 5, "y": 5 },
|
||||
{ "matrix": [8, 3], "x": 6, "y": 5 },
|
||||
{ "matrix": [9, 3], "x": 7, "y": 5 },
|
||||
{ "matrix": [8, 4], "x": 8, "y": 5 },
|
||||
{ "matrix": [9, 4], "x": 9, "y": 5 },
|
||||
{ "matrix": [8, 5], "x": 10, "y": 5 },
|
||||
{ "matrix": [9, 5], "x": 11, "y": 5 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
0
keyboards/1upkeyboards/pi50/grid/rules.mk
Normal file
0
keyboards/1upkeyboards/pi50/grid/rules.mk
Normal file
7
keyboards/1upkeyboards/pi50/halconf.h
Normal file
7
keyboards/1upkeyboards/pi50/halconf.h
Normal file
@@ -0,0 +1,7 @@
|
||||
// Copyright 2023 ziptyze
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
42
keyboards/1upkeyboards/pi50/info.json
Normal file
42
keyboards/1upkeyboards/pi50/info.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"keyboard_name": "pi50",
|
||||
"manufacturer": "1upkeyboards",
|
||||
"maintainer": "ziptyze",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"board": "GENERIC_RP_RP2040",
|
||||
"usb": {
|
||||
"vid": "0x6F75",
|
||||
"pid": "0x5606",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 10
|
||||
},
|
||||
"features": {
|
||||
"audio": false,
|
||||
"backlight": false,
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false,
|
||||
"rgb_matrix": true,
|
||||
"rgblight": false
|
||||
},
|
||||
"matrix_pins": {
|
||||
"rows": ["GP20", "GP15", "GP19", "GP14", "GP18", "GP13", "GP17", "GP12", "GP16", "GP21"],
|
||||
"cols": ["GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP9"]
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true,
|
||||
"rotary": [
|
||||
{"pin_a": "GP8", "pin_b": "GP7"}
|
||||
]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"driver": "WS2812"
|
||||
}
|
||||
}
|
||||
136
keyboards/1upkeyboards/pi50/keymaps/default/keymap.c
Normal file
136
keyboards/1upkeyboards/pi50/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,136 @@
|
||||
/* Copyright 2023 ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_names {
|
||||
_ONE = 0,
|
||||
_TWO,
|
||||
_THREE,
|
||||
_FOUR
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* |RGBTOG|
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ONE] = LAYOUT_ortho_5x12 (
|
||||
RGB_TOG,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_TWO] = LAYOUT_ortho_5x12 (
|
||||
KC_MUTE,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | Pg Up| Pg Dn| |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_THREE] = LAYOUT_ortho_5x12 (
|
||||
KC_MUTE,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | Reset| Debug| | | | | | | | | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | |Aud cy|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FOUR] = LAYOUT_ortho_5x12 (
|
||||
KC_MUTE,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
_______, QK_BOOT, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||
_______, _______, MU_NEXT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
|
||||
_______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[_ONE] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
|
||||
[_TWO] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_THREE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FOUR] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
|
||||
};
|
||||
#endif
|
||||
1
keyboards/1upkeyboards/pi50/keymaps/default/rules.mk
Normal file
1
keyboards/1upkeyboards/pi50/keymaps/default/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
286
keyboards/1upkeyboards/pi50/keymaps/via/keymap.c
Normal file
286
keyboards/1upkeyboards/pi50/keymaps/via/keymap.c
Normal file
@@ -0,0 +1,286 @@
|
||||
/* Copyright 2023 ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_names {
|
||||
_ONE = 0,
|
||||
_TWO,
|
||||
_THREE,
|
||||
_FOUR,
|
||||
_FIVE,
|
||||
_SIX,
|
||||
_SEVEN,
|
||||
_EIGHT,
|
||||
_NINE,
|
||||
_TEN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* |RGBTOG|
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Esc | A | S | D | F | G | H | J | K | L | ; | " |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Adjust| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ONE] = LAYOUT_ortho_5x12 (
|
||||
RGB_TOG,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
|
||||
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | Home | End | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_TWO] = LAYOUT_ortho_5x12 (
|
||||
KC_MUTE,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | Pg Up| Pg Dn| |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_THREE] = LAYOUT_ortho_5x12 (
|
||||
KC_MUTE,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | MUTE |
|
||||
* v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | Reset| Debug| | | | | | | | | Del |
|
||||
* |------+------+------+------+------+-------------+------+------+------+------+------|
|
||||
* | | |Aud cy|Aud on|AudOff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------|
|
||||
* | |Voice-|Voice+|Mus on|MusOff|MidiOn|MidOff| | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FOUR] = LAYOUT_ortho_5x12 (
|
||||
KC_MUTE,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
_______, QK_BOOT, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
||||
_______, _______, MU_NEXT, AU_ON, AU_OFF, AG_NORM, AG_SWAP, _______, _______, _______, _______, _______,
|
||||
_______, AU_PREV, AU_NEXT, MU_ON, MU_OFF, MI_ON, MI_OFF, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FIVE] = LAYOUT_ortho_5x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_SIX] = LAYOUT_ortho_5x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_SEVEN] = LAYOUT_ortho_5x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_EIGHT] = LAYOUT_ortho_5x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_NINE] = LAYOUT_ortho_5x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Placeholder
|
||||
* ╱⎺⎺⎺⎺╲
|
||||
* | |
|
||||
* ╲⎽⎽⎽⎽╱
|
||||
* ,-----------------------------------------------------------------------------------.
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | |
|
||||
* `-----------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_TEN] = LAYOUT_ortho_5x12 (
|
||||
_______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
|
||||
[_ONE] = { ENCODER_CCW_CW(RGB_RMOD, RGB_MOD) },
|
||||
[_TWO] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_THREE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FOUR] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FIVE] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[_SIX] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[_SEVEN] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[_EIGHT] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[_NINE] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[_TEN] = { ENCODER_CCW_CW(_______, _______) },
|
||||
};
|
||||
#endif
|
||||
4
keyboards/1upkeyboards/pi50/keymaps/via/rules.mk
Normal file
4
keyboards/1upkeyboards/pi50/keymaps/via/rules.mk
Normal file
@@ -0,0 +1,4 @@
|
||||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
231
keyboards/1upkeyboards/pi50/lib/glcdfont.c
Normal file
231
keyboards/1upkeyboards/pi50/lib/glcdfont.c
Normal file
@@ -0,0 +1,231 @@
|
||||
// Copyright 2022 @filterpaper
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
#include "progmem.h"
|
||||
|
||||
static const unsigned char PROGMEM font[] = {
|
||||
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,
|
||||
0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
|
||||
0x18, 0x24, 0x24, 0x18, 0x7C, 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, 0x90, 0x90, 0x90, 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, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xE0, 0x18, 0x02,
|
||||
0x00, 0x3C, 0x1E, 0x06, 0x0E, 0x0A,
|
||||
0x1A, 0x0E, 0x26, 0xFF, 0xBF, 0x0D,
|
||||
0x00, 0x80, 0x80, 0x81, 0xFF, 0xFE,
|
||||
0xF8, 0x01, 0x01, 0x03, 0x03, 0x03,
|
||||
0x03, 0x05, 0x05, 0x02, 0x02, 0x0A,
|
||||
0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A,
|
||||
0x0C, 0x04, 0x10, 0x18, 0x20, 0xC0,
|
||||
0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xD0, 0x58, 0x78,
|
||||
0x68, 0x2C, 0x24, 0x34, 0xF4, 0xF4,
|
||||
0x3C, 0x3C, 0xFC, 0xF8, 0xF8, 0x70,
|
||||
0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xC0, 0x7C, 0x07, 0x80, 0xE0,
|
||||
0x60, 0x64, 0xE2, 0x60, 0x10, 0x10,
|
||||
0x20, 0x22, 0x12, 0x17, 0x3F, 0x0B,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x21,
|
||||
0x6F, 0xFC, 0xE0, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
|
||||
0x60, 0x60, 0x70, 0x70, 0xF0, 0xF0,
|
||||
0xD0, 0xD0, 0xD0, 0xD0, 0x50, 0x50,
|
||||
0x50, 0x70, 0x78, 0x78, 0x78, 0x7C,
|
||||
0x7F, 0x7D, 0x7C, 0x5E, 0x4F, 0x44,
|
||||
0x40, 0x40, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x38, 0x30, 0x30, 0x30, 0x30,
|
||||
0x30, 0x30, 0x58, 0x46, 0x47, 0x41,
|
||||
0x41, 0x01, 0x01, 0x03, 0x03, 0x42,
|
||||
0x42, 0x42, 0x46, 0x46, 0x46, 0x46,
|
||||
0x42, 0x43, 0x43, 0x73, 0x77, 0x72,
|
||||
0x70, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x61, 0x67, 0x6F, 0x7E, 0x78,
|
||||
0x78, 0x70, 0x70, 0x70, 0x70, 0x70,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x40, 0x40, 0x40, 0x48, 0x58, 0x58,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
10
keyboards/1upkeyboards/pi50/mcuconf.h
Normal file
10
keyboards/1upkeyboards/pi50/mcuconf.h
Normal file
@@ -0,0 +1,10 @@
|
||||
// Copyright 2023 ziptyze
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#undef RP_I2C_USE_I2C1
|
||||
#define RP_I2C_USE_I2C0 FALSE
|
||||
#define RP_I2C_USE_I2C1 TRUE
|
||||
4
keyboards/1upkeyboards/pi50/mit/config.h
Normal file
4
keyboards/1upkeyboards/pi50/mit/config.h
Normal file
@@ -0,0 +1,4 @@
|
||||
// Copyright 2023 ziptyze (@ziptyze)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#define RGB_MATRIX_LED_COUNT 59
|
||||
141
keyboards/1upkeyboards/pi50/mit/info.json
Normal file
141
keyboards/1upkeyboards/pi50/mit/info.json
Normal file
@@ -0,0 +1,141 @@
|
||||
{
|
||||
"rgb_matrix": {
|
||||
"layout": [
|
||||
{ "flags": 1, "matrix": [0, 0], "x": 10, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 0], "x": 28, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 1], "x": 46, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 1], "x": 65, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 2], "x": 84, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 2], "x": 102, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 3], "x": 121, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 3], "x": 140, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 4], "x": 159, "y": 7 },
|
||||
{ "flags": 4, "matrix": [1, 4], "x": 177, "y": 7 },
|
||||
{ "flags": 4, "matrix": [0, 5], "x": 196, "y": 7 },
|
||||
{ "flags": 1, "matrix": [1, 5], "x": 215, "y": 7 },
|
||||
|
||||
{ "flags": 1, "matrix": [3, 5], "x": 215, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 5], "x": 196, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 4], "x": 177, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 4], "x": 159, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 3], "x": 140, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 3], "x": 121, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 2], "x": 102, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 2], "x": 84, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 1], "x": 65, "y": 19 },
|
||||
{ "flags": 4, "matrix": [2, 1], "x": 46, "y": 19 },
|
||||
{ "flags": 4, "matrix": [3, 0], "x": 28, "y": 19 },
|
||||
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 19 },
|
||||
|
||||
{ "flags": 1, "matrix": [4, 0], "x": 9, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 0], "x": 28, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 1], "x": 46, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 1], "x": 65, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 2], "x": 84, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 2], "x": 102, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 3], "x": 121, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 3], "x": 140, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 4], "x": 159, "y": 32 },
|
||||
{ "flags": 4, "matrix": [5, 4], "x": 177, "y": 32 },
|
||||
{ "flags": 4, "matrix": [4, 5], "x": 196, "y": 32 },
|
||||
{ "flags": 1, "matrix": [5, 5], "x": 215, "y": 32 },
|
||||
|
||||
{ "flags": 1, "matrix": [7, 5], "x": 215, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 5], "x": 196, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 4], "x": 177, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 4], "x": 159, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 3], "x": 140, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 3], "x": 121, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 2], "x": 102, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 2], "x": 84, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 1], "x": 65, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 1], "x": 46, "y": 45 },
|
||||
{ "flags": 4, "matrix": [7, 0], "x": 28, "y": 45 },
|
||||
{ "flags": 4, "matrix": [6, 0], "x": 9, "y": 45 },
|
||||
|
||||
{ "flags": 1, "matrix": [8, 0], "x": 9, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 0], "x": 28, "y": 57 },
|
||||
{ "flags": 1, "matrix": [8, 1], "x": 46, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 1], "x": 65, "y": 57 },
|
||||
{ "flags": 1, "matrix": [8, 2], "x": 84, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 2], "x": 112, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 3], "x": 140, "y": 57 },
|
||||
{ "flags": 1, "matrix": [8, 4], "x": 159, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 4], "x": 177, "y": 57 },
|
||||
{ "flags": 1, "matrix": [8, 5], "x": 196, "y": 57 },
|
||||
{ "flags": 1, "matrix": [9, 5], "x": 215, "y": 57 }
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_5x12": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 6], "x": 11, "y": 0 },
|
||||
|
||||
{ "matrix": [0, 0], "x": 0, "y": 1 },
|
||||
{ "matrix": [1, 0], "x": 1, "y": 1 },
|
||||
{ "matrix": [0, 1], "x": 2, "y": 1 },
|
||||
{ "matrix": [1, 1], "x": 3, "y": 1 },
|
||||
{ "matrix": [0, 2], "x": 4, "y": 1 },
|
||||
{ "matrix": [1, 2], "x": 5, "y": 1 },
|
||||
{ "matrix": [0, 3], "x": 6, "y": 1 },
|
||||
{ "matrix": [1, 3], "x": 7, "y": 1 },
|
||||
{ "matrix": [0, 4], "x": 8, "y": 1 },
|
||||
{ "matrix": [1, 4], "x": 9, "y": 1 },
|
||||
{ "matrix": [0, 5], "x": 10, "y": 1 },
|
||||
{ "matrix": [1, 5], "x": 11, "y": 1 },
|
||||
|
||||
{ "matrix": [2, 0], "x": 0, "y": 2 },
|
||||
{ "matrix": [3, 0], "x": 1, "y": 2 },
|
||||
{ "matrix": [2, 1], "x": 2, "y": 2 },
|
||||
{ "matrix": [3, 1], "x": 3, "y": 2 },
|
||||
{ "matrix": [2, 2], "x": 4, "y": 2 },
|
||||
{ "matrix": [3, 2], "x": 5, "y": 2 },
|
||||
{ "matrix": [2, 3], "x": 6, "y": 2 },
|
||||
{ "matrix": [3, 3], "x": 7, "y": 2 },
|
||||
{ "matrix": [2, 4], "x": 8, "y": 2 },
|
||||
{ "matrix": [3, 4], "x": 9, "y": 2 },
|
||||
{ "matrix": [2, 5], "x": 10, "y": 2 },
|
||||
{ "matrix": [3, 5], "x": 11, "y": 2 },
|
||||
|
||||
{ "matrix": [4, 0], "x": 0, "y": 3 },
|
||||
{ "matrix": [5, 0], "x": 1, "y": 3 },
|
||||
{ "matrix": [4, 1], "x": 2, "y": 3 },
|
||||
{ "matrix": [5, 1], "x": 3, "y": 3 },
|
||||
{ "matrix": [4, 2], "x": 4, "y": 3 },
|
||||
{ "matrix": [5, 2], "x": 5, "y": 3 },
|
||||
{ "matrix": [4, 3], "x": 6, "y": 3 },
|
||||
{ "matrix": [5, 3], "x": 7, "y": 3 },
|
||||
{ "matrix": [4, 4], "x": 8, "y": 3 },
|
||||
{ "matrix": [5, 4], "x": 9, "y": 3 },
|
||||
{ "matrix": [4, 5], "x": 10, "y": 3 },
|
||||
{ "matrix": [5, 5], "x": 11, "y": 3 },
|
||||
|
||||
{ "matrix": [6, 0], "x": 0, "y": 4 },
|
||||
{ "matrix": [7, 0], "x": 1, "y": 4 },
|
||||
{ "matrix": [6, 1], "x": 2, "y": 4 },
|
||||
{ "matrix": [7, 1], "x": 3, "y": 4 },
|
||||
{ "matrix": [6, 2], "x": 4, "y": 4 },
|
||||
{ "matrix": [7, 2], "x": 5, "y": 4 },
|
||||
{ "matrix": [6, 3], "x": 6, "y": 4 },
|
||||
{ "matrix": [7, 3], "x": 7, "y": 4 },
|
||||
{ "matrix": [6, 4], "x": 8, "y": 4 },
|
||||
{ "matrix": [7, 4], "x": 9, "y": 4 },
|
||||
{ "matrix": [6, 5], "x": 10, "y": 4 },
|
||||
{ "matrix": [7, 5], "x": 11, "y": 4 },
|
||||
|
||||
{ "matrix": [8, 0], "x": 0, "y": 5 },
|
||||
{ "matrix": [9, 0], "x": 1, "y": 5 },
|
||||
{ "matrix": [8, 1], "x": 2, "y": 5 },
|
||||
{ "matrix": [9, 1], "x": 3, "y": 5 },
|
||||
{ "matrix": [8, 2], "x": 4, "y": 5 },
|
||||
{ "matrix": [9, 2], "x": 5, "y": 5 },
|
||||
{ "matrix": [8, 3], "x": 6, "y": 5 },
|
||||
{ "matrix": [9, 3], "x": 7, "y": 5 },
|
||||
{ "matrix": [8, 4], "x": 8, "y": 5 },
|
||||
{ "matrix": [9, 4], "x": 9, "y": 5 },
|
||||
{ "matrix": [8, 5], "x": 10, "y": 5 },
|
||||
{ "matrix": [9, 5], "x": 11, "y": 5 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
0
keyboards/1upkeyboards/pi50/mit/rules.mk
Normal file
0
keyboards/1upkeyboards/pi50/mit/rules.mk
Normal file
242
keyboards/1upkeyboards/pi50/pi50.c
Normal file
242
keyboards/1upkeyboards/pi50/pi50.c
Normal file
@@ -0,0 +1,242 @@
|
||||
/* Copyright 2023 ziptyze
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#if defined(RGB_MATRIX_EFFECT)
|
||||
# undef RGB_MATRIX_EFFECT
|
||||
#endif // defined(RGB_MATRIX_EFFECT)
|
||||
|
||||
#define RGB_MATRIX_EFFECT(x) RGB_MATRIX_EFFECT_##x,
|
||||
enum {
|
||||
RGB_MATRIX_EFFECT_NONE,
|
||||
#include "rgb_matrix_effects.inc"
|
||||
#undef RGB_MATRIX_EFFECT
|
||||
#ifdef RGB_MATRIX_CUSTOM_KB
|
||||
# include "rgb_matrix_kb.inc"
|
||||
#endif
|
||||
#ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
#endif
|
||||
};
|
||||
|
||||
#define RGB_MATRIX_EFFECT(x) \
|
||||
case RGB_MATRIX_EFFECT_##x: \
|
||||
return #x;
|
||||
const char* rgb_matrix_name(uint8_t effect) {
|
||||
switch (effect) {
|
||||
case RGB_MATRIX_EFFECT_NONE:
|
||||
return "NONE";
|
||||
#include "rgb_matrix_effects.inc"
|
||||
#undef RGB_MATRIX_EFFECT
|
||||
#ifdef RGB_MATRIX_CUSTOM_KB
|
||||
# include "rgb_matrix_kb.inc"
|
||||
#endif
|
||||
#ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
#endif
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
static uint32_t oled_logo_timer = 0;
|
||||
static bool clear_logo = true;
|
||||
static const char PROGMEM my_logo[] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
|
||||
0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f,
|
||||
0x0f, 0x0f, 0x0f, 0x1f, 0xff, 0xff, 0xff, 0x1f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
|
||||
0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
||||
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0,
|
||||
0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x0f, 0x0f, 0x0f, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xfb,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xff,
|
||||
0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
void init_timer(void){
|
||||
oled_logo_timer = timer_read32();
|
||||
};
|
||||
|
||||
void user_oled_magic(void) {
|
||||
// Host Keyboard Layer Status
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case 0:
|
||||
oled_write_P(PSTR("One\n"), false);
|
||||
break;
|
||||
case 1:
|
||||
oled_write_P(PSTR("Two\n"), false);
|
||||
break;
|
||||
case 2:
|
||||
oled_write_P(PSTR("Three\n"), false);
|
||||
break;
|
||||
case 3:
|
||||
oled_write_P(PSTR("Four\n"), false);
|
||||
break;
|
||||
case 4:
|
||||
oled_write_P(PSTR("Five\n"), false);
|
||||
break;
|
||||
case 5:
|
||||
oled_write_P(PSTR("Six\n"), false);
|
||||
break;
|
||||
case 6:
|
||||
oled_write_P(PSTR("Seven\n"), false);
|
||||
break;
|
||||
case 7:
|
||||
oled_write_P(PSTR("Eight\n"), false);
|
||||
break;
|
||||
case 8:
|
||||
oled_write_P(PSTR("Nine\n"), false);
|
||||
break;
|
||||
case 9:
|
||||
oled_write_P(PSTR("Ten\n"), false);
|
||||
break;
|
||||
default:
|
||||
// Or use the write_ln shortcut over adding '\n' to the end of your string
|
||||
oled_write_ln_P(PSTR("Undefined"), false);
|
||||
}
|
||||
|
||||
// Host Keyboard LED Status
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_write_P(led_state.caps_lock ? PSTR("Cap(x) ") : PSTR("Cap( ) "), false);
|
||||
oled_write_P(led_state.num_lock ? PSTR("Num(x) ") : PSTR("Num( ) "), false);
|
||||
oled_write_P(led_state.scroll_lock ? PSTR("Scrl(x)") : PSTR("Scrl( )"), false);
|
||||
|
||||
char *mode_name = strdup(rgb_matrix_name(rgb_matrix_get_mode()));
|
||||
if (mode_name != NULL) {
|
||||
int len = strlen(mode_name);
|
||||
bool capitalize_next = true;
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (i == 21 && mode_name[i] == '_') {
|
||||
continue; // Skip the underscore if it's the 22nd character
|
||||
}
|
||||
if (mode_name[i] == '_') {
|
||||
mode_name[i] = ' ';
|
||||
capitalize_next = true;
|
||||
} else if (capitalize_next) {
|
||||
mode_name[i] = mode_name[i] >= 'a' && mode_name[i] <= 'z' ? mode_name[i] - 'a' + 'A' : mode_name[i];
|
||||
capitalize_next = false;
|
||||
} else {
|
||||
mode_name[i] = mode_name[i] >= 'A' && mode_name[i] <= 'Z' ? mode_name[i] - 'A' + 'a' : mode_name[i];
|
||||
}
|
||||
}
|
||||
|
||||
// Add line break and spaces if necessary
|
||||
if (len < 19) {
|
||||
strcat(mode_name, "\n");
|
||||
for (int i = 0; i < 21; i++) {
|
||||
strcat(mode_name, " ");
|
||||
}
|
||||
} else {
|
||||
// Find the most recent ' ' before the 21st character and replace it with a line break
|
||||
int break_pos = -1;
|
||||
for (int i = 18; i >= 0; i--) {
|
||||
if (mode_name[i] == ' ') {
|
||||
break_pos = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (break_pos >= 0) {
|
||||
mode_name[break_pos] = '\n';
|
||||
for (int i = 0; i < (21 - (len - break_pos - 1)); i++) {
|
||||
strcat(mode_name, " ");
|
||||
}
|
||||
} else {
|
||||
// No '_' found, just add spaces
|
||||
for (int i = 0; i < (21 - len); i++) {
|
||||
strcat(mode_name, " ");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
oled_write_P(PSTR(mode_name), false);
|
||||
free(mode_name);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
void render_logo(void) {
|
||||
oled_write_raw_P(my_logo, sizeof(my_logo));
|
||||
}
|
||||
|
||||
void clear_screen(void) {
|
||||
if (clear_logo){
|
||||
for (uint8_t i = 0; i < OLED_DISPLAY_HEIGHT; ++i) {
|
||||
for (uint8_t j = 0; j < OLED_DISPLAY_WIDTH; ++j) {
|
||||
oled_write_raw_byte(0x0, i*OLED_DISPLAY_WIDTH + j);
|
||||
}
|
||||
}
|
||||
clear_logo = false;
|
||||
}
|
||||
}
|
||||
|
||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
|
||||
void keyboard_post_init_kb(void) {
|
||||
init_timer();
|
||||
|
||||
keyboard_post_init_user();
|
||||
}
|
||||
|
||||
# define SHOW_LOGO 5000
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) { return false; }
|
||||
if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)){
|
||||
render_logo();
|
||||
}else{
|
||||
clear_screen();
|
||||
user_oled_magic();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user