Compare commits

...

84 Commits

Author SHA1 Message Date
Nick Brassel
88780bf710 Fixup QP font rendering when --no-ascii is specified. (#20637) 2023-05-06 15:53:14 +01:00
DeskDaily
a4be9b0ccb [Keyboard] Navi60 Keymap Edit (#20758)
Co-authored-by: Neil Brian Ramirez <nightlykeyboards@gmail.com>
Co-authored-by: Neil Brian Ramirez <nightlyboards@gmail.com>
2023-05-06 07:46:01 -07:00
ziptyze
7f413e9f01 [Keyboard] Add 1upkeyboards pi50 (#20242)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-05-04 12:29:45 -07:00
IreuN
a4b36f0b4b sofle/via encoder map & doc handedness update (#20630) 2023-05-03 20:07:32 -06:00
Dennis Kruyt
9b41e8168d [Keyboard] add phantagom/baragon marcopad (#20543)
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Tom Barnes <barnestom@me.com>
2023-05-01 20:28:05 -07:00
Dennis Kruyt
e206a1684e [Keyboard] add phantagom/varan rgb numpad (#20587)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-05-01 20:20:02 -07:00
Robert Mills
62a90945c7 [Keymap] Small changes to fix failing karn keyboard build (#20618) 2023-05-01 19:39:30 -07:00
Christopher Hoage
0b62a4ef72 Repair Spleeb i2c config and chrishoage keymap (#20644) 2023-04-30 11:59:45 -07:00
Jesse Estes
c55c7fed83 Adding my keymap (#20345) 2023-04-30 19:01:25 +10:00
Alex Miller
40380c2684 Add additional options for Drag Scroll config (#20523) 2023-04-30 15:28:00 +10:00
Felix Jen
a68b620112 Added Velvet Hotswap and Solder PCBs (#20510) 2023-04-30 12:33:01 +10:00
mechlovin
aa7628641c [Keyboard] Add the Aster Ergo PCB (#20513) 2023-04-30 12:32:08 +10:00
Vertex-kb
ea4136bc2b vertex/angle65 - Implement RGBlight (#20514) 2023-04-30 12:31:22 +10:00
Lui Wolff
cdf640578b [Keymap update] Keymap & docs update (#20298)
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-30 11:59:17 +10:00
Christopher Berner
7138fa4582 Fix MATRIX_HAS_GHOST when MATRIX_COL > 16 (#20093) 2023-04-30 11:56:58 +10:00
Sergey Vlasov
ccb37b155c ez_maker/directpins/promicro: Fix bootloader mismatch (#20627)
Setting the bootloader for something with `promicro` in the name to
`atmel-dfu` was really confusing.
2023-04-29 20:05:24 +01:00
adophoxia
64b84385cd Fix up positioning of keys for Keychron Q10/V10 and Q6/V6 (#20582) 2023-04-27 19:17:21 +01:00
John Stegeman
e90d9fcfff [Keymap] Add johnstegeman iris colemak keymap (#20575) 2023-04-26 14:45:03 -06:00
Alex Paulescu
d61a5f4343 [Keyboard] Add Manibus VIA support (#20497)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-04-25 20:57:36 -07:00
adophoxia
713427c086 Add KBDCraft Adam64 Lego board (#20503)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-23 13:07:35 -06:00
Albert Y
e1afcda1c0 Update code example to match description (#20528) 2023-04-23 12:56:45 -06:00
yiancar
ab4013a69e NK Plus (#20392) 2023-04-21 14:55:54 +01:00
precondition
974c01b4f8 [Docs] Fix suggested code pattern when a specific mod-mask is required. (#20512) 2023-04-20 19:41:53 -06:00
Albert Y
387b64a79b [Docs] Remove combo count from array (#20511) 2023-04-20 08:47:26 -07:00
Sleepdealer
6d8a1aa676 Add QuadrumLabs Delta (#20409) 2023-04-20 07:58:12 +01:00
Nathan Faber
952cdc7be5 Adds Docs option for ArduinoIDE's example ArduinoISP (#20486) 2023-04-19 19:23:50 +01:00
Albert Y
e0a09ff728 GMMK 2 volume up/down Fn keys are backwards in default mapping (#20476) 2023-04-17 13:11:22 +01:00
LawsonStation
990ee8075e Fix typo in feature_wpm.md title (#20464) 2023-04-16 15:14:08 +01:00
Zykrah
697f53a154 [Keyboard] Add Kalakos Bahrnob65 (#20424)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-04-15 23:31:51 -06:00
Joel Challis
cefef18ceb Tidy up stray RGB_DISABLE_TIMEOUT references (#20460) 2023-04-15 23:21:58 -06:00
spbgzh
6e5ff018e3 [Keyboard] Add zoom75 wired (#20396) 2023-04-15 23:14:51 -06:00
Wycer
75b7140cbd [Keyboard] Add dymium65 (#20257)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Wycer <wycers@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: linyer-qwq <990842844@qq.com>
Co-authored-by: Linyer-qwq <32816392+Linyer-qwq@users.noreply.github.com>
2023-04-15 14:36:17 -06:00
Markus Knutsson
28c11ed348 Lotus58 glow (#20386)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
2023-04-15 19:34:09 +01:00
James Young
d732b0b849 ADPenrose Obi Layout Macro Conversion and Addition (#20445)
* add matrix_diagram.md

* info.json: apply friendly formatting

* move matrix data to info.json

* add LAYOUT_625u_space with reference keymap
2023-04-15 10:36:11 -07:00
Albert Y
6d965d486c Add hardware information momokai keyboards (#20434) 2023-04-12 22:04:02 -06:00
James Young
ce417226b2 4pplet/eagle_viper_rep/rev_a Layout Macro Conversion and Additions (#20414)
* info.json: apply friendly formatting

* add matrix_diagram.md

* move matrix data to info.json

* add LAYOUT_60_ansi_split_bs_rshift

* add LAYOUT_60_tsangan_hhkb

* add LAYOUT_60_hhkb
2023-04-12 14:29:29 -07:00
Paulo Pereira
0382a25e35 [Keymap] Add paulomp90 lily58 keymap (#20327)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-12 13:28:26 -06:00
Tommy Oldfield
83dcbefeed [Keymap] Add personal keymap for Lily58 (#18735) 2023-04-12 10:31:47 -07:00
Josh Hinnebusch
18335ddda5 [Keyboard] Fix h87 g2 VID conflict (#20388) 2023-04-12 10:27:37 -07:00
Ryan
051485c579 [Keymap] PHSC138 Keymap for Atom47 (#18768)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-12 08:35:12 -07:00
Jeff Epler
5012dfd719 [Keyboard] add kb2040 flavor of gherkin (#18360) 2023-04-12 08:33:42 -07:00
Less/Rikki
641698d356 [Keyboard] ymdk/id75 (#19967)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-12 08:07:47 -07:00
Mike Killewald
75edefe541 fixing bug that caused KC_DEL and KC_MUTE (encoder press) to be swapped (#20420) 2023-04-12 11:10:50 +01:00
James Young
7e6eba674a 4pplet/bootleg/rev_a Layout Macro Conversion and Addition (#20400)
* info.json: apply friendly formatting

* move matrix data to info.json

* add LAYOUT_60_ansi_split_bs_rshift
2023-04-11 13:26:41 -07:00
James Young
26b35a54cf 4pplet/aekiso60 Layout Macro Conversion and Additions (#20399)
* add matrix_diagram.md

Adds `matrix_diagram.md` to the `4pplet/aekiso60` directory, and removes the diagrams from the keyboard revision header files.

* info.json: apply friendly formatting

* move matrix data to info.json

* create keyboard-level info.json

* add LAYOUT_60_iso_tsangan

* enable Community Layout support
2023-04-11 11:31:56 -07:00
Joel Challis
38700f7e3f Reject info.json at keymap level (#20408) 2023-04-11 02:43:45 +01:00
dependabot[bot]
ed72c423be Bump anothrNick/github-tag-action from 1.61.0 to 1.62.0 (#20407)
Bumps [anothrNick/github-tag-action](https://github.com/anothrNick/github-tag-action) from 1.61.0 to 1.62.0.
- [Release notes](https://github.com/anothrNick/github-tag-action/releases)
- [Commits](https://github.com/anothrNick/github-tag-action/compare/1.61.0...1.62.0)

---
updated-dependencies:
- dependency-name: anothrNick/github-tag-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-10 23:49:53 +01:00
Vertex-kb
bc6db2823c [Keyboard] Update angle65 VID/PID (#20401) 2023-04-10 13:32:16 -06:00
Nick Brassel
fb706f42a2 Run CI builds for each push, limit queued workflow depth to 1. (#20362) 2023-04-09 22:38:09 +01:00
Ryan
9132c64389 Add numpad 0-9 to second layer, update keycodes for QMK 0.17.5, fix layout (#20375) 2023-04-09 22:32:40 +01:00
Dasky
6e0acf0548 Add autocomplete to generate-compilation-database (#20387) 2023-04-09 17:41:30 +01:00
Drashna Jaelre
2c375e6478 [Keyboard] Add audio support to Adafruit MacroPad RP2040 (#20353) 2023-04-08 10:59:13 +10:00
Duncan Sutherland
a5e68e5f74 Convertors documentation: Removed duplicate table entry (#20360) 2023-04-07 23:11:56 +01:00
Joel Challis
e9b36bebb2 Avoid generating empty ENCODER_RESOLUTION (#20179) 2023-04-07 14:07:59 +01:00
Nick Brassel
df7b56e0ea Fixup CI build variables. (#20357) 2023-04-07 18:38:16 +10:00
Nick Brassel
2e766a9c7a Add Discord webhook at end of each CI run. (#20355) 2023-04-07 16:37:06 +10:00
Albert Y
4ba3fdfad2 Move a_dux to data-driven (#20043) 2023-04-06 22:27:51 -06:00
lalalademaxiya1
655c24d29d [Keyboard] Add Keychron Q11 (#20125)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-04-06 11:02:24 -07:00
dependabot[bot]
eab2b8faa0 Bump peter-evans/create-pull-request from 4 to 5 (#20346)
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-05 23:34:35 +01:00
Luis Garcia
d058091d0b Add peterfalken userspace & keymaps (#19897)
Co-authored-by: Peter.Falken <luis.garcia@bitjester.com>
2023-04-05 12:35:34 -06:00
Álvaro A. Volpato
596319c92f Add Iron160 I160-S and I160-H PCBs support (#20077)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-05 12:28:27 -06:00
DeskDaily
4d17fe2a99 [Keyboard] Add lxxt (#19935)
Co-authored-by: Neil Brian Ramirez <nightlykeyboards@gmail.com>
Co-authored-by: Neil Brian Ramirez <nightlyboards@gmail.com>
2023-04-05 12:25:21 -06:00
Dane Skalski
1d045e854b Add Junco Keyboard (#19516) 2023-04-05 18:06:24 +10:00
Alex Miller
f7176f070f [Keyboard] Add Budgy and Crowboard Keyboards (#19141)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-04 14:36:23 -07:00
Nick Brassel
687883cf7d Resolve keyboard names for qmk mass-compile. (#20335) 2023-04-04 15:09:55 +10:00
Albert Y
f56cf93fa1 Add debounce time description (#20333) 2023-04-04 12:15:00 +10:00
Alex Paulescu
1fd30b3391 Manibus keyboard, update pinout (#20309) 2023-04-04 09:13:42 +10:00
Albert Y
37f205ec1a Use table for debounce algorithm description (#20322) 2023-04-04 09:06:33 +10:00
blindassassin111
26e0bfd494 [keyboard] Adding OSAv2 numpad (#20209)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-04 09:05:13 +10:00
Andrew Kannan
a434507ab4 Add Ripple TKL Keyboard firmware (#20301) 2023-04-04 08:56:12 +10:00
Andrew Kannan
ee8c86702e Add Ripple TKL Hotswap Firmware (#20302)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-04-04 08:55:38 +10:00
Cameron Larsen
246cf99b4b Personal keymaps for crkbd and kyria (#20009) 2023-04-04 08:43:12 +10:00
Anjheos
eb52984a94 Adding Oceanographer to QMK. (#20324) 2023-04-03 21:18:08 +01:00
Danny
a5272a1575 Modify default encoder mappings, change PID, enable mousekeys (#20329) 2023-04-03 19:49:21 +01:00
Ryan
d06ce0153b PR checklist: keyboard updates must go to develop (#20323) 2023-04-03 16:34:03 +10:00
Purdea Andrei
c58610bea3 Data-driven updates to overnumpad controller keyboards (#20259) 2023-04-03 15:45:46 +10:00
Julius Degesys
12de0297ed Suggest qmk list-keyboards when testing build environment (#19471)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-04-03 15:42:14 +10:00
Lisa Ugray
4992df56b8 Add an alternate layout definition for Keyboardio Model 01 (#20245) 2023-04-03 15:39:52 +10:00
studiokestra
f3f0bf6dbe Refactor Galatea (#20011) 2023-04-03 15:37:43 +10:00
4pplet
8a5e8ed88e Adding Unextended Standard PCB (#20190)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: 4pplet <4pplet@protonmail.com>
Co-authored-by: 4pplet <stefan.ess@gmail.com>
2023-04-03 15:24:49 +10:00
3araht
fb6557acf1 New layer added to giabalanai keyboard (#20118) 2023-04-03 15:12:11 +10:00
Sergey Vlasov
2d7240f730 onekey: Fix console output on AVR (#19930) 2023-04-03 14:28:12 +10:00
Wilba
1d1c407e4e Update WT60-H1, WT60-H3 layouts (#20114) 2023-04-03 13:09:15 +10:00
Torsten Schneider
9152928f02 Adding my keymap (#19964) 2023-04-03 13:05:48 +10:00
463 changed files with 32700 additions and 3182 deletions

View File

@@ -31,7 +31,7 @@ jobs:
fetch-depth: 0
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.61.0
uses: anothrNick/github-tag-action@1.62.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'

View File

@@ -4,22 +4,27 @@ permissions:
contents: read
on:
push:
branches: [master, develop]
workflow_dispatch:
schedule:
- cron: '0 0,12 * * *'
inputs:
branch:
type: choice
description: 'Branch to build'
options: [master, develop]
concurrency: ci_build-${{ github.event.inputs.branch || github.ref_name }}
jobs:
ci_builds:
if: github.repository == 'qmk/qmk_firmware'
name: "CI Build"
runs-on: self-hosted
timeout-minutes: 1380
if: github.repository == 'qmk/qmk_firmware'
strategy:
fail-fast: false
matrix:
branch: [master, develop]
keymap: [default, via]
container: qmkfm/qmk_cli
@@ -31,7 +36,7 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: recursive
ref: ${{ matrix.branch }}
ref: ${{ github.event.inputs.branch || github.ref }}
- name: Install dependencies
run: pip3 install -r requirements.txt
@@ -51,10 +56,19 @@ jobs:
uses: actions/upload-artifact@v3
if: always()
with:
name: artifacts-${{ matrix.branch }}-${{ matrix.keymap }}
name: artifacts-${{ github.event.inputs.branch || github.ref_name }}-${{ matrix.keymap }}
if-no-files-found: ignore
path: |
*.bin
*.hex
*.uf2
.build/failed.*
- name: 'CI Discord Notification'
if: always()
working-directory: util/ci/
env:
DISCORD_WEBHOOK: ${{ secrets.CI_DISCORD_WEBHOOK }}
run: |
python3 -m pip install -r requirements.txt
python3 ./discord-results.py --branch ${{ github.event.inputs.branch || github.ref_name }} --keymap ${{ matrix.keymap }} --url ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}

View File

@@ -47,7 +47,7 @@ jobs:
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}

View File

@@ -34,7 +34,7 @@ jobs:
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
uses: peter-evans/create-pull-request@v5
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}

3
.gitignore vendored
View File

@@ -30,6 +30,9 @@ quantum/version.h
*.qmk
*.uf2
# DD config at wrong location
/keyboards/**/keymaps/*/info.json
# Old-style QMK Makefiles
/keyboards/**/Makefile

View File

@@ -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.
@@ -184,4 +184,4 @@ This page used to encompass a large set of features. We have moved many sections
## Key Overrides :id=key-overrides
* [Key Overrides](feature_key_overrides.md)
* [Key Overrides](feature_key_overrides.md)

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -172,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:
```

View File

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

View 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

View File

@@ -0,0 +1,4 @@
// Copyright 2023 ziptyze (@ziptyze)
// SPDX-License-Identifier: GPL-2.0-or-later
#define RGB_MATRIX_LED_COUNT 60

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

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

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

View 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

View File

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

View 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

View File

@@ -0,0 +1,4 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
ENCODER_MAP_ENABLE = yes

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

View 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

View File

@@ -0,0 +1,4 @@
// Copyright 2023 ziptyze (@ziptyze)
// SPDX-License-Identifier: GPL-2.0-or-later
#define RGB_MATRIX_LED_COUNT 59

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

View File

View 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

View File

@@ -0,0 +1,36 @@
# pi50
The pi40 is a 5x12 ortholinear keyboard with options for a 1u or 2u spacebar using a Raspberry Pi Pico for the controller.
It includes options for a rotary encoder, SSD1306 oled, and per-key in-switch RGB LEDs.
All unused GPIO pins are broken out on the main pcb, as well as the available voltage pins.
This firmware also includes the option for VIA which includes configuration options for the rotary encoder, matrix lighting, and up to 10 layers.
Default oled configuration displays:
- current layer
- caps lock status
- num lock status
- scroll lock status
- current RGB lighting mode
* Keyboard Maintainer: [ziptyze](https://github.com/ziptyze)
* Hardware Availability: (https://1upkeyboards.com/shop/keyboard-kits/diy-40-kits/pi50-keyboard-kit/#pcb-color)
Make example for this keyboard (after setting up your build environment):
make 1upkeyboards/pi50:default
Flashing example for this keyboard:
make 1upkeyboards/pi50:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 2 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix, the top left key, and plug in the keyboard
* **BOOTSEL button**: Hold down the BOOTSEL button on the pico, and plug in the keyboard

View File

@@ -0,0 +1,5 @@
WS2812_DRIVER = vendor
OLED_ENABLE = yes
DEFAULT_FOLDER = 1upkeyboards/pi50/grid

View File

@@ -0,0 +1,22 @@
# Gherkin
![Gherkin](https://i.imgur.com/XrqqtTq.jpg)
![KB2040](https://cdn-shop.adafruit.com/640x480/5302-12.jpg)
===
A 30 key keyboard with Adafruit's KB2040 as microcontroller.
* [The original TMK firmware](https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/gherkin)
Keyboard Maintainer: QMK Community
Hardware Supported: Gherkin PCB & Adafruit KB2040
Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.club/2016/11/gherkin.html) and [Adafruit KB2040](https://www.adafruit.com/product/5302)
Make example for this keyboard (after setting up your build environment):
make 40percentclub/gherkin/kb2040:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
Use the KB2040 microcontroller as a drop-in replacement for the Pro Micro in this cute 30% keyboard.

View File

@@ -0,0 +1 @@
CONVERT_TO = kb2040

View File

@@ -1,6 +1,6 @@
# Gherkin
![Gherkin](https://4.bp.blogspot.com/-sQ18-lNZXOc/WCzlTde-4PI/AAAAAAAB_JQ/qQrehAMG6DMKf3i4oj4mkmLGOfTUvb3KgCLcB/s640/IMG_20161116_122926.jpg)
![Gherkin](https://i.imgur.com/XrqqtTq.jpg)
===
A 30 key keyboard.

View File

@@ -0,0 +1,155 @@
{
"manufacturer": "4pplet",
"url": "",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444"
},
"community_layouts": [
"60_iso_tsangan"
],
"layouts": {
"LAYOUT_all": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0, "w": 1.25},
{"label": "1", "matrix": [0, 1], "x": 1.25, "y": 0},
{"label": "2", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "3", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "4", "matrix": [0, 4], "x": 4.25, "y": 0},
{"label": "5", "matrix": [0, 5], "x": 5.25, "y": 0},
{"label": "6", "matrix": [0, 6], "x": 6.25, "y": 0},
{"label": "7", "matrix": [0, 7], "x": 7.25, "y": 0},
{"label": "8", "matrix": [0, 8], "x": 8.25, "y": 0},
{"label": "9", "matrix": [0, 9], "x": 9.25, "y": 0},
{"label": "0", "matrix": [0, 10], "x": 10.25, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11.25, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12.25, "y": 0},
{"label": "Backspace", "matrix": [0, 13], "x": 13.25, "y": 0, "w": 1.75},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.75},
{"label": "Q", "matrix": [1, 1], "x": 1.75, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.75, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.75, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.75, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.75, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.75, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.75, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.75, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.75, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.75, "y": 1},
{"label": "[", "matrix": [1, 11], "x": 11.75, "y": 1},
{"label": "]", "matrix": [1, 12], "x": 12.75, "y": 1},
{"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 2},
{"label": "A", "matrix": [2, 1], "x": 2, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 3, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 4, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 5, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 6, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 7, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 8, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 9, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 10, "y": 2},
{"label": ";", "matrix": [2, 10], "x": 11, "y": 2},
{"label": "'", "matrix": [2, 11], "x": 12, "y": 2},
{"label": "#", "matrix": [2, 12], "x": 13, "y": 2},
{"label": "Enter", "matrix": [1, 13], "x": 14, "y": 1, "h": 2},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.5},
{"label": "\\", "matrix": [3, 1], "x": 1.5, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.5, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.5, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.5, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.5, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.5, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.5, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.5, "y": 3},
{"label": ",", "matrix": [3, 9], "x": 9.5, "y": 3},
{"label": ".", "matrix": [3, 10], "x": 10.5, "y": 3},
{"label": "/", "matrix": [3, 11], "x": 11.5, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.5, "y": 3, "w": 1.5},
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [4, 3], "x": 2.75, "y": 4, "w": 1.5},
{"label": "\u25bd", "matrix": [4, 4], "x": 4.25, "y": 4, "w": 2.75},
{"label": "Space", "matrix": [4, 5], "x": 7, "y": 4},
{"label": "\u25bd", "matrix": [4, 6], "x": 8, "y": 4, "w": 2.75},
{"label": "Alt", "matrix": [4, 8], "x": 10.75, "y": 4, "w": 1.5},
{"label": "GUI", "matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [4, 11], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_iso_tsangan": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0, "w": 1.25},
{"label": "1", "matrix": [0, 1], "x": 1.25, "y": 0},
{"label": "2", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label": "3", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label": "4", "matrix": [0, 4], "x": 4.25, "y": 0},
{"label": "5", "matrix": [0, 5], "x": 5.25, "y": 0},
{"label": "6", "matrix": [0, 6], "x": 6.25, "y": 0},
{"label": "7", "matrix": [0, 7], "x": 7.25, "y": 0},
{"label": "8", "matrix": [0, 8], "x": 8.25, "y": 0},
{"label": "9", "matrix": [0, 9], "x": 9.25, "y": 0},
{"label": "0", "matrix": [0, 10], "x": 10.25, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11.25, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12.25, "y": 0},
{"label": "Backspace", "matrix": [0, 13], "x": 13.25, "y": 0, "w": 1.75},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.75},
{"label": "Q", "matrix": [1, 1], "x": 1.75, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.75, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.75, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.75, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.75, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.75, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.75, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.75, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.75, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.75, "y": 1},
{"label": "[", "matrix": [1, 11], "x": 11.75, "y": 1},
{"label": "]", "matrix": [1, 12], "x": 12.75, "y": 1},
{"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 2},
{"label": "A", "matrix": [2, 1], "x": 2, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 3, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 4, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 5, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 6, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 7, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 8, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 9, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 10, "y": 2},
{"label": ";", "matrix": [2, 10], "x": 11, "y": 2},
{"label": "'", "matrix": [2, 11], "x": 12, "y": 2},
{"label": "#", "matrix": [2, 12], "x": 13, "y": 2},
{"label": "Enter", "matrix": [1, 13], "x": 14, "y": 1, "h": 2},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.5},
{"label": "\\", "matrix": [3, 1], "x": 1.5, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.5, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.5, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.5, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.5, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.5, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.5, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.5, "y": 3},
{"label": ",", "matrix": [3, 9], "x": 9.5, "y": 3},
{"label": ".", "matrix": [3, 10], "x": 10.5, "y": 3},
{"label": "/", "matrix": [3, 11], "x": 11.5, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.5, "y": 3, "w": 2.5},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "GUI", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [4, 3], "x": 2.75, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 5], "x": 4.25, "y": 4, "w": 6.5},
{"label": "Alt", "matrix": [4, 8], "x": 10.75, "y": 4, "w": 1.5},
{"label": "GUI", "matrix": [4, 10], "x": 12.25, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [4, 11], "x": 13.5, "y": 4, "w": 1.5}
]
}
}
}

View File

@@ -0,0 +1,33 @@
# Matrix Diagram for 4pplet AEKISO60 (Revs. A and B)
```
┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │
├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │
│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │
├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤ ┌─────────┐
│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │ │3c │ 2.75u RShift
├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤ └─────────┘
│40 │41 │43 │44 │45 │46 │48 │4a │4b │
└─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘
┌─────┬────┬─────┬─────────────────────────┬─────┬────┬─────┐ ─┐
│40 │41 │43 │45 │48 │4a │4b │ ├─ Tsangan
└─────┴────┴─────┴─────────────────────────┴─────┴────┴─────┘ │
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐ │
│40 │41 │43 │45 │48 │4a │4b │ │
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘ ─┘
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
│40 │ │43 │45 │48 │ │4b │ WKL
└─────┘ └─────┴───────────────────────────┴─────┘ └─────┘
┌─────┬────┬─────┬─────────┬─────┬─────────┬─────┬────┬─────┐ ─┐
│40 │41 │43 │44 │45 │46 │48 │4a │4b │ ├─ same matrix as LAYOUT_all
└─────┴────┴─────┴─────────┴─────┴─────────┴─────┴────┴─────┘ │
┌─────┬────┬─────┬────────┬─────┬──────────┬─────┬────┬─────┐ │
│40 │41 │43 │44 │45 │46 │48 │4a │4b │ │
└─────┴────┴─────┴────────┴─────┴──────────┴─────┴────┴─────┘ │
┌─────┬────┬─────┬─────────┬────┬──────────┬─────┬────┬─────┐ │
│40 │41 │43 │44 │45 │46 │48 │4a │4b │ │
└─────┴────┴─────┴─────────┴────┴──────────┴─────┴────┴─────┘ ─┘
```

View File

@@ -1,10 +1,6 @@
{
"keyboard_name": "AEKISO60 Rev A",
"manufacturer": "4pplet",
"url": "",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444",
"pid": "0x0001",
"device_version": "0.0.1"
},
@@ -13,79 +9,5 @@
"esc_output": "C4"
},
"processor": "atmega32u2",
"bootloader": "atmel-dfu",
"layouts": {
"LAYOUT_all": {
"layout": [
{"x":0, "y":0, "w":1.25},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.25, "y":0},
{"x":6.25, "y":0},
{"x":7.25, "y":0},
{"x":8.25, "y":0},
{"x":9.25, "y":0},
{"x":10.25, "y":0},
{"x":11.25, "y":0},
{"x":12.25, "y":0},
{"x":13.25, "y":0, "w":1.75},
{"x":0, "y":1, "w":1.75},
{"x":1.75, "y":1},
{"x":2.75, "y":1},
{"x":3.75, "y":1},
{"x":4.75, "y":1},
{"x":5.75, "y":1},
{"x":6.75, "y":1},
{"x":7.75, "y":1},
{"x":8.75, "y":1},
{"x":9.75, "y":1},
{"x":10.75, "y":1},
{"x":11.75, "y":1},
{"x":12.75, "y":1},
{"x":0, "y":2, "w":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":10, "y":2},
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
{"x":14, "y":1, "h":2},
{"x":0, "y":3, "w":1.5},
{"x":1.5, "y":3},
{"x":2.5, "y":3},
{"x":3.5, "y":3},
{"x":4.5, "y":3},
{"x":5.5, "y":3},
{"x":6.5, "y":3},
{"x":7.5, "y":3},
{"x":8.5, "y":3},
{"x":9.5, "y":3},
{"x":10.5, "y":3},
{"x":11.5, "y":3},
{"x":12.5, "y":3, "w":1.5},
{"x":14, "y":3},
{"x":0, "y":4, "w":1.5},
{"x":1.5, "y":4, "w":1.25},
{"x":2.75, "y":4, "w":1.5},
{"x":4.25, "y":4, "w":2.75},
{"x":7, "y":4},
{"x":8, "y":4, "w":2.75},
{"x":10.75, "y":4, "w":1.5},
{"x":12.25, "y":4, "w":1.25},
{"x":13.5, "y":4, "w":1.5}
]
}
}
"bootloader": "atmel-dfu"
}

View File

@@ -1 +0,0 @@
#include "rev_a.h"

View File

@@ -1,31 +0,0 @@
#pragma once
#include "quantum.h"
/* LAYOUT_all
* ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
* ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
* │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │
* ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │
* │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │
* ├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
* │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │
* ├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤
* │40 │41 │43 │44 │45 │46 │48 │4a │4b │
* └─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘
*/
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1d, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
k40, k41, k43, k44, k45, k46, k48, k4a, k4b \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
{k40, k41, KC_NO, k43, k44, k45, k46, KC_NO, k48, KC_NO, k4a, k4b, KC_NO, KC_NO} \
}

View File

@@ -1,10 +1,6 @@
{
"keyboard_name": "AEKISO60 Rev B",
"manufacturer": "4pplet",
"url": "",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444",
"pid": "0x0011",
"device_version": "0.0.2"
},
@@ -12,79 +8,5 @@
"caps_lock": "A10"
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_all": {
"layout": [
{"x":0, "y":0, "w":1.25},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0},
{"x":5.25, "y":0},
{"x":6.25, "y":0},
{"x":7.25, "y":0},
{"x":8.25, "y":0},
{"x":9.25, "y":0},
{"x":10.25, "y":0},
{"x":11.25, "y":0},
{"x":12.25, "y":0},
{"x":13.25, "y":0, "w":1.75},
{"x":0, "y":1, "w":1.75},
{"x":1.75, "y":1},
{"x":2.75, "y":1},
{"x":3.75, "y":1},
{"x":4.75, "y":1},
{"x":5.75, "y":1},
{"x":6.75, "y":1},
{"x":7.75, "y":1},
{"x":8.75, "y":1},
{"x":9.75, "y":1},
{"x":10.75, "y":1},
{"x":11.75, "y":1},
{"x":12.75, "y":1},
{"x":0, "y":2, "w":2},
{"x":2, "y":2},
{"x":3, "y":2},
{"x":4, "y":2},
{"x":5, "y":2},
{"x":6, "y":2},
{"x":7, "y":2},
{"x":8, "y":2},
{"x":9, "y":2},
{"x":10, "y":2},
{"x":11, "y":2},
{"x":12, "y":2},
{"x":13, "y":2},
{"x":14, "y":1, "h":2},
{"x":0, "y":3, "w":1.5},
{"x":1.5, "y":3},
{"x":2.5, "y":3},
{"x":3.5, "y":3},
{"x":4.5, "y":3},
{"x":5.5, "y":3},
{"x":6.5, "y":3},
{"x":7.5, "y":3},
{"x":8.5, "y":3},
{"x":9.5, "y":3},
{"x":10.5, "y":3},
{"x":11.5, "y":3},
{"x":12.5, "y":3, "w":1.5},
{"x":14, "y":3},
{"x":0, "y":4, "w":1.5},
{"x":1.5, "y":4, "w":1.25},
{"x":2.75, "y":4, "w":1.5},
{"x":4.25, "y":4, "w":2.75},
{"x":7, "y":4},
{"x":8, "y":4, "w":2.75},
{"x":10.75, "y":4, "w":1.5},
{"x":12.25, "y":4, "w":1.25},
{"x":13.5, "y":4, "w":1.5}
]
}
}
"bootloader": "stm32-dfu"
}

View File

@@ -1,48 +0,0 @@
/*
Copyright 2022 Stefan Sundin "4pplet" <4pplet@protonmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
/* LAYOUT_all
* ┌────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
* │00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0a │0b │0c │0d │
* ├────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
* │10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1a │1b │1c │ │
* ├──────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐1d │
* │20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2a │2b │2c │ │
* ├─────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┼───┤
* │30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3a │3b │3c │3d │
* ├─────┼───┴┬──┴──┬┴───┴───┴─┬─┴─┬─┴───┴───┴┬──┴──┬┴───┬─┴───┤
* │40 │41 │43 │44 │45 │46 │48 │4a │4b │
* └─────┴────┴─────┴──────────┴───┴──────────┴─────┴────┴─────┘
*/
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k1d, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d, \
k40, k41, k43, k44, k45, k46, k48, k4a, k4b \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d}, \
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d}, \
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, KC_NO},\
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k3d}, \
{k40, k41, KC_NO, k43, k44, k45, k46, KC_NO, k48, KC_NO, k4a, k4b, KC_NO, KC_NO} \
}

View File

@@ -17,72 +17,148 @@
"layouts": {
"LAYOUT_all": {
"layout": [
{ "label": "Esc", "x": 0, "y": 0 },
{ "label": "!", "x": 1, "y": 0 },
{ "label": "@", "x": 2, "y": 0 },
{ "label": "#", "x": 3, "y": 0 },
{ "label": "$", "x": 4, "y": 0 },
{ "label": "%", "x": 5, "y": 0 },
{ "label": "^", "x": 6, "y": 0 },
{ "label": "&", "x": 7, "y": 0 },
{ "label": "*", "x": 8, "y": 0 },
{ "label": "(", "x": 9, "y": 0 },
{ "label": ")", "x": 10, "y": 0 },
{ "label": "_", "x": 11, "y": 0 },
{ "label": "+", "x": 12, "y": 0 },
{ "label": "|", "x": 13, "y": 0 },
{ "label": "~", "x": 14, "y": 0 },
{ "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
{ "label": "Q", "x": 1.5, "y": 1 },
{ "label": "W", "x": 2.5, "y": 1 },
{ "label": "E", "x": 3.5, "y": 1 },
{ "label": "R", "x": 4.5, "y": 1 },
{ "label": "T", "x": 5.5, "y": 1 },
{ "label": "Y", "x": 6.5, "y": 1 },
{ "label": "U", "x": 7.5, "y": 1 },
{ "label": "I", "x": 8.5, "y": 1 },
{ "label": "O", "x": 9.5, "y": 1 },
{ "label": "P", "x": 10.5, "y": 1 },
{ "label": "{", "x": 11.5, "y": 1 },
{ "label": "}", "x": 12.5, "y": 1 },
{ "label": "Backsp.", "x": 13.5, "y": 1, "w": 1.5 },
{ "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
{ "label": "A", "x": 1.75, "y": 2 },
{ "label": "S", "x": 2.75, "y": 2 },
{ "label": "D", "x": 3.75, "y": 2 },
{ "label": "F", "x": 4.75, "y": 2 },
{ "label": "G", "x": 5.75, "y": 2 },
{ "label": "H", "x": 6.75, "y": 2 },
{ "label": "J", "x": 7.75, "y": 2 },
{ "label": "K", "x": 8.75, "y": 2 },
{ "label": "L", "x": 9.75, "y": 2 },
{ "label": ":", "x": 10.75, "y": 2 },
{ "label": "\"", "x": 11.75, "y": 2 },
{ "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 },
{ "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
{ "label": "|", "x": 1.25, "y": 3 },
{ "label": "Z", "x": 2.25, "y": 3 },
{ "label": "X", "x": 3.25, "y": 3 },
{ "label": "C", "x": 4.25, "y": 3 },
{ "label": "V", "x": 5.25, "y": 3 },
{ "label": "B", "x": 6.25, "y": 3 },
{ "label": "N", "x": 7.25, "y": 3 },
{ "label": "M", "x": 8.25, "y": 3 },
{ "label": "<", "x": 9.25, "y": 3 },
{ "label": ">", "x": 10.25, "y": 3 },
{ "label": "?", "x": 11.25, "y": 3 },
{ "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
{ "label": "Fn", "x": 14, "y": 3, "w": 1 },
{ "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
{ "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
{ "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
{ "label": "Space1", "x": 3.75, "y": 4, "w": 2.25 },
{ "label": "Space2", "x": 6, "y": 4, "w": 1.25 },
{ "label": "Space3", "x": 7.25, "y": 4, "w": 2.75 },
{ "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
{ "label": "Menu", "x": 11.25, "y": 4, "w": 1.25 },
{ "label": "Win", "x": 12.5, "y": 4, "w": 1.25 },
{ "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 }
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "~", "matrix": [0, 14], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "|", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space1", "matrix": [4, 3], "x": 3.75, "y": 4, "w": 2.25},
{"label": "Space2", "matrix": [4, 4], "x": 6, "y": 4, "w": 1.25},
{"label": "Space3", "matrix": [4, 5], "x": 7.25, "y": 4, "w": 2.75},
{"label": "Alt", "matrix": [4, 6], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [4, 7], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [4, 8], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [4, 9], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "~", "matrix": [0, 14], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space2", "matrix": [4, 4], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Alt", "matrix": [4, 6], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [4, 7], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [4, 8], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [4, 9], "x": 13.75, "y": 4, "w": 1.25}
]
}
}

View File

@@ -1,34 +0,0 @@
/*
Copyright 2020 Stefan Sundin "4pplet" <4pplet@protonmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_all( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1e, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e, \
k40, k41, k43, k45, k47, k48, k4a, k4b, k4d, k4e \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, k0d, k0e}, \
{k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1d, k1e}, \
{k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2d}, \
{k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3d, k3e}, \
{k40, k41, k43, k45, k47, k48, k4a, k4b, k4d, k4e } \
}

View File

@@ -18,71 +18,287 @@
"layouts": {
"LAYOUT_all": {
"layout": [
{ "label": "Esc", "x": 0, "y": 0 },
{ "label": "!", "x": 1, "y": 0 },
{ "label": "@", "x": 2, "y": 0 },
{ "label": "#", "x": 3, "y": 0 },
{ "label": "$", "x": 4, "y": 0 },
{ "label": "%", "x": 5, "y": 0 },
{ "label": "^", "x": 6, "y": 0 },
{ "label": "&", "x": 7, "y": 0 },
{ "label": "*", "x": 8, "y": 0 },
{ "label": "(", "x": 9, "y": 0 },
{ "label": ")", "x": 10, "y": 0 },
{ "label": "_", "x": 11, "y": 0 },
{ "label": "+", "x": 12, "y": 0 },
{ "label": "|", "x": 13, "y": 0 },
{ "label": "~", "x": 14, "y": 0 },
{ "label": "Tab", "x": 0, "y": 1, "w": 1.5 },
{ "label": "Q", "x": 1.5, "y": 1 },
{ "label": "W", "x": 2.5, "y": 1 },
{ "label": "E", "x": 3.5, "y": 1 },
{ "label": "R", "x": 4.5, "y": 1 },
{ "label": "T", "x": 5.5, "y": 1 },
{ "label": "Y", "x": 6.5, "y": 1 },
{ "label": "U", "x": 7.5, "y": 1 },
{ "label": "I", "x": 8.5, "y": 1 },
{ "label": "O", "x": 9.5, "y": 1 },
{ "label": "P", "x": 10.5, "y": 1 },
{ "label": "{", "x": 11.5, "y": 1 },
{ "label": "}", "x": 12.5, "y": 1 },
{ "label": "Backsp.", "x": 13.5, "y": 1, "w": 1.5 },
{ "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 },
{ "label": "A", "x": 1.75, "y": 2 },
{ "label": "S", "x": 2.75, "y": 2 },
{ "label": "D", "x": 3.75, "y": 2 },
{ "label": "F", "x": 4.75, "y": 2 },
{ "label": "G", "x": 5.75, "y": 2 },
{ "label": "H", "x": 6.75, "y": 2 },
{ "label": "J", "x": 7.75, "y": 2 },
{ "label": "K", "x": 8.75, "y": 2 },
{ "label": "L", "x": 9.75, "y": 2 },
{ "label": ":", "x": 10.75, "y": 2 },
{ "label": "\"", "x": 11.75, "y": 2 },
{ "label": "~", "x": 12.75, "y": 2},
{ "label": "Enter", "x": 13.75, "y": 2, "w": 1.25 },
{ "label": "Shift", "x": 0, "y": 3, "w": 1.25 },
{ "label": "|", "x": 1.25, "y": 3 },
{ "label": "Z", "x": 2.25, "y": 3 },
{ "label": "X", "x": 3.25, "y": 3 },
{ "label": "C", "x": 4.25, "y": 3 },
{ "label": "V", "x": 5.25, "y": 3 },
{ "label": "B", "x": 6.25, "y": 3 },
{ "label": "N", "x": 7.25, "y": 3 },
{ "label": "M", "x": 8.25, "y": 3 },
{ "label": "<", "x": 9.25, "y": 3 },
{ "label": ">", "x": 10.25, "y": 3 },
{ "label": "?", "x": 11.25, "y": 3 },
{ "label": "Shift", "x": 12.25, "y": 3, "w": 1.75 },
{ "label": "Fn", "x": 14, "y": 3, "w": 1 },
{ "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 },
{ "label": "Win", "x": 1.25, "y": 4, "w": 1.25 },
{ "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 },
{ "label": "Space", "x": 3.75, "y": 4, "w": 6.25 },
{ "label": "Alt", "x": 10, "y": 4, "w": 1.25 },
{ "label": "Menu", "x": 11.25, "y": 4, "w": 1.25 },
{ "label": "Win", "x": 12.5, "y": 4, "w": 1.25 },
{ "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 }
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "~", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 2, "w": 1.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "~", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_tsangan_hhkb": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "~", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
{"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_hhkb": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "~", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Backsp.", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Alt", "matrix": [9, 0], "x": 1.5, "y": 4},
{"label": "GUI", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
{"label": "GUI", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
{"label": "Alt", "matrix": [9, 5], "x": 12.5, "y": 4}
]
}
}

View File

@@ -0,0 +1,24 @@
# Matrix Diagram for 4pplet Eagle Viper REP Rev A
```
┌───────┐
2u Backspace │36? │
└───────┘
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │16 │36 │
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐
│20 │30 │21 │31 │22 │32 │23 │33 │24 │34 │25 │35 │26 │56 │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐76 │ ISO Enter
│40 │50 │41 │51 │42 │52 │43 │53 │44 │54 │45 │55 │76 │ │46 │ │
├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘
│60 │70 │61 │71 │62 │72 │63 │73 │64 │74 │65 │75 │66 │96 │
├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
│80 │90 │91 │93 │94 │85 │95 │86 │
└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
┌────────┐ ┌──────────┐
│60 │ 2.25u LShift 2.75u RShift │66 │
└────────┘ └──────────┘
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
│80 │90 │91 │93 │85 │95 │86 │ Tsangan/WKL/HHKB
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
```

View File

@@ -19,23 +19,3 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "quantum.h"
void setLayerLed(layer_state_t state);
#define LAYOUT_all( \
k00, k10, k01, k11, k02, k12, k03, k13, k04, k14, k05, k15, k06, k16, k36, \
k20, k30, k21, k31, k22, k32, k23, k33, k24, k34, k25, k35, k26, k56,\
k40, k50, k41, k51, k42, k52, k43, k53, k44, k54, k45, k55, k46, k76,\
k60, k70, k61, k71, k62, k72, k63, k73, k64, k74, k65, k75, k66, k96,\
k80, k90, k91, k93, k94, k85, k95, k86 \
) \
{ \
{k00, k01, k02, k03, k04, k05, k06}, \
{k10, k11, k12, k13, k14, k15, k16}, \
{k20, k21, k22, k23, k24, k25, k26}, \
{k30, k31, k32, k33, k34, k35, k36}, \
{k40, k41, k42, k43, k44, k45, k46}, \
{k50, k51, k52, k53, k54, k55, k56}, \
{k60, k61, k62, k63, k64, k65, k66}, \
{k70, k71, k72, k73, k74, k75, k76}, \
{k80, KC_NO, KC_NO, KC_NO, KC_NO, k85, k86}, \
{k90, k91, KC_NO, k93, k94, k95, k96} \
}

View File

@@ -0,0 +1,34 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MO(1), KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP),
// basic function layer
[1] = LAYOUT_all(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View File

@@ -0,0 +1,40 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Delete│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴ │
* │ Ctrl │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───────┤
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │
* ├────┬───│───┴┬──┴┬──┴───┴───┴───┴─┬─┴─┬─┴──┬┴───┴┬────┬───┤
* │Caps│Alt│Gui │ ` │ Space │ \ │Left│Right│Down│ Up│
* └────┴───┴────┴───┴────────────────┴───┴────┴─────┴────┴───┘
*/
[0] = LAYOUT_m0116(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_CAPS, KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP)
};

View File

@@ -0,0 +1,39 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬──────┐
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Backsp│
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬────┤
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ │
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┐Ent│
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ \ │ │
* ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───│───┤
* │Shft│ ` │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift│ Up│
* ├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴┬──┴─┬─┴──┬┴────┬────┤
* │Ctrl│Alt │GUI │ Space │GUI │Left│Right│Down│
* └────┴────┴────┴──────────────────────┴────┴────┴─────┴────┘
*/
[0] = LAYOUT_m0118(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_ENT,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS,
KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_LEFT, KC_RIGHT,KC_DOWN)
};

View File

@@ -0,0 +1,48 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <4pplet@protonmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// main layer
[0] = LAYOUT_all(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
MO(1), KC_LALT, KC_LGUI, KC_GRV, KC_SPC, KC_BSLS, KC_LEFT, KC_RIGHT,KC_DOWN, KC_UP),
// basic function layer
[1] = LAYOUT_all(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
// extra layer for VIA
[2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
// extra layer for VIA
[3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View File

@@ -0,0 +1,23 @@
# Unextended Standard PCB
PCB for the Unextended Standard Project. The PCB enables use of M0116, M0118, IIc and NeXT keycaps and is designed to fit in the open sourced Unextended case.
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
* Hardware Supported: [Unextended Standard PCB](https://github.com/4pplet/Unextended-Standard-PCB)
Make example for this keyboard (after setting up your build environment):
make 4pplet/unextended_std/rev_a:default
Flashing example for this keyboard:
make 4pplet/unextended_std/rev_a:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the Escape-key and plug in the keyboard
* **Physical reset header**: Briefly short the header labled "BL/reset" on the PCB
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -0,0 +1,19 @@
/*
Copyright 2023 Stefan Sundin "4pplet" <mail@4pplet.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define WS2812_EXTERNAL_PULLUP

View File

@@ -0,0 +1,262 @@
{
"keyboard_name": "Unextended Standard Rev A",
"manufacturer": "4pplet",
"url": "https://github.com/4pplet/Unextended",
"maintainer": "4pplet",
"usb": {
"vid": "0x4444",
"pid": "0x0012",
"device_version": "0.0.1"
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"matrix_pins": {
"rows":
["B14","B15","B6","B5","B4"],
"cols":
["B2","A4","A1","A2","F1","F0","C15","C14","C13","B9","B8","B7","B12","B3"]
},
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": false,
"command": false,
"nkro": true,
"backlight": false,
"rgblight": true,
"audio": false
},
"rgblight": {
"pin": "A8",
"led_count": 16,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"indicators": {
"caps_lock": "A10",
"on_state": 0
},
"layouts": {
"LAYOUT_all": {
"layout": [
{"label":"Esc", "matrix": [0, 0], "x":0, "y":0},
{"label":"!", "matrix": [0, 1], "x":1, "y":0},
{"label":"@", "matrix": [0, 2], "x":2, "y":0},
{"label":"#", "matrix": [0, 3], "x":3, "y":0},
{"label":"$", "matrix": [0, 4], "x":4, "y":0},
{"label":"%", "matrix": [0, 5], "x":5, "y":0},
{"label":"^", "matrix": [0, 6], "x":6, "y":0},
{"label":"&", "matrix": [0, 7], "x":7, "y":0},
{"label":"*", "matrix": [0, 8], "x":8, "y":0},
{"label":"(", "matrix": [0, 9], "x":9, "y":0},
{"label":")", "matrix": [0, 10], "x":10, "y":0},
{"label":"_", "matrix": [0, 11], "x":11, "y":0},
{"label":"+", "matrix": [0, 12], "x":12, "y":0},
{"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5},
{"label":"Tab", "matrix": [1, 0], "x":0, "y":1, "w":1.5},
{"label":"Q", "matrix": [1, 1], "x":1.5, "y":1},
{"label":"W", "matrix": [1, 2], "x":2.5, "y":1},
{"label":"E", "matrix": [1, 3], "x":3.5, "y":1},
{"label":"R", "matrix": [1, 4], "x":4.5, "y":1},
{"label":"T", "matrix": [1, 5], "x":5.5, "y":1},
{"label":"Y", "matrix": [1, 6], "x":6.5, "y":1},
{"label":"U", "matrix": [1, 7], "x":7.5, "y":1},
{"label":"I", "matrix": [1, 8], "x":8.5, "y":1},
{"label":"O", "matrix": [1, 9], "x":9.5, "y":1},
{"label":"P", "matrix": [1, 10], "x":10.5, "y":1},
{"label":"{", "matrix": [1, 11], "x":11.5, "y":1},
{"label":"}", "matrix": [1, 12], "x":12.5, "y":1},
{"label":"|", "matrix": [1, 13], "x":13.5, "y":1},
{"label":"Caps Lock", "matrix": [2, 0], "x":0, "y":2, "w":1.75},
{"label":"A", "matrix": [2, 1], "x":1.75, "y":2},
{"label":"S", "matrix": [2, 2], "x":2.75, "y":2},
{"label":"D", "matrix": [2, 3], "x":3.75, "y":2},
{"label":"F", "matrix": [2, 4], "x":4.75, "y":2},
{"label":"G", "matrix": [2, 5], "x":5.75, "y":2},
{"label":"H", "matrix": [2, 6], "x":6.75, "y":2},
{"label":"J", "matrix": [2, 7], "x":7.75, "y":2},
{"label":"K", "matrix": [2, 8], "x":8.75, "y":2},
{"label":"L", "matrix": [2, 9], "x":9.75, "y":2},
{"label":":", "matrix": [2, 10], "x":10.75, "y":2},
{"label":"\"", "matrix": [2, 11], "x":11.75, "y":2},
{"label":"nubs", "matrix": [3, 13], "x":12.75, "y":2},
{"label":"Enter", "matrix": [2, 13], "x":13.75, "y":2, "w":0.75},
{"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":1.25},
{"label":"nubs", "matrix": [3, 1], "x":1.25, "y":3},
{"label":"Z", "matrix": [3, 2], "x":2.25, "y":3},
{"label":"X", "matrix": [3, 3], "x":3.25, "y":3},
{"label":"C", "matrix": [3, 4], "x":4.25, "y":3},
{"label":"V", "matrix": [3, 5], "x":5.25, "y":3},
{"label":"B", "matrix": [3, 6], "x":6.25, "y":3},
{"label":"N", "matrix": [3, 7], "x":7.25, "y":3},
{"label":"M", "matrix": [3, 8], "x":8.25, "y":3},
{"label":"<", "matrix": [3, 9], "x":9.25, "y":3},
{"label":">", "matrix": [3, 10], "x":10.25, "y":3},
{"label":"?", "matrix": [3, 11], "x":11.25, "y":3},
{"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":1.25},
{"label":"\u2191", "matrix": [4, 13], "x":13.5, "y":3},
{"label":"Caps", "matrix": [4, 0], "x":0, "y":4},
{"label":"opt", "matrix": [4, 1], "x":1, "y":4},
{"label":"Cmd", "matrix": [4, 2], "x":2, "y":4, "w":1.75},
{"label":"`", "matrix": [4, 3], "x":3.75, "y":4},
{"label":"Space", "matrix": [4, 6], "x":4.75, "y":4, "w":4.75},
{"label":"\\", "matrix": [4, 8], "x":9.5, "y":4},
{"label":"\u2190", "matrix": [4, 9], "x":10.5, "y":4},
{"label":"\u2192", "matrix": [4, 10], "x":11.5, "y":4},
{"label":"\u2193", "matrix": [4, 11], "x":12.5, "y":4},
{"label":"\u2191", "matrix": [4, 12], "x":13.5, "y":4}
]
},
"LAYOUT_m0116": {
"layout": [
{"label":"Esc", "matrix": [0, 0], "x":0, "y":0},
{"label":"!", "matrix": [0, 1], "x":1, "y":0},
{"label":"@", "matrix": [0, 2], "x":2, "y":0},
{"label":"#", "matrix": [0, 3], "x":3, "y":0},
{"label":"$", "matrix": [0, 4], "x":4, "y":0},
{"label":"%", "matrix": [0, 5], "x":5, "y":0},
{"label":"^", "matrix": [0, 6], "x":6, "y":0},
{"label":"&", "matrix": [0, 7], "x":7, "y":0},
{"label":"*", "matrix": [0, 8], "x":8, "y":0},
{"label":"(", "matrix": [0, 9], "x":9, "y":0},
{"label":")", "matrix": [0, 10], "x":10, "y":0},
{"label":"_", "matrix": [0, 11], "x":11, "y":0},
{"label":"+", "matrix": [0, 12], "x":12, "y":0},
{"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5},
{"label":"Tab", "matrix": [1, 0], "x":0, "y":1, "w":1.5},
{"label":"Q", "matrix": [1, 1], "x":1.5, "y":1},
{"label":"W", "matrix": [1, 2], "x":2.5, "y":1},
{"label":"E", "matrix": [1, 3], "x":3.5, "y":1},
{"label":"R", "matrix": [1, 4], "x":4.5, "y":1},
{"label":"T", "matrix": [1, 5], "x":5.5, "y":1},
{"label":"Y", "matrix": [1, 6], "x":6.5, "y":1},
{"label":"U", "matrix": [1, 7], "x":7.5, "y":1},
{"label":"I", "matrix": [1, 8], "x":8.5, "y":1},
{"label":"O", "matrix": [1, 9], "x":9.5, "y":1},
{"label":"P", "matrix": [1, 10], "x":10.5, "y":1},
{"label":"{", "matrix": [1, 11], "x":11.5, "y":1},
{"label":"}", "matrix": [1, 12], "x":12.5, "y":1},
{"label":"Enter", "matrix": [2, 13], "x":13.5, "y":1, "h":2},
{"label":"Control", "matrix": [2, 0], "x":0, "y":2, "w":1.75},
{"label":"A", "matrix": [2, 1], "x":1.75, "y":2},
{"label":"S", "matrix": [2, 2], "x":2.75, "y":2},
{"label":"D", "matrix": [2, 3], "x":3.75, "y":2},
{"label":"F", "matrix": [2, 4], "x":4.75, "y":2},
{"label":"G", "matrix": [2, 5], "x":5.75, "y":2},
{"label":"H", "matrix": [2, 6], "x":6.75, "y":2},
{"label":"J", "matrix": [2, 7], "x":7.75, "y":2},
{"label":"K", "matrix": [2, 8], "x":8.75, "y":2},
{"label":"L", "matrix": [2, 9], "x":9.75, "y":2},
{"label":":", "matrix": [2, 10], "x":10.75, "y":2},
{"label":"\"", "matrix": [2, 11], "x":11.75, "y":2},
{"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":2.25},
{"label":"Z", "matrix": [3, 2], "x":2.25, "y":3},
{"label":"X", "matrix": [3, 3], "x":3.25, "y":3},
{"label":"C", "matrix": [3, 4], "x":4.25, "y":3},
{"label":"V", "matrix": [3, 5], "x":5.25, "y":3},
{"label":"B", "matrix": [3, 6], "x":6.25, "y":3},
{"label":"N", "matrix": [3, 7], "x":7.25, "y":3},
{"label":"M", "matrix": [3, 8], "x":8.25, "y":3},
{"label":"<", "matrix": [3, 9], "x":9.25, "y":3},
{"label":">", "matrix": [3, 10], "x":10.25, "y":3},
{"label":"?", "matrix": [3, 11], "x":11.25, "y":3},
{"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":2.25},
{"label":"Caps", "matrix": [4, 0], "x":0, "y":4},
{"label":"opt", "matrix": [4, 1], "x":1, "y":4},
{"label":"Cmd", "matrix": [4, 2], "x":2, "y":4, "w":1.75},
{"label":"`", "matrix": [4, 3], "x":3.75, "y":4},
{"label":"Space", "matrix": [4, 6],"x":4.75, "y":4, "w":4.75},
{"label":"\\", "matrix": [4, 8], "x":9.5, "y":4},
{"label":"\u2190", "matrix": [4, 9], "x":10.5, "y":4},
{"label":"\u2192", "matrix": [4, 10], "x":11.5, "y":4},
{"label":"\u2193", "matrix": [4, 11], "x":12.5, "y":4},
{"label":"\u2191", "matrix": [4, 12], "x":13.5, "y":4}
]
},
"LAYOUT_m0118": {
"layout": [
{"label":"Esc", "matrix": [0, 0], "x":0, "y":0},
{"label":"!", "matrix": [0, 1], "x":1, "y":0},
{"label":"@", "matrix": [0, 2], "x":2, "y":0},
{"label":"#", "matrix": [0, 3], "x":3, "y":0},
{"label":"$", "matrix": [0, 4], "x":4, "y":0},
{"label":"%", "matrix": [0, 5], "x":5, "y":0},
{"label":"^", "matrix": [0, 6], "x":6, "y":0},
{"label":"&", "matrix": [0, 7], "x":7, "y":0},
{"label":"*", "matrix": [0, 8], "x":8, "y":0},
{"label":"(", "matrix": [0, 9], "x":9, "y":0},
{"label":")", "matrix": [0, 10], "x":10, "y":0},
{"label":"_", "matrix": [0, 11], "x":11, "y":0},
{"label":"+", "matrix": [0, 12], "x":12, "y":0},
{"label":"Backsp", "matrix": [0, 13], "x":13, "y":0, "w":1.5},
{"label":"Tab", "matrix": [1, 0], "x":0, "y":1, "w":1.5},
{"label":"Q", "matrix": [1, 1], "x":1.5, "y":1},
{"label":"W", "matrix": [1, 2], "x":2.5, "y":1},
{"label":"E", "matrix": [1, 3], "x":3.5, "y":1},
{"label":"R", "matrix": [1, 4], "x":4.5, "y":1},
{"label":"T", "matrix": [1, 5], "x":5.5, "y":1},
{"label":"Y", "matrix": [1, 6], "x":6.5, "y":1},
{"label":"U", "matrix": [1, 7], "x":7.5, "y":1},
{"label":"I", "matrix": [1, 8], "x":8.5, "y":1},
{"label":"O", "matrix": [1, 9], "x":9.5, "y":1},
{"label":"P", "matrix": [1, 10], "x":10.5, "y":1},
{"label":"{", "matrix": [1, 11], "x":11.5, "y":1},
{"label":"}", "matrix": [1, 12], "x":12.5, "y":1},
{"label":"Enter", "matrix": [2, 13], "x":13.75, "y":1, "w":0.75, "h":2},
{"label":"Caps Lock", "matrix": [2, 0], "x":0, "y":2, "w":1.75},
{"label":"A", "matrix": [2, 1], "x":1.75, "y":2},
{"label":"S", "matrix": [2, 2], "x":2.75, "y":2},
{"label":"D", "matrix": [2, 3], "x":3.75, "y":2},
{"label":"F", "matrix": [2, 4], "x":4.75, "y":2},
{"label":"G", "matrix": [2, 5], "x":5.75, "y":2},
{"label":"H", "matrix": [2, 6], "x":6.75, "y":2},
{"label":"J", "matrix": [2, 7], "x":7.75, "y":2},
{"label":"K", "matrix": [2, 8], "x":8.75, "y":2},
{"label":"L", "matrix": [2, 9], "x":9.75, "y":2},
{"label":":", "matrix": [2, 10], "x":10.75, "y":2},
{"label":"\"", "matrix": [2, 11], "x":11.75, "y":2},
{"label":"nuhs", "matrix": [3, 13], "x":12.75, "y":2},
{"label":"Shift", "matrix": [3, 0], "x":0, "y":3, "w":1.25},
{"label":"nubs", "matrix": [3, 1], "x":1.25, "y":3},
{"label":"Z", "matrix": [3, 2], "x":2.25, "y":3},
{"label":"X", "matrix": [3, 3], "x":3.25, "y":3},
{"label":"C", "matrix": [3, 4], "x":4.25, "y":3},
{"label":"V", "matrix": [3, 5], "x":5.25, "y":3},
{"label":"B", "matrix": [3, 6], "x":6.25, "y":3},
{"label":"N", "matrix": [3, 7], "x":7.25, "y":3},
{"label":"M", "matrix": [3, 8], "x":8.25, "y":3},
{"label":"<", "matrix": [3, 9], "x":9.25, "y":3},
{"label":">", "matrix": [3, 10], "x":10.25, "y":3},
{"label":"?", "matrix": [3, 11], "x":11.25, "y":3},
{"label":"Shift", "matrix": [3, 12], "x":12.25, "y":3, "w":1.25},
{"label":"\u2191", "matrix": [4, 13], "x":13.5, "y":3},
{"label":"Ctrl", "matrix": [4, 0], "x":0, "y":4, "w":1.25},
{"label":"Opt", "matrix": [4, 2], "x":1.25, "y":4, "w":1.5},
{"label":"Cmd", "matrix": [4, 3], "x":2.75, "y":4, "w":1.75},
{"label":"Space", "matrix": [4, 6], "x":4.5, "y":4, "w":5.25},
{"label":"Cmd", "matrix": [4, 9], "x":9.75, "y":4, "w":1.75},
{"label":"\u2190", "matrix": [4, 10], "x":11.5, "y":4},
{"label":"\u2192", "matrix": [4, 11], "x":12.5, "y":4},
{"label":"\u2193", "matrix": [4, 12], "x":13.5, "y":4}
]
}
}
}

View File

@@ -0,0 +1,10 @@
# Build Options
# change yes to no to disable
#
KEY_LOCK_ENABLE = yes
# Wildcard to allow APM32 MCU
DFU_SUFFIX_ARGS = -p FFFF -v FFFF
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

View File

@@ -1,22 +1,9 @@
/* Copyright 2018-2020
* ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
* David Philip Barr <@davidphilipbarr>
* Pierre Chevalier <pierrechevalier83@gmail.com>
* @filterpaper
*
* 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/>.
*/
// Copyright 2018-2020
// ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
// David Philip Barr <@davidphilipbarr>
// Pierre Chevalier <pierrechevalier83@gmail.com>
// SPDX-License-Identifier: GPL-2.0+
#include "quantum.h"
#ifdef SWAP_HANDS_ENABLE

View File

@@ -1,25 +1,9 @@
/* Copyright 2018-2020 ENDO Katsuhiro <ka2hiro@curlybracket.co.jp> David Philip Barr <@davidphilipbarr> Pierre Chevalier <pierrechevalier83@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
// Copyright 2018-2020
// ENDO Katsuhiro <ka2hiro@curlybracket.co.jp>
// David Philip Barr <@davidphilipbarr>
// Pierre Chevalier <pierrechevalier83@gmail.com>
// SPDX-License-Identifier: GPL-2.0+
#pragma once
/* 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
#define EE_HANDS

View File

@@ -8,8 +8,13 @@
"pid": "0x3939",
"device_version": "0.0.1"
},
"processor": "atmega32u4",
"bootloader": "atmel-dfu",
"development_board": "promicro",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"unicode": true
},
"matrix_pins": {
"direct": [
["C6", "D2", "F7", "B2", "F4"],
@@ -19,6 +24,7 @@
]
},
"split": {
"enabled": true,
"soft_serial_pin": "D1",
"bootmagic": {
"matrix": [4, 4]
@@ -41,47 +47,43 @@
"layouts": {
"LAYOUT_split_3x5_2": {
"layout": [
{"x": 0, "y": 1.33, "matrix": [0, 0]},
{"x": 1, "y": 0.31, "matrix": [0, 1]},
{"x": 2, "y": 0, "matrix": [0, 2]},
{"x": 3, "y": 0.28, "matrix": [0, 3]},
{"x": 4, "y": 0.42, "matrix": [0, 4]},
{ "label": "L01", "matrix": [0, 0], "x": 0, "y": 1.33 },
{ "label": "L02", "matrix": [0, 1], "x": 1, "y": 0.31 },
{ "label": "L03", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "L04", "matrix": [0, 3], "x": 3, "y": 0.28 },
{ "label": "L05", "matrix": [0, 4], "x": 4, "y": 0.42 },
{ "label": "R01", "matrix": [4, 0], "x": 8, "y": 0.42 },
{ "label": "R02", "matrix": [4, 1], "x": 9, "y": 0.28 },
{ "label": "R03", "matrix": [4, 2], "x": 10, "y": 0 },
{ "label": "R04", "matrix": [4, 3], "x": 11, "y": 0.31 },
{ "label": "R05", "matrix": [4, 4], "x": 12, "y": 1.33 },
{"x": 8, "y": 0.42, "matrix": [4, 0]},
{"x": 9, "y": 0.28, "matrix": [4, 1]},
{"x": 10, "y": 0, "matrix": [4, 2]},
{"x": 11, "y": 0.31, "matrix": [4, 3]},
{"x": 12, "y": 1.33, "matrix": [4, 4]},
{ "label": "L06", "matrix": [1, 0], "x": 0, "y": 2.33 },
{ "label": "L07", "matrix": [1, 1], "x": 1, "y": 1.31 },
{ "label": "L08", "matrix": [1, 2], "x": 2, "y": 1 },
{ "label": "L09", "matrix": [1, 3], "x": 3, "y": 1.28 },
{ "label": "L10", "matrix": [1, 4], "x": 4, "y": 1.42 },
{ "label": "R06", "matrix": [5, 0], "x": 8, "y": 1.42 },
{ "label": "R07", "matrix": [5, 1], "x": 9, "y": 1.28 },
{ "label": "R08", "matrix": [5, 2], "x": 10, "y": 1 },
{ "label": "R09", "matrix": [5, 3], "x": 11, "y": 1.31 },
{ "label": "R10", "matrix": [5, 4], "x": 12, "y": 2.33 },
{"x": 0, "y": 2.33, "matrix": [1, 0]},
{"x": 1, "y": 1.31, "matrix": [1, 1]},
{"x": 2, "y": 1, "matrix": [1, 2]},
{"x": 3, "y": 1.28, "matrix": [1, 3]},
{"x": 4, "y": 1.42, "matrix": [1, 4]},
{ "label": "L11", "matrix": [2, 0], "x": 0, "y": 3.33 },
{ "label": "L12", "matrix": [2, 1], "x": 1, "y": 2.31 },
{ "label": "L13", "matrix": [2, 2], "x": 2, "y": 2 },
{ "label": "L14", "matrix": [2, 3], "x": 3, "y": 2.28 },
{ "label": "L15", "matrix": [2, 4], "x": 4, "y": 2.42 },
{ "label": "R11", "matrix": [6, 0], "x": 8, "y": 2.42 },
{ "label": "R12", "matrix": [6, 1], "x": 9, "y": 2.28 },
{ "label": "R13", "matrix": [6, 2], "x": 10, "y": 2 },
{ "label": "R14", "matrix": [6, 3], "x": 11, "y": 2.31 },
{ "label": "R15", "matrix": [6, 4], "x": 12, "y": 3.33 },
{"x": 8, "y": 1.42, "matrix": [5, 0]},
{"x": 9, "y": 1.28, "matrix": [5, 1]},
{"x": 10, "y": 1, "matrix": [5, 2]},
{"x": 11, "y": 1.31, "matrix": [5, 3]},
{"x": 12, "y": 2.33, "matrix": [5, 4]},
{"x": 0, "y": 3.33, "matrix": [2, 0]},
{"x": 1, "y": 2.31, "matrix": [2, 1]},
{"x": 2, "y": 2, "matrix": [2, 2]},
{"x": 3, "y": 2.28, "matrix": [2, 3]},
{"x": 4, "y": 2.42, "matrix": [2, 4]},
{"x": 8, "y": 2.42, "matrix": [6, 0]},
{"x": 9, "y": 2.28, "matrix": [6, 1]},
{"x": 10, "y": 2, "matrix": [6, 2]},
{"x": 11, "y": 2.31, "matrix": [6, 3]},
{"x": 12, "y": 3.33, "matrix": [6, 4]},
{"x": 4, "y": 3.75, "matrix": [3, 0]},
{"x": 5, "y": 4, "matrix": [3, 1]},
{"x": 7, "y": 4, "matrix": [7, 0]},
{"x": 8, "y": 3.75, "matrix": [7, 1]}
{ "label": "L16", "matrix": [3, 0], "x": 4, "y": 3.75 },
{ "label": "L17", "matrix": [3, 1], "x": 5, "y": 4 },
{ "label": "R16", "matrix": [7, 0], "x": 7, "y": 4 },
{ "label": "R17", "matrix": [7, 1], "x": 8, "y": 3.75 }
]
}
}

View File

@@ -1,14 +1 @@
# 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 = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
UNICODE_ENABLE = yes # Unicode
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes # Use shared split_common code
# This file intentionally left blank

View File

@@ -42,9 +42,14 @@
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP13
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
/* Audio (Unsupported for now)*/
// #define AUDIO_PIN GP16
// #define SPEAKER_SHUTDOWN GP14
/* Audio */
#define AUDIO_PIN GP16
#define AUDIO_PWM_DRIVER PWMD0
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_A
#define AUDIO_INIT_DELAY
#define AUDIO_CLICKY
#define SPEAKER_SHUTDOWN GP14
#ifdef RGB_MATRIX_ENABLE

View File

@@ -26,3 +26,6 @@
#undef SPI_SELECT_MODE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#undef HAL_USE_PWM
#define HAL_USE_PWM TRUE

View File

@@ -18,17 +18,25 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MUTE,
LT(1,KC_MUTE),
KC_ENT, KC_0, KC_BSPC,
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
KC_1, KC_2, KC_3
)
),
[1] = LAYOUT(
_______,
CK_TOGG, AU_TOGG, _______,
_______, _______, _______,
_______, _______, _______,
_______, _______, _______
),
};
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(_______, _______) },
};
#endif
@@ -111,4 +119,3 @@ bool oled_task_user(void) {
}
#endif

View File

@@ -0,0 +1,98 @@
// Copyright 2023 Peter.Falken (@PeterFalken)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "peterfalken.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MUTE,
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
KC_1, KC_2, KC_3,
KC_ENT, KC_0, KC_BSPC
)
};
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
};
#endif
#ifdef OLED_ENABLE
static void render_qmk_logo(void) {
static const char PROGMEM qmk_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,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe,
0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0xfe, 0xfe, 0xfe, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x81, 0x83, 0x83, 0x83, 0x83, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xff, 0xff, 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, 0xff, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x83, 0x83, 0x83, 0x83, 0x81,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x01, 0x07, 0x1f, 0x3f, 0x7f, 0x7e, 0xf8, 0xf0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xff, 0xff,
0xff, 0xff, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xf0, 0xf8, 0x7e, 0x7f, 0x3f, 0x1f, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0xff,
0xff, 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc,
0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfc,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(qmk_logo, sizeof(qmk_logo));
}
bool oled_task_user(void) {
render_qmk_logo();
return true;
}
#endif // OLED_ENABLE

View File

@@ -0,0 +1,3 @@
# Setup QMK features
ENCODER_MAP_ENABLE = yes
RGB_MATRIX_ENABLE = no # Disable RGB key matrix

View File

@@ -18,7 +18,7 @@
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MUTE,
LT(1,KC_MUTE),
KC_ENT, KC_0, KC_BSPC,
KC_7, KC_8, KC_9,
KC_4, KC_5, KC_6,
@@ -26,7 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
),
[1] = LAYOUT(
_______,
_______, _______, _______,
CK_TOGG, AU_TOGG, _______,
_______, _______, _______,
_______, _______, _______,
_______, _______, _______
@@ -135,4 +135,3 @@ bool oled_task_user(void) {
}
#endif

View File

@@ -41,6 +41,31 @@ led_config_t g_led_config = { {
#endif
#ifdef AUDIO_ENABLE
void keyboard_pre_init_kb(void) {
// ensure pin is set and enabled pre-audio init
setPinOutput(SPEAKER_SHUTDOWN);
writePinHigh(SPEAKER_SHUTDOWN);
keyboard_pre_init_user();
}
void keyboard_post_init_kb(void) {
// set pin based on active status
writePin(SPEAKER_SHUTDOWN, audio_is_on());
keyboard_post_init_user();
}
void audio_on_user(void) {
writePinHigh(SPEAKER_SHUTDOWN);
}
void audio_off_user(void) {
// needs a delay or it runs right after play note.
wait_ms(200);
writePinLow(SPEAKER_SHUTDOWN);
}
#endif
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }

View File

@@ -20,3 +20,6 @@
#undef RP_SPI_USE_SPI1
#define RP_SPI_USE_SPI1 TRUE
#undef RP_PWM_USE_PWM0
#define RP_PWM_USE_PWM0 TRUE

View File

@@ -9,8 +9,8 @@ COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
# AUDIO_DRIVER = pwm_software
AUDIO_ENABLE = yes # Audio output
AUDIO_DRIVER = pwm_hardware
ENCODER_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812

View File

@@ -17,60 +17,117 @@
"layouts": {
"LAYOUT_all": {
"layout": [
{"label":"F1", "x":0, "y":0},
{"label":"Tab", "x":1.25, "y":0, "w":1.5},
{"label":"Q", "x":2.75, "y":0},
{"label":"W", "x":3.75, "y":0},
{"label":"E", "x":4.75, "y":0},
{"label":"R", "x":5.75, "y":0},
{"label":"T", "x":6.75, "y":0},
{"label":"Y", "x":7.75, "y":0},
{"label":"U", "x":8.75, "y":0},
{"label":"I", "x":9.75, "y":0},
{"label":"O", "x":10.75, "y":0},
{"label":"P", "x":11.75, "y":0},
{"label":"{", "x":12.75, "y":0},
{"label":"Backspace", "x":13.75, "y":0, "w":1.5},
{"label": "F1", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "Tab", "matrix": [0, 1], "x": 1.25, "y": 0, "w": 1.5},
{"label": "Q", "matrix": [0, 2], "x": 2.75, "y": 0},
{"label": "W", "matrix": [0, 3], "x": 3.75, "y": 0},
{"label": "E", "matrix": [0, 4], "x": 4.75, "y": 0},
{"label": "R", "matrix": [0, 5], "x": 5.75, "y": 0},
{"label": "T", "matrix": [0, 6], "x": 6.75, "y": 0},
{"label": "Y", "matrix": [0, 7], "x": 7.75, "y": 0},
{"label": "U", "matrix": [0, 8], "x": 8.75, "y": 0},
{"label": "I", "matrix": [0, 9], "x": 9.75, "y": 0},
{"label": "O", "matrix": [0, 10], "x": 10.75, "y": 0},
{"label": "P", "matrix": [0, 11], "x": 11.75, "y": 0},
{"label": "{", "matrix": [0, 12], "x": 12.75, "y": 0},
{"label": "Backspace", "matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.5},
{"label":"F2", "x":0, "y":1},
{"label":"Caps Lock", "x":1.25, "y":1, "w":1.75},
{"label":"A", "x":3, "y":1},
{"label":"S", "x":4, "y":1},
{"label":"D", "x":5, "y":1},
{"label":"F", "x":6, "y":1},
{"label":"G", "x":7, "y":1},
{"label":"H", "x":8, "y":1},
{"label":"J", "x":9, "y":1},
{"label":"K", "x":10, "y":1},
{"label":"L", "x":11, "y":1},
{"label":":", "x":12, "y":1},
{"label":"Enter", "x":13, "y":1, "w":2.25},
{"label":"F3", "x":0, "y":2},
{"label":"Shift", "x":1.25, "y":2, "w":2.25},
{"label":"Z", "x":3.5, "y":2},
{"label":"X", "x":4.5, "y":2},
{"label":"C", "x":5.5, "y":2},
{"label":"V", "x":6.5, "y":2},
{"label":"B", "x":7.5, "y":2},
{"label":"N", "x":8.5, "y":2},
{"label":"M", "x":9.5, "y":2},
{"label":"<", "x":10.5, "y":2},
{"label":"Shift", "x":11.5, "y":2, "w":1.75},
{"label":"Up", "x":13.25, "y":2},
{"label":"?", "x":14.25, "y":2},
{"label":"F4", "x":0, "y":3},
{"label":"Ctrl", "x":1.25, "y":3, "w":1.25},
{"label":"Win", "x":2.5, "y":3},
{"label":"Alt", "x":3.5, "y":3, "w":1.25},
{"label":"Spacebar", "x":4.75, "y":3, "w":2.25},
{"label":"Spacebar", "x":7, "y":3, "w":1.25},
{"label":"Spacebar", "x":8.25, "y":3, "w":2.75},
{"label":"Alt", "x":11, "y":3, "w":1.25},
{"label":"Left", "x":12.25, "y":3},
{"label":"Down", "x":13.25, "y":3},
{"label":"Right", "x":14.25, "y":3}
{"label": "F2", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "Caps Lock", "matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.75},
{"label": "A", "matrix": [1, 2], "x": 3, "y": 1},
{"label": "S", "matrix": [1, 3], "x": 4, "y": 1},
{"label": "D", "matrix": [1, 4], "x": 5, "y": 1},
{"label": "F", "matrix": [1, 5], "x": 6, "y": 1},
{"label": "G", "matrix": [1, 6], "x": 7, "y": 1},
{"label": "H", "matrix": [1, 7], "x": 8, "y": 1},
{"label": "J", "matrix": [1, 8], "x": 9, "y": 1},
{"label": "K", "matrix": [1, 9], "x": 10, "y": 1},
{"label": "L", "matrix": [1, 10], "x": 11, "y": 1},
{"label": ":", "matrix": [1, 11], "x": 12, "y": 1},
{"label": "Enter", "matrix": [1, 13], "x": 13, "y": 1, "w": 2.25},
{"label": "F3", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "Shift", "matrix": [2, 1], "x": 1.25, "y": 2, "w": 2.25},
{"label": "Z", "matrix": [2, 2], "x": 3.5, "y": 2},
{"label": "X", "matrix": [2, 3], "x": 4.5, "y": 2},
{"label": "C", "matrix": [2, 4], "x": 5.5, "y": 2},
{"label": "V", "matrix": [2, 5], "x": 6.5, "y": 2},
{"label": "B", "matrix": [2, 6], "x": 7.5, "y": 2},
{"label": "N", "matrix": [2, 7], "x": 8.5, "y": 2},
{"label": "M", "matrix": [2, 8], "x": 9.5, "y": 2},
{"label": "<", "matrix": [2, 9], "x": 10.5, "y": 2},
{"label": "Shift", "matrix": [2, 10], "x": 11.5, "y": 2, "w": 1.75},
{"label": "Up", "matrix": [2, 12], "x": 13.25, "y": 2},
{"label": "?", "matrix": [2, 13], "x": 14.25, "y": 2},
{"label": "F4", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "Ctrl", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25},
{"label": "Win", "matrix": [3, 2], "x": 2.5, "y": 3},
{"label": "Alt", "matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.25},
{"label": "Spacebar", "matrix": [3, 5], "x": 4.75, "y": 3, "w": 2.25},
{"label": "Spacebar", "matrix": [3, 6], "x": 7, "y": 3, "w": 1.25},
{"label": "Spacebar", "matrix": [3, 7], "x": 8.25, "y": 3, "w": 2.75},
{"label": "Alt", "matrix": [3, 10], "x": 11, "y": 3, "w": 1.25},
{"label": "Left", "matrix": [3, 11], "x": 12.25, "y": 3},
{"label": "Down", "matrix": [3, 12], "x": 13.25, "y": 3},
{"label": "Right", "matrix": [3, 13], "x": 14.25, "y": 3}
]
},
"LAYOUT_625u_space": {
"layout": [
{"label": "F1", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "Tab", "matrix": [0, 1], "x": 1.25, "y": 0, "w": 1.5},
{"label": "Q", "matrix": [0, 2], "x": 2.75, "y": 0},
{"label": "W", "matrix": [0, 3], "x": 3.75, "y": 0},
{"label": "E", "matrix": [0, 4], "x": 4.75, "y": 0},
{"label": "R", "matrix": [0, 5], "x": 5.75, "y": 0},
{"label": "T", "matrix": [0, 6], "x": 6.75, "y": 0},
{"label": "Y", "matrix": [0, 7], "x": 7.75, "y": 0},
{"label": "U", "matrix": [0, 8], "x": 8.75, "y": 0},
{"label": "I", "matrix": [0, 9], "x": 9.75, "y": 0},
{"label": "O", "matrix": [0, 10], "x": 10.75, "y": 0},
{"label": "P", "matrix": [0, 11], "x": 11.75, "y": 0},
{"label": "{", "matrix": [0, 12], "x": 12.75, "y": 0},
{"label": "Backspace", "matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.5},
{"label": "F2", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "Caps Lock", "matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.75},
{"label": "A", "matrix": [1, 2], "x": 3, "y": 1},
{"label": "S", "matrix": [1, 3], "x": 4, "y": 1},
{"label": "D", "matrix": [1, 4], "x": 5, "y": 1},
{"label": "F", "matrix": [1, 5], "x": 6, "y": 1},
{"label": "G", "matrix": [1, 6], "x": 7, "y": 1},
{"label": "H", "matrix": [1, 7], "x": 8, "y": 1},
{"label": "J", "matrix": [1, 8], "x": 9, "y": 1},
{"label": "K", "matrix": [1, 9], "x": 10, "y": 1},
{"label": "L", "matrix": [1, 10], "x": 11, "y": 1},
{"label": ":", "matrix": [1, 11], "x": 12, "y": 1},
{"label": "Enter", "matrix": [1, 13], "x": 13, "y": 1, "w": 2.25},
{"label": "F3", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "Shift", "matrix": [2, 1], "x": 1.25, "y": 2, "w": 2.25},
{"label": "Z", "matrix": [2, 2], "x": 3.5, "y": 2},
{"label": "X", "matrix": [2, 3], "x": 4.5, "y": 2},
{"label": "C", "matrix": [2, 4], "x": 5.5, "y": 2},
{"label": "V", "matrix": [2, 5], "x": 6.5, "y": 2},
{"label": "B", "matrix": [2, 6], "x": 7.5, "y": 2},
{"label": "N", "matrix": [2, 7], "x": 8.5, "y": 2},
{"label": "M", "matrix": [2, 8], "x": 9.5, "y": 2},
{"label": "<", "matrix": [2, 9], "x": 10.5, "y": 2},
{"label": "Shift", "matrix": [2, 10], "x": 11.5, "y": 2, "w": 1.75},
{"label": "Up", "matrix": [2, 12], "x": 13.25, "y": 2},
{"label": "?", "matrix": [2, 13], "x": 14.25, "y": 2},
{"label": "F4", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "Ctrl", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25},
{"label": "Win", "matrix": [3, 2], "x": 2.5, "y": 3},
{"label": "Alt", "matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.25},
{"label": "Spacebar", "matrix": [3, 6], "x": 4.75, "y": 3, "w": 6.25},
{"label": "Alt", "matrix": [3, 10], "x": 11, "y": 3, "w": 1.25},
{"label": "Left", "matrix": [3, 11], "x": 12.25, "y": 3},
{"label": "Down", "matrix": [3, 12], "x": 13.25, "y": 3},
{"label": "Right", "matrix": [3, 13], "x": 14.25, "y": 3}
]
}
}

View File

@@ -0,0 +1,41 @@
// Copyright 2022 Arturo Avila (@ADPenrose)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[0] = LAYOUT_625u_space(
KC_ESC, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_BSPC,
KC_MUTE, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
KC_VOLU, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_RSFT, KC_UP, KC_SLSH,
KC_VOLD, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_625u_space(
KC_DEL, KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,
KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_BSLS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_625u_space(
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_RBRC,
KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_625u_space(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
};
#endif

View File

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

View File

@@ -0,0 +1,16 @@
# Matrix Diagram for ADPenrose Obi
```
┌───┐┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐
│00 ││01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │
├───┤├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
│10 ││11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1D │
├───┤├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤
│20 ││21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2C │2D │
├───┤├────┬───┼───┴┬──┴───┴─┬─┴──┬┴───┴───┴─┬─┴──┬───┼───┼───┤
│30 ││31 │32 │33 │35 │36 │37 │3A │3B │3C │3D │
└───┘└────┴───┴────┴────────┴────┴──────────┴────┴───┴───┴───┘
┌────────────────────────┐
│36 │ 6.25u Space
└────────────────────────┘
```

View File

@@ -1,5 +0,0 @@
// Copyright 2022 Arturo Avila (@ADPenrose)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "obi.h"

View File

@@ -1,26 +0,0 @@
// Copyright 2022 Arturo Avila (@ADPenrose)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"
/* This is a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
* layout of the board and position of the keys.
*
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1D, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2C, K2D, \
K30, K31, K32, K33, K35, K36, K37, K3A, K3B, K3C, K3D \
) { \
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, KC_NO, K1D }, \
{ K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, KC_NO, K2C, K2D }, \
{ K30, K31, K32, K33, KC_NO, K35, K36, K37, KC_NO, KC_NO, K3A, K3B, K3C, K3D } \
}

View File

@@ -0,0 +1,336 @@
{
"manufacturer": "Mechlovin Studio",
"keyboard_name": "Aster Ergo",
"maintainer": "Bahm",
"processor": "STM32F103",
"bootloader": "stm32duino",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": true,
"console": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"cols": ["A10", "A9", "A8", "B15", "B14", "B13", "B12", "B1", "B0", "A7", "A6", "B4", "B3", "A15", "A5", "A2", "A1"],
"rows": ["B7", "B6", "B5", "B11", "B10", "A4"]
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x8701",
"vid": "0xBA00"
},
"indicators": {
"caps_lock": "B2",
"scroll_lock": "C13"
},
"layouts": {
"LAYOUT_all": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.25, "y": 0},
{"matrix": [0, 2], "x": 2.25, "y": 0},
{"matrix": [0, 3], "x": 3.25, "y": 0},
{"matrix": [0, 4], "x": 4.25, "y": 0},
{"matrix": [0, 5], "x": 5.25, "y": 0},
{"matrix": [0, 6], "x": 6.25, "y": 0},
{"matrix": [0, 7], "x": 8.25, "y": 0},
{"matrix": [0, 8], "x": 9.25, "y": 0},
{"matrix": [0, 9], "x": 10.25, "y": 0},
{"matrix": [0, 10], "x": 11.25, "y": 0},
{"matrix": [0, 11], "x": 12.25, "y": 0},
{"matrix": [0, 12], "x": 13.25, "y": 0},
{"matrix": [0, 13], "x": 14.5, "y": 0},
{"matrix": [0, 14], "x": 17.25, "y": 0},
{"matrix": [0, 15], "x": 18.25, "y": 0},
{"matrix": [0, 16], "x": 19.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.25},
{"matrix": [1, 1], "x": 1, "y": 1.25},
{"matrix": [1, 2], "x": 2, "y": 1.25},
{"matrix": [1, 3], "x": 3, "y": 1.25},
{"matrix": [1, 4], "x": 4, "y": 1.25},
{"matrix": [1, 5], "x": 5, "y": 1.25},
{"matrix": [1, 6], "x": 6, "y": 1.25},
{"matrix": [1, 7], "x": 8.5, "y": 1.25},
{"matrix": [1, 8], "x": 9.5, "y": 1.25},
{"matrix": [1, 9], "x": 10.5, "y": 1.25},
{"matrix": [1, 10], "x": 11.5, "y": 1.25},
{"matrix": [1, 11], "x": 12.5, "y": 1.25},
{"matrix": [1, 12], "x": 13.5, "y": 1.25},
{"matrix": [1, 13], "x": 14.5, "y": 1.25},
{"matrix": [2, 13], "x": 15.5, "y": 1.25},
{"matrix": [1, 14], "x": 17.25, "y": 1.25},
{"matrix": [1, 15], "x": 18.25, "y": 1.25},
{"matrix": [1, 16], "x": 19.25, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.25},
{"matrix": [2, 2], "x": 2.5, "y": 2.25},
{"matrix": [2, 3], "x": 3.5, "y": 2.25},
{"matrix": [2, 4], "x": 4.5, "y": 2.25},
{"matrix": [2, 5], "x": 5.5, "y": 2.25},
{"matrix": [2, 6], "x": 8, "y": 2.25},
{"matrix": [2, 7], "x": 9, "y": 2.25},
{"matrix": [2, 8], "x": 10, "y": 2.25},
{"matrix": [2, 9], "x": 11, "y": 2.25},
{"matrix": [2, 10], "x": 12, "y": 2.25},
{"matrix": [2, 11], "x": 13, "y": 2.25},
{"matrix": [2, 12], "x": 14, "y": 2.25},
{"matrix": [3, 13], "x": 15, "y": 2.25, "w": 1.5},
{"matrix": [2, 14], "x": 17.25, "y": 2.25},
{"matrix": [2, 15], "x": 18.25, "y": 2.25},
{"matrix": [2, 16], "x": 19.25, "y": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3.25},
{"matrix": [3, 2], "x": 2.75, "y": 3.25},
{"matrix": [3, 3], "x": 3.75, "y": 3.25},
{"matrix": [3, 4], "x": 4.75, "y": 3.25},
{"matrix": [3, 5], "x": 5.75, "y": 3.25},
{"matrix": [3, 6], "x": 8.25, "y": 3.25},
{"matrix": [3, 7], "x": 9.25, "y": 3.25},
{"matrix": [3, 8], "x": 10.25, "y": 3.25},
{"matrix": [3, 9], "x": 11.25, "y": 3.25},
{"matrix": [3, 10], "x": 12.25, "y": 3.25},
{"matrix": [3, 11], "x": 13.25, "y": 3.25},
{"matrix": [3, 12], "x": 14.25, "y": 3.25, "w": 2.25},
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.25},
{"matrix": [4, 3], "x": 3.25, "y": 4.25},
{"matrix": [4, 4], "x": 4.25, "y": 4.25},
{"matrix": [4, 5], "x": 5.25, "y": 4.25},
{"matrix": [4, 6], "x": 6.25, "y": 4.25},
{"matrix": [5, 7], "x": 7.75, "y": 4.25},
{"matrix": [4, 7], "x": 8.75, "y": 4.25},
{"matrix": [4, 8], "x": 9.75, "y": 4.25},
{"matrix": [4, 9], "x": 10.75, "y": 4.25},
{"matrix": [4, 10], "x": 11.75, "y": 4.25},
{"matrix": [4, 11], "x": 12.75, "y": 4.25},
{"matrix": [4, 12], "x": 13.75, "y": 4.25, "w": 1.75},
{"matrix": [4, 13], "x": 15.5, "y": 4.25},
{"matrix": [4, 15], "x": 18.25, "y": 4.25},
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
{"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 4], "x": 3.75, "y": 5.25, "w": 1.25},
{"matrix": [5, 5], "x": 5, "y": 5.25, "w": 2.25},
{"matrix": [5, 8], "x": 7.75, "y": 5.25, "w": 2.75},
{"matrix": [5, 9], "x": 10.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 10], "x": 11.75, "y": 5.25, "w": 1.25},
{"matrix": [5, 11], "x": 13, "y": 5.25, "w": 1.25},
{"matrix": [5, 12], "x": 14.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 14], "x": 17.25, "y": 5.25},
{"matrix": [5, 15], "x": 18.25, "y": 5.25},
{"matrix": [5, 16], "x": 19.25, "y": 5.25}
]
},
"LAYOUT_tkl_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.25, "y": 0},
{"matrix": [0, 2], "x": 2.25, "y": 0},
{"matrix": [0, 3], "x": 3.25, "y": 0},
{"matrix": [0, 4], "x": 4.25, "y": 0},
{"matrix": [0, 5], "x": 5.25, "y": 0},
{"matrix": [0, 6], "x": 6.25, "y": 0},
{"matrix": [0, 7], "x": 8.25, "y": 0},
{"matrix": [0, 8], "x": 9.25, "y": 0},
{"matrix": [0, 9], "x": 10.25, "y": 0},
{"matrix": [0, 10], "x": 11.25, "y": 0},
{"matrix": [0, 11], "x": 12.25, "y": 0},
{"matrix": [0, 12], "x": 13.25, "y": 0},
{"matrix": [0, 13], "x": 14.5, "y": 0},
{"matrix": [0, 14], "x": 17.25, "y": 0},
{"matrix": [0, 15], "x": 18.25, "y": 0},
{"matrix": [0, 16], "x": 19.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.25},
{"matrix": [1, 1], "x": 1, "y": 1.25},
{"matrix": [1, 2], "x": 2, "y": 1.25},
{"matrix": [1, 3], "x": 3, "y": 1.25},
{"matrix": [1, 4], "x": 4, "y": 1.25},
{"matrix": [1, 5], "x": 5, "y": 1.25},
{"matrix": [1, 6], "x": 6, "y": 1.25},
{"matrix": [1, 7], "x": 8.5, "y": 1.25},
{"matrix": [1, 8], "x": 9.5, "y": 1.25},
{"matrix": [1, 9], "x": 10.5, "y": 1.25},
{"matrix": [1, 10], "x": 11.5, "y": 1.25},
{"matrix": [1, 11], "x": 12.5, "y": 1.25},
{"matrix": [1, 12], "x": 13.5, "y": 1.25},
{"matrix": [1, 13], "x": 14.5, "y": 1.25, "w": 2},
{"matrix": [1, 14], "x": 17.25, "y": 1.25},
{"matrix": [1, 15], "x": 18.25, "y": 1.25},
{"matrix": [1, 16], "x": 19.25, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.25},
{"matrix": [2, 2], "x": 2.5, "y": 2.25},
{"matrix": [2, 3], "x": 3.5, "y": 2.25},
{"matrix": [2, 4], "x": 4.5, "y": 2.25},
{"matrix": [2, 5], "x": 5.5, "y": 2.25},
{"matrix": [2, 6], "x": 8, "y": 2.25},
{"matrix": [2, 7], "x": 9, "y": 2.25},
{"matrix": [2, 8], "x": 10, "y": 2.25},
{"matrix": [2, 9], "x": 11, "y": 2.25},
{"matrix": [2, 10], "x": 12, "y": 2.25},
{"matrix": [2, 11], "x": 13, "y": 2.25},
{"matrix": [2, 12], "x": 14, "y": 2.25},
{"matrix": [3, 13], "x": 15, "y": 2.25, "w": 1.5},
{"matrix": [2, 14], "x": 17.25, "y": 2.25},
{"matrix": [2, 15], "x": 18.25, "y": 2.25},
{"matrix": [2, 16], "x": 19.25, "y": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3.25},
{"matrix": [3, 2], "x": 2.75, "y": 3.25},
{"matrix": [3, 3], "x": 3.75, "y": 3.25},
{"matrix": [3, 4], "x": 4.75, "y": 3.25},
{"matrix": [3, 5], "x": 5.75, "y": 3.25},
{"matrix": [3, 6], "x": 8.25, "y": 3.25},
{"matrix": [3, 7], "x": 9.25, "y": 3.25},
{"matrix": [3, 8], "x": 10.25, "y": 3.25},
{"matrix": [3, 9], "x": 11.25, "y": 3.25},
{"matrix": [3, 10], "x": 12.25, "y": 3.25},
{"matrix": [3, 11], "x": 13.25, "y": 3.25},
{"matrix": [3, 12], "x": 14.25, "y": 3.25, "w": 2.25},
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.25},
{"matrix": [4, 3], "x": 3.25, "y": 4.25},
{"matrix": [4, 4], "x": 4.25, "y": 4.25},
{"matrix": [4, 5], "x": 5.25, "y": 4.25},
{"matrix": [4, 6], "x": 6.25, "y": 4.25},
{"matrix": [5, 7], "x": 7.75, "y": 4.25},
{"matrix": [4, 7], "x": 8.75, "y": 4.25},
{"matrix": [4, 8], "x": 9.75, "y": 4.25},
{"matrix": [4, 9], "x": 10.75, "y": 4.25},
{"matrix": [4, 10], "x": 11.75, "y": 4.25},
{"matrix": [4, 11], "x": 12.75, "y": 4.25},
{"matrix": [4, 12], "x": 13.75, "y": 4.25, "w": 2.75},
{"matrix": [4, 15], "x": 18.25, "y": 4.25},
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
{"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 4], "x": 3.75, "y": 5.25, "w": 1.25},
{"matrix": [5, 5], "x": 5, "y": 5.25, "w": 2.25},
{"matrix": [5, 8], "x": 7.75, "y": 5.25, "w": 2.75},
{"matrix": [5, 9], "x": 10.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 10], "x": 11.75, "y": 5.25, "w": 1.25},
{"matrix": [5, 11], "x": 13, "y": 5.25, "w": 1.25},
{"matrix": [5, 12], "x": 14.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 14], "x": 17.25, "y": 5.25},
{"matrix": [5, 15], "x": 18.25, "y": 5.25},
{"matrix": [5, 16], "x": 19.25, "y": 5.25}
]
},
"LAYOUT_tkl_iso": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.25, "y": 0},
{"matrix": [0, 2], "x": 2.25, "y": 0},
{"matrix": [0, 3], "x": 3.25, "y": 0},
{"matrix": [0, 4], "x": 4.25, "y": 0},
{"matrix": [0, 5], "x": 5.25, "y": 0},
{"matrix": [0, 6], "x": 6.25, "y": 0},
{"matrix": [0, 7], "x": 8.25, "y": 0},
{"matrix": [0, 8], "x": 9.25, "y": 0},
{"matrix": [0, 9], "x": 10.25, "y": 0},
{"matrix": [0, 10], "x": 11.25, "y": 0},
{"matrix": [0, 11], "x": 12.25, "y": 0},
{"matrix": [0, 12], "x": 13.25, "y": 0},
{"matrix": [0, 13], "x": 14.5, "y": 0},
{"matrix": [0, 14], "x": 17.25, "y": 0},
{"matrix": [0, 15], "x": 18.25, "y": 0},
{"matrix": [0, 16], "x": 19.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.25},
{"matrix": [1, 1], "x": 1, "y": 1.25},
{"matrix": [1, 2], "x": 2, "y": 1.25},
{"matrix": [1, 3], "x": 3, "y": 1.25},
{"matrix": [1, 4], "x": 4, "y": 1.25},
{"matrix": [1, 5], "x": 5, "y": 1.25},
{"matrix": [1, 6], "x": 6, "y": 1.25},
{"matrix": [1, 7], "x": 8.5, "y": 1.25},
{"matrix": [1, 8], "x": 9.5, "y": 1.25},
{"matrix": [1, 9], "x": 10.5, "y": 1.25},
{"matrix": [1, 10], "x": 11.5, "y": 1.25},
{"matrix": [1, 11], "x": 12.5, "y": 1.25},
{"matrix": [1, 12], "x": 13.5, "y": 1.25},
{"matrix": [1, 13], "x": 14.5, "y": 1.25, "w": 2},
{"matrix": [1, 14], "x": 17.25, "y": 1.25},
{"matrix": [1, 15], "x": 18.25, "y": 1.25},
{"matrix": [1, 16], "x": 19.25, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2.25},
{"matrix": [2, 2], "x": 2.5, "y": 2.25},
{"matrix": [2, 3], "x": 3.5, "y": 2.25},
{"matrix": [2, 4], "x": 4.5, "y": 2.25},
{"matrix": [2, 5], "x": 5.5, "y": 2.25},
{"matrix": [2, 6], "x": 8, "y": 2.25},
{"matrix": [2, 7], "x": 9, "y": 2.25},
{"matrix": [2, 8], "x": 10, "y": 2.25},
{"matrix": [2, 9], "x": 11, "y": 2.25},
{"matrix": [2, 10], "x": 12, "y": 2.25},
{"matrix": [2, 11], "x": 13, "y": 2.25},
{"matrix": [2, 12], "x": 14, "y": 2.25},
{"matrix": [3, 13], "x": 15.25, "y": 2.25, "w": 1.25, "h": 2},
{"matrix": [2, 14], "x": 17.25, "y": 2.25},
{"matrix": [2, 15], "x": 18.25, "y": 2.25},
{"matrix": [2, 16], "x": 19.25, "y": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3.25},
{"matrix": [3, 2], "x": 2.75, "y": 3.25},
{"matrix": [3, 3], "x": 3.75, "y": 3.25},
{"matrix": [3, 4], "x": 4.75, "y": 3.25},
{"matrix": [3, 5], "x": 5.75, "y": 3.25},
{"matrix": [3, 6], "x": 8.25, "y": 3.25},
{"matrix": [3, 7], "x": 9.25, "y": 3.25},
{"matrix": [3, 8], "x": 10.25, "y": 3.25},
{"matrix": [3, 9], "x": 11.25, "y": 3.25},
{"matrix": [3, 10], "x": 12.25, "y": 3.25},
{"matrix": [3, 11], "x": 13.25, "y": 3.25},
{"matrix": [3, 12], "x": 14.25, "y": 3.25},
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.25},
{"matrix": [4, 3], "x": 3.25, "y": 4.25},
{"matrix": [4, 4], "x": 4.25, "y": 4.25},
{"matrix": [4, 5], "x": 5.25, "y": 4.25},
{"matrix": [4, 6], "x": 6.25, "y": 4.25},
{"matrix": [5, 7], "x": 7.75, "y": 4.25},
{"matrix": [4, 7], "x": 8.75, "y": 4.25},
{"matrix": [4, 8], "x": 9.75, "y": 4.25},
{"matrix": [4, 9], "x": 10.75, "y": 4.25},
{"matrix": [4, 10], "x": 11.75, "y": 4.25},
{"matrix": [4, 11], "x": 12.75, "y": 4.25},
{"matrix": [4, 12], "x": 13.75, "y": 4.25, "w": 2.75},
{"matrix": [4, 15], "x": 18.25, "y": 4.25},
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
{"matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 4], "x": 3.75, "y": 5.25, "w": 1.25},
{"matrix": [5, 5], "x": 5, "y": 5.25, "w": 2.25},
{"matrix": [5, 8], "x": 7.75, "y": 5.25, "w": 2.75},
{"matrix": [5, 9], "x": 10.5, "y": 5.25, "w": 1.25},
{"matrix": [5, 10], "x": 11.75, "y": 5.25, "w": 1.25},
{"matrix": [5, 11], "x": 13, "y": 5.25, "w": 1.25},
{"matrix": [5, 12], "x": 14.25, "y": 5.25, "w": 1.25},
{"matrix": [5, 14], "x": 17.25, "y": 5.25},
{"matrix": [5, 15], "x": 18.25, "y": 5.25},
{"matrix": [5, 16], "x": 19.25, "y": 5.25}
]
}
}
}

View File

@@ -0,0 +1,28 @@
/* Copyright 2023 Mechlovin' Studio
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};

View File

@@ -0,0 +1,52 @@
/* Copyright 2023 Mechlovin' Studio
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, MO(2), KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@@ -0,0 +1,3 @@
# This file intentionally left blank
VIA_ENABLE = yes
LTO_ENABLE = yes

View File

@@ -0,0 +1,25 @@
# bahm/aster_ergo
The Aster Ergo PCB for the Aster Ergo keyboard (A TKL ergo keyboarđ)
* Keyboard Maintainer: [mechlovin](https://github.com/mechlovin)
* Hardware Supported: Aster Ergo PCB, APM32F103
* Hardware Availability: [GH](https://geekhack.org/index.php?topic=116962.0)
Make example for this keyboard (after setting up your build environment):
make bahm/aster_ergo:default
Flashing example for this keyboard:
make bahm/aster_ergo:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -0,0 +1 @@
# This file intentionally left blank

View File

@@ -20,10 +20,10 @@
#define EE_HANDS
/* define pins */
#define MATRIX_ROW_PINS { F6, F5, F4, B6, D3 }
#define MATRIX_COL_PINS { B5, B4, D7, D6, F0, F1, C6 }
#define MATRIX_ROW_PINS_RIGHT { D6, D7, B4, F7, E6 }
#define MATRIX_COL_PINS_RIGHT { B1, B2, B3, F1, F4, F5, F6 }
#define MATRIX_ROW_PINS { F4, F5, F6, D3, C6 }
#define MATRIX_COL_PINS { D7, B4, B5, B6, F0, D4, D6 }
#define MATRIX_ROW_PINS_RIGHT { F5, F1, B2, B1, C6 }
#define MATRIX_COL_PINS_RIGHT { B6, B5, D6, D5, D3, D7, B4 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW

View File

@@ -5,9 +5,9 @@
"maintainer": "SamuraiKek",
"debounce": 2,
"usb": {
"vid": "0xFEED",
"pid": "0x0000",
"device_version": "0.0.2"
"vid": "0x424D",
"pid": "0x4D4E",
"device_version": "1.0.0"
},
"split": {
"soft_serial_pin": "D0"
@@ -16,7 +16,7 @@
"bootloader": "atmel-dfu",
"layouts": {
"LAYOUT": {
"layout": [
"layout": [
{"label":"Esc", "x":0, "y":0.75},
{"label":"1", "x":1, "y":0.5},
{"label":"2", "x":2, "y":0.25},

View File

@@ -16,4 +16,3 @@
#pragma once
#define EE_HANDS

View File

@@ -15,13 +15,13 @@
*/
#include QMK_KEYBOARD_H
enum custom_keycodes {
_QWERTY,
_LOWER
enum custom_layers {
_QWERTY,
_LOWER
};
#define LOWER MO(_LOWER)
/*
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05,
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15,
@@ -57,7 +57,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_LCTL, KC_HOME, KC_INS, KC_DEL, KC_LGUI, KC_SPC, KC_LALT, KC_ENT, KC_BSPC, LOWER, KC_LBRC, KC_RBRC, KC_END, KC_GRV
KC_LCTL, KC_HOME, KC_INS, KC_DEL, KC_LGUI, KC_SPC, KC_LALT, KC_ENT, KC_BSPC, LOWER, KC_LBRC, KC_RBRC, KC_END, KC_GRV
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
),

View File

@@ -21,24 +21,16 @@ enum custom_layers {
_LOWER,
_UPPER,
_MOUSE,
_MEDIA,
_MEDIA,
};
#define MD_SPC MT(MOD_LSFT, KC_SPC)
#define MD_ENT MT(MOD_RALT, KC_ENT)
#define LT_SPC LT(_LOWER, KC_SPC)
enum custom_keycodes {
QWERTY = SAFE_RANGE,
LOWER,
UPPER,
MOUSE,
MEDIA,
KC_CTB,
KC_CSTB,
KC_QUIT,
KC_CTLW,
KC_CTLT,
KC_CST
MEDIA
};
/*
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05,
@@ -75,7 +67,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
UPPER, KC_HOME, MOUSE, KC_RALT, KC_LCTL, MD_SPC, KC_LALT, KC_ENT, KC_BSPC, LOWER, KC_DEL, KC_INS, KC_END, MEDIA
TG(MOUSE), KC_HOME, MO(UPPER),KC_RALT, KC_LCTL, MD_SPC, KC_LALT, KC_ENT, KC_BSPC, MO(LOWER), KC_DEL, KC_INS, KC_END, MO(MEDIA)
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
),
@@ -85,7 +77,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_LBRC, KC_RBRC, KC_F12,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______,
_______, _______, KC_LCTL, KC_RCTL, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
@@ -111,9 +103,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_CAPS, KC_WH_U, KC_MS_U, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, KC_BTN3,
_______, KC_NUM, KC_BTN3, KC_BTN2, KC_BTN1, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN2, KC_BTN3,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN2, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
@@ -136,88 +128,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
)
};
// Automatically sets the numlock on at startup
void led_set_keymap(uint8_t usb_led) {
if (!(usb_led & (1<<USB_LED_NUM_LOCK))) {
tap_code(KC_NUM_LOCK);
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case QWERTY:
if (record->event.pressed) {
set_single_persistent_default_layer(_QWERTY);
}
return false;
case LOWER:
if (record->event.pressed) {
layer_on(_LOWER);
} else {
layer_off(_LOWER);
}
return false;
case UPPER:
if(record->event.pressed) {
layer_on(_UPPER);
} else {
layer_off(_UPPER);
}
return false;
case MOUSE:
if (record->event.pressed) {
layer_on(_MOUSE);
} else {
layer_off(_MOUSE);
}
return false;
case MEDIA:
if(record->event.pressed) {
layer_on(_MEDIA);
} else {
layer_off(_MEDIA);
}
return false;
case KC_CTB:
if(record->event.pressed) {
tap_code16(C(KC_TAB));
}
return false;
case KC_CSTB:
if(record->event.pressed) {
tap_code16(C(S(KC_TAB)));
}
return false;
case KC_QUIT:
if(record->event.pressed) {
tap_code16(A(KC_F4));
}
return false;
case KC_CTLW:
if(record->event.pressed) {
tap_code16(C(KC_W));
}
return false;
case KC_CTLT:
if(record->event.pressed) {
tap_code16(C(KC_T));
}
return false;
case KC_CST:
if(record->event.pressed) {
tap_code16(C(S(KC_T)));
}
return false;
case KC_ENT:
if(record->event.pressed) {
if(get_mods() & MOD_BIT(KC_LSFT)){
tap_code(KC_SPC);
}
else {
tap_code(KC_ENT);
}
}
return false;
}
return true;
//nano to manibus communcation
bool led_update_user(led_t state) {
if (state.caps_lock != layer_state_is(_MOUSE)) {
layer_invert(_MOUSE);
}
return true;
}

View File

@@ -0,0 +1,76 @@
/* Copyright 2021 SamuraiKek
*
* 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 custom_layers {
_QWERTY,
_FN1
};
#define FN1 MO(_FN1)
/*
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05,
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15,
L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25,
L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35,
L40, L41, L42, L43, L44, L45, L46, R40, R41, R42, R43, R44, R45, R46,
[_UNIVERSAL] = LAYOUT(
// ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
)
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
// ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_EQL,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
KC_LCTL, KC_HOME, KC_INS, KC_DEL, KC_LGUI, KC_SPC, KC_LALT, KC_ENT, KC_BSPC, FN1, KC_LBRC, KC_RBRC, KC_END, KC_GRV
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
),
[_FN1] = LAYOUT(
// ┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, QK_BOOT, _______, _______, _______, KC_UP, _______, KC_MPLY, KC_F12,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT,KC_VOLD, KC_VOLU,
// ├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_MPRV, KC_MNXT, _______, _______,
// ├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
_______, KC_PGUP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGDN, _______
// └────────┴────────┴────────┴────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┴────────┴────────┴────────┘
)
};

View File

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

14
keyboards/budgy/config.h Normal file
View File

@@ -0,0 +1,14 @@
// Copyright 2022 KeyboardDweebs (@doesntfazer)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
#define SERIAL_USART_FULL_DUPLEX
#define SERIAL_USART_TX_PIN GP1
#define SERIAL_USART_RX_PIN GP0
// #define SERIAL_USART_PIN_SWAP

81
keyboards/budgy/info.json Normal file
View File

@@ -0,0 +1,81 @@
{
"manufacturer": "KeyboardDweebs",
"keyboard_name": "budgy",
"maintainer": "doesntfazer",
"bootloader": "rp2040",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"processor": "RP2040",
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0117",
"vid": "0xFABE"
},
"matrix_pins": {
"direct": [
["GP6", "GP5", "GP4", "GP3", "GP2"],
["GP11", "GP10", "GP9", "GP8", "GP7"],
["GP15", "GP14", "GP13", "GP12", "GP16"],
["GP17", "GP18", null, null, null]
]
},
"split": {
"matrix_pins": {
"right": {
"direct": [
["GP2", "GP3", "GP4", "GP5", "GP6"],
["GP7", "GP8", "GP9", "GP10", "GP11"],
["GP16", "GP12", "GP13", "GP14", "GP15"],
["GP18", "GP17", null, null, null]
]
}
}
},
"layouts": {
"LAYOUT_split_3x5_2": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0.25 },
{ "matrix": [0, 1], "x": 1, "y": 0.25 },
{ "matrix": [0, 2], "x": 2, "y": 0.125 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0.125 },
{ "matrix": [4, 0], "x": 8, "y": 0.25 },
{ "matrix": [4, 1], "x": 9, "y": 0.125 },
{ "matrix": [4, 2], "x": 10, "y": 0 },
{ "matrix": [4, 3], "x": 11, "y": 0.125 },
{ "matrix": [4, 4], "x": 12, "y": 0.25 },
{ "matrix": [1, 0], "x": 0, "y": 1.25 },
{ "matrix": [1, 1], "x": 1, "y": 1.25 },
{ "matrix": [1, 2], "x": 2, "y": 1.125 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [1, 4], "x": 4, "y": 1.125 },
{ "matrix": [5, 0], "x": 8, "y": 1.25 },
{ "matrix": [5, 1], "x": 9, "y": 1.125 },
{ "matrix": [5, 2], "x": 10, "y": 1 },
{ "matrix": [5, 3], "x": 11, "y": 1.125 },
{ "matrix": [5, 4], "x": 12, "y": 1.25 },
{ "matrix": [2, 0], "x": 0, "y": 2.25 },
{ "matrix": [2, 1], "x": 1, "y": 2.25 },
{ "matrix": [2, 2], "x": 2, "y": 2.125 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2.125 },
{ "matrix": [6, 0], "x": 8, "y": 2.25 },
{ "matrix": [6, 1], "x": 9, "y": 2.125 },
{ "matrix": [6, 2], "x": 10, "y": 2 },
{ "matrix": [6, 3], "x": 11, "y": 2.125 },
{ "matrix": [6, 4], "x": 12, "y": 2.25 },
{ "matrix": [3, 0], "x": 3.5, "y": 3.25 },
{ "matrix": [3, 1], "x": 4.5, "y": 3.5 },
{ "matrix": [7, 0], "x": 7.5, "y": 3.75 },
{ "matrix": [7, 1], "x": 8.5, "y": 3.5 }
]
}
}
}

View File

@@ -0,0 +1,25 @@
// Copyright 2021 Keyboard Dweebs (@doesntfazer)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
* │ 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 │ , │ . │ / │
* └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
* ┌───┐ ┌───┐
* │Bsp├───┐ ┌───┤Ent│
* └───┤Tab│ │Spc├───┘
* └───┘ └───┘
*/
[0] = LAYOUT_split_3x5_2(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
KC_BSPC, KC_TAB, KC_SPC, KC_ENT
)
};

27
keyboards/budgy/readme.md Normal file
View File

@@ -0,0 +1,27 @@
# budgy
![budgy](https://i.imgur.com/6kjxmSMh.jpeg)
34 key, diodeless, RP2040 based, budget keyboard.
* Keyboard Maintainer: [KeyboardDweebs](https://github.com/doesntfazer)
* Hardware Supported: Raspberry Pi Pico
* Hardware Availability: [Github Page](https://github.com/doesntfazer/Budgy) Buy Directly from [Keyboard Dweebs](https://keyboarddweebs.net/)
Make example for this keyboard (after setting up your build environment):
make budgy:default
Flashing example for this keyboard:
make budgy:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

2
keyboards/budgy/rules.mk Normal file
View File

@@ -0,0 +1,2 @@
SPLIT_KEYBOARD = yes
SERIAL_DRIVER = vendor

View File

@@ -0,0 +1,18 @@
// Copyright 2022 Andrew Kannan (@awkannan)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
#define BACKLIGHT_PAL_MODE 1
/* 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
#define WS2812_SPI SPID2
#define WS2812_SPI_MOSI_PAL_MODE 0
#define WS2812_SPI_SCK_PAL_MODE 0
#define WS2812_SPI_SCK_PIN B13

View File

@@ -0,0 +1,29 @@
/* Copyright 2020 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/cannonkeys/devastatingtkl/halconf.h -r platforms/chibios/common/configs/halconf.h`
*/
#pragma once
#define HAL_USE_PWM TRUE
#define HAL_USE_SPI TRUE
#include_next <halconf.h>

View File

@@ -0,0 +1,150 @@
{
"keyboard_name": "Ripple",
"manufacturer": "CannonKeys",
"url": "https://cannonkeys.com",
"maintainer": "awkannan",
"usb": {
"vid": "0xCA04",
"pid": "0x0025",
"device_version": "0.0.1"
},
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["B1", "B2", "B10", "B11", "B12", "B14", "A8", "A9", "A10", "A3", "B0", "A2", "A1", "A7", "A0", "B4", "B6", "B7"],
"rows": ["A15", "B3", "B5", "A4", "A5", "F1"]
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"backlight": true,
"rgblight": true
},
"rgblight": {
"led_count": 20,
"pin": "B15",
"hue_steps": 17,
"saturation_steps": 17,
"brightness_steps": 17,
"animations": {
"static_gradient": true,
"twinkle": true,
"rainbow_mood": true,
"rainbow_swirl": true
}
},
"backlight": {
"pin": "A6",
"levels": 15,
"breathing": true,
"breathing_period": 5
},
"indicators": {
"caps_lock": "B9",
"scroll_lock": "F0",
"on_state": 0
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1.25, "y": 0 },
{ "matrix": [0, 2], "x": 2.25, "y": 0 },
{ "matrix": [0, 3], "x": 3.25, "y": 0 },
{ "matrix": [0, 4], "x": 4.25, "y": 0 },
{ "matrix": [0, 5], "x": 5.5, "y": 0 },
{ "matrix": [0, 6], "x": 6.5, "y": 0 },
{ "matrix": [0, 7], "x": 7.5, "y": 0 },
{ "matrix": [0, 8], "x": 8.5, "y": 0 },
{ "matrix": [0, 9], "x": 9.75, "y": 0 },
{ "matrix": [0, 10], "x": 10.75, "y": 0 },
{ "matrix": [0, 11], "x": 11.75, "y": 0 },
{ "matrix": [0, 12], "x": 12.75, "y": 0 },
{ "matrix": [0, 14], "x": 14, "y": 0 },
{ "matrix": [0, 15], "x": 15.25, "y": 0 },
{ "matrix": [0, 16], "x": 16.25, "y": 0 },
{ "matrix": [0, 17], "x": 17.25, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1.25 },
{ "matrix": [1, 1], "x": 1, "y": 1.25 },
{ "matrix": [1, 2], "x": 2, "y": 1.25 },
{ "matrix": [1, 3], "x": 3, "y": 1.25 },
{ "matrix": [1, 4], "x": 4, "y": 1.25 },
{ "matrix": [1, 5], "x": 5, "y": 1.25 },
{ "matrix": [1, 6], "x": 6, "y": 1.25 },
{ "matrix": [1, 7], "x": 7, "y": 1.25 },
{ "matrix": [1, 8], "x": 8, "y": 1.25 },
{ "matrix": [1, 9], "x": 9, "y": 1.25 },
{ "matrix": [1, 10], "x": 10, "y": 1.25 },
{ "matrix": [1, 11], "x": 11, "y": 1.25 },
{ "matrix": [1, 12], "x": 12, "y": 1.25 },
{ "matrix": [1, 13], "x": 13, "y": 1.25 },
{ "matrix": [1, 14], "x": 14, "y": 1.25 },
{ "matrix": [1, 15], "x": 15.25, "y": 1.25 },
{ "matrix": [1, 16], "x": 16.25, "y": 1.25 },
{ "matrix": [1, 17], "x": 17.25, "y": 1.25 },
{ "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.25 },
{ "matrix": [2, 1], "x": 1.5, "y": 2.25 },
{ "matrix": [2, 2], "x": 2.5, "y": 2.25 },
{ "matrix": [2, 3], "x": 3.5, "y": 2.25 },
{ "matrix": [2, 4], "x": 4.5, "y": 2.25 },
{ "matrix": [2, 5], "x": 5.5, "y": 2.25 },
{ "matrix": [2, 6], "x": 6.5, "y": 2.25 },
{ "matrix": [2, 7], "x": 7.5, "y": 2.25 },
{ "matrix": [2, 8], "x": 8.5, "y": 2.25 },
{ "matrix": [2, 9], "x": 9.5, "y": 2.25 },
{ "matrix": [2, 10], "x": 10.5, "y": 2.25 },
{ "matrix": [2, 11], "x": 11.5, "y": 2.25 },
{ "matrix": [2, 12], "x": 12.5, "y": 2.25 },
{ "matrix": [2, 14], "w": 1.5, "x": 13.5, "y": 2.25 },
{ "matrix": [2, 15], "x": 15.25, "y": 2.25 },
{ "matrix": [2, 16], "x": 16.25, "y": 2.25 },
{ "matrix": [2, 17], "x": 17.25, "y": 2.25 },
{ "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.25 },
{ "matrix": [3, 1], "x": 1.75, "y": 3.25 },
{ "matrix": [3, 2], "x": 2.75, "y": 3.25 },
{ "matrix": [3, 3], "x": 3.75, "y": 3.25 },
{ "matrix": [3, 4], "x": 4.75, "y": 3.25 },
{ "matrix": [3, 5], "x": 5.75, "y": 3.25 },
{ "matrix": [3, 6], "x": 6.75, "y": 3.25 },
{ "matrix": [3, 7], "x": 7.75, "y": 3.25 },
{ "matrix": [3, 8], "x": 8.75, "y": 3.25 },
{ "matrix": [3, 9], "x": 9.75, "y": 3.25 },
{ "matrix": [3, 10], "x": 10.75, "y": 3.25 },
{ "matrix": [3, 11], "x": 11.75, "y": 3.25 },
{ "matrix": [3, 12], "x": 12.75, "y": 3.25 },
{ "matrix": [3, 14], "w": 1.25, "x": 13.75, "y": 3.25 },
{ "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.25 },
{ "matrix": [4, 1], "x": 1.25, "y": 4.25 },
{ "matrix": [4, 2], "x": 2.25, "y": 4.25 },
{ "matrix": [4, 3], "x": 3.25, "y": 4.25 },
{ "matrix": [4, 4], "x": 4.25, "y": 4.25 },
{ "matrix": [4, 5], "x": 5.25, "y": 4.25 },
{ "matrix": [4, 6], "x": 6.25, "y": 4.25 },
{ "matrix": [4, 7], "x": 7.25, "y": 4.25 },
{ "matrix": [4, 8], "x": 8.25, "y": 4.25 },
{ "matrix": [4, 9], "x": 9.25, "y": 4.25 },
{ "matrix": [4, 10], "x": 10.25, "y": 4.25 },
{ "matrix": [4, 11], "x": 11.25, "y": 4.25 },
{ "matrix": [4, 12], "w": 1.75, "x": 12.25, "y": 4.25 },
{ "matrix": [4, 14], "x": 14, "y": 4.25 },
{ "matrix": [4, 16], "x": 16.25, "y": 4.25 },
{ "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.25 },
{ "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.25 },
{ "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.25 },
{ "matrix": [5, 6], "w": 6.25, "x": 3.75, "y": 5.25 },
{ "matrix": [5, 10], "w": 1.25, "x": 10, "y": 5.25 },
{ "matrix": [5, 11], "w": 1.25, "x": 11.25, "y": 5.25 },
{ "matrix": [5, 12], "w": 1.25, "x": 12.5, "y": 5.25 },
{ "matrix": [5, 14], "w": 1.25, "x": 13.75, "y": 5.25 },
{ "matrix": [5, 15], "x": 15.25, "y": 5.25 },
{ "matrix": [5, 16], "x": 16.25, "y": 5.25 },
{ "matrix": [5, 17], "x": 17.25, "y": 5.25 }
]
}
}
}

View File

@@ -0,0 +1,41 @@
/*
Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN1
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[_FN1] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, BL_TOGG, BL_DOWN, BL_UP,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View File

@@ -0,0 +1,59 @@
/*
Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN1,
_FN2,
_FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_MPLY, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[_FN1] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, KC_TRNS, BL_TOGG, BL_DOWN, BL_UP,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_FN2] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
[_FN3] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
};

View File

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

View File

@@ -0,0 +1,31 @@
/* Copyright 2020 QMK
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/cannonkeys/devastatingtkl/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
*/
#pragma once
#include_next <mcuconf.h>
#undef STM32_PWM_USE_TIM3
#define STM32_PWM_USE_TIM3 TRUE
#undef STM32_SPI_USE_SPI2
#define STM32_SPI_USE_SPI2 TRUE

Some files were not shown because too many files have changed in this diff Show More