Compare commits

...

173 Commits

Author SHA1 Message Date
Thomas Haukland
2f48cd135c Blacktyl miryoku 2023-07-24 22:43:59 +02:00
Manna Harbour
e1307cc3a7 [miryoku-github] Squashed local commits from previous miryoku branch
- Squashed local commits from previous miryoku branch
- Update actions/upload-artifact in workflow
- Add choice to Build Inputs workflow for alternative layout options
  - Add Test Inputs workflow with all text fields for matrix builds
- Fix make git-submodule in workflow
- Fix merge in workflow (#16)
2023-05-06 18:10:06 +10:00
Manna Harbour
aebc99a4e0 [miryoku-github] Delete .github/ and readme.md 2023-05-06 18:06:09 +10: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
Pablo Martínez
15a106b1ef [Bugfix] Check QGF's bpp against display's native_bits_per_pixel (#19995) 2023-04-03 12:42:46 +10:00
andi4000
ac9f9f9efb ISO-DE Keymap for Dactyl Manuform 6x7 (#19441) 2023-04-03 10:06:40 +10:00
Woongbin Kang
ec83c0b185 Add recommendations for VSCode intellisense (#19402) 2023-04-03 10:05:48 +10:00
HorrorTroll
d300811009 Add user horrortroll in userspace (#19769) 2023-04-03 08:24:04 +10:00
Jay Greco
27e6e27d3a [Keyboard] Add nullbits SNAP keyboard (#18916)
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-04-02 12:12:06 -07:00
Moritz Plattner
5687fc7646 Add support for Geistmaschine Macropod (#20116)
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
2023-04-02 12:02:20 -06:00
Travis Reed
ebe36ea83c [Keymap] Add dancxjo hotdox76v2 keymap (#20016) 2023-04-02 12:01:06 -06:00
cttt
6b205c3064 [Keyboard] Add Erdnuss 65 (#20202)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-02 11:55:20 -06:00
butterkeebs
b5d0c44690 [Keyboard] Add pocketpad (#20229)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-02 11:50:14 -06:00
Thomaz Peres
d0e0b9e583 [Keyboard] Add Royal Kludge RKG-68 (#20138) 2023-04-02 11:49:05 -06:00
mechlovin
b0dc99fbd8 [Keyboard] Add Mechlovin9 rev.3 (#20119)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-04-02 11:47:07 -06:00
Raphael Mangubat
5b8dae0d61 Enable encoder mapping in VIA for Keebio KBO-5000 (#20272) 2023-04-02 11:23:26 -06:00
Vertex-kb
fd56a2a1dc Add angle65 (#19986)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-04-02 11:08:53 -06:00
Alexander Kagno
be9f6e679b [Keymap] update arkag keymap, add hitbox layout (#20271)
Co-authored-by: Alex Kagno <alex@turncommerce.com>
2023-04-02 01:57:54 -07:00
Cameron Varley
b53356f7ab [Keyboard] Add GMMK Numpad (#20067)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-02 01:34:54 -07:00
Albert Y
c402bac023 [Keymap] Ferris - Add split USB detection directive (#20213) 2023-04-02 01:28:00 -07:00
Shane Dowling
a030e8094f [Keymap] Add md40 ckrbd keymap (#19931)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-04-02 01:27:04 -07:00
Nick Brassel
c3c401f91d [QP] Fix up delta frame boundaries (#20296) 2023-03-31 08:41:11 +11:00
Alejandro Chacón
b63e388692 [Keyboard update] Fix json error (#20299) 2023-03-30 18:25:42 +01:00
Nick Brassel
81f3f0f3e9 Revert to hex output for kint41 (#20295) 2023-03-30 01:41:36 +01:00
Maverick0197
d0c36a7683 [Keyboard] Add KeyDeck8 (#20107)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-29 13:13:05 -07:00
4pplet
c6cc638752 [Keyboard] Add Steezy60 Rev B (#19688)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
Co-authored-by: yiancar <yiancar@gmail.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com>
Co-authored-by: Jue Liu <youturn@Jues-MacBook-Pro.local>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Shandon Anderson <shandon@shandon.codes>
Co-authored-by: jack <0x6A73@pm.me>
Co-authored-by: jason <jrucker2004@gmail.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-03-29 13:10:47 -07:00
Sắn
621dbdf8ee [Keyboard] Add Plaque80 (#20240)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2023-03-29 13:34:42 -06:00
Alejandro Chacón
896f38c52c [Keyboard] Add alhenkb macropad (#20123) 2023-03-29 11:47:14 -07:00
Joel Challis
f56580404d Minify content published to API (#20285) 2023-03-29 13:01:16 +01:00
Nick Brassel
5bb8f7ae84 Add ability for qmk mass-compile to build specified targets (#20294) 2023-03-29 21:26:05 +11:00
Nick Brassel
d31d1488e8 Fixup CI command failures. (#20291) 2023-03-29 16:48:57 +11:00
Nick Brassel
6bdbf77238 Add step summary output to CI builds, with failure logs. (#20288) 2023-03-29 15:55:31 +11:00
Ryan
e2630f9b40 Fix some invalid layout macros (#20256) 2023-03-29 15:51:22 +11:00
Nick Brassel
c94241d447 CI Builds: master/develop, default/via, twice daily. (#20283) 2023-03-29 12:51:39 +11:00
Joel Challis
e0b1637e15 I have zero involvement with this keyboard... (#20287) 2023-03-29 02:09:26 +01:00
takashicompany
a6b2b1ca41 Add new keyboard Tightwriter (#20136)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-03-28 10:24:53 -06:00
Albert Y
02cb5db67b Remove invalid characters (#20277) 2023-03-28 14:33:00 +01:00
blindassassin111
00c3946fbe [keyboard] Correcting info.JSON for OSAv2 (#20247) 2023-03-27 23:42:04 -06:00
Nick Brassel
3ee17cd5d3 [chore] keyboards/tzarc: Alignment with clang-format. (#20265) 2023-03-26 23:56:09 +01:00
Ryan
d6ce42ae5b Check for multiple matrix positions assigned to same key (#20039) 2023-03-24 13:46:42 +11:00
Pablo Martínez
67dae1222f [Documentation] Pointing device minor rewrite (#19641) 2023-03-23 22:35:02 +00:00
dependabot[bot]
8d0f97d110 Bump actions/stale from 7 to 8 (#20246)
Bumps [actions/stale](https://github.com/actions/stale) from 7 to 8.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/stale
  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-03-23 21:09:21 +00:00
Andrew Kannan
153bcdcd8d Add CannonKeys Bakeneko65 Hotswap ISO PCB to QMK (#20131)
* Add CannonKeys Bakeneko65 Hotswap ISO PCB to QMK

* Add 65_iso_blocker community layout support
2023-03-23 20:25:15 +00:00
blindassassin111
37ac5e68e6 [Keyboard]Viktus Minne - Topre variant (#20044)
* Adding the Viktus Minne topre pcb variant

* Update keyboards/viktus/minne_topre/readme.md

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

* Update rules.mk

* Moving layouts from *.h to info.json

* Removing minne_topre.h and updating others

* fixing *.c's

* Switch from int to void for ec_init

* Update info.json

* Update info.json

---------

Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-23 20:22:47 +00:00
blindassassin111
b035cd094b [keyboard] Correcting info.JSON for Viktus Minne (#20244) 2023-03-23 14:20:12 -06:00
Cipulot
15cb7ded76 EC ProX PCB (#20047)
* Add EC Pro X

Addition of EC Pro X PCB series.
This series comprises 2 versions:
- ANSI/ISO
- JIS

The PCBs are different and are compatible only with their respective cases.

* Moved from data driven row/col def to config def

* Added project url in info.json

* Implemented proper `LAYOUT_` changes

* Removen unnecessary `.h` includes

* Removal of `"w": 1`

* Added `DISCHARGE_TIME`

Addition of a `DISCHARGE_TIME` time. This is to ensure that the ghost capacitor  that is the row strobed for the ADC read, is fully drained and doesn't carry charges that deviates the readings.

Tested on multiple hardware and confirmed working and improving the readings, both in terms of stability and consistency for baseline noise.

* Fixed keymap error in ordering

* Update keyboards/cipulot/ec_prox/jis/readme.md

Co-authored-by: Tom Barnes <barnestom@me.com>

* Update keyboards/cipulot/ec_prox/ansi_iso/readme.md

Co-authored-by: Tom Barnes <barnestom@me.com>

* Removal of `info.json` lines as suggested

* Update to comply with `_kb` and `_user` separation

* Update keyboards/cipulot/ec_prox/jis/rules.mk

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

* Update rules.mk

---------

Co-authored-by: Tom Barnes <barnestom@me.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-23 10:09:50 +00:00
Cipulot
5428d922a5 EC 23U PCB (#20049)
* Add EC 23U PCB firmware

* Moved from data driven row/col def to config def

* Implemented proper LAYOUT_ changes

* Removed unnecessary `.h` includes

* Updated default thresholds

* Added `DISCHARGE_TIME`

Addition of a `DISCHARGE_TIME` time. This is to ensure that the ghost capacitor  that is the row strobed for the ADC read, is fully drained and doesn't carry charges that deviates the readings.

Tested on multiple hardware and confirmed working and improving the readings, both in terms of stability and consistency for baseline noise.

* Update readme.md

Added missing `cipulot/` in example commands.

* Removal of `info.json` lines as suggested

* Update to comply with `_kb` and `_user` separation

* Update rules.mk
2023-03-23 10:06:38 +00:00
Cipulot
3303f7ea5d EC 60 PCB (#20050)
* Add EC 60 PCB firmware

* Moved from data driven row/col def to config def

* Implemented proper LAYOUT_ changes

* Removed unnecessary `.h` includes

* Added `DISCHARGE_TIME`

Addition of a `DISCHARGE_TIME` time. This is to ensure that the ghost capacitor  that is the row strobed for the ADC read, is fully drained and doesn't carry charges that deviates the readings.

Tested on multiple hardware and confirmed working and improving the readings, both in terms of stability and consistency for baseline noise.

* Update readme.md

Added missing `cipulot/`in readme example commands

* Update keyboards/cipulot/ec_60/readme.md

Co-authored-by: Tom Barnes <barnestom@me.com>

* Removal of `info.json` lines as suggested

* Update to comply with `_kb` and `_user` separation

* Update keyboards/cipulot/ec_60/rules.mk

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

---------

Co-authored-by: Tom Barnes <barnestom@me.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-23 10:05:49 +00:00
Less/Rikki
bb4abc8a9f [jacky_studio/piggy60] warn about incompatible PCB rev (#20232) 2023-03-23 19:18:30 +11:00
spbgzh
0e4221fdf7 [Keyboard] Fix tata80 wkl layout (#20195) 2023-03-23 00:12:38 -07:00
SHVD3x
4f374640d0 [Keyboard] Ymd09 config updates (#20124)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-22 23:52:31 -07:00
Moritz Plattner
e624ce959a [Keyboard] Add Geistmaschine Geist (#20117)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-03-22 22:09:33 -07:00
jotix
8cd78b392f [Keyboard] Add via support for jotanck keyboard (#20146)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-22 21:38:35 -07:00
Less/Rikki
5ace174cd3 fixup: correct filename (#20212) 2023-03-21 23:23:21 +00:00
Jason Hazel
b1e6b3798a Adding Bad Wings Support (#20153) 2023-03-21 20:53:06 +00:00
spbgzh
0bb9eada83 [Keyboard] update creek70 change rgb num (#20196)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-21 12:07:47 -07:00
Ning
ac75242132 [Keyboard] Add tiny board 16 rgb keyboard (#20158)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-21 11:20:25 -07:00
mechlovin
650a0b8ad4 [Keyboard] Olly Orion: Disable SWD and JTAG (#20169)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-03-21 01:17:24 -07:00
blindassassin111
0f07fcc8d4 [Keyboard] OSAv2 (#20166) 2023-03-21 01:12:21 -07:00
hulahermit
b6a636d954 [Keyboard] Add pteropus keyboard (#20147)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Chi-Han Yang <chyang@enrichtx.com>
2023-03-20 23:44:56 -07:00
Andrew Kannan
44cd8a2f88 [Keyboard] Add CannonKeys Bakeneko60 ISO Hotswap PCB (#20130) 2023-03-20 23:20:30 -07:00
Tobias Minn
f55d2cd6b6 [Keyboard] Add Kuro65 keyboard (#20122)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-03-20 22:30:21 -07:00
Sid Quinsaat
63af5cd50e [Keymap] for sharkby7e (#20121)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-03-20 22:28:54 -07:00
Agent Blu, 006
8bb7d24fba [Keyboard] Add Blu vimclutch (#20060)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-20 20:13:27 -07:00
Laneware
50b12ece13 Update lpad info.json (#20184)
Update incorrect row and col pins, now confirmed working via manual build in QMK MSYS
2023-03-19 23:19:28 +00:00
QMK Bot
c5b0e3a6a3 Format code according to conventions (#20175) 2023-03-18 18:15:26 +00:00
jack
a1a5dd6ddd Fixup kbdfans/tiger80 RGB animations (#20164) 2023-03-18 11:38:24 -06:00
Laneware
da52450152 Add Support for LPAD (#19852)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-18 11:33:20 -06:00
Dam Vu Duy
7b9d471ba0 [Keyboard] Add Coban Pad 3A (#19634) 2023-03-18 11:32:29 -06:00
toinux
319da117b7 [Keymap] crkbd toinux update (#19673) 2023-03-18 11:26:42 -06:00
Nick Brassel
f8e89a1fe4 De-parallelise CI (#20171)
* De-parallelise CI

No speed increase.

* Update .github/workflows/ci_builds.yml
2023-03-18 15:58:51 +00:00
JX
e437560144 [Keyboard] Add yandrstudio/transition80 (#19790)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-17 10:14:21 -07:00
Fabien
d026803147 [Keyboard] Fix typos in readme for Lily58 R2G (#20149) 2023-03-17 10:27:39 -06:00
blindassassin111
687b7341ed [keyboard] Viktus Minne (#19977)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-17 10:26:52 -06:00
ziptyze
0f323a45ce [Keyboard] 1upkeyboards/pi40 update (#20066) 2023-03-17 10:07:26 -06:00
Nick Brassel
1b3f7fcf7d Add qmk find command, reuse logic for qmk mass-compile. (#20139) 2023-03-16 20:35:49 +00:00
ToffeeStudio
f3f634ef67 [Keyboard] Add Blueberry (#19915)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-03-16 11:11:58 -06:00
Kyle McCreery
b2ee950d9e [Keymap] Sugarglider VIA keymap enhancement (#20140) 2023-03-16 09:58:49 -06:00
lalalademaxiya1
2f7a06cf73 Update keychron_common.c (#20055) 2023-03-16 12:30:09 +11:00
Joel Challis
7654c2a23b Update keycodes_0.0.1_basic.hjson (#20129) 2023-03-16 00:37:58 +00:00
しぐれ
012fa6dd45 [Doc] Add example to keyboard housekeeping and some minor fixes (#19968)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-03-15 16:55:18 -06:00
mjbogusz
54dca8cbff [Keyboard] Add Atlantis PS17 (#19952) 2023-03-15 14:30:29 -06:00
dztech
3eb04fee87 add tiger80 iso layout support (#19975)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-03-15 10:53:28 -06:00
Josh Hinnebusch
0996bca9e9 [Keyboard] Add hineybush/h87_g2 (#20053)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-03-15 10:43:06 -06:00
Conor Burns
c18d5ebd2d add new board: splaytoraid (#20052)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-03-15 15:53:02 +00:00
Kyle McCreery
915d7a18d7 [Keyboard] New Keyboard - Sugar Glider (#19933)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-03-15 15:49:14 +00:00
Nick Brassel
e62fc866db Let's use workflows to parallelise the builds. (#20120)
* Let's use workflows to parallelise the builds.

* Nofail if files aren't present.

* Formatting.
2023-03-15 08:31:10 +11:00
d-floe
c91296f001 [Keyboard] Add KP60 (#20096)
Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-03-14 12:56:31 -07:00
Sophie Machen
99a39a1198 Update newbs_getting_started to include instructions for apple silicon (#19579)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-03-14 12:58:08 -04:00
Cipulot
4283e69ac7 RF R1 8-9Xu PCB (#20048)
Co-authored-by: Tom Barnes <barnestom@me.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-03-14 07:41:06 +00:00
Albert Y
a71e58270c Document Autocorrect callback functions (#20115) 2023-03-13 13:34:23 -06:00
Albert Y
e0bd6fac10 Move Ferris Sweep to data-driven (#20111) 2023-03-12 23:33:31 -06:00
1043 changed files with 56482 additions and 7946 deletions

1
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1 @@
github: [manna-harbour]

View File

@@ -1,41 +0,0 @@
name: Bug report
description: Create a report to help us improve QMK Firmware.
title: "[Bug] "
labels: ["bug", "help wanted"]
body:
- type: markdown
attributes:
value: |
Provide a general summary of the bug in the title above.
- type: textarea
attributes:
label: Describe the Bug
description: A clear and concise description of what the bug is.
- type: input
attributes:
label: Keyboard Used
description: The name of the keyboard from the `make` or `qmk compile`/`qmk flash` commands, eg. `planck/rev6`.
- type: input
attributes:
label: Link to product page (if applicable)
- type: input
attributes:
label: Operating System
- type: textarea
attributes:
label: qmk doctor Output
description: Output from running the `qmk doctor` command.
render: text
- type: checkboxes
attributes:
label: Is AutoHotKey / Karabiner installed
options:
- label: AutoHotKey (Windows)
- label: Karabiner (macOS)
- type: input
attributes:
label: Other keyboard-related software installed
- type: textarea
attributes:
label: Additional Context
description: Add any other relevant information about the problem here.

View File

@@ -1,8 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: QMK Discord
url: https://discord.gg/Uq7gcHh
about: Ask questions, discuss issues and features. Chill.
- name: OLKB Subreddit
url: https://www.reddit.com/r/olkb
about: All things OLKB and QMK.

View File

@@ -1,24 +0,0 @@
name: Feature request
description: Suggest a new feature or changes to existing features.
title: "[Feature Request] "
labels: ["enhancement", "help wanted"]
body:
- type: markdown
attributes:
value: |
Provide a general summary of the changes you want in the title above.
Please refrain from asking maintainers to add support for specific keyboards -- it is unlikely they will have hardware available, and will not be able to help.
Your best bet is to take the initiative, add support, then submit a PR yourself.
- type: checkboxes
attributes:
label: Feature Request Type
options:
- label: Core functionality
- label: Add-on hardware support (eg. audio, RGB, OLED screen, etc.)
- label: Alteration (enhancement/optimization) of existing feature(s)
- label: New behavior
- type: textarea
attributes:
label: Description
description: A few sentences describing what it is that you'd like to see in QMK. Additional information (such as links to spec sheets, licensing info, other related issues or PRs, etc) would be helpful.

View File

@@ -1,19 +0,0 @@
name: Other issues
description: Anything else that doesn't fall into the above categories.
labels: ["help wanted", "question"]
body:
- type: markdown
attributes:
value: |
Provide a general summary of the changes you want in the title above.
- type: markdown
attributes:
value: |
Please check [https://docs.qmk.fm/#/support](https://docs.qmk.fm/#/support) for additional resources first. If that doesn't answer your question, choose the bug report template instead, as that may be more appropriate.
Please refrain from asking maintainers to add support for specific keyboards -- it is unlikely they will have hardware available, and will not be able to help.
Your best bet is to take the initiative, add support, then submit a PR yourself.
- type: textarea
attributes:
label: Issue Description
description: Describe your issue in as much detail as possible.

View File

@@ -1,11 +0,0 @@
---
name: Blank issue
about: If you're 100% sure that you don't need one of the other issue templates, use
this one instead.
title: ''
labels: help wanted, question
assignees: ''
---

View File

@@ -1,35 +0,0 @@
<!--- Provide a general summary of your changes in the title above. -->
<!--- This template is entirely optional and can be removed, but is here to help both you and us. -->
<!--- Anything on lines wrapped in comments like these will not show up in the final text. -->
## Description
<!--- Describe your changes in detail here. -->
## Types of Changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply. -->
- [ ] Core
- [ ] Bugfix
- [ ] New feature
- [ ] Enhancement/optimization
- [ ] Keyboard (addition or update)
- [ ] Keymap/layout/userspace (addition or update)
- [ ] Documentation
## Issues Fixed or Closed by This PR
*
## Checklist
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!--- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] My code follows the code style of this project: [**C**](https://docs.qmk.fm/#/coding_conventions_c), [**Python**](https://docs.qmk.fm/#/coding_conventions_python)
- [ ] I have read the [**PR Checklist** document](https://docs.qmk.fm/#/pr_checklist) and have made the appropriate changes.
- [ ] My change requires a change to the documentation.
- [ ] I have updated the documentation accordingly.
- [ ] I have read the [**CONTRIBUTING** document](https://docs.qmk.fm/#/contributing).
- [ ] I have added tests to cover my changes.
- [ ] I have tested the changes and verified that they work and don't break anything (as well as I can manage).

View File

@@ -1,9 +0,0 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
labels: CI
reviewers:
- "qmk/collaborators"
schedule:
interval: "daily"

42
.github/labeler.yml vendored
View File

@@ -1,42 +0,0 @@
core:
- quantum/**/*
- tmk_core/**/*
- drivers/**/*
- tests/**/*
- util/**/*
- platforms/**/*
- builddefs/**/*
- Makefile
- '*.mk'
dependencies:
- any:
- 'lib/**/*'
- '!lib/python/**/*'
keyboard:
- any:
- 'keyboards/**/*'
- '!keyboards/**/keymaps/**/*'
keymap:
- users/**/*
- layouts/**/*
- keyboards/**/keymaps/**/*
via:
- keyboards/**/keymaps/via/*
cli:
- requirements.txt
- lib/python/**/*
python:
- '**/*.py'
documentation:
- docs/**/*
translation:
- docs/fr-fr/**/*
- docs/es/**/*
- docs/ja/**/*
- docs/he-il/**/*
- docs/pt-br/**/*
- docs/zh-cn/**/*
- docs/de/**/*
- docs/ru-ru/**/*
CI:
- .github/**/*

View File

@@ -1,50 +0,0 @@
name: Update API Data
permissions:
contents: read
on:
push:
branches:
- master
- develop
paths:
- 'keyboards/**'
- 'layouts/community/**'
- 'lib/python/**'
- 'data/**'
- '.github/workflows/api.yml'
workflow_dispatch:
jobs:
api_data:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
# protect against those who work in their fork on 'important' branches
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
persist-credentials: false
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
- name: Generate API Data
run: |
qmk generate-api
- name: Upload API Data
uses: jakejarvis/s3-sync-action@master
with:
args: --acl public-read --follow-symlinks --delete
env:
AWS_S3_BUCKET: ${{ github.ref == 'refs/heads/develop' && secrets['API_SPACE_DEVELOP'] || secrets['API_SPACE_MASTER'] }}
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_KEY }}
AWS_S3_ENDPOINT: https://nyc3.digitaloceanspaces.com
SOURCE_DIR: '.build/api_data'

View File

@@ -1,20 +0,0 @@
name: Automatic Approve
permissions: {}
on:
schedule:
- cron: "*/5 * * * *"
jobs:
automatic_approve:
runs-on: ubuntu-latest
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: mheap/automatic-approve-action@v1
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
workflows: "format.yml,lint.yml,unit_test.yml"
dangerous_files: "lib/python/,Makefile,paths.mk,builddefs/"

View File

@@ -1,37 +0,0 @@
name: Essential files modified
permissions:
contents: write
on:
push:
branches:
- master
paths:
- builddefs/**/*
- drivers/**/*
- platforms/**/*
- quantum/**/*
- tests/**/*
- tmk_core/**/*
- util/**/*
- Makefile
- '*.mk'
jobs:
tag:
runs-on: ubuntu-latest
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Bump version and push tag
uses: anothrNick/github-tag-action@1.61.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_BUMP: 'patch'

View File

@@ -0,0 +1,11 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Build Example contra'
on:
- workflow_dispatch
jobs:
build:
uses: ./.github/workflows/main.yml
with:
keyboard: '["contra"]'

View File

@@ -0,0 +1,11 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Build Example crkbd'
on:
- workflow_dispatch
jobs:
build:
uses: ./.github/workflows/main.yml
with:
keyboard: '["crkbd"]'

View File

@@ -0,0 +1,11 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Build Example ergodox_ez'
on:
- workflow_dispatch
jobs:
build:
uses: ./.github/workflows/main.yml
with:
keyboard: '["ergodox_ez"]'

View File

@@ -0,0 +1,11 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Build Example keebio/levinson'
on:
- workflow_dispatch
jobs:
build:
uses: ./.github/workflows/main.yml
with:
keyboard: '["keebio/levinson"]'

View File

@@ -0,0 +1,11 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Build Example planck/rev6'
on:
- workflow_dispatch
jobs:
build:
uses: ./.github/workflows/main.yml
with:
keyboard: '["planck/rev6"]'

12
.github/workflows/build-example-xmk.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# Copyright 2022 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Build Example 𝑥MK'
on:
- workflow_dispatch
jobs:
build:
uses: ./.github/workflows/main.yml
with:
keyboard: '["converter/xmk"]'
merge: '["manna-harbour/qmk_firmware/xmk"]'

113
.github/workflows/build-inputs.yml vendored Normal file
View File

@@ -0,0 +1,113 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Build Inputs'
on:
workflow_dispatch:
inputs:
keyboard:
description: 'Keyboard'
required: true
alphas:
description: 'Miryoku Alphas'
required: false
default: 'default'
type: choice
options:
- "default"
- "AZERTY"
- "BEAKL15"
- "Colemak"
- "ColemakDHK"
- "Dvorak"
- "Halmak"
- "QWERTY"
- "QWERTZ"
- "Workman"
nav:
description: 'Miryoku Nav'
required: false
default: 'default'
type: choice
options:
- "default"
- "invertedT"
- "vi"
clipboard:
description: 'Miryoku Clipboard'
required: false
default: 'default'
type: choice
options:
- "default"
- "fun"
- "Mac"
- "Win"
layers:
description: 'Miryoku Layers'
required: false
default: 'default'
type: choice
options:
- "default"
- "flip"
mapping:
description: 'Miryoku Mapping'
required: false
default: 'default'
rules:
description: 'custom_rules.mk'
required: false
default: 'default'
custom_config:
description: 'custom_config.h'
required: false
default: 'default'
merge:
description: 'Merge QMK Branches'
required: false
default: 'default'
jobs:
process-inputs:
runs-on: ubuntu-latest
outputs:
keyboard: ${{ steps.process-inputs.outputs.keyboard }}
alphas: ${{ steps.process-inputs.outputs.alphas }}
nav: ${{ steps.process-inputs.outputs.nav }}
clipboard: ${{ steps.process-inputs.outputs.clipboard }}
layers: ${{ steps.process-inputs.outputs.layers }}
mapping: ${{ steps.process-inputs.outputs.mapping }}
rules: ${{ steps.process-inputs.outputs.rules }}
custom_config: ${{ steps.process-inputs.outputs.custom_config }}
merge: ${{ steps.process-inputs.outputs.merge }}
steps:
- name: Process inputs
id: process-inputs
run: |
set-output()
{
json=`echo "$2" | jq -cnR 'inputs | split(",";"")'`
echo "$1=$json" >> $GITHUB_OUTPUT
}
set-output "keyboard" "${{ github.event.inputs.keyboard }}"
set-output "alphas" "${{ github.event.inputs.alphas }}"
set-output "nav" "${{ github.event.inputs.nav }}"
set-output "clipboard" "${{ github.event.inputs.clipboard }}"
set-output "layers" "${{ github.event.inputs.layers }}"
set-output "mapping" "${{ github.event.inputs.mapping }}"
set-output "rules" "${{ github.event.inputs.rules }}"
set-output "custom_config" "${{ github.event.inputs.custom_config }}"
set-output "merge" "${{ github.event.inputs.merge }}"
build:
uses: ./.github/workflows/main.yml
needs: process-inputs
with:
keyboard: ${{ needs.process-inputs.outputs.keyboard }}
alphas: ${{ needs.process-inputs.outputs.alphas }}
nav: ${{ needs.process-inputs.outputs.nav }}
clipboard: ${{ needs.process-inputs.outputs.clipboard }}
layers: ${{ needs.process-inputs.outputs.layers }}
mapping: ${{ needs.process-inputs.outputs.mapping }}
rules: ${{ needs.process-inputs.outputs.rules }}
custom_config: ${{ needs.process-inputs.outputs.custom_config }}
merge: ${{ needs.process-inputs.outputs.merge }}

View File

@@ -1,40 +0,0 @@
name: CI Builds
permissions:
contents: read
on:
push:
branches:
- master
- develop
jobs:
ci_builds:
name: "CI Build"
runs-on: self-hosted
timeout-minutes: 1380
if: github.repository == 'qmk/qmk_firmware'
strategy:
matrix:
keymap:
- default
- via
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements.txt
- name: Run `qmk mass-compile` (keymap ${{ matrix.keymap }})
run: qmk mass-compile -j $(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) -km ${{ matrix.keymap }}

View File

@@ -1,34 +0,0 @@
name: CLI CI
permissions:
contents: read
on:
push:
branches:
- master
- develop
pull_request:
paths:
- 'lib/python/**'
- 'requirements.txt'
- '.github/workflows/cli.yml'
jobs:
test:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests
run: qmk pytest

View File

@@ -1,37 +0,0 @@
name: Update develop after master merge
permissions:
contents: write
on:
push:
branches:
- master
jobs:
develop_update:
runs-on: ubuntu-latest
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
- name: Disable automatic eol conversion
run: |
echo "* -text" > .git/info/attributes
- name: Checkout develop
run: |
git fetch origin master develop
git checkout develop
- name: Update develop from master
run: |
git config --global user.name "QMK Bot"
git config --global user.email "hello@qmk.fm"
git merge origin/master
git push origin develop

View File

@@ -1,46 +0,0 @@
name: Generate Docs
permissions:
contents: write
on:
push:
branches:
- master
paths:
- 'tmk_core/**'
- 'quantum/**'
- 'platforms/**'
- 'docs/**'
- '.github/workflows/docs.yml'
jobs:
generate:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- name: Install dependencies
run: |
apt-get update && apt-get install -y rsync nodejs npm doxygen
npm install -g moxygen
- name: Build docs
run: |
qmk --verbose generate-docs
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4.4.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BASE_BRANCH: master
BRANCH: gh-pages
FOLDER: .build/docs
GIT_CONFIG_EMAIL: hello@qmk.fm

View File

@@ -1,42 +0,0 @@
name: Update feature branches after develop merge
permissions:
contents: write
on:
push:
branches:
- develop
jobs:
feature_branch_update:
runs-on: ubuntu-latest
if: github.repository == 'qmk/qmk_firmware'
strategy:
matrix:
branch:
- xap
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
- name: Disable automatic eol conversion
run: |
echo "* -text" > .git/info/attributes
- name: Checkout branch
run: |
git fetch origin develop ${{ matrix.branch }}
git checkout ${{ matrix.branch }}
- name: Update branch from develop
run: |
git config --global user.name "QMK Bot"
git config --global user.email "hello@qmk.fm"
git merge origin/develop
git push origin ${{ matrix.branch }}

View File

@@ -1,55 +0,0 @@
name: PR Lint Format
permissions:
contents: read
on:
pull_request:
paths:
- 'drivers/**'
- 'lib/arm_atsam/**'
- 'lib/lib8tion/**'
- 'lib/python/**'
- 'platforms/**'
- 'quantum/**'
- 'tests/**'
- 'tmk_core/**'
jobs:
lint:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v35
- name: Run qmk formatters
shell: 'bash {0}'
run: |
echo '${{ steps.file_changes.outputs.added_files}}' '${{ steps.file_changes.outputs.modified_files}}' > ~/files_changed.txt
qmk format-c --core-only $(< ~/files_changed.txt) || true
qmk format-python $(< ~/files_changed.txt) || true
qmk format-text $(< ~/files_changed.txt) || true
- name: Fail when formatting required
run: |
git diff
for file in $(git diff --name-only); do
echo "File '${file}' Requires Formatting"
echo "::error file=${file}::Requires Formatting"
done
test -z "$(git diff --name-only)"

View File

@@ -1,59 +0,0 @@
name: Lint Format
permissions:
contents: read
on:
push:
branches:
- master
- develop
jobs:
lint:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Disable automatic eol conversion
run: |
echo "* -text" > .git/info/attributes
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
- name: Run qmk formatters
shell: 'bash {0}'
run: |
qmk format-c -a
qmk format-python -a
qmk format-text -a
git diff
- uses: rlespinasse/github-slug-action@v3.x
- name: Become QMK Bot
run: |
git config user.name 'QMK Bot'
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
delete-branch: true
branch: bugfix/format_${{ env.GITHUB_REF_SLUG }}
author: QMK Bot <hello@qmk.fm>
committer: QMK Bot <hello@qmk.fm>
commit-message: Format code according to conventions
title: '[CI] Format code according to conventions'

View File

@@ -1,18 +0,0 @@
name: "Pull Request Labeler"
permissions:
contents: read
pull-requests: write
on:
pull_request_target:
types: [opened, synchronize, reopened, ready_for_review, locked]
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@main
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
configuration-path: '.github/labeler.yml'

View File

@@ -1,74 +0,0 @@
name: PR Lint keyboards
permissions:
contents: read
on:
pull_request:
paths:
- 'keyboards/**'
jobs:
lint:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v35
- name: Print info
run: |
git rev-parse --short HEAD
echo ${{ github.event.pull_request.base.sha }}
echo '${{ steps.file_changes.outputs.all_changed_files}}'
- name: Run qmk lint
shell: 'bash {0}'
run: |
QMK_CHANGES=$(echo -e '${{ steps.file_changes.outputs.all_changed_files}}' | sed 's/ /\n/g')
QMK_KEYBOARDS=$(qmk list-keyboards)
exit_code=0
for KB in $QMK_KEYBOARDS; do
KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)')
if [[ -z "$KEYBOARD_CHANGES" ]]; then
# skip as no changes for this keyboard
continue
fi
KEYMAP_ONLY=$(echo "$KEYBOARD_CHANGES" | grep -cv /keymaps/)
if [[ $KEYMAP_ONLY -gt 0 ]]; then
echo "linting ${KB}"
qmk lint --keyboard ${KB} && qmk info -l --keyboard ${KB}
exit_code=$(($exit_code + $?))
fi
done
qmk format-text ${{ steps.file_changes.outputs.all_changed_files}} || true
for file in ${{ steps.file_changes.outputs.all_changed_files}}; do
if ! git diff --quiet $file; then
echo "File '${file}' Requires Formatting"
echo "::error file=${file}::Requires Formatting"
exit_code=$(($exit_code + 1))
fi
done
if [[ $exit_code -gt 255 ]]; then
exit 255
fi
exit $exit_code

126
.github/workflows/main.yml vendored Normal file
View File

@@ -0,0 +1,126 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Main'
on:
workflow_call:
inputs:
keyboard:
type: string
default: '["default"]'
alphas:
type: string
default: '["default"]'
nav:
type: string
default: '["default"]'
clipboard:
type: string
default: '["default"]'
layers:
type: string
default: '["default"]'
mapping:
type: string
default: '["default"]'
rules:
type: string
default: '["default"]'
custom_config:
type: string
default: '["default"]'
merge:
type: string
default: '["default"]'
jobs:
main:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
strategy:
fail-fast: false
matrix:
keyboard: ${{ fromJSON(inputs.keyboard) }}
alphas: ${{ fromJSON(inputs.alphas) }}
nav: ${{ fromJSON(inputs.nav) }}
clipboard: ${{ fromJSON(inputs.clipboard) }}
layers: ${{ fromJSON(inputs.layers) }}
mapping: ${{ fromJSON(inputs.mapping) }}
rules: ${{ fromJSON(inputs.rules) }}
custom_config: ${{ fromJSON(inputs.custom_config) }}
merge: ${{ fromJSON(inputs.merge) }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Merge branches
if: ${{ matrix.merge != '' && matrix.merge != 'default' }}
run: |
git config --global --add safe.directory '*'
git config user.name "${GITHUB_ACTOR}"
git config user.email "${GITHUB_ACTOR}@users.noreply.github.com"
git fetch --unshallow
revert=`git log --grep='^\[miryoku-github\]' --pretty='format:%H' | tr '\n' ' '`
git revert $revert
for merge in ${{ matrix.merge }}
do
user=`echo "$merge" | cut -f 1 -d '/'`
repo=`echo "$merge" | cut -f 2 -d '/'`
branch=`echo "$merge" | cut -f 3- -d '/'`
remote="$user-$repo"
git remote add "$remote" "https://github.com/$user/$repo.git"
git fetch "$remote" "$branch"
git merge "$remote/$branch"
git remote remove "$remote"
git status
done
- name: Submodules
run: |
git config --global --add safe.directory '*'
make git-submodule
- name: Process inputs
id: inputs
run: |
artifact_dir="artifacts"
mkdir "$artifact_dir"
user='users/manna-harbour_miryoku'
rules="$user/custom_rules.mk"
config="$user/custom_config.h"
artifact_build_name=`echo "miryoku_qmk ${{ matrix.keyboard }}" | tr '/' '_'`
for option in "alphas=${{ matrix.alphas }}" "nav=${{ matrix.nav }}" "clipboard=${{ matrix.clipboard }}" "layers=${{ matrix.layers }}" "mapping=${{ matrix.mapping }}"
do
if ! expr "$option" : '.*=default$'
then
artifact_build_name="$artifact_build_name "`echo "$option" | tr '=' '_'`
option=`echo "MIRYOKU_$option" | tr 'a-z' 'A-Z'`
echo "$option" >> "$rules"
fi
done
if [ -n "${{ matrix.rules }}" -a "${{ matrix.rules }}" != 'default' ]
then
artifact_build_name="$artifact_build_name rules_"`echo "${{ matrix.rules }}" | md5sum | cut -d ' ' -f 1`
echo "${{ matrix.rules }}" >> "$rules"
fi
if [ -n "${{ matrix.custom_config }}" -a "${{ matrix.custom_config }}" != 'default' ]
then
artifact_build_name="$artifact_build_name config_"`echo "${{ matrix.custom_config }}" | md5sum | cut -d ' ' -f 1`
echo "${{ matrix.custom_config }}" >> "$config"
fi
cp "$rules" "$config" "$artifact_dir"
if [ -n "${{ matrix.merge }}" -a "${{ matrix.merge }}" != 'default' ]
then
artifact_build_name="$artifact_build_name merge_"`echo "${{ matrix.merge }}" | md5sum | cut -d ' ' -f 1`
fi
artifact_build_name=`echo $artifact_build_name | tr ' ' '-'`
echo "artifact_build_name=$artifact_build_name" >> $GITHUB_OUTPUT
echo "artifact_dir=$artifact_dir" >> $GITHUB_OUTPUT
- name: Build
run: qmk compile -kb ${{ matrix.keyboard }} -km manna-harbour_miryoku
- name: Copy firmware
run: |
cp *manna-harbour_miryoku* "${{ steps.inputs.outputs.artifact_dir }}"
- name: Archive artifacts
uses: actions/upload-artifact@v3
with:
name: ${{ steps.inputs.outputs.artifact_build_name }}
path: ${{ steps.inputs.outputs.artifact_dir }}
continue-on-error: true

View File

@@ -1,36 +0,0 @@
name: PR Regenerate Files
permissions:
contents: read
on:
pull_request:
paths:
- 'data/constants/**'
- 'lib/python/**'
jobs:
regen:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
- name: Run qmk generators
run: |
util/regen.sh
git diff
- name: Fail when regeneration required
run: |
git diff
for file in $(git diff --name-only); do
echo "File '${file}' Requires Regeneration"
echo "::error file=${file}::Requires Regeneration"
done
test -z "$(git diff --name-only)"

View File

@@ -1,46 +0,0 @@
name: Regenerate Files
permissions:
contents: write
on:
push:
branches:
- master
- develop
jobs:
regen:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
- name: Run qmk generators
run: |
util/regen.sh
git diff
- uses: rlespinasse/github-slug-action@v3.x
- name: Become QMK Bot
run: |
git config user.name 'QMK Bot'
git config user.email 'hello@qmk.fm'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v4
if: ${{ github.repository == 'qmk/qmk_firmware'}}
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
delete-branch: true
branch: bugfix/regen_${{ env.GITHUB_REF_SLUG }}
author: QMK Bot <hello@qmk.fm>
committer: QMK Bot <hello@qmk.fm>
commit-message: Regenerate Files
title: '[CI] Regenerate Files'

View File

@@ -1,65 +0,0 @@
name: 'Close stale issues and PRs'
permissions:
issues: write
pull-requests: write
on:
schedule:
- cron: '30 1 * * *'
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v7
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
remove-stale-when-updated: true
exempt-draft-pr: true
ascending: true
operations-per-run: 150
stale-issue-label: stale
days-before-issue-stale: 90
days-before-issue-close: 30
exempt-issue-labels: bug,in progress,on hold,discussion,to do
stale-issue-message: >
This issue has been automatically marked as stale because it has not had activity in the
last 90 days. It will be closed in the next 30 days unless it is tagged properly or other activity
occurs.
For maintainers: Please label with `bug`, `in progress`, `on hold`, `discussion` or `to do` to prevent
the issue from being re-flagged.
close-issue-message: >
This issue has been automatically closed because it has not had activity in the last 30 days.
If this issue is still valid, re-open the issue and let us know.
// [stale-action-closed]
stale-pr-label: stale
days-before-pr-stale: 45
days-before-pr-close: 30
exempt-pr-labels: bug,awaiting review,breaking_change,in progress,on hold
stale-pr-message: >
Thank you for your contribution!
This pull request has been automatically marked as stale because it has not had
activity in the last 45 days. It will be closed in 30 days if no further activity occurs.
Please feel free to give a status update now, or re-open when it's ready.
For maintainers: Please label with `bug`, `awaiting review`, `breaking_change`, `in progress`, or `on hold`
to prevent the issue from being re-flagged.
close-pr-message: >
Thank you for your contribution!
This pull request has been automatically closed because it has not had activity in the last 30 days.
Please feel free to give a status update now, ping for review, or re-open when it's ready.
// [stale-action-closed]

38
.github/workflows/test-all-configs.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Test All Configs'
on:
- workflow_dispatch
jobs:
build:
if: github.repository_owner == 'manna-harbour'
uses: ./.github/workflows/main.yml
with:
keyboard: '["crkbd"]'
alphas: '[
"default",
"azerty",
"colemak",
"colemakdhk",
"dvorak",
"halmak",
"workman",
"qwerty",
"qwertz"
]'
nav: '[
"default",
"vi",
"invertedt"
]'
clipboard: '[
"default",
"fun",
"mac",
"win"
]'
layers: '[
"default",
"flip"
]'

14
.github/workflows/test-build.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Test Build'
on:
push:
pull_request:
workflow_dispatch:
jobs:
build:
if: github.repository_owner == 'manna-harbour'
uses: ./.github/workflows/main.yml
with:
keyboard: '["crkbd"]'

86
.github/workflows/test-inputs.yml vendored Normal file
View File

@@ -0,0 +1,86 @@
# Copyright 2021 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Test Inputs'
on:
workflow_dispatch:
inputs:
keyboard:
description: 'Keyboard'
required: true
alphas:
description: 'Miryoku Alphas'
required: false
default: 'default'
nav:
description: 'Miryoku Nav'
required: false
default: 'default'
clipboard:
description: 'Miryoku Clipboard'
required: false
default: 'default'
layers:
description: 'Miryoku Layers'
required: false
default: 'default'
mapping:
description: 'Miryoku Mapping'
required: false
default: 'default'
rules:
description: 'custom_rules.mk'
required: false
default: 'default'
custom_config:
description: 'custom_config.h'
required: false
default: 'default'
merge:
description: 'Merge QMK Branches'
required: false
default: 'default'
jobs:
process-inputs:
runs-on: ubuntu-latest
outputs:
keyboard: ${{ steps.process-inputs.outputs.keyboard }}
alphas: ${{ steps.process-inputs.outputs.alphas }}
nav: ${{ steps.process-inputs.outputs.nav }}
clipboard: ${{ steps.process-inputs.outputs.clipboard }}
layers: ${{ steps.process-inputs.outputs.layers }}
mapping: ${{ steps.process-inputs.outputs.mapping }}
rules: ${{ steps.process-inputs.outputs.rules }}
custom_config: ${{ steps.process-inputs.outputs.custom_config }}
merge: ${{ steps.process-inputs.outputs.merge }}
steps:
- name: Process inputs
id: process-inputs
run: |
set-output()
{
json=`echo "$2" | jq -cnR 'inputs | split(",";"")'`
echo "$1=$json" >> $GITHUB_OUTPUT
}
set-output "keyboard" "${{ github.event.inputs.keyboard }}"
set-output "alphas" "${{ github.event.inputs.alphas }}"
set-output "nav" "${{ github.event.inputs.nav }}"
set-output "clipboard" "${{ github.event.inputs.clipboard }}"
set-output "layers" "${{ github.event.inputs.layers }}"
set-output "mapping" "${{ github.event.inputs.mapping }}"
set-output "rules" "${{ github.event.inputs.rules }}"
set-output "custom_config" "${{ github.event.inputs.custom_config }}"
set-output "merge" "${{ github.event.inputs.merge }}"
build:
uses: ./.github/workflows/main.yml
needs: process-inputs
with:
keyboard: ${{ needs.process-inputs.outputs.keyboard }}
alphas: ${{ needs.process-inputs.outputs.alphas }}
nav: ${{ needs.process-inputs.outputs.nav }}
clipboard: ${{ needs.process-inputs.outputs.clipboard }}
layers: ${{ needs.process-inputs.outputs.layers }}
mapping: ${{ needs.process-inputs.outputs.mapping }}
rules: ${{ needs.process-inputs.outputs.rules }}
custom_config: ${{ needs.process-inputs.outputs.custom_config }}
merge: ${{ needs.process-inputs.outputs.merge }}

16
.github/workflows/test-merge.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
# Copyright 2022 Manna Harbour
# https://github.com/manna-harbour/miryoku
name: 'Test Merge'
on:
workflow_dispatch:
jobs:
build:
if: github.repository_owner == 'manna-harbour'
uses: ./.github/workflows/main.yml
with:
keyboard: '["crkbd"]'
merge: '[
"qmk/qmk_firmware/master",
"qmk/qmk_firmware/develop"
]'

View File

@@ -1,35 +0,0 @@
name: Unit Tests
permissions:
contents: read
on:
push:
branches:
- master
- develop
pull_request:
paths:
- 'builddefs/**'
- 'quantum/**'
- 'platforms/**'
- 'tmk_core/**'
- 'tests/**'
- '*.mk'
- 'Makefile'
- '.github/workflows/unit_test.yml'
jobs:
test:
runs-on: ubuntu-latest
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests
run: make test:all

3
.gitignore vendored
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

@@ -29,6 +29,11 @@ KEYBOARD_FILESAFE := $(subst /,_,$(KEYBOARD))
TARGET ?= $(KEYBOARD_FILESAFE)_$(KEYMAP)
KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
ifeq ($(strip $(DUMP_CI_METADATA)),yes)
$(info CI Metadata: KEYBOARD=$(KEYBOARD))
$(info CI Metadata: KEYMAP=$(KEYMAP))
endif
# Force expansion
TARGET := $(TARGET)

View File

@@ -253,7 +253,7 @@
"0x002F": {
"group": "basic",
"key": "KC_LEFT_BRACKET",
"label": "]",
"label": "[",
"aliases": [
"KC_LBRC"
]
@@ -261,7 +261,7 @@
"0x0030": {
"group": "basic",
"key": "KC_RIGHT_BRACKET",
"label": "[",
"label": "]",
"aliases": [
"KC_RBRC"
]
@@ -1512,4 +1512,4 @@
]
}
}
}
}

View File

@@ -20,7 +20,7 @@ qmk compile [-c] <configuratorExport.json>
qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] -kb <keyboard_name> -km <keymap_name>
```
**Usage in Keyboard Directory**:
**Usage in Keyboard Directory**:
Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with `--keymap <keymap_name>`
```
@@ -44,7 +44,7 @@ $ qmk compile
or with optional keymap argument
```
$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4
$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4
$ qmk compile -km 66_iso
Ψ Compiling keymap with make clueboard/66/rev4:66_iso
...
@@ -58,7 +58,7 @@ $ qmk compile
...
```
**Usage in Layout Directory**:
**Usage in Layout Directory**:
Must be under `qmk_firmware/layouts/`, and in a keymap folder.
```
@@ -149,6 +149,34 @@ To exit out into the parent shell, simply type `exit`.
qmk cd
```
## `qmk find`
This command allows for searching through keyboard/keymap targets, filtering by specific criteria. `info.json` and `rules.mk` files contribute to the search data, as well as keymap configurations, and the results can be filtered using "dotty" syntax matching the overall `info.json` file format.
For example, one could search for all keyboards using STM32F411:
```
qmk find -f 'processor=STM32F411'
```
...and one can further constrain the list to keyboards using STM32F411 as well as rgb_matrix support:
```
qmk find -f 'processor=STM32F411' -f 'features.rgb_matrix=true'
```
**Usage**:
```
qmk find [-h] [-km KEYMAP] [-f FILTER]
options:
-km KEYMAP, --keymap KEYMAP
The keymap name to build. Default is 'default'.
-f FILTER, --filter FILTER
Filter the list of keyboards based on the supplied value in rules.mk. Matches info.json structure, and accepts the formats 'features.rgblight=true' or 'exists(matrix_pins.direct)'. May be passed multiple times, all filters need to match. Value may include wildcards such as '*' and '?'.
```
## `qmk console`
This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLE=yes`.
@@ -269,7 +297,8 @@ qmk json2c [-o OUTPUT] filename
## `qmk c2json`
Creates a keymap.json from a keymap.c.
Creates a keymap.json from a keymap.c.
**Note:** Parsing C source files is not easy, therefore this subcommand may not work with your keymap. In some cases not using the C pre-processor helps.
**Usage**:
@@ -442,7 +471,7 @@ $ qmk import-kbfirmware ~/Downloads/gh62.json
## `qmk format-text`
This command formats text files to have proper line endings.
This command formats text files to have proper line endings.
Every text file in the repository needs to have Unix (LF) line ending.
If you are working on **Windows**, you must ensure that line endings are corrected in order to get your PRs merged.
@@ -453,7 +482,7 @@ qmk format-text
## `qmk format-c`
This command formats C code using clang-format.
This command formats C code using clang-format.
Run it with no arguments to format all core code that has been changed. Default checks `origin/master` with `git diff`, branch can be changed using `-b <branch_name>`
@@ -556,7 +585,7 @@ qmk kle2json [-f] <filename>
**Examples**:
```
$ qmk kle2json kle.txt
$ qmk kle2json kle.txt
☒ File info.json already exists, use -f or --force to overwrite.
```

View File

@@ -202,6 +202,62 @@ This function gets called at the end of all QMK processing, before starting the
Similar to `matrix_scan_*`, these are called as often as the MCU can handle. To keep your board responsive, it's suggested to do as little as possible during these function calls, potentially throtting their behaviour if you do indeed require implementing something special.
### Example `void housekeeping_task_user(void)` implementation
This example will show you how to use `void housekeeping_task_user(void)` to turn off [RGB Light](feature_rgblight.md). For RGB Matrix, the [builtin](https://docs.qmk.fm/#/feature_rgb_matrix?id=additional-configh-options) `RGB_MATRIX_TIMEOUT` should be used.
First, add the following lines to your keymap's `config.h`:
```c
#define RGBLIGHT_SLEEP // enable rgblight_suspend() and rgblight_wakeup() in keymap.c
#define RGBLIGHT_TIMEOUT 900000 // ms to wait until rgblight time out, 900K ms is 15min.
```
Next, add the following code to your `keymap.c`:
```c
static uint32_t key_timer; // timer for last keyboard activity, use 32bit value and function to make longer idle time possible
static void refresh_rgb(void); // refreshes the activity timer and RGB, invoke whenever any activity happens
static void check_rgb_timeout(void); // checks if enough time has passed for RGB to timeout
bool is_rgb_timeout = false; // store if RGB has timed out or not in a boolean
void refresh_rgb(void) {
key_timer = timer_read32(); // store time of last refresh
if (is_rgb_timeout)
{
is_rgb_timeout = false;
rgblight_wakeup();
}
}
void check_rgb_timeout(void) {
if (!is_rgb_timeout && timer_elapsed32(key_timer) > RGBLIGHT_TIMEOUT) // check if RGB has already timeout and if enough time has passed
{
rgblight_suspend();
is_rgb_timeout = true;
}
}
/* Then, call the above functions from QMK's built in post processing functions like so */
/* Runs at the end of each scan loop, check if RGB timeout has occured or not */
void housekeeping_task_user(void) {
#ifdef RGBLIGHT_TIMEOUT
check_rgb_timeout();
#endif
}
/* Runs after each key press, check if activity occurred */
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
#ifdef RGBLIGHT_TIMEOUT
if (record->event.pressed)
refresh_rgb();
#endif
}
/* Runs after each encoder tick, check if activity occurred */
void post_encoder_update_user(uint8_t index, bool clockwise) {
#ifdef RGBLIGHT_TIMEOUT
refresh_rgb();
#endif
}
```
# Keyboard Idling/Wake Code
If the board supports it, it can be "idled", by stopping a number of functions. A good example of this is RGB lights or backlights. This can save on power consumption, or may be better behavior for your keyboard.
@@ -209,7 +265,7 @@ If the board supports it, it can be "idled", by stopping a number of functions.
This is controlled by two functions: `suspend_power_down_*` and `suspend_wakeup_init_*`, which are called when the system board is idled and when it wakes up, respectively.
### Example suspend_power_down_user() and suspend_wakeup_init_user() Implementation
### Example `suspend_power_down_user()` and `suspend_wakeup_init_user()` Implementation
```c

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.
@@ -160,6 +160,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
return true;
};
```
Alternatively, this can be done with [Key Overrides](feature_key_overrides?id=simple-example).
# Advanced topics :id=advanced-topics
@@ -180,3 +181,7 @@ This page used to encompass a large set of features. We have moved many sections
## Tap-Hold Configuration Options :id=tap-hold-configuration-options
* [Tap-Hold Configuration Options](tap_hold.md)
## Key Overrides :id=key-overrides
* [Key Overrides](feature_key_overrides.md)

View File

@@ -236,6 +236,18 @@ bool apply_autocorrect(uint8_t backspaces, const char *str) {
}
```
### Autocorrect Status
Additional user callback functions to manipulate Autocorrect:
| Function | Description |
|----------------------------|----------------------------------------------|
| `autocorrect_enable()` | Turns Autocorrect on. |
| `autocorrect_disable()` | Turns Autocorrect off. |
| `autocorrect_toggle()` | Toggles Autocorrect. |
| `autocorrect_is_enabled()` | Returns true if Autocorrect is currently on. |
## Appendix: Trie binary data format :id=appendix
This section details how the trie is serialized to byte data in autocorrect_data. You dont need to care about this to use this autocorrection implementation. But it is documented for the record in case anyone is interested in modifying the implementation, or just curious how it works.

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

@@ -1,4 +1,4 @@
# Key Overrides
# Key Overrides :id=key-overrides
Key overrides allow you to override modifier-key combinations to send a different modifier-key combination or perform completely custom actions. Don't want `shift` + `1` to type `!` on your computer? Use a key override to make your keyboard type something different when you press `shift` + `1`. The general behavior is like this: If `modifiers w` + `key x` are pressed, replace these keys with `modifiers y` + `key z` in the keyboard report.
@@ -10,13 +10,13 @@ You can use key overrides in a similar way to momentary layer/fn keys to activat
- Create custom shortcuts or change existing ones: E.g. Send `ctrl`+`shift`+`z` when `ctrl`+`y` is pressed.
- Run custom code when `ctrl` + `alt` + `esc` is pressed.
## Setup
## Setup :id=setup
To enable this feature, you need to add `KEY_OVERRIDE_ENABLE = yes` to your `rules.mk`.
Then, in your `keymap.c` file, you'll need to define the array `key_overrides`, which defines all key overrides to be used. Each override is a value of type `key_override_t`. The array `key_overrides` is `NULL`-terminated and contains pointers to `key_override_t` values (`const key_override_t **`).
## Creating Key Overrides
## Creating Key Overrides :id=creating-key-overrides
The `key_override_t` struct has many options that allow you to precisely tune your overrides. The full reference is shown below. Instead of manually creating a `key_override_t` value, it is recommended to use these dedicated initializers:
@@ -34,7 +34,7 @@ Additionally takes a bitmask `options` that specifies additional options. See `k
For more customization possibilities, you may directly create a `key_override_t`, which allows you to customize even more behavior. Read further below for details and examples.
## Simple Example
## Simple Example :id=simple-example
This shows how the mentioned example of sending `delete` when `shift` + `backspace` are pressed is realized:
@@ -48,9 +48,9 @@ const key_override_t **key_overrides = (const key_override_t *[]){
};
```
## Intermediate Difficulty Examples
## Intermediate Difficulty Examples :id=intermediate-difficulty-examples
### Media Controls & Screen Brightness
### Media Controls & Screen Brightness :id=media-controls-amp-screen-brightness
In this example a single key is configured to control media, volume and screen brightness by using key overrides.
@@ -102,7 +102,7 @@ const key_override_t **key_overrides = (const key_override_t *[]){
};
```
### Flexible macOS-friendly Grave Escape
### Flexible macOS-friendly Grave Escape :id=flexible-macos-friendly-grave-escape
The [Grave Escape feature](feature_grave_esc.md) is limited in its configurability and has [bugs when used on macOS](feature_grave_esc.md#caveats). Key overrides can be used to achieve a similar functionality as Grave Escape, but with more customization and without bugs on macOS.
```c
@@ -121,8 +121,8 @@ const key_override_t **key_overrides = (const key_override_t *[]){
In addition to not encountering unexpected bugs on macOS, you can also change the behavior as you wish. Instead setting `GUI` + `ESC` = `` ` `` you may change it to an arbitrary other modifier, for example `Ctrl` + `ESC` = `` ` ``.
## Advanced Examples
### Modifiers as Layer Keys
## Advanced Examples :id=advanced-examples
### Modifiers as Layer Keys :id=modifiers-as-layer-keys
Do you really need a dedicated key to toggle your fn layer? With key overrides, perhaps not. This example shows how you can configure to use `rGUI` + `rAlt` (right GUI and right alt) to access a momentary layer like an fn layer. With this you completely eliminate the need to use a dedicated layer key. Of course the choice of modifier keys can be changed as needed, `rGUI` + `rAlt` is just an example here.
@@ -150,7 +150,7 @@ const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) |
.enabled = NULL};
```
## Keycodes
## Keycodes :id=keycodes
|Keycode |Aliases |Description |
|------------------------|---------|----------------------|
@@ -158,7 +158,7 @@ const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) |
|`QK_KEY_OVERRIDE_ON` |`KO_ON` |Turn on key overrides |
|`QK_KEY_OVERRIDE_OFF` |`KO_OFF` |Turn off key overrides|
## Reference for `key_override_t`
## Reference for `key_override_t` :id=reference-for-key_override_t
Advanced users may need more customization than what is offered by the simple `ko_make` initializers. For this, directly create a `key_override_t` value and set all members. Below is a reference for all members of `key_override_t`.
@@ -175,7 +175,7 @@ Advanced users may need more customization than what is offered by the simple `k
| `void *context` | A context that will be passed to the custom action function. |
| `bool *enabled` | If this points to false this override will not be used. Set to NULL to always have this override enabled. |
### Reference for `ko_option_t`
## Reference for `ko_option_t` :id=reference-for-ko_option_t
Bitfield with various options controlling the behavior of a key override.
@@ -189,11 +189,11 @@ Bitfield with various options controlling the behavior of a key override.
| `ko_option_no_reregister_trigger` | If set, the trigger key will never be registered again after the override is deactivated. |
| `ko_options_default` | The default options used by the `ko_make_xxx` functions |
## For Advanced Users: Inner Workings
## For Advanced Users: Inner Workings :id=for-advanced-users-inner-workings
This section explains how a key override works in detail, explaining where each member of `key_override_t` comes into play. Understanding this is essential to be able to take full advantage of all the options offered by key overrides.
#### Activation
#### Activation :id=activation
When the necessary keys are pressed (`trigger_mods` + `trigger`), the override is 'activated' and the replacement key is registered in the keyboard report (`replacement`), while the `trigger` key is removed from the keyboard report. The trigger modifiers may also be removed from the keyboard report upon activation of an override (`suppressed_mods`). The override will not activate if any of the `negative_modifiers` are pressed.
@@ -207,11 +207,11 @@ Use the `option` member to customize which of these events are allowed to activa
In any case, a key override can only activate if the `trigger` key is the _last_ non-modifier key that was pressed down. This emulates the behavior of how standard OSes (macOS, Windows, Linux) handle normal key input (to understand: Hold down `a`, then also hold down `b`, then hold down `shift`; `B` will be typed but not `A`).
#### Deactivation
#### Deactivation :id=deactivation
An override is 'deactivated' when one of the trigger keys (`trigger_mods`, `trigger`) is lifted, another non-modifier key is pressed down, or one of the `negative_modifiers` is pressed down. When an override deactivates, the `replacement` key is removed from the keyboard report, while the `suppressed_mods` that are still held down are re-added to the keyboard report. By default, the `trigger` key is re-added to the keyboard report if it is still held down and no other non-modifier key has been pressed since. This again emulates the behavior of how standard OSes handle normal key input (To understand: hold down `a`, then also hold down `b`, then also `shift`, then release `b`; `A` will not be typed even though you are holding the `a` and `shift` keys). Use the `option` field `ko_option_no_reregister_trigger` to prevent re-registering the trigger key in all cases.
#### Key Repeat Delay
#### Key Repeat Delay :id=key-repeat-delay
A third way in which standard OS-handling of modifier-key input is emulated in key overrides is with a ['key repeat delay'](https://www.dummies.com/computers/pcs/set-your-keyboards-repeat-delay-and-repeat-rate/). To explain what this is, let's look at how normal keyboard input is handled by mainstream OSes again: If you hold down `a`, followed by `shift`, you will see the letter `a` is first typed, then for a short moment nothing is typed and then repeating `A`s are typed. Take note that, although shift is pressed down just after `a` is pressed, it takes a moment until `A` is typed. This is caused by the aforementioned key repeat delay, and it is a feature that prevents unwanted repeated characters from being typed.
@@ -222,6 +222,6 @@ This applies equally to releasing a modifier: When you hold `shift`, then press
The duration of the key repeat delay is controlled with the `KEY_OVERRIDE_REPEAT_DELAY` macro. Define this value in your `config.h` file to change it. It is 500ms by default.
## Difference to Combos
## Difference to Combos :id=difference-to-combos
Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interacton with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable.

View File

@@ -20,13 +20,13 @@ To use the ADNS 5050 sensor, add this to your `rules.mk`
POINTING_DEVICE_DRIVER = adns5050
```
The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source.
The ADNS 5050 sensor uses a serial type protocol for communication, and requires an additional light source.
| Setting | Description | Default |
| ------------------- | ------------------------------------------------------------------ | -------------------------- |
| `ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
| `ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
| `ADNS5050_CS_PIN` | (Required) The pin connected to the Chip Select pin of the sensor. | `POINTING_DEVICE_CS_PIN` |
| Setting (`config.h`) | Description | Default |
| -------------------- | ------------------------------------------------------------------ | -------------------------- |
| `ADNS5050_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
| `ADNS5050_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
| `ADNS5050_CS_PIN` | (Required) The pin connected to the Chip Select pin of the sensor. | `POINTING_DEVICE_CS_PIN` |
@@ -40,9 +40,9 @@ To use the ADNS 9800 sensor, add this to your `rules.mk`
POINTING_DEVICE_DRIVER = adns9800
```
The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking.
The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking.
| Setting | Description | Default |
| Setting (`config.h`) | Description | Default |
| ----------------------- | ---------------------------------------------------------------------- | ------------------------ |
| `ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
| `ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
@@ -63,7 +63,7 @@ POINTING_DEVICE_DRIVER = analog_joystick
The Analog Joystick is an analog (ADC) driven sensor. There are a variety of joysticks that you can use for this.
| Setting | Description | Default |
| Setting (`config.h`) | Description | Default |
| --------------------------------- | -------------------------------------------------------------------------- | ------------- |
| `ANALOG_JOYSTICK_X_AXIS_PIN` | (Required) The pin used for the vertical/X axis. | _not defined_ |
| `ANALOG_JOYSTICK_Y_AXIS_PIN` | (Required) The pin used for the horizontal/Y axis. | _not defined_ |
@@ -153,7 +153,7 @@ Additionally, `POINTING_DEVICE_GESTURES_CURSOR_GLIDE_ENABLE` is supported in thi
#### Relative mode gestures
| Gesture Setting | Description | Default |
| Gesture Setting (`config.h`) | Description | Default |
| -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
| `CIRQUE_PINNACLE_TAP_ENABLE` | (Optional) Enable tap to "left click". Works on both sides of a split keyboard. | _not defined_ |
| `CIRQUE_PINNACLE_SECONDARY_TAP_ENABLE` | (Optional) Tap in upper right corner (half of the finger needs to be outside of the trackpad) of the trackpad will result in "right click". `CIRQUE_PINNACLE_TAP_ENABLE` must be enabled. | _not defined_ |
@@ -172,10 +172,10 @@ POINTING_DEVICE_DRIVER = paw3204
The paw 3204 sensor uses a serial type protocol for communication, and requires an additional light source.
| Setting | Description | Default |
| ------------------ |--------------------------------------------------------------- | -------------------------- |
| `PAW3204_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
| `PAW3204_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
| Setting (`config.h`) | Description | Default |
| -------------------- |--------------------------------------------------------------- | -------------------------- |
| `PAW3204_SCLK_PIN` | (Required) The pin connected to the clock pin of the sensor. | `POINTING_DEVICE_SCLK_PIN` |
| `PAW3204_SDIO_PIN` | (Required) The pin connected to the data pin of the sensor. | `POINTING_DEVICE_SDIO_PIN` |
The CPI range is 400-1600, with supported values of (400, 500, 600, 800, 1000, 1200 and 1600). Defaults to 1000 CPI.
@@ -189,7 +189,7 @@ POINTING_DEVICE_DRIVER = pimoroni_trackball
The Pimoroni Trackball module is a I2C based breakout board with an RGB enable trackball.
| Setting | Description | Default |
| Setting (`config.h`) | Description | Default |
| ------------------------------------ | ---------------------------------------------------------------------------------- | ------- |
| `PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` |
| `PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackball in milliseconds. | `100` |
@@ -220,7 +220,7 @@ The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI.
Both PMW 3360 and PMW 3389 are SPI driven optical sensors, that use a built in IR LED for surface tracking.
If you have different CS wiring on each half you can use `PMW33XX_CS_PIN_RIGHT` or `PMW33XX_CS_PINS_RIGHT` in combination with `PMW33XX_CS_PIN` or `PMW33XX_CS_PINS` to configure both sides independently. If `_RIGHT` values aren't provided, they default to be the same as the left ones.
| Setting | Description | Default |
| Setting (`config.h`) | Description | Default |
| ---------------------------- | ------------------------------------------------------------------------------------------- | ------------------------ |
| `PMW33XX_CS_PIN` | (Required) Sets the Chip Select pin connected to the sensor. | `POINTING_DEVICE_CS_PIN` |
| `PMW33XX_CS_PINS` | (Alternative) Sets the Chip Select pins connected to multiple sensors. | `{PMW33XX_CS_PIN}` |
@@ -434,6 +434,75 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
This allows you to toggle between scrolling and cursor movement by pressing the DRAG_SCROLL key.
### Advanced Drag Scroll
Sometimes, like with the Cirque trackpad, you will run into issues where the scrolling may be too fast.
Here is a slightly more advanced example of drag scrolling. You will be able to change the scroll speed based on the values in set in `SCROLL_DIVISOR_H` and `SCROLL_DIVISOR_V`. This bit of code is also set up so that instead of toggling the scrolling state with set_scrolling = !set_scrolling, the set_scrolling variable is set directly to record->event.pressed. This way, the drag scrolling will only be active while the DRAG_SCROLL button is held down.
```c
enum custom_keycodes {
DRAG_SCROLL = SAFE_RANGE,
};
bool set_scrolling = false;
// Modify these values to adjust the scrolling speed
#define SCROLL_DIVISOR_H 8.0
#define SCROLL_DIVISOR_V 8.0
// Variables to store accumulated scroll values
float scroll_accumulated_h = 0;
float scroll_accumulated_v = 0;
// Function to handle mouse reports and perform drag scrolling
report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
// Check if drag scrolling is active
if (set_scrolling) {
// Calculate and accumulate scroll values based on mouse movement and divisors
scroll_accumulated_h += (float)mouse_report.x / SCROLL_DIVISOR_H;
scroll_accumulated_v += (float)mouse_report.y / SCROLL_DIVISOR_V;
// Assign integer parts of accumulated scroll values to the mouse report
mouse_report.h = (int8_t)scroll_accumulated_h;
mouse_report.v = (int8_t)scroll_accumulated_v;
// Update accumulated scroll values by subtracting the integer parts
scroll_accumulated_h -= (int8_t)scroll_accumulated_h;
scroll_accumulated_v -= (int8_t)scroll_accumulated_v;
// Clear the X and Y values of the mouse report
mouse_report.x = 0;
mouse_report.y = 0;
}
return mouse_report;
}
// Function to handle key events and enable/disable drag scrolling
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case DRAG_SCROLL:
// Toggle set_scrolling when DRAG_SCROLL key is pressed or released
set_scrolling = record->event.pressed;
break;
default:
break;
}
return true;
}
// Function to handle layer changes and disable drag scrolling when not in AUTO_MOUSE_DEFAULT_LAYER
layer_state_t layer_state_set_user(layer_state_t state) {
// Disable set_scrolling if the current layer is not the AUTO_MOUSE_DEFAULT_LAYER
if (get_highest_layer(state) != AUTO_MOUSE_DEFAULT_LAYER) {
set_scrolling = false;
}
return state;
}
```
## Split Examples
The following examples make use the `SPLIT_POINTING_ENABLE` functionality and show how to manipulate the mouse report for a scrolling mode.

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

@@ -56,11 +56,17 @@ QMK maintains a Homebrew tap and formula which will automatically install the CL
You will need to install Homebrew. Follow the instructions on https://brew.sh.
!> **NOTE:** If you are using Apple Silicon, such as the M1, you will need to install a rosetta compatible version of Homebrew. This version does not override the base Homebrew. This can be done by running `arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"`. See here: [Rosetta-compatible Homebrew](https://stackoverflow.com/questions/64882584/how-to-run-the-homebrew-installer-under-rosetta-2-on-m1-macbook)
#### Installation
Install the QMK CLI by running:
brew install qmk/qmk/qmk
Install the QMK CLI on an Apple Silicon Mac by running:
arch -x86_64 brew install qmk/qmk/qmk
### ** Linux/WSL **
@@ -166,6 +172,8 @@ For example, to build a firmware for a Clueboard 66% you would use:
qmk compile -kb clueboard/66/rev3 -km default
?> The keyboard option is the path relative to the keyboard directory, the above example would be found in `qmk_firmware/keyboards/clueboard/66/rev3`. If you're unsure you can view a full list of supported keyboards with `qmk list-keyboards`.
When it is done you should have a lot of output that ends similar to this:
```

View File

@@ -46,16 +46,7 @@ Before starting, you will want to make sure that you have all of the build tools
This part is super simple. However, there is some configuration that we need to do to ensure things are configured correctly.
### Configuring VS Code
First, we need to set up IntelliSense. This isn't strictly required, but it will make your life a LOT easier. To do this, we need to create the `.vscode/c_cpp_properties.json` file in the QMK Firmware folder, You can do this all manually, but I've done most of the work already.
Grab [this file](https://gist.github.com/drashna/48e2c49ce877be592a1650f91f8473e8) and save it. You may need to edit this file, if you didn't install MSYS2 to the default location, or are using WSL/LxSS.
Once you have saved this file, you will need to reload VS Code, if it was already running.
?> You should see an `extensions.json` and `settings.json` file in the `.vscode` folder, as well.
#### MSYS2 Setup
Now, we will set up the MSYS2 window to show up in VSCode as the integrated terminal. This has a number of advantages. Mostly, you can control+click on errors and jump to those files. This makes debugging much easier. It's also nice, in that you don't have to jump to another window.
@@ -110,8 +101,50 @@ This installs a bunch of Git related tools that may make using Git with QMK Firm
Restart once you've installed any extensions
# Configure VS Code for QMK
1. Click <kbd><kbd>File</kbd> > <kbd>Open Folder</kbd></kbd>
2. Open the QMK Firmware folder that you cloned from GitHub.
3. Click <kbd><kbd>File</kbd> > <kbd>Save Workspace As...</kbd></kbd>
## Configuring VS Code
Using the [standard `compile_commands.json` database](https://clang.llvm.org/docs/JSONCompilationDatabase.html), we can get VS code C/C++ extension to use the exact same includes and defines used for your keyboard and keymap.
1. Run `qmk generate-compilation-database -kb <keyboard> -km <keymap>` to generate the `compile_commands.json`.
1. Create `.vscode/c_cpp_properties.json` with the following content:
```
{
"configurations": [
{
"name": "qmk",
"compilerArgs": ["-mmcu=atmega32u4"],
"compilerPath": "/usr/bin/avr-gcc",
"cStandard": "gnu11",
"cppStandard": "gnu++14",
"compileCommands": "${workspaceFolder}/compile_commands.json",
"intelliSenseMode": "linux-gcc-arm",
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
```
Change values in `.vscode/c_cpp_properties.json` for your environment:
1. Copy the `-mmcu` argument from `compile_commands.json` into your `compilerArgs`. This is to work around a [bug in vscode c/c++ extension](https://github.com/microsoft/vscode-cpptools/issues/6478).
1. Use the `compilerPath` from `compile_commands.json`.
1. Modify `cStandard`, `cppStandard` and `intelliSenseMode` values to the correct values for your platform. See [this section](https://code.visualstudio.com/docs/cpp/c-cpp-properties-schema-reference#_configuration-properties) for reference. For WSL, it should still be gcc-x64.
And now you're ready to code QMK Firmware in VS Code
## Troubleshooting VSCode C/C++ extension
If the defines are not matching what you expect, open the source code and run action `C/C++: Log Diagnostics`. This will list the exact list of defines and include paths defined in `compile_commands.json`, and if it's not part of your compilation database, it will tell you so.

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

View File

@@ -0,0 +1,22 @@
// Copyright 2023 Conor Burns (@Conor-Burns)
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define RGB_DI_PIN D0
#define RGB_MATRIX_LED_COUNT 18
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_BREATHING
#define RGB_MATRIX_DEFAULT_HUE 152
#define RGB_MATRIX_DEFAULT_SAT 232
#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGB_MATRIX_DEFAULT_SPD 50
#define ENABLE_RGB_MATRIX_BREATHING
#define ENABLE_RGB_MATRIX_SOLID_COLOR
#define ENABLE_RGB_MATRIX_BAND_SAT
#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
#define ENABLE_RGB_MATRIX_CYCLE_ALL
#define ENABLE_RGB_MATRIX_RAINDROPS
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT

View File

@@ -0,0 +1,153 @@
{
"manufacturer": "Freya",
"keyboard_name": "splaytoraid",
"maintainer": "freya-irl",
"url": "https://github.com/freya-irl/splaytoraid40",
"development_board": "promicro",
"bootloader": "qmk-dfu",
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["F5", "F6", "F7", "F4", "B3", "B1", "B2"],
"rows": ["D3", "D2", "D1", "D4", "D7", "E6", "B4", "C6"]
},
"usb": {
"device_version": "1.0.0",
"pid": "0xCB00",
"vid": "0x2004"
},
"features": {
"extrakey": true,
"rgb_matrix": true,
"bootmagic": true,
"console": true,
"mousekey": true,
"nkro": true
},
"bootmagic": {
"matrix": [1, 0]
},
"build": {
"lto": true
},
"encoder": {
"enabled": true,
"rotary": [
{
"pin_a": "B5",
"pin_b": "B6",
"resolution": 4
}
]
},
"rgb_matrix": {
"driver": "WS2812",
"layout": [
{ "flags": 4, "matrix": [0, 2], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [1, 0], "x": 20, "y": 0 },
{ "flags": 4, "matrix": [7, 0], "x": 61, "y": 0 },
{ "flags": 4, "matrix": [7, 1], "x": 163, "y": 0 },
{ "flags": 4, "matrix": [5, 0], "x": 203, "y": 0 },
{ "flags": 4, "matrix": [4, 2], "x": 224, "y": 0 },
{ "flags": 4, "matrix": [6, 2], "x": 0, "y": 21 },
{ "flags": 4, "matrix": [6, 1], "x": 224, "y": 21 },
{ "flags": 4, "matrix": [3, 3], "x": 20, "y": 43 },
{ "flags": 4, "matrix": [7, 3], "x": 61, "y": 43 },
{ "flags": 4, "matrix": [6, 4], "x": 163, "y": 43 },
{ "flags": 4, "matrix": [6, 3], "x": 203, "y": 43 },
{ "flags": 4, "matrix": [4, 3], "x": 61, "y": 64 },
{ "flags": 4, "matrix": [5, 5], "x": 81, "y": 64 },
{ "flags": 4, "matrix": [7, 4], "x": 101, "y": 64 },
{ "flags": 4, "matrix": [7, 5], "x": 122, "y": 64 },
{ "flags": 4, "matrix": [1, 5], "x": 142, "y": 64 },
{ "flags": 4, "matrix": [0, 3], "x": 163, "y": 64 }
]
},
"layouts": {
"LAYOUT_36": {
"layout": [
{ "label": "K10", "matrix": [1, 0], "x": 0, "y": 0 },
{ "label": "K11", "matrix": [1, 1], "x": 1, "y": 0 },
{ "label": "K02", "matrix": [0, 2], "x": 2, "y": 0 },
{ "label": "K01", "matrix": [0, 1], "x": 3, "y": 0 },
{ "label": "K12", "matrix": [1, 2], "x": 4, "y": 0 },
{ "label": "K52", "matrix": [5, 2], "x": 6, "y": 0 },
{ "label": "K04", "matrix": [0, 4], "x": 7, "y": 0 },
{ "label": "K03", "matrix": [0, 3], "x": 8, "y": 0 },
{ "label": "K14", "matrix": [1, 4], "x": 9, "y": 0 },
{ "label": "K15", "matrix": [1, 5], "x": 10, "y": 0 },
{ "label": "K30", "matrix": [3, 0], "x": 0, "y": 1 },
{ "label": "K31", "matrix": [3, 1], "x": 1, "y": 1 },
{ "label": "K22", "matrix": [2, 2], "x": 2, "y": 1 },
{ "label": "K21", "matrix": [2, 1], "x": 3, "y": 1 },
{ "label": "K13", "matrix": [1, 3], "x": 4, "y": 1 },
{ "label": "K53", "matrix": [5, 3], "x": 6, "y": 1 },
{ "label": "K24", "matrix": [2, 4], "x": 7, "y": 1 },
{ "label": "K23", "matrix": [2, 3], "x": 8, "y": 1 },
{ "label": "K34", "matrix": [3, 4], "x": 9, "y": 1 },
{ "label": "K35", "matrix": [3, 5], "x": 10, "y": 1 },
{ "label": "K50", "matrix": [5, 0], "x": 0, "y": 2 },
{ "label": "K51", "matrix": [5, 1], "x": 1, "y": 2 },
{ "label": "K42", "matrix": [4, 2], "x": 2, "y": 2 },
{ "label": "K41", "matrix": [4, 1], "x": 3, "y": 2 },
{ "label": "K32", "matrix": [3, 2], "x": 4, "y": 2 },
{ "label": "K72", "matrix": [7, 2], "x": 6, "y": 2 },
{ "label": "K44", "matrix": [4, 4], "x": 7, "y": 2 },
{ "label": "K43", "matrix": [4, 3], "x": 8, "y": 2 },
{ "label": "K54", "matrix": [5, 4], "x": 9, "y": 2 },
{ "label": "K55", "matrix": [5, 5], "x": 10, "y": 2 },
{ "label": "K62", "matrix": [6, 2], "x": 2, "y": 3 },
{ "label": "K61", "matrix": [6, 1], "x": 3, "y": 3 },
{ "label": "K33", "matrix": [3, 3], "x": 4, "y": 3 },
{ "label": "K66", "matrix": [6, 6], "x": 5, "y": 3 },
{ "label": "K73", "matrix": [7, 3], "x": 6, "y": 3 },
{ "label": "K64", "matrix": [6, 4], "x": 7, "y": 3 },
{ "label": "K63", "matrix": [6, 3], "x": 8, "y": 3 }
]
},
"LAYOUT_40": {
"layout": [
{ "label": "K70", "matrix": [7, 0], "x": 0, "y": 0 },
{ "label": "K10", "matrix": [1, 0], "x": 1, "y": 0 },
{ "label": "K11", "matrix": [1, 1], "x": 2, "y": 0 },
{ "label": "K02", "matrix": [0, 2], "x": 3, "y": 0 },
{ "label": "K01", "matrix": [0, 1], "x": 4, "y": 0 },
{ "label": "K12", "matrix": [1, 2], "x": 5, "y": 0 },
{ "label": "K52", "matrix": [5, 2], "x": 7, "y": 0 },
{ "label": "K04", "matrix": [0, 4], "x": 8, "y": 0 },
{ "label": "K03", "matrix": [0, 3], "x": 9, "y": 0 },
{ "label": "K14", "matrix": [1, 4], "x": 10, "y": 0 },
{ "label": "K15", "matrix": [1, 5], "x": 11, "y": 0 },
{ "label": "K75", "matrix": [7, 5], "x": 12, "y": 0 },
{ "label": "K71", "matrix": [7, 1], "x": 0, "y": 1 },
{ "label": "K30", "matrix": [3, 0], "x": 1, "y": 1 },
{ "label": "K31", "matrix": [3, 1], "x": 2, "y": 1 },
{ "label": "K22", "matrix": [2, 2], "x": 3, "y": 1 },
{ "label": "K21", "matrix": [2, 1], "x": 4, "y": 1 },
{ "label": "K13", "matrix": [1, 3], "x": 5, "y": 1 },
{ "label": "K53", "matrix": [5, 3], "x": 7, "y": 1 },
{ "label": "K24", "matrix": [2, 4], "x": 8, "y": 1 },
{ "label": "K23", "matrix": [2, 3], "x": 9, "y": 1 },
{ "label": "K34", "matrix": [3, 4], "x": 10, "y": 1 },
{ "label": "K35", "matrix": [3, 5], "x": 11, "y": 1 },
{ "label": "K74", "matrix": [7, 4], "x": 12, "y": 1 },
{ "label": "K50", "matrix": [5, 0], "x": 1, "y": 2 },
{ "label": "K51", "matrix": [5, 1], "x": 2, "y": 2 },
{ "label": "K42", "matrix": [4, 2], "x": 3, "y": 2 },
{ "label": "K41", "matrix": [4, 1], "x": 4, "y": 2 },
{ "label": "K32", "matrix": [3, 2], "x": 5, "y": 2 },
{ "label": "K72", "matrix": [7, 2], "x": 7, "y": 2 },
{ "label": "K44", "matrix": [4, 4], "x": 8, "y": 2 },
{ "label": "K43", "matrix": [4, 3], "x": 9, "y": 2 },
{ "label": "K54", "matrix": [5, 4], "x": 10, "y": 2 },
{ "label": "K55", "matrix": [5, 5], "x": 11, "y": 2 },
{ "label": "K62", "matrix": [6, 2], "x": 3, "y": 3 },
{ "label": "K61", "matrix": [6, 1], "x": 4, "y": 3 },
{ "label": "K33", "matrix": [3, 3], "x": 5, "y": 3 },
{ "label": "K66", "matrix": [6, 6], "x": 6, "y": 3 },
{ "label": "K73", "matrix": [7, 3], "x": 7, "y": 3 },
{ "label": "K64", "matrix": [6, 4], "x": 8, "y": 3 },
{ "label": "K63", "matrix": [6, 3], "x": 9, "y": 3 }
]
}
}
}

View File

@@ -0,0 +1,49 @@
// Copyright 2023 Conor Burns (@Conor-Burns)
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_LOWER,
_RAISE,
_ADJUST
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_40(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
KC_LSFT, KC_ESC, KC_ENT, KC_MPLY, KC_SPC, KC_DEL, KC_RSFT
),
[_LOWER] = LAYOUT_40(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
),
[_RAISE] = LAYOUT_40(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
),
[_ADJUST] = LAYOUT_40(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
)
};
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_LOWER] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
[_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[_ADJUST] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }
};

View File

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

View File

@@ -0,0 +1,21 @@
// Copyright 2023 Dreipunkteinsvier (@dreipunkteinsvier)
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define TAPPING_TERM 180
// Prevent normal rollover on alphas from accidentally triggering mods.
#define IGNORE_MOD_TAP_INTERRUPT
#undef LOCKING_SUPPORT_ENABLE
#undef LOCKING_RESYNC_ENABLE
#ifdef COMBO_ENABLE
#define COMBO_COUNT 9
#define COMBO_TERM 20
#define COMBO_ONLY_FROM_LAYER 0
#endif
#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD

View File

@@ -0,0 +1,304 @@
// Copyright 2023 Dreipunkteinsvier (@dreipunkteinsvier)
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include QMK_KEYBOARD_H
#include <stdio.h>
#include <string.h>
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ D E F I N I T I O N S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
enum splaytoraid40_layers {
_QWERTY,
_COLEMAK,
_NAVIGATION,
_MEDIA,
_NUMBERS,
_FUNCTION,
};
// ┌───────────────────────────────────────────────────────────┐
// │ d e f i n e k e y c o d e s │
// └───────────────────────────────────────────────────────────┘
enum custom_keycodes {
COLEMAK = SAFE_RANGE,
QWERTY
};
// ┌───────────────────────────────────────────────────────────┐
// │ d e f i n e m a c r o n a m e s │
// └───────────────────────────────────────────────────────────┘
// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐
#define HM_A LGUI_T(KC_A)
#define HM_S LALT_T(KC_S)
#define HM_D LCTL_T(KC_D)
#define HM_F LSFT_T(KC_F)
#define HM_G RALT_T(KC_G)
// RIGHT HAND HOME ROW MODS ├──────────────────────────────────┐
#define HM_H RALT_T(KC_H)
#define HM_J RSFT_T(KC_J)
#define HM_K LCTL_T(KC_K)
#define HM_L LALT_T(KC_L)
#define HM_SCLN LGUI_T(KC_SCLN)
// CTRL + ARROWS ├─────────────────────────────────────────────┐
#define CT_LEFT LCTL(KC_LEFT)
#define CT_DOWN LCTL(KC_DOWN)
#define CT_UP LCTL(KC_UP)
#define CT_RGHT LCTL(KC_RGHT)
// THUMB KEY LAYER TAPS ├──────────────────────────────────────┐
#define TB_TAB LT(_MEDIA, KC_TAB)
#define TB_ENT LT(_NAVIGATION, KC_ENT)
#define TB_SPC LT(_NUMBERS, KC_SPC)
#define TB_BSPC LT(_FUNCTION, KC_BSPC)
// ┌───────────────────────────────────────────────────────────┐
// │ d e f i n e c o m b o s │
// └───────────────────────────────────────────────────────────┘
// vertical combos for umlauts
const uint16_t PROGMEM ae_combo[] = {KC_Q, HM_A, COMBO_END};
const uint16_t PROGMEM ss_combo[] = {KC_W, HM_S, COMBO_END};
const uint16_t PROGMEM ue_combo[] = {KC_U, HM_J, COMBO_END};
const uint16_t PROGMEM oe_combo[] = {KC_O, HM_L, COMBO_END};
// horizontal combos for mods
const uint16_t PROGMEM del_combo[] = {HM_H, HM_J, COMBO_END};
const uint16_t PROGMEM bsp_combo[] = {HM_J, HM_K, COMBO_END};
const uint16_t PROGMEM ent_combo[] = {HM_K, HM_L, COMBO_END};
const uint16_t PROGMEM tab_combo[] = {HM_F, HM_D, COMBO_END};
const uint16_t PROGMEM esc_combo[] = {HM_D, HM_S, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
COMBO(ae_combo, RALT(KC_Q)),
COMBO(ss_combo, RALT(KC_S)),
COMBO(ue_combo, RALT(KC_Y)),
COMBO(oe_combo, RALT(KC_P)),
COMBO(del_combo, KC_DEL),
COMBO(bsp_combo, KC_BSPC),
COMBO(ent_combo, KC_ENT),
COMBO(tab_combo, KC_TAB),
COMBO(esc_combo, KC_ESC)
};
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ K E Y M A P S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ q w e r t y │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ Q │ W │ E │ R │ T │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ Y │ U │ I │ O │ P │
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
│ A │ S │ D │ F │ G ├─╯ ╰─┤ H │ J │ K │ L │ ; │
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
│ Z │ X │ C │ V │ B ││ ││ ││ N │ M │ , │ . │ / │
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
│ ESC │ TAB │ ENTER │ │ SPACE │ BSPACE │ DEL │
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
[_QWERTY] = LAYOUT_36(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
HM_A, HM_S, HM_D, HM_F, HM_G, HM_H, HM_J, HM_K, HM_L, HM_SCLN,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
KC_ESC, TB_TAB, TB_ENT, KC_MPLY, TB_SPC, TB_BSPC, KC_DEL
),
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ c o l e m a k │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ Q │ W │ F │ P │ G │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ J │ L │ U │ Y │ ; │
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
│ A │ R │ S │ T │ D ├─╯ ╰─┤ H │ N │ E │ I │ O │
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
│ Z │ X │ C │ V │ B ││ ││ ││ K │ M │ , │ . │ / │
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
│ ESC │ TAB │ ENTER │ │ SPACE │ BSPACE │ DEL │
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
[_COLEMAK] = LAYOUT_36(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH,
KC_ESC, TB_TAB, TB_ENT, _______, TB_SPC, TB_BSPC, KC_DEL
),
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ n a v i g a t i o n │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ │ │ │ │ { │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ } │ CTRL ← │ CTRL ↓ │ CTRL ↑ │ CTRL → │
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
│ │ │ │ │ ( ├─╯ ╰─┤ ) │ ← │ ↓ │ ↑ │ → │
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
│ │ │ │ │ [ ││ ││ ││ ] │ HOME │ PG↓ │ PG↑ │ END │
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
│ │ │ │ │ │ │ │
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
[_NAVIGATION] = LAYOUT_36(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
_______, _______, _______, _______, KC_LCBR, KC_RCBR, CT_LEFT, CT_DOWN, CT_UP, CT_RGHT,
KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_LPRN, KC_RPRN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
_______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
_______, _______, _______, _______, _______, _______, _______
),
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ m e d i a & s y m b o l │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ _ │ & │ * │ ( │ ) │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
│ + │ $ │ % │ ^ │ " ├─╯ ╰─┤ │ │ │ │ │
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
│ ~ │ ! │ @ │ # │ | ││ ││ ││ │ │ │ │ │
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
│ │ │ │ │ │ │ │
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
[_MEDIA] = LAYOUT_36(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_UNDS, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
KC_PLUS, KC_DLR, KC_PERC, KC_CIRC, KC_DQUO, RGB_M_P, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, QWERTY, COLEMAK, _______, _______, QK_BOOTLOADER,
_______, _______, _______, _______, _______, _______, _______
),
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ n u m b e r s │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ - │ 7 │ 8 │ 9 │ 0 │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
│ = │ 4 │ 5 │ 6 │ ' ├─╯ ╰─┤ │ │ │ │ │
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
│ ` │ 1 │ 2 │ 3 │ \ ││ ││ ││ │ │ │ │ │
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
│ │ │ │ │ │ │ │
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
[_NUMBERS] = LAYOUT_36(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_MINS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______,
KC_EQL, KC_4, KC_5, KC_6, KC_QUOT, KC_RALT, KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI,
KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
),
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ f u n t i o n │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ F12 │ F7 │ F8 │ F9 │ PRT SCR │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
│ F11 │ F4 │ F5 │ F6 │ ├─╯ ╰─┤ │ │ │ │ │
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
│ F10 │ F1 │ F2 │ F3 │ INS ││ ││ ││ │ │ │ │ │
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
│ │ │ │ │ │ │ │
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
[_FUNCTION] = LAYOUT_36(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, _______, _______, _______, _______, _______,
KC_F11, KC_F4, KC_F5, KC_F6, _______, KC_RALT, KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI,
KC_F10, KC_F1, KC_F2, KC_F3, KC_INS, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
)
/*
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
┌───────────────────────────────────────────────────────────┐
│ t e m p l a t e │
└───────────────────────────────────────────────────────────┘
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
│ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
│ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
│ │ │ │ │ ││ ││ ││ │ │ │ │ │
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
│ │ │ │ │ │ │ │
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
/*
[_TEMPLATE] = LAYOUT_saegewerk(
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
)*/
};
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
// │ D I E S U N D D A S │
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
bool caps_word_press_user(uint16_t keycode) {
switch (keycode) {
// Keycodes that continue Caps Word, with shift applied.
case KC_A ... KC_Z:
add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to the next key.
return true;
// Keycodes that continue Caps Word, without shifting.
case KC_1 ... KC_0:
case KC_BSPC:
case KC_DEL:
case KC_MINS:
case KC_UNDS:
case KC_LSFT:
case KC_RSFT:
return true;
default:
return false; // Deactivate Caps Word.
}
}
// ┌───────────────────────────────────────────────────────────┐
// │ e n c o d e r │
// └───────────────────────────────────────────────────────────┘
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_NAVIGATION] = { ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
[_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_COLEMAK] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_MEDIA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_NUMBERS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_FUNCTION] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
};

View File

@@ -0,0 +1,3 @@
COMBO_ENABLE = yes
CAPS_WORD_ENABLE = yes
ENCODER_MAP_ENABLE = yes

View File

@@ -0,0 +1,48 @@
// Copyright 2023 Conor Burns (@Conor-Burns)
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_LOWER,
_RAISE,
_ADJUST
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_40(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
KC_LSFT, KC_ESC, KC_ENT, KC_MPLY, KC_SPC, KC_DEL, KC_RSFT
),
[_LOWER] = LAYOUT_40(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
),
[_RAISE] = LAYOUT_40(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
),
[_ADJUST] = LAYOUT_40(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
)
};
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_LOWER] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
[_RAISE] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
[_ADJUST] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }
};

View File

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

View File

@@ -0,0 +1,36 @@
# splaytoraid
![splaytoraid](https://i.imgur.com/N85DPHGh.png)
A 40% ergonomic keyboard with a stacked acrylic case and RGB underglow.
* Keyboard Maintainer: [freya](https://github.com/freya-irl)
* Hardware Supported: PCB kit and Pro Micro compatible controller
* Hardware Availability: [here](https://keeb.supply/products/splaytoraid-messenger-edition)
Make example for this keyboard (after setting up your build environment):
make 0xcb/splaytoraid:default
make 0xcb/splaytoraid/32u4:default
Flashing example for this keyboard:
make 0xcb/splaytoraid:default:flash
make 0xcb/splaytoraid/32u4:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the left top 4. col key (usually Escape) and plug in the keyboard
* **Physical reset button**: Press the button on the controller (Helios) for more than 500ms or just press it (Pluto)
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Please note that the default bootloader for the `32u4` version is QMK DFU, for compatibility with [0xCB Pluto](https://github.com/0xCB-dev/0xCB-Pluto). Generic Pro Micros often use a different bootloader, such as `caterina`.
If the incorrect bootloader is specified, bootmagic reset and the `QK_BOOT` keycode will not work.
To avoid this problem, set the correct bootloader in your custom keymap's `rules.mk` file before compiling, or flash using an appropriate target (ex: `make 0xcb/splaytoraid/32u4:default:avrdude`). See [flashing instructions and bootloader information](https://docs.qmk.fm/#/flashing) for more details.

View File

@@ -0,0 +1,25 @@
// Copyright 2023 Conor Burns (@Conor-Burns)
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_DUAL_BEACON
#define ENABLE_RGB_MATRIX_HUE_BREATHING
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
#define ENABLE_RGB_MATRIX_SPLASH
#define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH

View File

@@ -0,0 +1,3 @@
# rp2040_ce
This folder is set as default in the parent rules.mk - it will build firmware compatible with the RP2040 Community Edition. See [here](https://docs.qmk.fm/#/platformdev_rp2040?id=rp2040_ce) for a list.

View File

@@ -0,0 +1,2 @@
WS2812_DRIVER = vendor
CONVERT_TO = rp2040_ce

View File

@@ -0,0 +1 @@
DEFAULT_FOLDER = 0xcb/splaytoraid/rp2040_ce

View File

@@ -3,26 +3,14 @@
#pragma once
#define DYNAMIC_KEYMAP_LAYER_COUNT 10
#ifdef OLED_ENABLE
# define OLED_DISPLAY_128X32
#define OLED_DISPLAY_128X32
#define I2C1_SCL_PIN GP17
#define I2C1_SDA_PIN GP16
#define I2C_DRIVER I2CD0
#define OLED_BRIGHTNESS 128
#define OLED_FONT_H "keyboards/1upkeyboards/pi40/lib/glcdfont.c"
#endif
#define DIODE_DIRECTION COL2ROW
#define MATRIX_ROW_PINS { GP21, GP20, GP19, GP18 }
#define MATRIX_COL_PINS { GP1, GP2, GP3, GP4, GP5, GP6, GP7, GP8, GP9, GP10, GP11, GP12 }
#define RGB_DI_PIN GP0
#define RGB_MATRIX_LED_COUNT 47
#define RGBLED_NUM 47
# define RGB_MATRIX_KEYPRESSES // reacts to keypresses
# define RGB_MATRIX_FRAMEBUFFER_EFFECTS
# define RGBLIGHT_LIMIT_VAL 150

View File

@@ -0,0 +1,6 @@
// Copyright 2022 ziptyze (@ziptyze)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RGB_MATRIX_LED_COUNT 48

View File

@@ -0,0 +1,149 @@
{
"keyboard_name": "pi40",
"manufacturer": "1upkeyboards",
"maintainer": "ziptyze",
"processor": "RP2040",
"bootloader": "rp2040",
"usb": {
"vid": "0x6F75",
"pid": "0x5600",
"device_version": "1.1.0"
},
"diode_direction": "COL2ROW",
"dynamic_keymap": {
"layer_count": 10
},
"features": {
"audio": false,
"backlight": false,
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": false,
"rgb_matrix": true,
"rgblight": false
},
"matrix_pins": {
"rows": [ "GP21", "GP20", "GP19", "GP18" ],
"cols": [ "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP22" ]
},
"encoder": {
"enabled": true,
"rotary": [
{
"pin_a": "GP14",
"pin_b": "GP13"
}
]
},
"rgb_matrix": {
"driver": "WS2812",
"layout": [
{ "flags": 1, "matrix": [0, 0], "x": 9, "y": 8 },
{ "flags": 4, "matrix": [0, 1], "x": 28, "y": 8 },
{ "flags": 4, "matrix": [0, 2], "x": 46, "y": 8 },
{ "flags": 4, "matrix": [0, 3], "x": 65, "y": 8 },
{ "flags": 4, "matrix": [0, 4], "x": 84, "y": 8 },
{ "flags": 4, "matrix": [0, 5], "x": 102, "y": 8 },
{ "flags": 4, "matrix": [0, 6], "x": 121, "y": 8 },
{ "flags": 4, "matrix": [0, 7], "x": 140, "y": 8 },
{ "flags": 4, "matrix": [0, 8], "x": 159, "y": 8 },
{ "flags": 4, "matrix": [0, 9], "x": 177, "y": 8 },
{ "flags": 4, "matrix": [0, 10], "x": 196, "y": 8 },
{ "flags": 1, "matrix": [0, 11], "x": 215, "y": 8 },
{ "flags": 1, "matrix": [1, 11], "x": 215, "y": 24 },
{ "flags": 4, "matrix": [1, 10], "x": 196, "y": 24 },
{ "flags": 4, "matrix": [1, 9], "x": 177, "y": 24 },
{ "flags": 4, "matrix": [1, 8], "x": 159, "y": 24 },
{ "flags": 4, "matrix": [1, 7], "x": 140, "y": 24 },
{ "flags": 4, "matrix": [1, 6], "x": 121, "y": 24 },
{ "flags": 4, "matrix": [1, 5], "x": 102, "y": 24 },
{ "flags": 4, "matrix": [1, 4], "x": 84, "y": 24 },
{ "flags": 4, "matrix": [1, 3], "x": 65, "y": 24 },
{ "flags": 4, "matrix": [1, 2], "x": 46, "y": 24 },
{ "flags": 4, "matrix": [1, 1], "x": 28, "y": 24 },
{ "flags": 1, "matrix": [1, 0], "x": 9, "y": 24 },
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 40 },
{ "flags": 4, "matrix": [2, 1], "x": 28, "y": 40 },
{ "flags": 4, "matrix": [2, 2], "x": 46, "y": 40 },
{ "flags": 4, "matrix": [2, 3], "x": 65, "y": 40 },
{ "flags": 4, "matrix": [2, 4], "x": 84, "y": 40 },
{ "flags": 4, "matrix": [2, 5], "x": 102, "y": 40 },
{ "flags": 4, "matrix": [2, 6], "x": 121, "y": 40 },
{ "flags": 4, "matrix": [2, 7], "x": 140, "y": 40 },
{ "flags": 4, "matrix": [2, 8], "x": 159, "y": 40 },
{ "flags": 4, "matrix": [2, 9], "x": 177, "y": 40 },
{ "flags": 4, "matrix": [2, 10], "x": 196, "y": 40 },
{ "flags": 1, "matrix": [2, 11], "x": 215, "y": 40 },
{ "flags": 1, "matrix": [3, 11], "x": 215, "y": 56 },
{ "flags": 1, "matrix": [3, 10], "x": 196, "y": 56 },
{ "flags": 1, "matrix": [3, 9], "x": 177, "y": 56 },
{ "flags": 1, "matrix": [3, 8], "x": 159, "y": 56 },
{ "flags": 1, "matrix": [3, 7], "x": 140, "y": 56 },
{ "flags": 1, "matrix": [3, 6], "x": 121, "y": 56 },
{ "flags": 1, "matrix": [3, 4], "x": 84, "y": 56 },
{ "flags": 1, "matrix": [3, 3], "x": 65, "y": 56 },
{ "flags": 1, "matrix": [3, 2], "x": 46, "y": 56 },
{ "flags": 1, "matrix": [3, 1], "x": 28, "y": 56 },
{ "flags": 1, "matrix": [3, 0], "x": 9, "y": 56 },
{ "flags": 1, "matrix": [3, 5], "x": 102, "y": 56 }
]
},
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
{ "matrix": [0, 12], "x": 11, "y": 0 },
{ "matrix": [0, 0], "x": 0, "y": 1 },
{ "matrix": [0, 1], "x": 1, "y": 1 },
{ "matrix": [0, 2], "x": 2, "y": 1 },
{ "matrix": [0, 3], "x": 3, "y": 1 },
{ "matrix": [0, 4], "x": 4, "y": 1 },
{ "matrix": [0, 5], "x": 5, "y": 1 },
{ "matrix": [0, 6], "x": 6, "y": 1 },
{ "matrix": [0, 7], "x": 7, "y": 1 },
{ "matrix": [0, 8], "x": 8, "y": 1 },
{ "matrix": [0, 9], "x": 9, "y": 1 },
{ "matrix": [0, 10], "x": 10, "y": 1 },
{ "matrix": [0, 11], "x": 11, "y": 1 },
{ "matrix": [1, 0], "x": 0, "y": 2 },
{ "matrix": [1, 1], "x": 1, "y": 2 },
{ "matrix": [1, 2], "x": 2, "y": 2 },
{ "matrix": [1, 3], "x": 3, "y": 2 },
{ "matrix": [1, 4], "x": 4, "y": 2 },
{ "matrix": [1, 5], "x": 5, "y": 2 },
{ "matrix": [1, 6], "x": 6, "y": 2 },
{ "matrix": [1, 7], "x": 7, "y": 2 },
{ "matrix": [1, 8], "x": 8, "y": 2 },
{ "matrix": [1, 9], "x": 9, "y": 2 },
{ "matrix": [1, 10], "x": 10, "y": 2 },
{ "matrix": [1, 11], "x": 11, "y": 2 },
{ "matrix": [2, 0], "x": 0, "y": 3 },
{ "matrix": [2, 1], "x": 1, "y": 3 },
{ "matrix": [2, 2], "x": 2, "y": 3 },
{ "matrix": [2, 3], "x": 3, "y": 3 },
{ "matrix": [2, 4], "x": 4, "y": 3 },
{ "matrix": [2, 5], "x": 5, "y": 3 },
{ "matrix": [2, 6], "x": 6, "y": 3 },
{ "matrix": [2, 7], "x": 7, "y": 3 },
{ "matrix": [2, 8], "x": 8, "y": 3 },
{ "matrix": [2, 9], "x": 9, "y": 3 },
{ "matrix": [2, 10], "x": 10, "y": 3 },
{ "matrix": [2, 11], "x": 11, "y": 3 },
{ "matrix": [3, 0], "x": 0, "y": 4 },
{ "matrix": [3, 1], "x": 1, "y": 4 },
{ "matrix": [3, 2], "x": 2, "y": 4 },
{ "matrix": [3, 3], "x": 3, "y": 4 },
{ "matrix": [3, 4], "x": 4, "y": 4 },
{ "matrix": [3, 5], "x": 5, "y": 4 },
{ "matrix": [3, 6], "x": 6, "y": 4 },
{ "matrix": [3, 7], "x": 7, "y": 4 },
{ "matrix": [3, 8], "x": 8, "y": 4 },
{ "matrix": [3, 9], "x": 9, "y": 4 },
{ "matrix": [3, 10], "x": 10, "y": 4 },
{ "matrix": [3, 11], "x": 11, "y": 4 }
]
}
}
}

View File

@@ -1,123 +0,0 @@
{
"keyboard_name": "pi40",
"manufacturer": "1upkeyboards",
"usb": {
"vid": "0x6F75",
"pid": "0x5600",
"device_version": "0.0.1"
},
"encoder": {
"rotary": [
{"pin_a": "GP14", "pin_b": "GP13"}
]
},
"processor": "RP2040",
"bootloader": "rp2040",
"board": "GENERIC_RP_RP2040",
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [3, 6], "x": 11, "y": 0 },
{ "matrix": [0, 0], "x": 0, "y": 1 },
{ "matrix": [0, 1], "x": 1, "y": 1 },
{ "matrix": [0, 2], "x": 2, "y": 1 },
{ "matrix": [0, 3], "x": 3, "y": 1 },
{ "matrix": [0, 4], "x": 4, "y": 1 },
{ "matrix": [0, 5], "x": 5, "y": 1 },
{ "matrix": [0, 6], "x": 6, "y": 1 },
{ "matrix": [0, 7], "x": 7, "y": 1 },
{ "matrix": [0, 8], "x": 8, "y": 1 },
{ "matrix": [0, 9], "x": 9, "y": 1 },
{ "matrix": [0, 10], "x": 10, "y": 1 },
{ "matrix": [0, 11], "x": 11, "y": 1 },
{ "matrix": [1, 0], "x": 0, "y": 2 },
{ "matrix": [1, 1], "x": 1, "y": 2 },
{ "matrix": [1, 2], "x": 2, "y": 2 },
{ "matrix": [1, 3], "x": 3, "y": 2 },
{ "matrix": [1, 4], "x": 4, "y": 2 },
{ "matrix": [1, 5], "x": 5, "y": 2 },
{ "matrix": [1, 6], "x": 6, "y": 2 },
{ "matrix": [1, 7], "x": 7, "y": 2 },
{ "matrix": [1, 8], "x": 8, "y": 2 },
{ "matrix": [1, 9], "x": 9, "y": 2 },
{ "matrix": [1, 10], "x": 10, "y": 2 },
{ "matrix": [1, 11], "x": 11, "y": 2 },
{ "matrix": [2, 0], "x": 0, "y": 3 },
{ "matrix": [2, 1], "x": 1, "y": 3 },
{ "matrix": [2, 2], "x": 2, "y": 3 },
{ "matrix": [2, 3], "x": 3, "y": 3 },
{ "matrix": [2, 4], "x": 4, "y": 3 },
{ "matrix": [2, 5], "x": 5, "y": 3 },
{ "matrix": [2, 6], "x": 6, "y": 3 },
{ "matrix": [2, 7], "x": 7, "y": 3 },
{ "matrix": [2, 8], "x": 8, "y": 3 },
{ "matrix": [2, 9], "x": 9, "y": 3 },
{ "matrix": [2, 10], "x": 10, "y": 3 },
{ "matrix": [2, 11], "x": 11, "y": 3 },
{ "matrix": [3, 0], "x": 0, "y": 4 },
{ "matrix": [3, 1], "x": 1, "y": 4 },
{ "matrix": [3, 2], "x": 2, "y": 4 },
{ "matrix": [3, 3], "x": 3, "y": 4 },
{ "matrix": [3, 4], "x": 4, "y": 4 },
{ "matrix": [3, 5], "x": 5, "y": 4, "w": 2},
{ "matrix": [3, 7], "x": 7, "y": 4 },
{ "matrix": [3, 8], "x": 8, "y": 4 },
{ "matrix": [3, 9], "x": 9, "y": 4 },
{ "matrix": [3, 10], "x": 10, "y": 4 },
{ "matrix": [3, 11], "x": 11, "y": 4 }
]
},
"LAYOUT_ortho_4x12": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0 },
{ "matrix": [0, 6], "x": 6, "y": 0 },
{ "matrix": [0, 7], "x": 7, "y": 0 },
{ "matrix": [0, 8], "x": 8, "y": 0 },
{ "matrix": [0, 9], "x": 9, "y": 0 },
{ "matrix": [0, 10], "x": 10, "y": 0 },
{ "matrix": [0, 11], "x": 11, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1 },
{ "matrix": [1, 1], "x": 1, "y": 1 },
{ "matrix": [1, 2], "x": 2, "y": 1 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [1, 4], "x": 4, "y": 1 },
{ "matrix": [1, 5], "x": 5, "y": 1 },
{ "matrix": [1, 6], "x": 6, "y": 1 },
{ "matrix": [1, 7], "x": 7, "y": 1 },
{ "matrix": [1, 8], "x": 8, "y": 1 },
{ "matrix": [1, 9], "x": 9, "y": 1 },
{ "matrix": [1, 10], "x": 10, "y": 1 },
{ "matrix": [1, 11], "x": 11, "y": 1 },
{ "matrix": [2, 0], "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1, "y": 2 },
{ "matrix": [2, 2], "x": 2, "y": 2 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2 },
{ "matrix": [2, 5], "x": 5, "y": 2 },
{ "matrix": [2, 6], "x": 6, "y": 2 },
{ "matrix": [2, 7], "x": 7, "y": 2 },
{ "matrix": [2, 8], "x": 8, "y": 2 },
{ "matrix": [2, 9], "x": 9, "y": 2 },
{ "matrix": [2, 10], "x": 10, "y": 2 },
{ "matrix": [2, 11], "x": 11, "y": 2 },
{ "matrix": [3, 0], "x": 0, "y": 3 },
{ "matrix": [3, 1], "x": 1, "y": 3 },
{ "matrix": [3, 2], "x": 2, "y": 3 },
{ "matrix": [3, 3], "x": 3, "y": 3 },
{ "matrix": [3, 4], "x": 4, "y": 3 },
{ "matrix": [3, 5], "x": 5, "y": 3 },
{ "matrix": [3, 6], "x": 6, "y": 3, "label": "ENC" },
{ "matrix": [3, 7], "x": 7, "y": 3 },
{ "matrix": [3, 8], "x": 8, "y": 3 },
{ "matrix": [3, 9], "x": 9, "y": 3 },
{ "matrix": [3, 10], "x": 10, "y": 3 },
{ "matrix": [3, 11], "x": 11, "y": 3 }
]
}
}
}

View File

@@ -26,8 +26,8 @@ enum layer_names {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ╱⎺⎺⎺⎺╲
* |RGBTOG|
* ╱⎺⎺⎺⎺╲
* |RGBTOG|
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
@@ -39,17 +39,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_ONE] = LAYOUT (
[_ONE] = LAYOUT_ortho_4x12 (
RGB_TOG,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
@@ -61,17 +61,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_TWO] = LAYOUT (
[_TWO] = LAYOUT_ortho_4x12 (
KC_MUTE,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
_______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
@@ -83,17 +83,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | Mute | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_THREE] = LAYOUT (
[_THREE] = LAYOUT_ortho_4x12 (
KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╱⎺⎺⎺⎺╲
* | MUTE |
* v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
@@ -105,12 +105,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | Mute | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_FOUR] = LAYOUT (
[_FOUR] = LAYOUT_ortho_4x12 (
KC_MUTE,
_______, QK_BOOT, DB_TOGG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
_______, QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@@ -32,8 +32,8 @@ enum layer_names {
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Qwerty
* ╱⎺⎺⎺⎺╲
* |RGBTOG|
* ╱⎺⎺⎺⎺╲
* |RGBTOG|
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp |
@@ -45,17 +45,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* |Adjust| Ctrl | Alt | GUI |Lower | Space |Raise | Left | Down | Up |Right |
* `-----------------------------------------------------------------------------------'
*/
[_ONE] = LAYOUT (
[_ONE] = LAYOUT_ortho_4x12 (
RGB_TOG,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
MO(3), KC_LCTL, KC_LALT, KC_LGUI, MO(1), KC_SPC, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
/* Lower
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp |
@@ -67,17 +67,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_TWO] = LAYOUT (
[_TWO] = LAYOUT_ortho_4x12 (
KC_MUTE,
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(KC_NUHS), S(KC_NUBS), KC_HOME, KC_END, _______,
_______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Raise
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp |
@@ -89,17 +89,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | Mute | | Next | Vol- | Vol+ | Play |
* `-----------------------------------------------------------------------------------'
*/
[_THREE] = LAYOUT (
[_THREE] = LAYOUT_ortho_4x12 (
KC_MUTE,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
_______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
/* Adjust (Lower + Raise)
* ╱⎺⎺⎺⎺╲
* | MUTE |
* ╱⎺⎺⎺⎺╲
* | MUTE |
* v-----------------------RGB CONTROL------------------v ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | Reset|Debug | RGB |RGBMOD| HUE+ | HUE- | SAT+ | SAT- |BRGTH+|BRGTH-| Del |
@@ -111,17 +111,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | Mute | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_FOUR] = LAYOUT (
[_FOUR] = LAYOUT_ortho_4x12 (
KC_MUTE,
_______, QK_BOOT, DB_TOGG, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
_______, QK_BOOT, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_DEL ,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
@@ -133,17 +133,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_FIVE] = LAYOUT (
[_FIVE] = LAYOUT_ortho_4x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
@@ -155,17 +155,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_SIX] = LAYOUT (
[_SIX] = LAYOUT_ortho_4x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
@@ -177,17 +177,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_SEVEN] = LAYOUT (
[_SEVEN] = LAYOUT_ortho_4x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
@@ -199,17 +199,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_EIGHT] = LAYOUT (
[_EIGHT] = LAYOUT_ortho_4x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
@@ -221,17 +221,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_NINE] = LAYOUT (
[_NINE] = LAYOUT_ortho_4x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
/* Placeholder
* ╱⎺⎺⎺⎺╲
* | |
* ╱⎺⎺⎺⎺╲
* | |
* ╲⎽⎽⎽⎽╱
* ,-----------------------------------------------------------------------------------.
* | | | | | | | | | | | | |
@@ -243,12 +243,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------'
*/
[_TEN] = LAYOUT (
[_TEN] = LAYOUT_ortho_4x12 (
_______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

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

View File

@@ -0,0 +1,148 @@
{
"keyboard_name": "pi40",
"manufacturer": "1upkeyboards",
"maintainer": "ziptyze",
"processor": "RP2040",
"bootloader": "rp2040",
"usb": {
"vid": "0x6F75",
"pid": "0x5600",
"device_version": "1.0.0"
},
"diode_direction": "COL2ROW",
"dynamic_keymap": {
"layer_count": 10
},
"features": {
"audio": false,
"backlight": false,
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": false,
"rgb_matrix": true,
"rgblight": false
},
"matrix_pins": {
"rows": [ "GP21", "GP20", "GP19", "GP18" ],
"cols": [ "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP22" ]
},
"encoder": {
"enabled": true,
"rotary": [
{
"pin_a": "GP14",
"pin_b": "GP13"
}
]
},
"rgb_matrix": {
"driver": "WS2812",
"layout": [
{ "flags": 1, "matrix": [0, 0], "x": 9, "y": 8 },
{ "flags": 4, "matrix": [0, 1], "x": 28, "y": 8 },
{ "flags": 4, "matrix": [0, 2], "x": 46, "y": 8 },
{ "flags": 4, "matrix": [0, 3], "x": 65, "y": 8 },
{ "flags": 4, "matrix": [0, 4], "x": 84, "y": 8 },
{ "flags": 4, "matrix": [0, 5], "x": 102, "y": 8 },
{ "flags": 4, "matrix": [0, 6], "x": 121, "y": 8 },
{ "flags": 4, "matrix": [0, 7], "x": 140, "y": 8 },
{ "flags": 4, "matrix": [0, 8], "x": 159, "y": 8 },
{ "flags": 4, "matrix": [0, 9], "x": 177, "y": 8 },
{ "flags": 4, "matrix": [0, 10], "x": 196, "y": 8 },
{ "flags": 1, "matrix": [0, 11], "x": 215, "y": 8 },
{ "flags": 1, "matrix": [1, 11], "x": 215, "y": 24 },
{ "flags": 4, "matrix": [1, 10], "x": 196, "y": 24 },
{ "flags": 4, "matrix": [1, 9], "x": 177, "y": 24 },
{ "flags": 4, "matrix": [1, 8], "x": 159, "y": 24 },
{ "flags": 4, "matrix": [1, 7], "x": 140, "y": 24 },
{ "flags": 4, "matrix": [1, 6], "x": 121, "y": 24 },
{ "flags": 4, "matrix": [1, 5], "x": 102, "y": 24 },
{ "flags": 4, "matrix": [1, 4], "x": 84, "y": 24 },
{ "flags": 4, "matrix": [1, 3], "x": 65, "y": 24 },
{ "flags": 4, "matrix": [1, 2], "x": 46, "y": 24 },
{ "flags": 4, "matrix": [1, 1], "x": 28, "y": 24 },
{ "flags": 1, "matrix": [1, 0], "x": 9, "y": 24 },
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 40 },
{ "flags": 4, "matrix": [2, 1], "x": 28, "y": 40 },
{ "flags": 4, "matrix": [2, 2], "x": 46, "y": 40 },
{ "flags": 4, "matrix": [2, 3], "x": 65, "y": 40 },
{ "flags": 4, "matrix": [2, 4], "x": 84, "y": 40 },
{ "flags": 4, "matrix": [2, 5], "x": 102, "y": 40 },
{ "flags": 4, "matrix": [2, 6], "x": 121, "y": 40 },
{ "flags": 4, "matrix": [2, 7], "x": 140, "y": 40 },
{ "flags": 4, "matrix": [2, 8], "x": 159, "y": 40 },
{ "flags": 4, "matrix": [2, 9], "x": 177, "y": 40 },
{ "flags": 4, "matrix": [2, 10], "x": 196, "y": 40 },
{ "flags": 1, "matrix": [2, 11], "x": 215, "y": 40 },
{ "flags": 1, "matrix": [3, 11], "x": 215, "y": 56 },
{ "flags": 1, "matrix": [3, 10], "x": 196, "y": 56 },
{ "flags": 1, "matrix": [3, 9], "x": 177, "y": 56 },
{ "flags": 1, "matrix": [3, 8], "x": 159, "y": 56 },
{ "flags": 1, "matrix": [3, 7], "x": 140, "y": 56 },
{ "flags": 1, "matrix": [3, 5], "x": 112, "y": 56 },
{ "flags": 1, "matrix": [3, 4], "x": 84, "y": 56 },
{ "flags": 1, "matrix": [3, 3], "x": 65, "y": 56 },
{ "flags": 1, "matrix": [3, 2], "x": 46, "y": 56 },
{ "flags": 1, "matrix": [3, 1], "x": 28, "y": 56 },
{ "flags": 1, "matrix": [3, 0], "x": 9, "y": 56 }
]
},
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
{ "matrix": [3, 6], "x": 11, "y": 0 },
{ "matrix": [0, 0], "x": 0, "y": 1 },
{ "matrix": [0, 1], "x": 1, "y": 1 },
{ "matrix": [0, 2], "x": 2, "y": 1 },
{ "matrix": [0, 3], "x": 3, "y": 1 },
{ "matrix": [0, 4], "x": 4, "y": 1 },
{ "matrix": [0, 5], "x": 5, "y": 1 },
{ "matrix": [0, 6], "x": 6, "y": 1 },
{ "matrix": [0, 7], "x": 7, "y": 1 },
{ "matrix": [0, 8], "x": 8, "y": 1 },
{ "matrix": [0, 9], "x": 9, "y": 1 },
{ "matrix": [0, 10], "x": 10, "y": 1 },
{ "matrix": [0, 11], "x": 11, "y": 1 },
{ "matrix": [1, 0], "x": 0, "y": 2 },
{ "matrix": [1, 1], "x": 1, "y": 2 },
{ "matrix": [1, 2], "x": 2, "y": 2 },
{ "matrix": [1, 3], "x": 3, "y": 2 },
{ "matrix": [1, 4], "x": 4, "y": 2 },
{ "matrix": [1, 5], "x": 5, "y": 2 },
{ "matrix": [1, 6], "x": 6, "y": 2 },
{ "matrix": [1, 7], "x": 7, "y": 2 },
{ "matrix": [1, 8], "x": 8, "y": 2 },
{ "matrix": [1, 9], "x": 9, "y": 2 },
{ "matrix": [1, 10], "x": 10, "y": 2 },
{ "matrix": [1, 11], "x": 11, "y": 2 },
{ "matrix": [2, 0], "x": 0, "y": 3 },
{ "matrix": [2, 1], "x": 1, "y": 3 },
{ "matrix": [2, 2], "x": 2, "y": 3 },
{ "matrix": [2, 3], "x": 3, "y": 3 },
{ "matrix": [2, 4], "x": 4, "y": 3 },
{ "matrix": [2, 5], "x": 5, "y": 3 },
{ "matrix": [2, 6], "x": 6, "y": 3 },
{ "matrix": [2, 7], "x": 7, "y": 3 },
{ "matrix": [2, 8], "x": 8, "y": 3 },
{ "matrix": [2, 9], "x": 9, "y": 3 },
{ "matrix": [2, 10], "x": 10, "y": 3 },
{ "matrix": [2, 11], "x": 11, "y": 3 },
{ "matrix": [3, 0], "x": 0, "y": 4 },
{ "matrix": [3, 1], "x": 1, "y": 4 },
{ "matrix": [3, 2], "x": 2, "y": 4 },
{ "matrix": [3, 3], "x": 3, "y": 4 },
{ "matrix": [3, 4], "x": 4, "y": 4 },
{ "matrix": [3, 5], "x": 5, "y": 4 },
{ "matrix": [0, 12], "x": 6, "y": 4 },
{ "matrix": [3, 7], "x": 7, "y": 4 },
{ "matrix": [3, 8], "x": 8, "y": 4 },
{ "matrix": [3, 9], "x": 9, "y": 4 },
{ "matrix": [3, 10], "x": 10, "y": 4 },
{ "matrix": [3, 11], "x": 11, "y": 4 }
]
}
}
}

View File

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

View File

@@ -0,0 +1,148 @@
{
"keyboard_name": "pi40",
"manufacturer": "1upkeyboards",
"maintainer": "ziptyze",
"processor": "RP2040",
"bootloader": "rp2040",
"usb": {
"vid": "0x6F75",
"pid": "0x5600",
"device_version": "1.1.0"
},
"diode_direction": "COL2ROW",
"dynamic_keymap": {
"layer_count": 10
},
"features": {
"audio": false,
"backlight": false,
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": false,
"rgb_matrix": true,
"rgblight": false
},
"matrix_pins": {
"rows": [ "GP21", "GP20", "GP19", "GP18" ],
"cols": [ "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP22" ]
},
"encoder": {
"enabled": true,
"rotary": [
{
"pin_a": "GP14",
"pin_b": "GP13"
}
]
},
"rgb_matrix": {
"driver": "WS2812",
"layout": [
{ "flags": 1, "matrix": [0, 0], "x": 9, "y": 8 },
{ "flags": 4, "matrix": [0, 1], "x": 28, "y": 8 },
{ "flags": 4, "matrix": [0, 2], "x": 46, "y": 8 },
{ "flags": 4, "matrix": [0, 3], "x": 65, "y": 8 },
{ "flags": 4, "matrix": [0, 4], "x": 84, "y": 8 },
{ "flags": 4, "matrix": [0, 5], "x": 102, "y": 8 },
{ "flags": 4, "matrix": [0, 6], "x": 121, "y": 8 },
{ "flags": 4, "matrix": [0, 7], "x": 140, "y": 8 },
{ "flags": 4, "matrix": [0, 8], "x": 159, "y": 8 },
{ "flags": 4, "matrix": [0, 9], "x": 177, "y": 8 },
{ "flags": 4, "matrix": [0, 10], "x": 196, "y": 8 },
{ "flags": 1, "matrix": [0, 11], "x": 215, "y": 8 },
{ "flags": 1, "matrix": [1, 11], "x": 215, "y": 24 },
{ "flags": 4, "matrix": [1, 10], "x": 196, "y": 24 },
{ "flags": 4, "matrix": [1, 9], "x": 177, "y": 24 },
{ "flags": 4, "matrix": [1, 8], "x": 159, "y": 24 },
{ "flags": 4, "matrix": [1, 7], "x": 140, "y": 24 },
{ "flags": 4, "matrix": [1, 6], "x": 121, "y": 24 },
{ "flags": 4, "matrix": [1, 5], "x": 102, "y": 24 },
{ "flags": 4, "matrix": [1, 4], "x": 84, "y": 24 },
{ "flags": 4, "matrix": [1, 3], "x": 65, "y": 24 },
{ "flags": 4, "matrix": [1, 2], "x": 46, "y": 24 },
{ "flags": 4, "matrix": [1, 1], "x": 28, "y": 24 },
{ "flags": 1, "matrix": [1, 0], "x": 9, "y": 24 },
{ "flags": 1, "matrix": [2, 0], "x": 9, "y": 40 },
{ "flags": 4, "matrix": [2, 1], "x": 28, "y": 40 },
{ "flags": 4, "matrix": [2, 2], "x": 46, "y": 40 },
{ "flags": 4, "matrix": [2, 3], "x": 65, "y": 40 },
{ "flags": 4, "matrix": [2, 4], "x": 84, "y": 40 },
{ "flags": 4, "matrix": [2, 5], "x": 102, "y": 40 },
{ "flags": 4, "matrix": [2, 6], "x": 121, "y": 40 },
{ "flags": 4, "matrix": [2, 7], "x": 140, "y": 40 },
{ "flags": 4, "matrix": [2, 8], "x": 159, "y": 40 },
{ "flags": 4, "matrix": [2, 9], "x": 177, "y": 40 },
{ "flags": 4, "matrix": [2, 10], "x": 196, "y": 40 },
{ "flags": 1, "matrix": [2, 11], "x": 215, "y": 40 },
{ "flags": 1, "matrix": [3, 11], "x": 215, "y": 56 },
{ "flags": 1, "matrix": [3, 10], "x": 196, "y": 56 },
{ "flags": 1, "matrix": [3, 9], "x": 177, "y": 56 },
{ "flags": 1, "matrix": [3, 8], "x": 159, "y": 56 },
{ "flags": 1, "matrix": [3, 7], "x": 140, "y": 56 },
{ "flags": 1, "matrix": [3, 5], "x": 112, "y": 56 },
{ "flags": 1, "matrix": [3, 4], "x": 84, "y": 56 },
{ "flags": 1, "matrix": [3, 3], "x": 65, "y": 56 },
{ "flags": 1, "matrix": [3, 2], "x": 46, "y": 56 },
{ "flags": 1, "matrix": [3, 1], "x": 28, "y": 56 },
{ "flags": 1, "matrix": [3, 0], "x": 9, "y": 56 }
]
},
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
{ "matrix": [0, 12], "x": 11, "y": 0 },
{ "matrix": [0, 0], "x": 0, "y": 1 },
{ "matrix": [0, 1], "x": 1, "y": 1 },
{ "matrix": [0, 2], "x": 2, "y": 1 },
{ "matrix": [0, 3], "x": 3, "y": 1 },
{ "matrix": [0, 4], "x": 4, "y": 1 },
{ "matrix": [0, 5], "x": 5, "y": 1 },
{ "matrix": [0, 6], "x": 6, "y": 1 },
{ "matrix": [0, 7], "x": 7, "y": 1 },
{ "matrix": [0, 8], "x": 8, "y": 1 },
{ "matrix": [0, 9], "x": 9, "y": 1 },
{ "matrix": [0, 10], "x": 10, "y": 1 },
{ "matrix": [0, 11], "x": 11, "y": 1 },
{ "matrix": [1, 0], "x": 0, "y": 2 },
{ "matrix": [1, 1], "x": 1, "y": 2 },
{ "matrix": [1, 2], "x": 2, "y": 2 },
{ "matrix": [1, 3], "x": 3, "y": 2 },
{ "matrix": [1, 4], "x": 4, "y": 2 },
{ "matrix": [1, 5], "x": 5, "y": 2 },
{ "matrix": [1, 6], "x": 6, "y": 2 },
{ "matrix": [1, 7], "x": 7, "y": 2 },
{ "matrix": [1, 8], "x": 8, "y": 2 },
{ "matrix": [1, 9], "x": 9, "y": 2 },
{ "matrix": [1, 10], "x": 10, "y": 2 },
{ "matrix": [1, 11], "x": 11, "y": 2 },
{ "matrix": [2, 0], "x": 0, "y": 3 },
{ "matrix": [2, 1], "x": 1, "y": 3 },
{ "matrix": [2, 2], "x": 2, "y": 3 },
{ "matrix": [2, 3], "x": 3, "y": 3 },
{ "matrix": [2, 4], "x": 4, "y": 3 },
{ "matrix": [2, 5], "x": 5, "y": 3 },
{ "matrix": [2, 6], "x": 6, "y": 3 },
{ "matrix": [2, 7], "x": 7, "y": 3 },
{ "matrix": [2, 8], "x": 8, "y": 3 },
{ "matrix": [2, 9], "x": 9, "y": 3 },
{ "matrix": [2, 10], "x": 10, "y": 3 },
{ "matrix": [2, 11], "x": 11, "y": 3 },
{ "matrix": [3, 0], "x": 0, "y": 4 },
{ "matrix": [3, 1], "x": 1, "y": 4 },
{ "matrix": [3, 2], "x": 2, "y": 4 },
{ "matrix": [3, 3], "x": 3, "y": 4 },
{ "matrix": [3, 4], "x": 4, "y": 4 },
{ "matrix": [3, 5], "x": 5, "y": 4 },
{ "matrix": [3, 6], "x": 6, "y": 4 },
{ "matrix": [3, 7], "x": 7, "y": 4 },
{ "matrix": [3, 8], "x": 8, "y": 4 },
{ "matrix": [3, 9], "x": 9, "y": 4 },
{ "matrix": [3, 10], "x": 10, "y": 4 },
{ "matrix": [3, 11], "x": 11, "y": 4 }
]
}
}
}

View File

@@ -57,28 +57,6 @@ static const char PROGMEM my_logo[] = {
#endif
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 },
{ 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12 },
{ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35 },
{ 46, 45, 44, 43, 42, 41, NO_LED, 40, 39, 38, 37, 36 }
}, {
// LED Index to Physical Position
{ 9, 8 }, { 28, 8 }, { 46, 8 }, { 65, 8 }, { 84, 8 }, { 102, 8 }, { 121, 8 }, { 140, 8 }, { 159, 8 }, { 177, 8 }, { 196, 8 }, { 215, 8 },
{ 215, 24 }, { 196, 24 }, { 177, 24 }, { 159, 24 }, { 140, 24 }, { 121, 24 }, { 102, 24 }, { 84, 24 }, { 65, 24 }, { 46, 24 }, { 28, 24 }, { 9, 24 },
{ 9, 40 }, { 28, 40 }, { 46, 40 }, { 65, 40 }, { 84, 40 }, { 102, 40 }, { 121, 40 }, { 140, 40 }, { 159, 40 }, { 177, 40 }, { 196, 40 }, { 215, 40 },
{ 215, 56 }, { 196, 56 }, { 177, 56 }, { 159, 56 }, { 140, 56 }, { 112, 56 }, { 84, 56 }, { 65, 56 }, { 46, 56 }, { 28, 56 }, { 9, 56 }
}, {
// LED Index to Flag
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
} };
#endif
#ifdef OLED_ENABLE
void init_timer(void){

View File

@@ -1,21 +1,6 @@
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = WS2812
WS2812_DRIVER = vendor
ENCODER_ENABLE = yes
OLED_ENABLE = yes
OLED_DRIVER = SSD1306
OLED_DRIVER = SSD1306
DEFAULT_FOLDER = 1upkeyboards/pi40/mit_v1_0

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

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