1
0

Compare commits

...

81 Commits

Author SHA1 Message Date
James Young
0379d1f59e DC60: Fix 2u Backspace Support (#22533) 2023-11-23 05:08:07 +00:00
gskygithub
98013e25c6 [Keyboard] darkproject/kd83a_bfg_edition (#18416)
* Add files via upload

* [keyboard]

* [Keyboard]

* Delete flash_spi.c

* Delete flash_spi.h

* Delete wb32_spi_master.c

* Delete wb32_spi_master.h

* [Keyboard]

* Resolved requested changes

* Resolved requested changes

* Changed rules.mk file accordingly.

* Resolved changes accordingly.

* Update config.h file and rules.mk file

* Removed eeprom_flash.c file

* Update default/keymap.c file

* Delete keyboards/darkproject/kd83a_bfg_edition directory

* Add keyboard

* Add keyboard

* Delete darkproject/kd83a_bfg_edition directory

* Resolved Changes

* Resolved requested changes

* keyboard

* Add keyboard

* Delete keyboard

* Add keyboard

* Delete keyboards/darkproject/kd87a_bfg_edition directory

* update keymap.c file

* update via/keymap.c, config.h and kd83a_bfg_edition.c files

* Delete keymap.c

* Update via/keymap.c, config.h and kd83a_bfg_edition.c files

* update config.h file

* update keymap.c file

* update keymap.c file

* update config.h

* update kd83a_bfg_edition.c

* Resolved requested changes.

* Delete folder which was added accidentally.

* Update keyboards/darkproject/kd83a_bfg_edition/config.h

* Update keyboards/darkproject/kd83a_bfg_edition/keymaps/via/keymap.c

* Update keyboards/darkproject/kd83a_bfg_edition/keymaps/via/keymap.c

* Update keyboards/darkproject/kd83a_bfg_edition/keymaps/via/keymap.c

* Update keyboards/darkproject/kd83a_bfg_edition/keymaps/via/keymap.c

* Update keyboards/darkproject/kd83a_bfg_edition/info.json

* Update keyboards/darkproject/kd83a_bfg_edition/rules.mk

* Update keyboards/darkproject/kd83a_bfg_edition/info.json

* update info.json file

* update config.h file

* Updated requested changes

* update readme.md

* Resolved requested changes

* Update info.json file

* Delete kd83a_bfg_edition.h

* Delete readme.md in default folder

* Update info.json file

* update info.json

* Updated changes

* Updated changes

* Resolved requested changes

* Resolved requested changes
2023-11-22 14:13:16 -08:00
フィルターペーパー
a6521b8521 [Doc] Improve converter references (#21801) 2023-11-16 17:48:24 +00:00
leyew
1e4f7aa029 [Keyboard] Add dnworks 997pt3 (#22466)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-11-16 09:54:13 -07:00
Le Zhang
adcc4d376c Add leonardo build target for leonardo + usb2.0 shield based projects (#22243) 2023-11-15 15:23:03 +00:00
leyew
d7b44239c2 [Keyboard] Add Eden (#22467)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-11-14 01:11:12 -07:00
Nick Brassel
5c22706294 Update stale.yml 2023-11-14 13:15:52 +11:00
Nick Brassel
ba62db19e7 Update stale.yml (#22473) 2023-11-14 13:12:17 +11:00
cole smith
44062b5056 Bs equals (#21690)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: jack <0x6A73@pm.me>
2023-11-14 12:49:15 +11:00
precondition
50844a8e67 Fix typos: key-modifer→key-modifier and interacton→interaction (#22464) 2023-11-13 20:55:45 +00:00
Duncan Sutherland
56b6b28fe9 add 68_ansi Community Layout to nebula68b (#22433) 2023-11-12 19:02:46 -07:00
John Barbero
c2326c05c0 [Keyboard] Fixes to make snes_macropad play nicer with qmk configurator (#22432)
* [Keyboard] Change default implementation for get_layer_name_user

Will now show the layer number instead of "Unknown", since this is
what will be shown if QMK Configurator is used to compile the
firmware.

* [Keyboard] Update the layout info

This makes it look sort of like a macropad + gamepad rather than an 4x6
ortholinear keyboard.

* [Keyboard] Fix default implementation of get_layer_name_user

Based on feedback from code review the implementation was swapped in
favor of using get_u8_str. This implied a change to the argument type
from int to uint8_t, which cascaded into the existing keymaps. (This
made sense in general, since the return type of get_highest_layer is
also a uint8_t.)
2023-11-11 22:30:31 -07:00
Duncan Sutherland
0189c485b9 studiokestra/line_tkl: correct layout data (#22455)
* fix `layouts` data

* add EoF
2023-11-11 22:19:43 -07:00
jonylee@hfd
935c894f83 add 5087 keyboard (#20557)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2023-11-11 11:08:26 -08:00
Nick Brassel
211fbbd16d Add qmk license-check developer-level CLI command. (#22075) 2023-11-11 20:50:33 +11:00
Maria
6876fbe51d [Keyboard] Add MariOrion v2.5 (#22273)
* Pushed MariOrion v2.5 to the branch. Prod and proto version added.

* Pushed MariOrion v2.5 to the branch. Prod and proto version added.

* Proper addition of layout options

Addition of split bs rshift tsangan layout options.

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

* Merge branch 'toril940mariorion_v25' of github.com:toril940/qmk_firmware into toril940mariorion_v25

* Merge branch 'toril940mariorion_v25' of github.com:toril940/qmk_firmware into toril940mariorion_v25

* Update keyboards/mariorion_v25/proto/keymaps/via/keymap.c

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

* Update keyboards/mariorion_v25/proto/keymaps/default/keymap.c

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

* Updated readme.md with more information regarding make commands, and proto vs prod.

* Update keyboards/mariorion_v25/prod/keymaps/via/keymap.c

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

* Update keyboards/mariorion_v25/prod/keymaps/default/keymap.c

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

* Update keyboards/mariorion_v25/prod/info.json

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

* Amended some changes to info.json - community layouts changed from scope to array.

* Update keyboards/mariorion_v25/readme.md

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

* Revert keyboards/gray_studio/think65/solder/solder.c

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

* Revert keyboards/gray_studio/think65/solder/solder.c

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

* Revert keyboards/gray_studio/think65/solder/solder.c

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

* Removed via.json from the via keymaps. Replaced with matrix_diagram.md. via.json file moved off to [public mariorion_v25 repo](https://github.com/toril940/orion-v25)

* Revert keyboards/gray_studio/think65/solder/solder.c

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

* Removed via.json from the via keymaps. Replaced with matrix_diagram.md. via.json file moved off to [public mariorion_v25 repo](https://github.com/toril940/orion-v25)

* Update keyboards/mariorion_v25/proto/info.json

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

* Update keyboards/mariorion_v25/rules.mk

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

* Update keyboards/mariorion_v25/proto/info.json

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

* Update keyboards/mariorion_v25/proto/info.json

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

* Update keyboards/mariorion_v25/proto/info.json

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

* Update keyboards/mariorion_v25/prod/info.json

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

* Update keyboards/mariorion_v25/prod/info.json

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

* Update keyboards/mariorion_v25/prod/info.json

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

* Update keyboards/mariorion_v25/prod/info.json

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

* Revert keyboards/gray_studio/think65/solder/solder.c

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

* Update keyboards/mariorion_v25/matrix_diagram.md

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

* Update keyboards/mariorion_v25/readme.md

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

* Update keyboards/mariorion_v25/readme.md

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

* Update keyboards/mariorion_v25/readme.md

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

* Update keyboards/mariorion_v25/readme.md

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

* Update keyboards/mariorion_v25/readme.md

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

* Update keyboards/mariorion_v25/proto/mariorion_v25.c

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

* Update keyboards/mariorion_v25/prod/mariorion_v25.c

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

* Pushed new info.json and keymap.c files.

* Pushed new info.json and keymap.c files.

* Fixes to LED driver wrt PWM definitions with STM.

* Update keyboards/mariorion_v25/prod/keymaps/via/keymap.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/prod/keymaps/via/keymap.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/prod/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/prod/mariorion_v25.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/proto/info.json

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/proto/config.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/proto/mariorion_v25.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/proto/mariorion_v25.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/proto/keymaps/via/keymap.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/proto/keymaps/via/keymap.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Committing a details update to readme.md.

* Committing a details update to readme.md.

* Update keyboards/mariorion_v25/prod/config.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/prod/mariorion_v25.c

Co-authored-by: Ryan <fauxpark@gmail.com>

* Revert "Committing a details update to readme.md."

This reverts commit 068a82a1fc.

* Committing a details update to readme.md.

* Update keyboards/mariorion_v25/halconf.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/mcuconf.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/prod/config.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/proto/config.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Update keyboards/mariorion_v25/halconf.h

Co-authored-by: Ryan <fauxpark@gmail.com>

* Production pictures replacing the standard ones in the readme.md :)

* waffle87 requests bundled:
- Licence headers added
- Codeblocked matrix_diagram.md
- Consolidated files where possible
- Removed excess from config.h

---------

Co-authored-by: toril940 <anastasialucas940@hotmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-11-10 14:39:00 -07:00
ploopyco
38d6e9a75a Add Ploopy Madromys mouse (#21989)
Added PloopyCo madromys/adept mouse
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-11-10 16:42:15 +00:00
temp4gh
aee2a9d696 [Keyboard] Add alpaca/wfeclipse (#22230)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-11-09 12:57:14 -07:00
gregandcin
e5b7685e7a Update gregandcin/teaqueen (#22402) 2023-11-09 09:53:35 -08:00
John Barbero
39d0a14258 Add SNES Macropad keyboard (#22377)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-11-09 09:52:47 -08:00
Panos Sakkos
daabe2d8c5 Update layer state of Lily58 from 'Default' to 'Base' (#22397) 2023-11-09 02:03:07 +00:00
Matthias Liffers
0b7dba156c Fix indicator LED definition for Sofle RGB. (#22408) 2023-11-09 01:57:16 +00:00
John Barbero
10cdd00751 Fix corne keylog (#22420)
* [Keyboard] Fix bug in set_keylog function

Fixes issue where some keys would not trigger the oled to output the row
and column of a pressed key (would happen with LT(...) for my keymap)

* [Keyboard] Tiny improvement to oled_render_keylog for crkbd

Added improvement suggestion I got for another keyboard
2023-11-09 01:55:08 +00:00
Fredrik A. Kristiansen
72f93e7fc2 Add iso85k keyboard (#22411)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-11-08 13:00:48 -08:00
Yak
64bbeff57d Fix Herringbone pro Layouts (#22317)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-11-08 10:42:08 -07:00
Kelwin0313
80708a91ef [Keyboard] Add PCB Utopia88 (#22257) 2023-11-08 10:40:28 -07:00
ai03
ebac02a7b2 [Keyboard] Add Duet Switch Tester (#22367)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-11-08 10:39:13 -07:00
Reibl János Dániel
2337cd1186 Add riblee handwired split keyboard (#22277) 2023-11-08 00:31:06 -08:00
Ming-Gih Lam
7324650714 Red Herring PCB support (#22409)
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-11-07 18:18:09 -08:00
Leo Lou
5b25a8aa32 [Keyboard] Add Piantor Pro (#22361)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-11-06 17:43:41 -07:00
Duncan Sutherland
67ff0defe2 Teaqueen: correct layout data (#22406) 2023-11-06 17:43:04 -07:00
Kiryl Mialeshka
ace510ffa0 docs(rgblight): fix typos (#22399) 2023-11-03 23:14:18 +00:00
ID64F
837cae95ba boardsource/unicorne - Fixed OLED layers being all set to zero (#22389) 2023-11-02 16:36:56 +00:00
era
999008f0eb [Keyboard] Add Klein_SD (#22371)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-10-31 18:40:25 -06:00
gregandcin
2192098f57 [Keyboard] Add TeaQueen (#22352)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-10-31 18:17:43 -06:00
Matt Chan
cb9705428b Add Kindakeyboards Conone65 Via support (#22320) 2023-10-31 01:51:29 +00:00
Cipulot
538b79657e Fix for swapped PID and VID (#22372) 2023-10-31 01:31:58 +00:00
yuezp
46dedfaaa4 [Keyboard] add enter67 keyboard (#22346)
Co-authored-by: “yuezp” <“yuezpchn@126.com”>
2023-10-28 13:28:03 -07:00
Brian Choromanski
c133bd1234 Removed clueboard link as the website has been parked for some time (#22290) 2023-10-28 16:25:30 +11:00
Joel Challis
ca2d2a524f Flag more VIAL config options in lint (#22345) 2023-10-28 02:09:53 +01:00
Felix Jen
1a300d05bd [Keyboard] Add Velvet hotswap & solder (#22284) 2023-10-27 12:40:18 -06:00
millet
18ef3da8e8 [Keyboard] doksin (#22220) 2023-10-27 01:23:02 -07:00
eason
ae2703b69b eason/aeroboard - Modify bootloader (#22286) 2023-10-27 09:09:38 +01:00
gskygithub
052cc5df5d Add darkproject/kd87a_bfg_edition keyboard (#18981)
Co-authored-by: gksygithub <106651989+gksygithub@users.noreply.github.com>
2023-10-27 00:31:54 -07:00
4pplet
e82bc5355c [Keyboard] Waffling60 Rev E ANSI Hotswap (#22270)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-10-26 23:40:21 -07:00
khchen2004
0ad780f852 [Keyboard] add pisces pcb (#22334) 2023-10-26 23:38:22 -07:00
Kael Augusto
f5cd30458a [Keyboard] Add Kaly42 (#22282)
* Added Kaly/Kaly42 keyboard's minimal files.

* Updated readme.md; New link and improved description text.

* Apply suggestions from code review

Added all suggestions given by @dunk2k

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

* Added community_layouts to info.json.

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

---------

Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-10-26 22:10:30 -06:00
Dasky
e0c00c35ce Clarify PIO define is optional in docs. (#22339) 2023-10-26 22:34:17 +01:00
Olivia J
d2892685c5 [Keyboard] Add LGBTKL (#22331)
Co-authored-by: jack <0x6a73@protonmail.com>
2023-10-25 17:07:00 -06:00
Dasky
ca45416999 Remove extra led_matrix_indicators_user call (#22329) 2023-10-24 00:00:16 +01:00
owlab-git
d2773c6d67 [Keyboard] Add QK100 (#21782)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-10-23 12:12:27 -06:00
Yonghyuk Choi
96c71b9b4c [Keyboard] Add purin (#22306) 2023-10-23 12:09:51 -06:00
Nick Brassel
0e6d47e1e4 Fixup symbol sizing listing. (#22307) 2023-10-21 21:31:23 +11:00
Nick Brassel
f6c70c40af Allow for disabling of parallel processing of qmk find and qmk mass-compile. (#22160)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-10-17 09:43:50 +11:00
Nick Brassel
81a3aa025c Fix typo in keychron v6 encoder map enable (#22272) 2023-10-14 23:10:55 +11:00
jukaie
23a8f7f03b [Keyboard] jukaie/jk01 (#20573)
* ADD Keyboard

* Resolved requested changes

* update keymap.c file

* resolved requested changes

* updated info.json file

* Updated requested changes

* Delete JK01.h file

* Resolved requested changes

* Delete readme.md

* add rules.mk to default folder

* Upload default/keymap.c

* Add via/keymap.c

* Updated info.Json file

* Change VID in info.json

* Resolved requested changes

* Resolved requested changes.

* Resolved requested changes

* Updated changes

---------

Co-authored-by: gksygithub <gskyGit@gsky.com.tw>
2023-10-14 00:03:29 -07:00
MakotoKurauchi
a46c7abd01 Enable encoder map on navpad1.0 (#22266) 2023-10-13 21:30:25 -07:00
Sắn
62ff02a101 [Keyboard] Add Okayu (#22077)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-10-13 01:53:12 -06:00
Duncan Sutherland
032b039d0b amend alice* community_layouts in keyboards (#21846)
* add alice* to keyboards

* add seigaiha

* additions

* Update info.json

* revert wanderland

* add tgr/alice

* add matrix diagram.md
2023-10-13 00:07:16 -07:00
lendunistus
0477160109 [Keyboard] RPNeko65 by lendunistus (#21747)
* initialise rpneko65, info.json

* force NKRO

* define WS2812 stuff

and capitalise RPNeko65

* use RGBlight, add ANSI to keymap.c

also remove _ADC suffixes from pins

* basic readme

plus making it so the info.json RGB values are actually recognised as integers

* update repository URL

* fix info.json formatting

* caps lock LED implementation

"borrowed" from waffling60

* put RGBLIGHT_ENABLE in json

also remove "pin" from the rgblight option

* add actually correct keymaps

also reformat info.json

* move to designer folder, add image to README

* move keyboard to separate revision folder

and remove erroneous tag from config.h

* remove brightness/hue/saturation steps

* change device version to 1.0

* move quantum.h include to top

* actually, let's try a new image

I also forgot to save the info.json file beforehand
oops

* Remove comma in info.json

* Community layouts in info.json

* Delete rpneko65/readme.md

* Apply suggested changes to readme

* Suggested code changes

* Suggested imgur link

* rename code file

this was the issue all along
sigh

* Correct layer matching this time

* Move Enter in info.json

* README/info.json change

* Another batch of suggestions
2023-10-12 14:56:01 -07:00
jonylee@hfd
e22cb99bc4 [Keyboard] Inland V83P (#21725)
* [Keyboard]add v83p keyboard.

* Update keymap.c

* Update keyboards/inland/v83p/keymaps/via/keymap.c

* Update keyboards/inland/v83p/keymaps/default/keymap.c

* Update keyboards/inland/v83p/config.h

* Update keyboards/inland/v83p/info.json

* Update info.json

* Update keymap.c

* Update keyboards/inland/v83p/mcuconf.h

* Update keyboards/inland/v83p/halconf.h

* Update keyboards/inland/v83p/info.json

* Update keyboards/inland/v83p/v83p.c

* Update keymap.c

replace the tabs with spaces

* Update keymap.c

replace the tabs with spaces

* Update keyboards/inland/v83p/info.json
2023-10-12 14:35:39 -07:00
EnviousData
391c0428c9 [Keyboard] Add support for EnviousDesign keyboards (#17544)
* Add support for Envious.Design Keyboards

Add various RP2040 keyboards I've designed.

* Fixed missing newlines at EOF.

* Ran CLANG-FORMAT and sorted out any potential issues.

* Gave keyboards all unique product IDs

* Made requested changes.

* removed all VIAL related code
* sorted out license on all *.h or *.h  files
* removed outdated RESET Keycode

* missed some VIAL bits

* Made suggested changes

* Made Suggested Changes

* missed one file to change.

* Attempted fix of CI issues

* Update .gitmodules

* Revert "Update .gitmodules"

This reverts commit f4bace5162.

* hopefully fixed all CI and QMK lint issues

* resolve more CI errors and a couple typos

* fixed last remaining issue as of now

* made requested changes

* further more on suggested change

* Delete README.md

* derpy workaround to change case of readme

* finished up 65M firmware

via does not work, I will investigate another time.

* re-did a lot of 65M firmware bits, also fixed via for this board

* corrected mistake in firmware

* made suggested change to info.json for 65m/60F

* finished 65M non via keymap and re-sorted via keymap

* Update keyboards/enviousdesign/tkl/rgb/keymaps/default/keymap.c

* Update keyboards/enviousdesign/tkl/rgb/keymaps/default/keymap.c

* Apply suggestions from code review

Verified updated Info.json works for aforementioned keyboards,

* Follow-up commit with aforementioned suggested changes

* Apply suggestions from code review

correction to a couple typos pointed out.

* follow-up removed some un-needed Readmes and corrected a mistake in 60F via keymap

* Apply suggestions from code review

* Added images of PCB to each Keyboard README

* Apply suggestions from code review

* Update keyboards/enviousdesign/60f/readme.md

* Added missing aspects of info.json and corrected RGB_DI_PIN to WS2812_DI_PIN in RGB keyboard

* made requested changes

* Update config.h

* used QMK migrate to update info.json

* Apply suggestions from code review

* Update keyboards/enviousdesign/65m/info.json

* renamed named keyboards as suggested and added commission keyboard to repo

* renamed file to hopefully please lint

* renamed things to be all lower case since lint doesn't appear to look for upper case

* updated keymap.c and removed unnecessary file

* fixed readme and a couple other bits

* converted various aspects to json information

* attempt fix for lint error

* fix some issues I overlooked

* Apply suggestions from code review

* moved some folders about as suggested

* Made suggested changes

* Apply suggestions from code review

* removed outdated config.h

* fixed errors in 65M and mini1800

* Apply suggestions from code review

* Update keyboards/enviousdesign/delirium/rev1/info.json

* Update keyboards/enviousdesign/65m/info.json

* Apply suggestions from code review
2023-10-12 14:07:42 -07:00
Felipe Curty
c67c9f1d98 Add support for CSTC40 keyboard (#22154)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: lesshonor and waffle87
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: lesshonor
Co-authored-by: itsvar <120035196+itsvar8@users.noreply.github.com>
2023-10-12 14:31:41 -06:00
Wilhelm Schuster
b630df1aa7 Reword mention of personal keymaps from PR checklist (#22258) 2023-10-13 06:46:28 +11:00
kisakey-luxury
999e721312 Kisakey (#22217)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-10-12 11:21:30 -07:00
Duncan Sutherland
b5423b2e83 Add 60_iso_tsangan_split_bs_rshift Community Layout (#21812)
* add 60_(ansi|iso)_tsangan_split_bs_shift layouts

* shift to rshift

* remove 60_ansi_tsangan_split_bs_rshift

* Update layouts/default/60_iso_tsangan_split_bs_rshift/info.json
2023-10-12 01:12:50 -07:00
adam tombleson
f536646235 Add 62 key Dactyl Manuform (#21394)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-10-11 22:37:28 -07:00
4pplet
ad4ecd6eb4 Add Ratio60 PCB (#21609)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: 4pplet <4pplet@protonmail.com>
Co-authored-by: 4pplet <stefan.ess@gmail.com>
2023-10-11 21:43:47 -07:00
Agent Blu, 006
fa8940e5a6 Keyboard change blu/vimclutch to hardware revision B. (#22247)
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-10-11 21:16:34 -07:00
Duncan Sutherland
527790b000 add 60_(ansi|iso)_wkl* community layouts (#21811)
* add 60_(ansi|iso)_tsangan_wkl* layouts

* Update keymap.c

* `tsangan_wkl` to `wkl`

* update info.json

* split backspace changes

* Apply suggestions from code review
2023-10-11 20:23:50 -07:00
Josh Hinnebusch
db8b74f016 [Keyboard] Hineybush H101 (#22186)
* initial h101 commit

* update keymap and add via support

* update doc stuff

* readme typo

* updates

* add indicator LEDs, needs testing

* update readme

* update USB VID/PID to match VIA json

* Update keyboards/hineybush/h101/readme.md

* Update keyboards/hineybush/h101/keymaps/default/keymap.c

* Update keyboards/hineybush/h101/readme.md

* Update keyboards/hineybush/h101/keymaps/via/keymap.c

* updates from PR comments

* updates per PR comments

* idk why the folder is acting weird

* maybe this will fix it

* update to hopefully fix everything weird

* keycode fixes

* keymap updates
2023-10-11 14:09:17 -07:00
Dasky
81e086b387 add missing gpio include for pointing motion pin (#22246) 2023-10-11 00:06:28 -07:00
jonylee@hfd
0650f783b5 [Keyboard] MonsGeek M3 (#20542)
* Add keybord monsgeek m3.

* Add keybord monsgeek m3.

* Add keybord monsgeek m3.

* updata rules.mk

* add readme.md

* delete monsgeek\m3\rgb_matrix_kb.inc

* add DISABLE_M3_KEYCODES

* user_config --> kb_config

* Move code to info.json,and removed redundant features

* Update keyboards/monsgeek/m3/info.json

* Update keyboards/monsgeek/m3/info.json

* Update readme.md

* Update keyboards/monsgeek/m3/config.h

* Update keyboards/monsgeek/m3/info.json

* Update keyboards/monsgeek/m3/info.json

* Update keyboards/monsgeek/m3/keymaps/default/keymap.c

* Update keyboards/monsgeek/m3/keymaps/via/keymap.c

* Update keyboards/monsgeek/m3/readme.md

* Update m3.c

* Update m3.c

* Update info.json

* Update keymap.c

* Update keymap.c

* Update config.h

* Update keyboards/monsgeek/m3/readme.md

* Update keyboards/monsgeek/m3/rules.mk

* Update keyboards/monsgeek/m3/info.json

* Update keyboards/monsgeek/m3/keymaps/default/keymap.c

* Update keyboards/monsgeek/m3/keymaps/via/keymap.c

* Update keyboards/monsgeek/m3/info.json

* Update keyboards/monsgeek/m3/info.json

* Update keyboards/monsgeek/m3/info.json

* Update m3.c

* Update keyboards/monsgeek/m3/info.json

* Update keyboards/monsgeek/m3/m3.c

* Update keymap.c

replace the tabs with spaces

* Update keymap.c

replace the tabs with spaces
2023-10-10 14:07:59 -07:00
Arthur
6dafcac713 [Keyboard] Add MIIIW BlackIO83 (#21970)
* Add MIIIW BlackIO83

* Improve the code

* Updated instructions for entering the bootloader

* Update keyboards/miiiw/blackio83/rev_0100/config.h

* Update keyboards/miiiw/blackio83/rev_0100/config.h

* Update keyboards/miiiw/blackio83/config.h

* Update config.h
2023-10-09 17:41:40 -07:00
Joel Challis
509a2b40b7 Fix old usage of UNICODE_MODE_MAC (#22238) 2023-10-09 23:16:54 +01:00
Dasky
77fe1298c7 Yampad add missing includes for CONVERT_TO (#22237) 2023-10-09 23:16:38 +01:00
Dasky
20eb93e05c Yampad add missing includes for CONVERT_TO (#22237) 2023-10-09 23:16:21 +01:00
HorrorTroll
3665ae0441 [Keyboard] HorrorTroll Nyx (#21143)
* Added support keyboard Nyx

* Resolved zvarc suggested and lint error

* Delete FORCE_NKRO due to problem with BIOS on mainboard

* Resolved dunk2k suggested and limit more brightness, disable some RGB Effect

* Resolved drashna suggested

* Delete flower blooming effect and move to rev1 folder
2023-10-09 12:50:33 -07:00
James Young
6e6fff866e Fix typo in docs/feature_tri_layer.md (#22232)
`Stes` -> `Sets`
2023-10-09 09:37:21 +01:00
Cloud Chagnon
ad14a27cd3 [Keyboard] Split-Cloud Handwired (#21327)
* Added new handwired, the Split-Cloud

* Minor changes to make clang-format happy

* Alligned files with project standard.

Trimmed midi out of the default layout, modified the readme, and removed unnecessary files.

* Simplified default keymap further, changes to info.json

* Moved image to imgur, simplified, and removed the unneeded rules.mk file

* Update keyboards/handwired/split_cloud/readme.md

Changed image in readme to Huge Thumbnail instead of Original.

* Removed unneeded tri layer custom keycodes

Now using the built-in functionality!

* Update keyboards/handwired/split_cloud/readme.md

Accidentally reverted this when making other changes
2023-10-09 00:06:00 -07:00
vinhcatba
e1630edef4 [Keyboard] vinhcatba/uncertainty (#21142)
* vinh: test fw for uncertainty (deprecated)

* v0.1: update base firmware with 2 layers, use bongo cat animation for oled

* v0.1: change directory

* v0.1: cleanup

* v0.2: update layers

* v0.3: add VIA support

* v0.3: add VIA support (continue)

* vinh: test fw for uncertainty (deprecated)

* v0.1: update base firmware with 2 layers, use bongo cat animation for oled

* v0.1: change directory

* v0.1: cleanup

* v0.2: update layers

* v0.3: add VIA support

* v0.3: add VIA support (continue)

* v0.3: change keyboard name, remove eeprom config save in VIA keymap

* cleanup for PR

* update readme

* vinh: test fw for uncertainty (deprecated)

* v0.1: update base firmware with 2 layers, use bongo cat animation for oled

* v0.1: change directory

* v0.1: cleanup

* v0.2: update layers

* v0.3: add VIA support

* v0.3: add VIA support (continue)

* vinh: test fw for uncertainty (deprecated)

* v0.1: update base firmware with 2 layers, use bongo cat animation for oled

* v0.1: change directory

* v0.1: cleanup

* v0.3: change keyboard name, remove eeprom config save in VIA keymap

* cleanup for PR

* update readme

* add license to header files, update ws2812 driver and DI_PIN to info.json

* resovle PR suggestion for config.h, halconf.h, mcuconf.h

* update info.json regarding PR comment

* update bongo.h regarding PR comment

* add oled mode toggle

* update readme.md, rules.mk regarding PR comment

* add submodule update

* move oled handle to keyboard level

* Update keyboards/vinhcatba/uncertainty/uncertainty.c

forgot user-level proces_record

* now using bongo as source file

* Apply suggestions from code review

remove default value codes

* move WPM_ENABLE and ENCODER_MAP_ENABLE to keymap level

* Apply suggestions from code review

* Apply suggestions from code review

* Update keyboards/vinhcatba/uncertainty/config.h
2023-10-08 23:35:51 -07:00
518 changed files with 26491 additions and 404 deletions

View File

@@ -3,6 +3,7 @@ name: 'Close stale issues and PRs'
permissions:
issues: write
pull-requests: write
actions: write
on:
schedule:
@@ -13,7 +14,7 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v8
- uses: actions/stale@main
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -495,10 +495,10 @@ check-size: top-symbols
top-symbols: build
echo "###########################################"
echo "# Highest flash usage:"
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [t] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [RrTt] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
echo "###########################################"
echo "# Highest RAM usage:"
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep -i ' [dbv] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
$(NM) -Crtd --size-sort $(BUILD_DIR)/$(TARGET).elf | grep ' [BbCDdGgSs] ' | head -n$(NUM_TOP_SYMBOLS) | sed -e 's#^0000000# #g' -e 's#^000000# #g' -e 's#^00000# #g' -e 's#^0000# #g' -e 's#^000# #g' -e 's#^00# #g' -e 's#^0# #g'
echo "###########################################"
endif

View File

@@ -190,4 +190,9 @@
"PRODUCT": {"info_key": "keyboard_name", "warn_duplicate": false, "value_type": "str", "deprecated": true, "replace_with": "`keyboard_name` in info.json"},
"PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.pid` in info.json"},
"VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex", "deprecated": true, "replace_with": "`usb.vid` in info.json"},
// Items we want flagged in lint
"VIAL_KEYBOARD_UID": {"info_key": "_invalid.vial_uid", "invalid": true},
"VIAL_UNLOCK_COMBO_COLS": {"info_key": "_invalid.vial_unlock_cols", "invalid": true},
"VIAL_UNLOCK_COMBO_ROWS": {"info_key": "_invalid.vial_unlock_rows", "invalid": true}
}

View File

@@ -1,12 +1,10 @@
# Converters
Since many drop-in replacement controllers now exist, we've done our best to make them easy to use in existing designs.
This page documents the automated process for converting keyboards to use drop-in replacement controllers. This process is designed to be easy to use and can be completed in a few simple steps.
This page documents the handy automated process for converting keyboards.
## Supported Converters
### Supported Converters
Currently the following converters are available:
The following converters are available at this time:
| From | To |
|------------|-------------------|
@@ -28,14 +26,10 @@ Currently the following converters are available:
| `elite_c` | `helios` |
| `elite_c` | `liatris` |
See below for more in depth information on each converter.
## Overview
Each converter category is broken down by its declared `pin compatibility`.
This ensures that only valid combinations are attempted.
You can generate the firmware by appending `-e CONVERT_TO=<target>` to your compile/flash command. For example:
Each converter category is broken down by its declared `pin compatibility`. This ensures that only valid combinations are attempted. You can generate the firmware by appending `-e CONVERT_TO=<target>` to your compile/flash command. For example:
```sh
qmk flash -c -kb keebio/bdn9/rev1 -km default -e CONVERT_TO=proton_c
@@ -59,14 +53,12 @@ Once a converter is enabled, it exposes the `CONVERT_TO_<target_uppercase>` flag
### Pin Compatibility
To ensure compatibility, provide validation, and power future workflows, a keyboard should declare its `pin compatibility`. For legacy reasons, this is currently assumed to be `promicro`.
To ensure compatibility, provide validation, and enable future workflows, a keyboard should declare its `pin compatibility`. For legacy reasons, this is currently assumed to be `promicro`. The following pin compatibility interfaces are currently defined:
Currently the following pin compatibility interfaces are defined:
| Pinout | Notes |
|------------|-----------------------------------|
| `promicro` | Includes RX/TX LEDs |
| `elite_c` | Includes bottom row pins, no LEDs |
| Pin Compatibility | Notes |
|-------------------|-----------------------------------|
| `promicro` | Includes RX/TX LEDs |
| `elite_c` | Includes bottom row pins, no LEDs |
To declare the base for conversions, add this line to your keyboard's `rules.mk`:
@@ -140,7 +132,7 @@ The following defaults are based on what has been implemented for [RP2040](platf
### SparkFun Pro Micro - RP2040, Blok, Bit-C PRO and Michi :id=promicro_rp2040
Currently identical to [Adafruit KB2040](#kb2040).
Feature set is identical to [Adafruit KB2040](#kb2040).
### STeMCell :id=stemcell
@@ -150,9 +142,7 @@ There are two versions of STeMCell available, with different pinouts:
- v2.0.0 (pre-release v1.0.1, v1.0.2)
Default official firmware only supports v2.0.0 STeMCell.
STeMCell has support to swap UART and I2C pins, to enable single-wire uart communication in STM chips.
The following additional flags has to be used while compiling, based on the pin used for split communication.
STeMCell has support to swap UART and I2C pins to enable single-wire uart communication in STM chips. The following additional flags has to be used while compiling, based on the pin used for split communication:
| Split Pin | Compile flags |
|-----------|---------------|
@@ -173,11 +163,8 @@ The Bonsai C4 only has one on-board LED (B2), and by default, both the Pro Micro
### RP2040 Community Edition - Elite-Pi, Helios, and Liatris :id=rp2040_ce
Feature set currently identical to [Adafruit KB2040](#kb2040).
Feature set is identical to [Adafruit KB2040](#kb2040). VBUS detection is enabled by default for superior split keyboard support. For more information, refer to the [Community Edition pinout](platformdev_rp2040.md#rp2040_ce) docs.
Enables VBUS detection by default for superior split keyboard support.
For more information, refer to the [RP2040 Community Edition](platformdev_rp2040.md#rp2040_ce) docs.
## Elite-C
@@ -202,8 +189,8 @@ Converter summary:
### STeMCell :id=stemcell_elite
Currently identical to [STeMCell](#stemcell) with support for the additional bottom row of pins.
Identical to [Pro Micro - STeMCell](#stemcell) with support for the additional bottom row of pins.
### RP2040 Community Edition :id=rp2040_ce_elite
Currently identical to [RP2040 Community Edition](#rp2040_ce), with support for the additional bottom row of pins.
Identical to [Pro Micro - RP2040 Community Edition](#rp2040_ce) with support for the additional bottom row of pins.

View File

@@ -21,7 +21,7 @@ Then, in your `keymap.c` file, you'll need to define the array `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:
#### `ko_make_basic(modifiers, key, replacement)`
Returns a `key_override_t`, which sends `replacement` (can be a key-modifer combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior.
Returns a `key_override_t`, which sends `replacement` (can be a key-modifier combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior.
#### `ko_make_with_layers(modifiers, key, replacement, layers)`
Additionally takes a bitmask `layers` that defines on which layers the override is used.
@@ -224,7 +224,7 @@ The duration of the key repeat delay is controlled with the `KEY_OVERRIDE_REPEAT
## 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.
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 interaction 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.
## Solution to the problem of flashing modifiers :id=neutralize-flashing-modifiers

View File

@@ -524,7 +524,6 @@ By defining `RGBLIGHT_LED_MAP` as in the example below, you can specify the LED
```
<img src="https://user-images.githubusercontent.com/2170248/55743725-08ad7a80-5a6e-11e9-83ed-126a2b0209fc.JPG" alt="simple mapped" width="50%"/>
```
## Clipping Range
Using the `rgblight_set_clipping_range()` function, you can prepare more buffers than the actual number of LEDs, and output some of the buffers to the LEDs. This is useful if you want the split keyboard to treat left and right LEDs as logically contiguous.
@@ -544,8 +543,8 @@ In addition to setting the Clipping Range, you can use `RGBLIGHT_LED_MAP` togeth
#define RGBLED_NUM 8
#define RGBLIGHT_LED_MAP { 7, 6, 5, 4, 3, 2, 1, 0 }
// some soruce
rgblight_set_clipping_range(3, 4);
// some source
rgblight_set_clipping_range(3, 4);
```
<img src="https://user-images.githubusercontent.com/2170248/55743747-119e4c00-5a6e-11e9-91e5-013203ffae8a.JPG" alt="clip mapped" width="70%"/>

View File

@@ -40,7 +40,7 @@ Eg, if you wanted to set the "Adjust" layer to be layer 5, you'd add this to you
| `set_tri_layer_lower_layer(layer)` | Changes the "lower" layer*. |
| `set_tri_layer_upper_layer(layer)` | Changes the "upper" layer*. |
| `set_tri_layer_adjust_layer(layer)` | Changes the "adjust" layer*. |
| `set_tri_layer_layers(lower, upper, adjust)` | Stes the "lower", "upper" and "adjust" layers*. |
| `set_tri_layer_layers(lower, upper, adjust)` | Sets the "lower", "upper" and "adjust" layers*. |
| `get_tri_layer_lower_layer()` | Gets the current "lower" layer. |
| `get_tri_layer_upper_layer()` | Gets the current "upper" layer. |
| `get_tri_layer_adjust_layer()` | Gets the current "adjust" layer. |

View File

@@ -140,7 +140,7 @@ To set the list of enabled input modes, add the `UNICODE_SELECTED_MODES` define
```c
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
// or
#define UNICODE_SELECTED_MODES UNICODE_MODE_MAC, UNICODE_MODE_WINCOMPOSE
#define UNICODE_SELECTED_MODES UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE
```
These modes can then be cycled through using the `UC_NEXT` and `UC_PREV` keycodes. You can also switch to any input mode, even if it is not specified in `UNICODE_SELECTED_MODES`, using their respective keycodes.
@@ -151,7 +151,7 @@ If your keyboard has working EEPROM, it will remember the last used input mode a
### ** macOS **
**Mode Name:** `UNICODE_MODE_MAC`
**Mode Name:** `UNICODE_MODE_MACOS`
macOS has built-in support for Unicode input as its own input source. It supports all possible code points by way of surrogate pairs for code points above `U+FFFF`.

View File

@@ -138,7 +138,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- standard layouts preferred in these keymaps, if possible
- should use [encoder map feature](https://docs.qmk.fm/#/feature_encoders?id=encoder-map), rather than `encoder_update_user()`
- default keymap should not enable VIA -- the VIA integration documentation requires a keymap called `via`
- submitters can have a personal (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
- submitters can add an example (or bells-and-whistles) keymap showcasing capabilities in the same PR but it shouldn't be embedded in the 'default' keymap
- submitters can also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board
- Do not include VIA json files in the PR. These do not belong in the QMK repository as they are not used by QMK firmware -- they belong in the [VIA Keyboard Repo](https://github.com/the-via/keyboards)
- Do not include KLE json files in the PR. These have no use within QMK.

View File

@@ -235,7 +235,7 @@ Where 'n' matches the peripheral number of your selected USART on the MCU.
The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU. Because of the flexible nature of the PIO peripherals, **any** GPIO pin can be used as a `TX` or `RX` pin. Half-duplex and Full-duplex operation is fully supported. The Half-duplex operation mode uses the built-in pull-ups and GPIO manipulation on the RP2040 to drive the line high by default. An external pull-up is therefore not necessary.
Configure the hardware via your config.h:
You may optionally switch the PIO peripheral used with the following define in config.h:
```c
#define SERIAL_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the Serial implementation uses the PIO0 peripheral
```

View File

@@ -170,7 +170,7 @@ To configure it, add this to your rules.mk:
WS2812_DRIVER = vendor
```
Configure the hardware via your config.h:
You may optionally switch the PIO peripheral used with the following define in config.h:
```c
#define WS2812_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the WS2812 implementation uses the PIO0 peripheral
```

View File

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

View File

@@ -0,0 +1,255 @@
{
"manufacturer": "4pplet",
"keyboard_name": "waffling60 Rev E ANSI HS",
"maintainer": "4pplet",
"bootloader": "stm32-dfu",
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "A1", "resolution": 2}
]
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"key_lock": true,
"mousekey": false,
"nkro": true,
"rgblight": true
},
"matrix_pins": {
"cols": ["B2", "A4", "A3", "A0", "F1", "F0", "C15", "C14", "C13", "B9", "B8", "B7", "A15", "B3"],
"rows": ["B14", "A9", "B6", "B5", "B4"]
},
"processor": "STM32F072",
"rgblight": {
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
},
"led_count": 17
},
"url": "https://github.com/4pplet/waffling60",
"usb": {
"device_version": "0.0.5",
"pid": "0x0015",
"vid": "0x4444"
},
"ws2812": {
"pin": "A8"
},
"community_layouts": [
"60_tsangan_hhkb",
"60_hhkb"
],
"layouts": {
"LAYOUT_all": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "~", "matrix": [1, 13], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 4], "x":4, "y":4, "w":3},
{"label": "Space", "matrix": [4, 6], "x":7, "y":4},
{"label": "Space", "matrix": [4, 8], "x":8, "y":4, "w":3},
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_tsangan_hhkb": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "~", "matrix": [1, 13], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "|", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w": 7},
{"label": "Alt", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [4, 12], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_hhkb": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "#", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "%", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "&", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "(", "matrix": [0, 9], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "_", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "|", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "~", "matrix": [1, 13], "x": 14, "y": 0},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "{", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "}", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "Bsp", "matrix": [2, 12], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Ctrl", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": ":", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "<", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": ">", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "?", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [3, 13], "x": 14, "y": 3},
{"label": "Alt", "matrix": [4, 1], "x": 1.5, "y": 4},
{"label": "Win", "matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [4, 6], "x":4, "y":4, "w": 7},
{"label": "Win", "matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"label": "Alt", "matrix": [4, 12], "x": 12.5, "y": 4},
]
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,24 @@
# Matrix Diagram for 4pplet Waffling60 Rev E ANSI Hotswap
```
┌───────┐
2u Backspace │1D │
└───────┘
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │1D │
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │2C │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │
├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
│30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │
├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴───┼───┴┬────┬┴───┤
│40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL/HHKB
└────┴────┴────┴─────────────────────────────┴────┴────┴────┘
┌─────┬───┬─────┬───────────┬───┬───────────┬─────┬───┬─────┐
│40 │41 │42 │44 │46 │48 │4B │4C │4D │ 7u split spacebar
└─────┴───┴─────┴───────────┴───┴───────────┴─────┴───┴─────┘
┌─────┬───┬───────────────────────────────────────┬───┬─────┐
│40 │41 │46 │4C │4D │ 10u Spacebar
└─────┴───┴───────────────────────────────────────┴───┴─────┘
```

View File

@@ -0,0 +1,26 @@
# waffling60 Rev. E ANSI
A 60% PCB for MX switches, one hot swap and one solder-pcb version with decent layout support. Revision E adds underglow and rotary encoder support.
More info: https://github.com/4pplet/waffling60
* Keyboard Maintainer: [4pplet](https://github.com/4pplet)
* Hardware Supported: [waffling60](https://github.com/4pplet/waffling60)
Make example for this keyboard (after setting up your build environment):
make 4pplet/waffling60/rev_e_ansi:default
Flashing example for this keyboard:
make 4pplet/waffling60/rev_e_ansi: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
How to enter bootloader (DFU):
* Short the reset-header (labled BL/RESET) on the back of the PCB for about 2 seconds for the keyboard to enter DFU. When in DFU, it's ready to flash the firmware. If using a APM MCU it will not automatically reset after flash. Simply short the reset-header for a very short time to just reset the PCB, alternatively unplug and repluck the USB-cable to the keyboard.
Alternative option if the firmware is already pre-flashed:
* Unplug your keyboard, hold down the Spacebar and B at the same time, plug in your keyboard and wait a second before releasing the keys. The keyboard will enter DFU and is ready to flash the firmware.

View File

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

View File

@@ -0,0 +1,6 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 128

View File

@@ -0,0 +1,139 @@
{
"manufacturer": "ai03 Design Studio",
"keyboard_name": "Duet Switch Tester",
"maintainer": "ai03-2725",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": false,
"nkro": true
},
"matrix_pins": {
"cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP23", "GP22", "GP18", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6"],
"rows": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5"]
},
"processor": "RP2040",
"usb": {
"device_version": "1.0.0",
"pid": "0x0028",
"vid": "0xA103"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2.25, "y": 0},
{"matrix": [0, 3], "x": 3.25, "y": 0},
{"matrix": [0, 4], "x": 4.5, "y": 0},
{"matrix": [0, 5], "x": 5.5, "y": 0},
{"matrix": [0, 6], "x": 6.75, "y": 0},
{"matrix": [0, 7], "x": 7.75, "y": 0},
{"matrix": [0, 8], "x": 9, "y": 0},
{"matrix": [0, 9], "x": 10, "y": 0},
{"matrix": [0, 10], "x": 11.25, "y": 0},
{"matrix": [0, 11], "x": 12.25, "y": 0},
{"matrix": [0, 12], "x": 13.5, "y": 0},
{"matrix": [0, 13], "x": 14.5, "y": 0},
{"matrix": [0, 14], "x": 15.75, "y": 0},
{"matrix": [0, 15], "x": 16.75, "y": 0},
{"matrix": [0, 16], "x": 18, "y": 0},
{"matrix": [0, 17], "x": 19, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1},
{"matrix": [1, 1], "x": 1, "y": 1},
{"matrix": [1, 2], "x": 2.25, "y": 1},
{"matrix": [1, 3], "x": 3.25, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.75, "y": 1},
{"matrix": [1, 7], "x": 7.75, "y": 1},
{"matrix": [1, 8], "x": 9, "y": 1},
{"matrix": [1, 9], "x": 10, "y": 1},
{"matrix": [1, 10], "x": 11.25, "y": 1},
{"matrix": [1, 11], "x": 12.25, "y": 1},
{"matrix": [1, 12], "x": 13.5, "y": 1},
{"matrix": [1, 13], "x": 14.5, "y": 1},
{"matrix": [1, 14], "x": 15.75, "y": 1},
{"matrix": [1, 15], "x": 16.75, "y": 1},
{"matrix": [1, 16], "x": 18, "y": 1},
{"matrix": [1, 17], "x": 19, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2},
{"matrix": [2, 1], "x": 1, "y": 2},
{"matrix": [2, 2], "x": 2.25, "y": 2},
{"matrix": [2, 3], "x": 3.25, "y": 2},
{"matrix": [2, 4], "x": 4.5, "y": 2},
{"matrix": [2, 5], "x": 5.5, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 9, "y": 2},
{"matrix": [2, 9], "x": 10, "y": 2},
{"matrix": [2, 10], "x": 11.25, "y": 2},
{"matrix": [2, 11], "x": 12.25, "y": 2},
{"matrix": [2, 12], "x": 13.5, "y": 2},
{"matrix": [2, 13], "x": 14.5, "y": 2},
{"matrix": [2, 14], "x": 15.75, "y": 2},
{"matrix": [2, 15], "x": 16.75, "y": 2},
{"matrix": [2, 16], "x": 18, "y": 2},
{"matrix": [2, 17], "x": 19, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3},
{"matrix": [3, 1], "x": 1, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.5, "y": 3},
{"matrix": [3, 5], "x": 5.5, "y": 3},
{"matrix": [3, 6], "x": 6.75, "y": 3},
{"matrix": [3, 7], "x": 7.75, "y": 3},
{"matrix": [3, 8], "x": 9, "y": 3},
{"matrix": [3, 9], "x": 10, "y": 3},
{"matrix": [3, 10], "x": 11.25, "y": 3},
{"matrix": [3, 11], "x": 12.25, "y": 3},
{"matrix": [3, 12], "x": 13.5, "y": 3},
{"matrix": [3, 13], "x": 14.5, "y": 3},
{"matrix": [3, 14], "x": 15.75, "y": 3},
{"matrix": [3, 15], "x": 16.75, "y": 3},
{"matrix": [3, 16], "x": 18, "y": 3},
{"matrix": [3, 17], "x": 19, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4},
{"matrix": [4, 1], "x": 1, "y": 4},
{"matrix": [4, 2], "x": 2.25, "y": 4},
{"matrix": [4, 3], "x": 3.25, "y": 4},
{"matrix": [4, 4], "x": 4.5, "y": 4},
{"matrix": [4, 5], "x": 5.5, "y": 4},
{"matrix": [4, 6], "x": 6.75, "y": 4},
{"matrix": [4, 7], "x": 7.75, "y": 4},
{"matrix": [4, 8], "x": 9, "y": 4},
{"matrix": [4, 9], "x": 10, "y": 4},
{"matrix": [4, 10], "x": 11.25, "y": 4},
{"matrix": [4, 11], "x": 12.25, "y": 4},
{"matrix": [4, 12], "x": 13.5, "y": 4},
{"matrix": [4, 13], "x": 14.5, "y": 4},
{"matrix": [4, 14], "x": 15.75, "y": 4},
{"matrix": [4, 15], "x": 16.75, "y": 4},
{"matrix": [4, 16], "x": 18, "y": 4},
{"matrix": [4, 17], "x": 19, "y": 4},
{"matrix": [5, 0], "x": 0, "y": 5},
{"matrix": [5, 1], "x": 1, "y": 5},
{"matrix": [5, 2], "x": 2.25, "y": 5},
{"matrix": [5, 3], "x": 3.25, "y": 5},
{"matrix": [5, 4], "x": 4.5, "y": 5},
{"matrix": [5, 5], "x": 5.5, "y": 5},
{"matrix": [5, 6], "x": 6.75, "y": 5},
{"matrix": [5, 7], "x": 7.75, "y": 5},
{"matrix": [5, 8], "x": 9, "y": 5},
{"matrix": [5, 9], "x": 10, "y": 5},
{"matrix": [5, 10], "x": 11.25, "y": 5},
{"matrix": [5, 11], "x": 12.25, "y": 5},
{"matrix": [5, 12], "x": 13.5, "y": 5},
{"matrix": [5, 13], "x": 14.5, "y": 5},
{"matrix": [5, 14], "x": 15.75, "y": 5},
{"matrix": [5, 15], "x": 16.75, "y": 5},
{"matrix": [5, 16], "x": 18, "y": 5},
{"matrix": [5, 17], "x": 19, "y": 5}
]
}
}
}

View File

@@ -0,0 +1,34 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
/* Coordinate keymap - designed to send a string in the format [a-r][0-5] corresponding to the matrix position, where a0 is the top left and r5 is bottom right */
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0
),
};
/* String generation */
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
char col = record->event.key.col + 'a';
char row = record->event.key.row + '0';
char result[2] = {col, row};
send_string(result);
}
return false;
}

View File

@@ -0,0 +1,4 @@
# The coordinate keymap for Duet
An example keymap which sends a string `[a-r][0-5]` corresponding to the column-row position of the pressed switch.
Possibly useful for pairing to a kiosk device provided the display application can parse and handle this format.

View File

@@ -0,0 +1,14 @@
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0,
KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0, KC_0
),
};

View File

@@ -0,0 +1,4 @@
# The default keymap for Duet
Since this is a very irregular keyboard with unique use cases, the keymap should be customized to meet one's needs and to match the requirements of the corresponding display software (if any).
By default, all keys send `KC_0` to simply notify the host that an arbitrary key has been pressed.

View File

@@ -0,0 +1,28 @@
# Duet Switch Tester
![Cover image](https://i.imgur.com/sFuHJbLh.png)
A switch tester intended for event/storefront use
* Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
* Hardware Supported: The [Duet PCB](https://github.com/ai03-2725/duet-switch-tester/tree/main/Duet-MainPCB), powered by the RP2040
* Hardware Availability: [Open-source](https://github.com/ai03-2725/duet-switch-tester)
Make example for this keyboard (after setting up your build environment):
make ai03/duet:default
Flashing example for this keyboard:
make ai03/duet:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Press the reset button on the back of the PCB while holding the Bootmode switch
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

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

190
keyboards/akko/5087/5087.c Normal file
View File

@@ -0,0 +1,190 @@
/* Copyright (C) 2023 jonylee@hfd
*
* 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"
// clang-format off
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
/*row0*/
{1, A_1, B_1, C_1},
{1, A_2, B_2, C_2},
{1, A_3, B_3, C_3},
{1, A_4, B_4, C_4},
{1, A_5, B_5, C_5},
{1, A_6, B_6, C_6},
{1, A_7, B_7, C_7},
{1, A_8, B_8, C_8},
{1, A_9, B_9, C_9},
{1, A_10, B_10, C_10},
{1, A_11, B_11, C_11},
{1, A_12, B_12, C_12},
{1, A_13, B_13, C_13},
{1, A_14, B_14, C_14},
{1, A_15, B_15, C_15},
{1, A_16, B_16, C_16},
/*row1*/
{0, A_1, B_1, C_1},
{0, A_2, B_2, C_2},
{0, A_3, B_3, C_3},
{0, A_4, B_4, C_4},
{0, A_5, B_5, C_5},
{0, A_6, B_6, C_6},
{0, A_7, B_7, C_7},
{0, A_8, B_8, C_8},
{0, A_9, B_9, C_9},
{0, A_10, B_10, C_10},
{0, A_11, B_11, C_11},
{0, A_12, B_12, C_12},
{0, A_13, B_13, C_13},
{0, A_14, B_14, C_14},
{1, D_1, E_1, F_1},
{1, D_2, E_2, F_2},
{1, D_3, E_3, F_3},
/*row2*/
{0, D_1, E_1, F_1},
{0, D_2, E_2, F_2},
{0, D_3, E_3, F_3},
{0, D_4, E_4, F_4},
{0, D_5, E_5, F_5},
{0, D_6, E_6, F_6},
{0, D_7, E_7, F_7},
{0, D_8, E_8, F_8},
{0, D_9, E_9, F_9},
{0, D_10, E_10, F_10},
{0, D_11, E_11, F_11},
{0, D_12, E_12, F_12},
{0, D_13, E_13, F_13},
{0, D_14, E_14, F_14},
{1, G_1, H_1, I_1},
{1, G_2, H_2, I_2},
{1, G_3, H_3, I_3},
/*row3*/
{0, G_1, H_1, I_1},
{0, G_2, H_2, I_2},
{0, G_3, H_3, I_3},
{0, G_4, H_4, I_4},
{0, G_5, H_5, I_5},
{0, G_6, H_6, I_6},
{0, G_7, H_7, I_7},
{0, G_8, H_8, I_8},
{0, G_9, H_9, I_9},
{0, G_10, H_10, I_10},
{0, G_11, H_11, I_11},
{0, G_12, H_12, I_12},
{0, G_13, H_13, I_13},
/*row4*/
{0, J_1, K_1, L_1},
{0, J_2, K_2, L_2},
{0, J_3, K_3, L_3},
{0, J_4, K_4, L_4},
{0, J_5, K_5, L_5},
{0, J_6, K_6, L_6},
{0, J_7, K_7, L_7},
{0, J_8, K_8, L_8},
{0, J_9, K_9, L_9},
{0, J_10, K_10, L_10},
{0, J_11, K_11, L_11},
{0, J_12, K_12, L_12},
{1, J_4, K_4, L_4},
/*row5*/
{0, J_13, K_13, L_13},
{0, J_14, K_14, L_14},
{0, J_15, K_15, L_15},
{0, J_16, K_16, L_16},
{0, G_14, H_14, I_14},
{0, G_15, H_15, I_15},
{0, G_16, H_16, I_16},
{0, D_15, E_15, F_15},
{1, J_1, K_1, L_1},
{1, J_2, K_2, L_2},
{1, J_3, K_3, L_3},
};
#endif // RGB_MATRIX_ENABLE
enum __layers {
WIN_B,
WIN_W,
WIN_FN,
MAC_B,
MAC_W,
MAC_FN,
};
// clang-format on
void matrix_init_kb(void) {
setPinOutput(LED_MAC_OS_PIN); // LDE2 MAC\WIN
writePinLow(LED_MAC_OS_PIN);
setPinOutput(LED_WIN_LOCK_PIN); // LED3 Win Lock
writePinLow(LED_WIN_LOCK_PIN);
matrix_init_user();
}
void housekeeping_task_kb(void){
writePin(LED_MAC_OS_PIN, (get_highest_layer(default_layer_state) == 3));
writePin(LED_WIN_LOCK_PIN, keymap_config.no_gui);
}
bool process_record_kb(uint16_t keycode, keyrecord_t* record) {
if (!process_record_user(keycode, record)) {
return false;
}
switch (keycode) {
case DF(WIN_B):
if (record->event.pressed) {
set_single_persistent_default_layer(WIN_B);
}
return false;
case DF(MAC_B):
if (record->event.pressed) {
set_single_persistent_default_layer(MAC_B);
keymap_config.no_gui = 0;
eeconfig_update_keymap(keymap_config.raw);
}
return false;
case RGB_TOG:
if (record->event.pressed) {
switch (rgb_matrix_get_flags()) {
case LED_FLAG_ALL: {
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
} break;
default: {
rgb_matrix_set_flags(LED_FLAG_ALL);
} break;
}
}
if (!rgb_matrix_is_enabled()) {
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable();
}
return false;
default:
return true;
}
}

View File

@@ -0,0 +1,52 @@
/* Copyright (C) 2023 jonylee@hfd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* LED Indicators */
#define LED_MAC_OS_PIN C10
#define LED_WIN_LOCK_PIN C11
/* 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
/* SPI Config for spi flash*/
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN B3
#define SPI_MOSI_PIN B5
#define SPI_MISO_PIN B4
#define SPI_MOSI_PAL_MODE 5
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
/* I2C Config for LED Driver */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110100
#define DRIVER_ADDR_2 0b1110111
#define I2C1_OPMODE OPMODE_I2C
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
#define RGB_MATRIX_LED_COUNT 87
#define RGB_TRIGGER_ON_KEYDOWN
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES

View File

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

View File

@@ -0,0 +1,253 @@
{
"keyboard_name": "5087",
"manufacturer": "Akko",
"url":"https://www.akkogear.com",
"maintainer": "jonylee@hfd",
"usb": {
"vid": "0xFFFE",
"pid": "0x000C",
"device_version": "1.0.4",
"suspend_wakeup_delay": 400,
"force_nkro": true
},
"processor": "WB32FQ95",
"bootloader": "wb32-dfu",
"features": {
"bootmagic": true,
"mousekey": false,
"extrakey": true,
"console": false,
"command": false,
"nkro": true,
"rgb_matrix": true
},
"dynamic_keymap": {
"layer_count": 6
},
"matrix_pins": {
"cols": ["C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10"],
"rows": ["B15", "C6", "C7", "C8", "C9", "A8"]
},
"diode_direction": "ROW2COL",
"indicators": {
"caps_lock": "A15"
},
"rgb_matrix": {
"driver": "ckled2001",
"max_brightness": 180,
"animations": {
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"rainbow_moving_chevron": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"dual_beacon": true,
"rainbow_beacon": true,
"raindrops": true,
"typing_heatmap": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_cross": true,
"multisplash": true
},
"layout":[
{ "flags": 4, "matrix": [0, 0], "x": 0, "y": 0},
{ "flags": 4, "matrix": [0, 1], "x": 24, "y": 0},
{ "flags": 4, "matrix": [0, 2], "x": 38, "y": 0},
{ "flags": 4, "matrix": [0, 3], "x": 52, "y": 0},
{ "flags": 4, "matrix": [0, 4], "x": 66, "y": 0},
{ "flags": 4, "matrix": [0, 5], "x": 82, "y": 0},
{ "flags": 4, "matrix": [0, 6], "x": 96, "y": 0},
{ "flags": 4, "matrix": [0, 7], "x":110, "y": 0},
{ "flags": 4, "matrix": [0, 8], "x":124, "y": 0},
{ "flags": 4, "matrix": [0, 9], "x":140, "y": 0},
{ "flags": 4, "matrix": [0, 10], "x":154, "y": 0},
{ "flags": 4, "matrix": [0, 11], "x":168, "y": 0},
{ "flags": 4, "matrix": [0, 12], "x":182, "y": 0},
{ "flags": 4, "matrix": [0, 14], "x":196, "y": 0},
{ "flags": 4, "matrix": [0, 15], "x":210, "y": 0},
{ "flags": 4, "matrix": [0, 16], "x":224, "y": 0},
{ "flags": 4, "matrix": [1, 0], "x": 0, "y": 12},
{ "flags": 4, "matrix": [1, 1], "x": 13, "y": 12},
{ "flags": 4, "matrix": [1, 2], "x": 26, "y": 12},
{ "flags": 4, "matrix": [1, 3], "x": 39, "y": 12},
{ "flags": 4, "matrix": [1, 4], "x": 52, "y": 12},
{ "flags": 4, "matrix": [1, 5], "x": 65, "y": 12},
{ "flags": 4, "matrix": [1, 6], "x": 79, "y": 12},
{ "flags": 4, "matrix": [1, 7], "x": 92, "y": 12},
{ "flags": 4, "matrix": [1, 8], "x":105, "y": 12},
{ "flags": 4, "matrix": [1, 9], "x":118, "y": 12},
{ "flags": 4, "matrix": [1, 10], "x":131, "y": 12},
{ "flags": 4, "matrix": [1, 11], "x":144, "y": 12},
{ "flags": 4, "matrix": [1, 12], "x":158, "y": 12},
{ "flags": 4, "matrix": [1, 13], "x":171, "y": 12},
{ "flags": 4, "matrix": [1, 14], "x":184, "y": 12},
{ "flags": 4, "matrix": [1, 15], "x":197, "y": 12},
{ "flags": 4, "matrix": [1, 16], "x":210, "y": 12},
{ "flags": 4, "matrix": [2, 0], "x": 0, "y": 26},
{ "flags": 4, "matrix": [2, 1], "x": 14, "y": 26},
{ "flags": 4, "matrix": [2, 2], "x": 28, "y": 26},
{ "flags": 4, "matrix": [2, 3], "x": 42, "y": 26},
{ "flags": 4, "matrix": [2, 4], "x": 56, "y": 26},
{ "flags": 4, "matrix": [2, 5], "x": 70, "y": 26},
{ "flags": 4, "matrix": [2, 6], "x": 84, "y": 26},
{ "flags": 4, "matrix": [2, 7], "x": 98, "y": 26},
{ "flags": 4, "matrix": [2, 8], "x":112, "y": 26},
{ "flags": 4, "matrix": [2, 9], "x":126, "y": 26},
{ "flags": 4, "matrix": [2, 10], "x":140, "y": 26},
{ "flags": 4, "matrix": [2, 11], "x":154, "y": 26},
{ "flags": 4, "matrix": [2, 12], "x":168, "y": 26},
{ "flags": 4, "matrix": [2, 13], "x":182, "y": 26},
{ "flags": 4, "matrix": [2, 14], "x":196, "y": 26},
{ "flags": 4, "matrix": [2, 15], "x":210, "y": 26},
{ "flags": 4, "matrix": [2, 16], "x":224, "y": 26},
{ "flags": 4, "matrix": [3, 0], "x": 0, "y": 38},
{ "flags": 4, "matrix": [3, 1], "x": 14, "y": 38},
{ "flags": 4, "matrix": [3, 2], "x": 28, "y": 38},
{ "flags": 4, "matrix": [3, 3], "x": 42, "y": 38},
{ "flags": 4, "matrix": [3, 4], "x": 56, "y": 38},
{ "flags": 4, "matrix": [3, 5], "x": 70, "y": 38},
{ "flags": 4, "matrix": [3, 6], "x": 84, "y": 38},
{ "flags": 4, "matrix": [3, 7], "x": 98, "y": 38},
{ "flags": 4, "matrix": [3, 8], "x":112, "y": 38},
{ "flags": 4, "matrix": [3, 9], "x":126, "y": 38},
{ "flags": 4, "matrix": [3, 10], "x":140, "y": 38},
{ "flags": 4, "matrix": [3, 11], "x":154, "y": 38},
{ "flags": 4, "matrix": [3, 13], "x":182, "y": 38},
{ "flags": 4, "matrix": [4, 0], "x": 0, "y": 51},
{ "flags": 4, "matrix": [4, 1], "x": 14, "y": 51},
{ "flags": 4, "matrix": [4, 2], "x": 28, "y": 51},
{ "flags": 4, "matrix": [4, 3], "x": 42, "y": 51},
{ "flags": 4, "matrix": [4, 4], "x": 56, "y": 51},
{ "flags": 4, "matrix": [4, 5], "x": 70, "y": 51},
{ "flags": 4, "matrix": [4, 6], "x": 84, "y": 51},
{ "flags": 4, "matrix": [4, 7], "x": 98, "y": 51},
{ "flags": 4, "matrix": [4, 8], "x":112, "y": 51},
{ "flags": 4, "matrix": [4, 9], "x":126, "y": 51},
{ "flags": 4, "matrix": [4, 10], "x":140, "y": 51},
{ "flags": 4, "matrix": [4, 13], "x":154, "y": 51},
{ "flags": 4, "matrix": [4, 15], "x":182, "y": 51},
{ "flags": 4, "matrix": [5, 0], "x": 0, "y": 64},
{ "flags": 4, "matrix": [5, 1], "x": 14, "y": 64},
{ "flags": 4, "matrix": [5, 2], "x": 28, "y": 64},
{ "flags": 4, "matrix": [5, 5], "x": 70, "y": 64},
{ "flags": 4, "matrix": [5, 9], "x":126, "y": 64},
{ "flags": 4, "matrix": [5, 10], "x":140, "y": 64},
{ "flags": 4, "matrix": [5, 11], "x":154, "y": 64},
{ "flags": 4, "matrix": [5, 13], "x":182, "y": 64},
{ "flags": 4, "matrix": [5, 14], "x":196, "y": 64},
{ "flags": 4, "matrix": [5, 15], "x":210, "y": 64},
{ "flags": 4, "matrix": [5, 16], "x":224, "y": 64}
]
},
"community_layouts": ["tkl_ansi"],
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
{ "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0 },
{ "label": "F1", "matrix": [0, 1], "x": 2, "y": 0 },
{ "label": "F2", "matrix": [0, 2], "x": 3, "y": 0 },
{ "label": "F3", "matrix": [0, 3], "x": 4, "y": 0 },
{ "label": "F4", "matrix": [0, 4], "x": 5, "y": 0 },
{ "label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0 },
{ "label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0 },
{ "label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0 },
{ "label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0 },
{ "label": "F9", "matrix": [0, 9], "x": 11, "y": 0 },
{ "label": "F10", "matrix": [0, 10], "x": 12, "y": 0 },
{ "label": "F11", "matrix": [0, 11], "x": 13, "y": 0 },
{ "label": "F12", "matrix": [0, 12], "x": 14, "y": 0 },
{ "label": "PrtSc", "matrix": [0, 14], "x": 15.25, "y": 0 },
{ "label": "ScrLk", "matrix": [0, 15], "x": 16.25, "y": 0 },
{ "label": "Pause", "matrix": [0, 16], "x": 17.25, "y": 0 },
{ "label": "~", "matrix": [1, 0], "x": 0, "y": 1.25 },
{ "label": "!", "matrix": [1, 1], "x": 1, "y": 1.25 },
{ "label": "@", "matrix": [1, 2], "x": 2, "y": 1.25 },
{ "label": "#", "matrix": [1, 3], "x": 3, "y": 1.25 },
{ "label": "$", "matrix": [1, 4], "x": 4, "y": 1.25 },
{ "label": "%", "matrix": [1, 5], "x": 5, "y": 1.25 },
{ "label": "^", "matrix": [1, 6], "x": 6, "y": 1.25 },
{ "label": "&", "matrix": [1, 7], "x": 7, "y": 1.25 },
{ "label": "*", "matrix": [1, 8], "x": 8, "y": 1.25 },
{ "label": "(", "matrix": [1, 9], "x": 9, "y": 1.25 },
{ "label": ")", "matrix": [1, 10], "x": 10, "y": 1.25 },
{ "label": "_", "matrix": [1, 11], "x": 11, "y": 1.25 },
{ "label": "+", "matrix": [1, 12], "x": 12, "y": 1.25 },
{ "label": "Backspace", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2 },
{ "label": "Ins", "matrix": [1, 14], "x": 15.25, "y": 1.25 },
{ "label": "Home", "matrix": [1, 15], "x": 16.25, "y": 1.25 },
{ "label": "PgUp", "matrix": [1, 16], "x": 17.25, "y": 1.25 },
{ "label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5 },
{ "label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25 },
{ "label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25 },
{ "label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25 },
{ "label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25 },
{ "label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25 },
{ "label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25 },
{ "label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25 },
{ "label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25 },
{ "label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25 },
{ "label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25 },
{ "label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25 },
{ "label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25 },
{ "label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5 },
{ "label": "Del", "matrix": [2, 14], "x": 15.25, "y": 2.25 },
{ "label": "End", "matrix": [2, 15], "x": 16.25, "y": 2.25 },
{ "label": "PgDn", "matrix": [2, 16], "x": 17.25, "y": 2.25 },
{ "label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75 },
{ "label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25 },
{ "label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25 },
{ "label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25 },
{ "label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25 },
{ "label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25 },
{ "label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25 },
{ "label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25 },
{ "label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25 },
{ "label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25 },
{ "label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25 },
{ "label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25 },
{ "label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25 },
{ "label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25 },
{ "label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25 },
{ "label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25 },
{ "label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25 },
{ "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25 },
{ "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25 },
{ "label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25 },
{ "label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25 },
{ "label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25 },
{ "label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25 },
{ "label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25 },
{ "label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 2.75 },
{ "label": "Up", "matrix": [4, 15], "x": 16.25, "y": 4.25 },
{ "label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25 },
{ "label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25 },
{ "label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25 },
{ "label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25 },
{ "label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25 },
{ "label": "Win", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25 },
{ "label": "Fn", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25 },
{ "label": "Ctrl", "matrix": [5, 13], "x": 13.75, "y": 5.25, "w": 1.25 },
{ "label": "Left", "matrix": [5, 14], "x": 15.25, "y": 5.25 },
{ "label": "Down", "matrix": [5, 15], "x": 16.25, "y": 5.25 },
{ "label": "Right", "matrix": [5, 16], "x": 17.25, "y": 5.25 }
]
}
}
}

View File

@@ -0,0 +1,79 @@
/* Copyright (C) 2023 jonylee@hfd
*
* 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 __layers {
WIN_B,
WIN_W,
WIN_FN,
MAC_B,
MAC_W,
MAC_FN
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_B] = LAYOUT_tkl_ansi( /* Base */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_W] = LAYOUT_tkl_ansi( /* Base */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D),
[WIN_FN] = LAYOUT_tkl_ansi( /* FN */
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
_______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI),
[MAC_B] = LAYOUT_tkl_ansi( /* Base */
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_W] = LAYOUT_tkl_ansi( /* Base */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D),
[MAC_FN] = LAYOUT_tkl_ansi( /* FN */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
_______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI)
};
// clang-format on

View File

@@ -0,0 +1,79 @@
/* Copyright (C) 2023 jonylee@hfd
*
* 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 __layers {
WIN_B,
WIN_W,
WIN_FN,
MAC_B,
MAC_W,
MAC_FN,
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_B] = LAYOUT_tkl_ansi( /* Base */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(WIN_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[WIN_W] = LAYOUT_tkl_ansi( /* Base */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
_______, _______, _______, _______, _______, _______, MO(WIN_FN), _______, KC_A, KC_S, KC_D),
[WIN_FN] = LAYOUT_tkl_ansi( /* FN */
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______,_______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
_______, _______,TG(WIN_W),_______, _______, _______, _______, _______, _______, DF(MAC_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI),
[MAC_B] = LAYOUT_tkl_ansi( /* Base */
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_W] = LAYOUT_tkl_ansi( /* Base */
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W,
_______, _______, _______, _______, _______, _______, MO(MAC_FN), _______, KC_A, KC_S, KC_D),
[MAC_FN] = LAYOUT_tkl_ansi( /* FN */
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_SPI, _______, _______, _______, _______,
_______, _______,TG(MAC_W),_______, _______, _______, _______, _______, _______, DF(WIN_B),_______,_______, _______, RGB_MOD, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, RGB_HUI,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD, RGB_VAD, RGB_SAI)
};
// clang-format on

View File

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

View File

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

View File

@@ -0,0 +1,19 @@
# 5087
A customizable 80% keyboard.
* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
* Hardware Supported:Akko 5087
* Hardware Availability: [akko](https://www.akkogear.com/)
Make example for this keyboard (after setting up your build environment):
make akko/5087:default
Flashing example for this keyboard:
make akko/5087:default:flash
**Reset Key**: Hold down the key located at *K000*, which programmed as *Esc* while plugging in the keyboard.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -0,0 +1,3 @@
EEPROM_DRIVER = wear_leveling
WEAR_LEVELING_DRIVER = spi_flash

View File

@@ -142,7 +142,7 @@
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
@@ -211,7 +211,7 @@
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
@@ -282,7 +282,7 @@
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
@@ -354,7 +354,7 @@
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
@@ -424,7 +424,7 @@
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},
@@ -496,7 +496,7 @@
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "-", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "=", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [0, 14], "x": 13, "y": 0, "w": 2},
{"label": "Backspace", "matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [1, 2], "x": 1.5, "y": 1},

View File

@@ -2,12 +2,12 @@
Most of these are "best-guess." I was using photos I found on ZFrontier as a
reference and I don't have the PCB on-hand.
- @noroadsleft
2023-01-20
\- @noroadsleft, 2023-11-21
```
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ ┌───────┐
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0E │ 2u Backspace
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │ │0D │ 2u Backspace
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ └─┬─────┤
│10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter

View File

@@ -0,0 +1,210 @@
{
"manufacturer": "Alpaca",
"keyboard_name": "WFEclipse",
"bootloader": "stm32duino",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"console": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"matrix_pins": {
"cols": ["C11", "C10", "A15", "A10", "A9", "A8", "C9", "C8", "C7", "C6", "B1", "B0", "C5", "C4", "A7", "A6"],
"rows": ["A0", "A1", "A2", "A3", "A4"]
},
"processor": "STM32F103",
"rgb_matrix": {
"animations": {
"band_sat": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"band_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"gradient_left_right": true,
"gradient_up_down": true,
"hue_wave": true,
"pixel_fractal": true,
"solid_color": true,
"solid_reactive_simple": true,
"solid_splash": true
},
"driver": "ws2812",
"layout": [
{"matrix": [4, 15], "x": 198, "y": 54, "flags": 1},
{"matrix": [4, 14], "x": 186, "y": 54, "flags": 1},
{"matrix": [4, 13], "x": 174, "y": 54, "flags": 1},
{"matrix": [4, 12], "x": 150, "y": 54, "flags": 1},
{"matrix": [4, 11], "x": 138, "y": 54, "flags": 1},
{"matrix": [4, 10], "x": 126, "y": 54, "flags": 1},
{"matrix": [4, 6], "x": 51, "y": 54, "flags": 1},
{"matrix": [4, 2], "x": 36, "y": 54, "flags": 1},
{"matrix": [4, 1], "x": 21, "y": 54, "flags": 1},
{"matrix": [4, 0], "x": 6, "y": 54, "flags": 1},
{"matrix": [3, 15], "x": 198, "y": 42, "flags": 1},
{"matrix": [3, 14], "x": 186, "y": 42, "flags": 1},
{"matrix": [3, 13], "x": 153, "y": 42, "flags": 1},
{"matrix": [3, 11], "x": 141, "y": 42, "flags": 1},
{"matrix": [3, 10], "x": 129, "y": 42, "flags": 1},
{"matrix": [3, 9], "x": 117, "y": 42, "flags": 1},
{"matrix": [3, 8], "x": 105, "y": 42, "flags": 1},
{"matrix": [3, 7], "x": 93, "y": 42, "flags": 1},
{"matrix": [3, 6], "x": 81, "y": 42, "flags": 1},
{"matrix": [3, 5], "x": 69, "y": 42, "flags": 1},
{"matrix": [3, 4], "x": 57, "y": 42, "flags": 1},
{"matrix": [3, 3], "x": 45, "y": 42, "flags": 1},
{"matrix": [3, 2], "x": 33, "y": 42, "flags": 1},
{"matrix": [3, 0], "x": 6, "y": 42, "flags": 1},
{"matrix": [2, 15], "x": 198, "y": 30, "flags": 1},
{"matrix": [2, 14], "x": 186, "y": 30, "flags": 1},
{"matrix": [2, 13], "x": 159, "y": 30, "flags": 1},
{"matrix": [2, 11], "x": 147, "y": 30, "flags": 1},
{"matrix": [2, 10], "x": 135, "y": 30, "flags": 1},
{"matrix": [2, 9], "x": 123, "y": 30, "flags": 1},
{"matrix": [2, 8], "x": 111, "y": 30, "flags": 1},
{"matrix": [2, 7], "x": 99, "y": 30, "flags": 1},
{"matrix": [2, 6], "x": 87, "y": 30, "flags": 1},
{"matrix": [2, 5], "x": 75, "y": 30, "flags": 1},
{"matrix": [2, 4], "x": 63, "y": 30, "flags": 1},
{"matrix": [2, 3], "x": 51, "y": 30, "flags": 1},
{"matrix": [2, 2], "x": 39, "y": 30, "flags": 1},
{"matrix": [2, 1], "x": 27, "y": 30, "flags": 1},
{"matrix": [2, 0], "x": 6, "y": 30, "flags": 1},
{"matrix": [1, 15], "x": 198, "y": 18, "flags": 1},
{"matrix": [1, 14], "x": 186, "y": 18, "flags": 1},
{"matrix": [1, 13], "x": 168, "y": 18, "flags": 1},
{"matrix": [1, 12], "x": 156, "y": 18, "flags": 1},
{"matrix": [1, 11], "x": 144, "y": 18, "flags": 1},
{"matrix": [1, 10], "x": 132, "y": 18, "flags": 1},
{"matrix": [1, 9], "x": 120, "y": 18, "flags": 1},
{"matrix": [1, 8], "x": 108, "y": 18, "flags": 1},
{"matrix": [1, 7], "x": 96, "y": 18, "flags": 1},
{"matrix": [1, 6], "x": 84, "y": 18, "flags": 1},
{"matrix": [1, 5], "x": 72, "y": 18, "flags": 1},
{"matrix": [1, 4], "x": 60, "y": 18, "flags": 1},
{"matrix": [1, 3], "x": 48, "y": 18, "flags": 1},
{"matrix": [1, 2], "x": 36, "y": 18, "flags": 1},
{"matrix": [1, 1], "x": 24, "y": 18, "flags": 1},
{"matrix": [1, 0], "x": 6, "y": 18, "flags": 1},
{"matrix": [0, 15], "x": 198, "y": 6, "flags": 1},
{"matrix": [0, 14], "x": 186, "y": 6, "flags": 1},
{"matrix": [0, 13], "x": 162, "y": 6, "flags": 1},
{"matrix": [0, 12], "x": 150, "y": 6, "flags": 1},
{"matrix": [0, 11], "x": 138, "y": 6, "flags": 1},
{"matrix": [0, 10], "x": 126, "y": 6, "flags": 1},
{"matrix": [0, 9], "x": 114, "y": 6, "flags": 1},
{"matrix": [0, 8], "x": 102, "y": 6, "flags": 1},
{"matrix": [0, 7], "x": 90, "y": 6, "flags": 1},
{"matrix": [0, 6], "x": 78, "y": 6, "flags": 1},
{"matrix": [0, 5], "x": 66, "y": 6, "flags": 1},
{"matrix": [0, 4], "x": 54, "y": 6, "flags": 1},
{"matrix": [0, 3], "x": 42, "y": 6, "flags": 1},
{"matrix": [0, 2], "x": 30, "y": 6, "flags": 1},
{"matrix": [0, 1], "x": 18, "y": 6, "flags": 1},
{"matrix": [0, 0], "x": 6, "y": 6, "flags": 1},
{"x": 125, "y": 1, "flags": 4},
{"x": 125, "y": 2, "flags": 4},
{"x": 125, "y": 3, "flags": 4},
{"x": 125, "y": 4, "flags": 4},
{"x": 125, "y": 5, "flags": 4},
{"x": 125, "y": 6, "flags": 4},
{"x": 125, "y": 7, "flags": 4},
{"x": 125, "y": 8, "flags": 4},
{"x": 125, "y": 9, "flags": 4},
{"x": 125, "y": 10, "flags": 4},
{"x": 125, "y": 11, "flags": 4},
{"x": 125, "y": 12, "flags": 4}
],
"max_brightness": 50
},
"usb": {
"device_version": "1.0.4",
"pid": "0x0038",
"vid": "0x308F"
},
"ws2812": {
"pin": "B8"
},
"layouts": {
"LAYOUT": {
"layout": [
{"label": "ESC", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "1", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "2", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "3", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "4", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "5", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "6", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "7", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "8", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "9", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "0", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "MINS", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "EQL", "matrix": [0, 12], "x": 12, "y": 0},
{"label": "BSPC", "matrix": [0, 13], "x": 13, "y": 0},
{"label": "DEL", "matrix": [0, 14], "x": 15, "y": 0},
{"label": "INS", "matrix": [0, 15], "x": 16, "y": 0},
{"label": "TAB", "matrix": [1, 0], "x": 0, "y": 1},
{"label": "Q", "matrix": [1, 1], "x": 1.5, "y": 1},
{"label": "W", "matrix": [1, 2], "x": 2.5, "y": 1},
{"label": "E", "matrix": [1, 3], "x": 3.5, "y": 1},
{"label": "R", "matrix": [1, 4], "x": 4.5, "y": 1},
{"label": "T", "matrix": [1, 5], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [1, 6], "x": 6.5, "y": 1},
{"label": "U", "matrix": [1, 7], "x": 7.5, "y": 1},
{"label": "I", "matrix": [1, 8], "x": 8.5, "y": 1},
{"label": "O", "matrix": [1, 9], "x": 9.5, "y": 1},
{"label": "P", "matrix": [1, 10], "x": 10.5, "y": 1},
{"label": "LBRC", "matrix": [1, 11], "x": 11.5, "y": 1},
{"label": "RBRC", "matrix": [1, 12], "x": 12.5, "y": 1},
{"label": "BSLS", "matrix": [1, 13], "x": 13.5, "y": 1},
{"label": "HOME", "matrix": [1, 14], "x": 15, "y": 1},
{"label": "PGUP", "matrix": [1, 15], "x": 16, "y": 1},
{"label": "CAPS", "matrix": [2, 0], "x": 0, "y": 2},
{"label": "A", "matrix": [2, 1], "x": 1.75, "y": 2},
{"label": "S", "matrix": [2, 2], "x": 2.75, "y": 2},
{"label": "D", "matrix": [2, 3], "x": 3.75, "y": 2},
{"label": "F", "matrix": [2, 4], "x": 4.75, "y": 2},
{"label": "G", "matrix": [2, 5], "x": 5.75, "y": 2},
{"label": "H", "matrix": [2, 6], "x": 6.75, "y": 2},
{"label": "J", "matrix": [2, 7], "x": 7.75, "y": 2},
{"label": "K", "matrix": [2, 8], "x": 8.75, "y": 2},
{"label": "L", "matrix": [2, 9], "x": 9.75, "y": 2},
{"label": "SCLN", "matrix": [2, 10], "x": 10.75, "y": 2},
{"label": "QUOT", "matrix": [2, 11], "x": 11.75, "y": 2},
{"label": "ENT", "matrix": [2, 13], "x": 12.75, "y": 2},
{"label": "END", "matrix": [2, 14], "x": 15, "y": 2},
{"label": "PGDN", "matrix": [2, 15], "x": 16, "y": 2},
{"label": "LSFT", "matrix": [3, 0], "x": 0, "y": 3},
{"label": "Z", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "X", "matrix": [3, 3], "x": 3.25, "y": 3},
{"label": "C", "matrix": [3, 4], "x": 4.25, "y": 3},
{"label": "V", "matrix": [3, 5], "x": 5.25, "y": 3},
{"label": "B", "matrix": [3, 6], "x": 6.25, "y": 3},
{"label": "N", "matrix": [3, 7], "x": 7.25, "y": 3},
{"label": "M", "matrix": [3, 8], "x": 8.25, "y": 3},
{"label": "COMM", "matrix": [3, 9], "x": 9.25, "y": 3},
{"label": "DOT", "matrix": [3, 10], "x": 10.25, "y": 3},
{"label": "SLSH", "matrix": [3, 11], "x": 11.25, "y": 3},
{"label": "RSFT", "matrix": [3, 13], "x": 12.25, "y": 3},
{"label": "UP", "matrix": [3, 14], "x": 15, "y": 3},
{"label": "MO(1)", "matrix": [3, 15], "x": 16, "y": 3},
{"label": "LCTL", "matrix": [4, 0], "x": 0, "y": 4},
{"label": "LGUI", "matrix": [4, 1], "x": 1.25, "y": 4},
{"label": "LALT", "matrix": [4, 2], "x": 2.5, "y": 4},
{"label": "SPC", "matrix": [4, 6], "x": 3.75, "y": 4},
{"label": "RALT", "matrix": [4, 10], "x": 10, "y": 4},
{"label": "RGUI", "matrix": [4, 11], "x": 11, "y": 4},
{"label": "RCTL", "matrix": [4, 12], "x": 12, "y": 4},
{"label": "LEFT", "matrix": [4, 13], "x": 14, "y": 4},
{"label": "DOWN", "matrix": [4, 14], "x": 15, "y": 4},
{"label": "RGHT", "matrix": [4, 15], "x": 16, "y": 4}
]
}
}
}

View File

@@ -0,0 +1,39 @@
/* Copyright 2023 temp4gh
*
* 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 {
WIN_BASE,
WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_BASE] =LAYOUT(
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END , KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(WIN_FN),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[WIN_FN] =LAYOUT(
KC_GRV , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,KC_MPRV, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, KC_MNXT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD,RGB_HUD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@@ -0,0 +1,39 @@
/* Copyright 2023 temp4gh
*
* 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 {
WIN_BASE,
WIN_FN,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[WIN_BASE] =LAYOUT(
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL, KC_INS,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME, KC_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_END , KC_PGDN,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(WIN_FN),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[WIN_FN] =LAYOUT(
KC_GRV , KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ,KC_MPRV, QK_BOOT,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI, KC_TRNS, KC_MNXT, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_RMOD,RGB_HUD, RGB_TOG, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

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

View File

@@ -0,0 +1,26 @@
# Alpaca Keyboards whitefox-eclipse
![Alpaca Keyboards whitefox-eclipse](https://i.imgur.com/VlyDBYGh.jpg)
A customizable 68% keyboard.
- Keyboard Maintainer: [temp4gh](https://github.com/temp4gh)
- Hardware Supported: whitefox-eclipse PCB
- Hardware Availability: https://kono.store/collections/all-products-list/products/whitefox-eclipse?variant=43224249991367
Make example for this keyboard (after setting up your build environment):
make alpaca/wfeclipse:default
Flashing example for this keyboard:
make alpaca/wfeclipse:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 2 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

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

View File

@@ -0,0 +1,17 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
#define SERIAL_USART_FULL_DUPLEX
#define SERIAL_USART_TX_PIN GP0
#define SERIAL_USART_RX_PIN GP1
#define SERIAL_USART_PIN_SWAP
#define USB_VBUS_PIN GP19
#define SPLIT_HAND_PIN GP17
#define SPLIT_HAND_PIN_LOW_IS_LEFT

View File

@@ -0,0 +1,78 @@
{
"manufacturer": "beekeeb",
"keyboard_name": "piantor_pro",
"maintainer": "beekeeb",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"cols": ["GP11", "GP12", "GP13", "GP14", "GP15", "GP16"],
"rows": ["GP7", "GP8", "GP9", "GP10"]
},
"processor": "RP2040",
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0002",
"vid": "0xBEEB"
},
"split": {
"enabled": true
},
"community_layouts": [ "split_3x6_3" ],
"layouts": {
"LAYOUT_split_3x6_3": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.25},
{"matrix": [0, 1], "x": 1, "y": 0.25},
{"matrix": [0, 2], "x": 2, "y": 0.125},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0.125},
{"matrix": [0, 5], "x": 5, "y": 0.25},
{"matrix": [4, 5], "x": 8, "y": 0.25},
{"matrix": [4, 4], "x": 9, "y": 0.125},
{"matrix": [4, 3], "x": 10, "y": 0},
{"matrix": [4, 2], "x": 11, "y": 0.125},
{"matrix": [4, 1], "x": 12, "y": 0.25},
{"matrix": [4, 0], "x": 13, "y": 0.25},
{"matrix": [1, 0], "x": 0, "y": 1.25},
{"matrix": [1, 1], "x": 1, "y": 1.25},
{"matrix": [1, 2], "x": 2, "y": 1.125},
{"matrix": [1, 3], "x": 3, "y": 1},
{"matrix": [1, 4], "x": 4, "y": 1.125},
{"matrix": [1, 5], "x": 5, "y": 1.25},
{"matrix": [5, 5], "x": 8, "y": 1.25},
{"matrix": [5, 4], "x": 9, "y": 1.125},
{"matrix": [5, 3], "x": 10, "y": 1},
{"matrix": [5, 2], "x": 11, "y": 1.125},
{"matrix": [5, 1], "x": 12, "y": 1.25},
{"matrix": [5, 0], "x": 13, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25},
{"matrix": [2, 1], "x": 1, "y": 2.25},
{"matrix": [2, 2], "x": 2, "y": 2.125},
{"matrix": [2, 3], "x": 3, "y": 2},
{"matrix": [2, 4], "x": 4, "y": 2.125},
{"matrix": [2, 5], "x": 5, "y": 2.25},
{"matrix": [6, 5], "x": 8, "y": 2.25},
{"matrix": [6, 4], "x": 9, "y": 2.125},
{"matrix": [6, 3], "x": 10, "y": 2},
{"matrix": [6, 2], "x": 11, "y": 2.125},
{"matrix": [6, 1], "x": 12, "y": 2.25},
{"matrix": [6, 0], "x": 13, "y": 2.25},
{"matrix": [3, 3], "x": 3.5, "y": 3.25},
{"matrix": [3, 4], "x": 4.5, "y": 3.5},
{"matrix": [3, 5], "x": 5.5, "y": 3.75},
{"matrix": [7, 5], "x": 7.5, "y": 3.75},
{"matrix": [7, 4], "x": 8.5, "y": 3.5},
{"matrix": [7, 3], "x": 9.5, "y": 3.25}
]
}
}
}

View File

@@ -0,0 +1,55 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
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_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT
//`--------------------------' `--------------------------'
),
[1] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP,KC_RIGHT, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, _______, KC_SPC, KC_ENT, MO(3), KC_RALT
//`--------------------------' `--------------------------'
),
[2] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, MO(3), KC_SPC, KC_ENT, _______, KC_RALT
//`--------------------------' `--------------------------'
),
[3] = LAYOUT_split_3x6_3(
//,-----------------------------------------------------. ,-----------------------------------------------------.
QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------|
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
//|--------+--------+--------+--------+--------+--------+--------| |--------+--------+--------+--------+--------+--------+--------|
KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
//`--------------------------' `--------------------------'
)
};

View File

@@ -0,0 +1,20 @@
# Piantor Pro
![Piantor Pro](https://i.imgur.com/UPRI64ch.jpg)
A 42 key hotswappable keyboard with RP2040.
* Keyboard Maintainer: [beekeeb](https://github.com/beekeeb)
* Hardware Availability: [beekeeb.shop](https://beekeeb.shop)
Make example for this keyboard (after setting up your build environment):
make beekeeb/piantor_pro:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Flashing
To enter the bootloader mode, disconnect the keyboard from the computer. While holding the BOOT button, connect the keyboard to the computer.
Run `make beekeeb/piantor_pro:default:flash` or copy the compiled uf2 firmware to the USB mass storage device.

View File

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

View File

@@ -11,8 +11,9 @@
"development_board": "promicro",
"diode_direction": "ROW2COL",
"matrix_pins": {
"cols": ["B3", "B2", "B6"],
"rows": ["B5"]
"direct": [
["B3", "B2", "B6"]
]
},
"layouts": {
"LAYOUT": {

View File

@@ -19,8 +19,6 @@ Here are some included keymaps and their modes to get you started:
* vc_i: the same as default but using `i` instead of `a`
* vim_ai: vim clutch only, selectable between `a` and `i`
Also includes a mode for single-keypress in case of "push to talk clutch"
Make example for this keyboard after setting up your development environment:
make blu/vimclutch:default
@@ -34,3 +32,7 @@ Flashing example for this keyboard:
Reset button on the reverse side of the enclosure for initializing flashing.
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).
## Hardware Revision Compatibility
This keyboard as-it-is in the QMK repository at the is only designed to work with Revision B (and possibly beyond!)

View File

@@ -0,0 +1,23 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
#define RGB_MATRIX_LED_COUNT 58
#define AUDIO_PIN GP29
#define AUDIO_PWM_DRIVER PWMD6
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B
#define AUDIO_INIT_DELAY
// SPI Configuration
#define SPI_DRIVER SPID1
#define SPI_SCK_PIN GP26
#define SPI_MOSI_PIN GP27
// Display Configuration
#define OLED_CS_PIN GP25
#define OLED_DC_PIN GP20
#define OLED_RST_PIN GP28

View File

@@ -0,0 +1,9 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_I2C TRUE
#define HAL_USE_PWM TRUE
#define HAL_USE_SPI TRUE
#include_next <halconf.h>

View File

@@ -0,0 +1,180 @@
{
"keyboard_name": "Equals 48",
"bootloader": "rp2040",
"processor": "RP2040",
"features": {
"audio":true
},
"matrix_pins": {
"cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11"],
"rows": ["GP12", "GP13", "GP16", "GP17"]
},
"ws2812": {
"driver": "vendor",
"pin": "GP21"
},
"rgb_matrix": {
"driver": "ws2812",
"max_brightness": 150,
"animations": {
"alphas_mods": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_sat": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"band_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"gradient_left_right": true,
"gradient_up_down": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"jellybean_raindrops": true,
"multisplash": true,
"pixel_flow": true,
"pixel_fractal": true,
"pixel_rain": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_nexus": true,
"solid_reactive_simple": true,
"solid_reactive_wide": true,
"solid_splash": true,
"splash": true,
"typing_heatmap": true
},
"layout": [
{ "flags": 2, "x": 220, "y": 17 },
{ "flags": 2, "x": 172, "y": 17 },
{ "flags": 2, "x": 112, "y": 17 },
{ "flags": 2, "x": 50, "y": 17 },
{ "flags": 2, "x": 4, "y": 17 },
{ "flags": 2, "x": 4, "y": 56 },
{ "flags": 2, "x": 50, "y": 56 },
{ "flags": 2, "x": 112, "y": 56 },
{ "flags": 2, "x": 172, "y": 56 },
{ "flags": 2, "x": 220, "y": 56 },
{ "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 },
{ "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 },
{ "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 },
{ "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 },
{ "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 },
{ "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 },
{ "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 },
{ "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 },
{ "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 },
{ "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 },
{ "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 },
{ "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 },
{ "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 },
{ "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 },
{ "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 },
{ "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 },
{ "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 },
{ "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 },
{ "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 },
{ "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 },
{ "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 },
{ "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 },
{ "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 },
{ "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 },
{ "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 },
{ "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 },
{ "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 },
{ "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 },
{ "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 },
{ "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 },
{ "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 },
{ "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 },
{ "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 },
{ "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 },
{ "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 },
{ "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 },
{ "flags": 1, "matrix": [3, 1], "x": 20, "y": 64 },
{ "flags": 1, "matrix": [3, 2], "x": 40, "y": 64 },
{ "flags": 1, "matrix": [3, 3], "x": 61, "y": 64 },
{ "flags": 1, "matrix": [3, 4], "x": 81, "y": 64 },
{ "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 },
{ "flags": 1, "matrix": [3, 6], "x": 122, "y": 64 },
{ "flags": 1, "matrix": [3, 7], "x": 142, "y": 64 },
{ "flags": 1, "matrix": [3, 8], "x": 162, "y": 64 },
{ "flags": 1, "matrix": [3, 9], "x": 183, "y": 64 },
{ "flags": 1, "matrix": [3, 10], "x": 203, "y": 64 },
{ "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 }
]
},
"community_layouts": ["ortho_4x12"],
"layouts": {
"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 },
{ "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

@@ -0,0 +1,33 @@
// Copyright 2022 @boardsource
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
_MAIN,
_RAISE,
_LOWER
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT_ortho_4x12(
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,
KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
[_RAISE] = LAYOUT_ortho_4x12(
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, _______,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LOWER] = LAYOUT_ortho_4x12(
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
)
};

View File

@@ -0,0 +1,34 @@
// Copyright 2022 @boardsource
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
_MAIN,
_RAISE,
_LOWER
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT_ortho_4x12(
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,
KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
[_RAISE] = LAYOUT_ortho_4x12(
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, _______,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LOWER] = LAYOUT_ortho_4x12(
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),
};

View File

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

View File

@@ -0,0 +1,11 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef RP_PWM_USE_PWM6
#define RP_PWM_USE_PWM6 TRUE
#undef RP_SPI_USE_SPI1
#define RP_SPI_USE_SPI1 TRUE

View File

@@ -0,0 +1,3 @@
AUDIO_DRIVER = pwm_hardware
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS += st7735_spi

View File

@@ -0,0 +1,23 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
#define RGB_MATRIX_LED_COUNT 70
#define AUDIO_PIN GP29
#define AUDIO_PWM_DRIVER PWMD6
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B
#define AUDIO_INIT_DELAY
// SPI Configuration
#define SPI_DRIVER SPID1
#define SPI_SCK_PIN GP26
#define SPI_MOSI_PIN GP27
// Display Configuration
#define OLED_CS_PIN GP25
#define OLED_DC_PIN GP20
#define OLED_RST_PIN GP28

View File

@@ -0,0 +1,9 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_I2C TRUE
#define HAL_USE_PWM TRUE
#define HAL_USE_SPI TRUE
#include_next <halconf.h>

View File

@@ -0,0 +1,203 @@
{
"keyboard_name": "Equals 60",
"bootloader": "rp2040",
"processor": "RP2040",
"features": {
"audio":true
},
"matrix_pins": {
"cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11"],
"rows": ["GP12", "GP13", "GP16", "GP17", "GP18"]
},
"ws2812": {
"driver": "vendor",
"pin": "GP21"
},
"rgb_matrix": {
"driver": "ws2812",
"max_brightness": 150,
"animations": {
"alphas_mods": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_sat": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"band_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"gradient_left_right": true,
"gradient_up_down": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"jellybean_raindrops": true,
"multisplash": true,
"pixel_flow": true,
"pixel_fractal": true,
"pixel_rain": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_nexus": true,
"solid_reactive_simple": true,
"solid_reactive_wide": true,
"solid_splash": true,
"splash": true,
"typing_heatmap": true
},
"layout": [
{ "flags": 2, "x": 220, "y": 17 },
{ "flags": 2, "x": 172, "y": 17 },
{ "flags": 2, "x": 112, "y": 17 },
{ "flags": 2, "x": 50, "y": 17 },
{ "flags": 2, "x": 4, "y": 17 },
{ "flags": 2, "x": 4, "y": 56 },
{ "flags": 2, "x": 50, "y": 56 },
{ "flags": 2, "x": 112, "y": 56 },
{ "flags": 2, "x": 172, "y": 56 },
{ "flags": 2, "x": 220, "y": 56 },
{ "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 },
{ "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 },
{ "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 },
{ "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 },
{ "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 },
{ "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 },
{ "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 },
{ "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 },
{ "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 },
{ "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 },
{ "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 },
{ "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 },
{ "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 },
{ "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 },
{ "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 },
{ "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 },
{ "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 },
{ "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 },
{ "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 },
{ "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 },
{ "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 },
{ "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 },
{ "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 },
{ "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 },
{ "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 },
{ "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 },
{ "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 },
{ "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 },
{ "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 },
{ "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 },
{ "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 },
{ "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 },
{ "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 },
{ "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 },
{ "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 },
{ "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 },
{ "flags": 4, "matrix": [3, 1], "x": 20, "y": 64 },
{ "flags": 4, "matrix": [3, 2], "x": 40, "y": 64 },
{ "flags": 4, "matrix": [3, 3], "x": 61, "y": 64 },
{ "flags": 4, "matrix": [3, 4], "x": 81, "y": 64 },
{ "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 },
{ "flags": 4, "matrix": [3, 6], "x": 122, "y": 64 },
{ "flags": 4, "matrix": [3, 7], "x": 142, "y": 64 },
{ "flags": 4, "matrix": [3, 8], "x": 162, "y": 64 },
{ "flags": 4, "matrix": [3, 9], "x": 183, "y": 64 },
{ "flags": 4, "matrix": [3, 10], "x": 203, "y": 64 },
{ "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 },
{ "flags": 1, "matrix": [4, 0], "x": 0, "y": 86 },
{ "flags": 1, "matrix": [4, 1], "x": 20, "y": 86 },
{ "flags": 1, "matrix": [4, 2], "x": 40, "y": 86 },
{ "flags": 1, "matrix": [4, 3], "x": 61, "y": 86 },
{ "flags": 1, "matrix": [4, 4], "x": 81, "y": 86 },
{ "flags": 4, "matrix": [4, 5], "x": 111, "y": 86 },
{ "flags": 1, "matrix": [4, 7], "x": 142, "y": 86 },
{ "flags": 1, "matrix": [4, 8], "x": 162, "y": 86 },
{ "flags": 1, "matrix": [4, 9], "x": 183, "y": 86 },
{ "flags": 1, "matrix": [4, 10], "x": 203, "y": 86 },
{ "flags": 1, "matrix": [4, 11], "x": 224, "y": 86 }
]
},
"community_layouts": ["ortho_5x12"],
"layouts": {
"LAYOUT_ortho_5x12": {
"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 },
{ "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 },
{ "matrix": [4, 0], "x": 0, "y": 4 },
{ "matrix": [4, 1], "x": 1, "y": 4 },
{ "matrix": [4, 2], "x": 2, "y": 4 },
{ "matrix": [4, 3], "x": 3, "y": 4 },
{ "matrix": [4, 4], "x": 4, "y": 4 },
{ "matrix": [4, 5], "x": 5, "y": 4 },
{ "matrix": [4, 6], "x": 6, "y": 4 },
{ "matrix": [4, 7], "x": 7, "y": 4 },
{ "matrix": [4, 8], "x": 8, "y": 4 },
{ "matrix": [4, 9], "x": 9, "y": 4 },
{ "matrix": [4, 10], "x": 10, "y": 4 },
{ "matrix": [4, 11], "x": 11, "y": 4 }
]
}
}
}

View File

@@ -0,0 +1,36 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
_MAIN,
_RAISE,
_LOWER
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT_ortho_5x12(
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,
KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_RGHT, RGB_MOD, RGB_TOG
),
[_RAISE] = LAYOUT_ortho_5x12(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
_______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LOWER] = LAYOUT_ortho_5x12(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
};

View File

@@ -0,0 +1,36 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
_MAIN,
_RAISE,
_LOWER
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT_ortho_5x12(
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,
KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
[_RAISE] = LAYOUT_ortho_5x12(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
_______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LOWER] = LAYOUT_ortho_5x12(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
};

View File

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

View File

@@ -0,0 +1,11 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef RP_PWM_USE_PWM6
#define RP_PWM_USE_PWM6 TRUE
#undef RP_SPI_USE_SPI1
#define RP_SPI_USE_SPI1 TRUE

View File

@@ -0,0 +1,3 @@
AUDIO_DRIVER = pwm_hardware
QUANTUM_PAINTER_ENABLE = yes
QUANTUM_PAINTER_DRIVERS += st7735_spi

View File

@@ -0,0 +1,4 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RGB_MATRIX_LED_COUNT 70

View File

@@ -0,0 +1,202 @@
{
"keyboard_name": "Equals kit",
"build": {
"lto": true
},
"development_board": "promicro",
"matrix_pins": {
"cols": ["F4","F5","F6","F7","B1","B3","B2","B6","B5","B4","E6","D7"],
"rows": ["D3","D2","D1","D0","D4"]
},
"ws2812": {
"pin": "C6"
},
"rgb_matrix": {
"driver": "ws2812",
"max_brightness": 150,
"animations": {
"alphas_mods": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_sat": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"band_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"gradient_left_right": true,
"gradient_up_down": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"jellybean_raindrops": true,
"multisplash": true,
"pixel_flow": true,
"pixel_fractal": true,
"pixel_rain": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_nexus": true,
"solid_reactive_simple": true,
"solid_reactive_wide": true,
"solid_splash": true,
"splash": true,
"typing_heatmap": true
},
"layout": [
{ "flags": 2, "x": 220, "y": 17 },
{ "flags": 2, "x": 172, "y": 17 },
{ "flags": 2, "x": 112, "y": 17 },
{ "flags": 2, "x": 50, "y": 17 },
{ "flags": 2, "x": 4, "y": 17 },
{ "flags": 2, "x": 4, "y": 56 },
{ "flags": 2, "x": 50, "y": 56 },
{ "flags": 2, "x": 112, "y": 56 },
{ "flags": 2, "x": 172, "y": 56 },
{ "flags": 2, "x": 220, "y": 56 },
{ "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [0, 1], "x": 20, "y": 0 },
{ "flags": 4, "matrix": [0, 2], "x": 40, "y": 0 },
{ "flags": 4, "matrix": [0, 3], "x": 61, "y": 0 },
{ "flags": 4, "matrix": [0, 4], "x": 81, "y": 0 },
{ "flags": 4, "matrix": [0, 5], "x": 101, "y": 0 },
{ "flags": 4, "matrix": [0, 6], "x": 122, "y": 0 },
{ "flags": 4, "matrix": [0, 7], "x": 142, "y": 0 },
{ "flags": 4, "matrix": [0, 8], "x": 162, "y": 0 },
{ "flags": 4, "matrix": [0, 9], "x": 183, "y": 0 },
{ "flags": 4, "matrix": [0, 10], "x": 203, "y": 0 },
{ "flags": 1, "matrix": [0, 11], "x": 224, "y": 0 },
{ "flags": 1, "matrix": [1, 0], "x": 0, "y": 21 },
{ "flags": 4, "matrix": [1, 1], "x": 20, "y": 21 },
{ "flags": 4, "matrix": [1, 2], "x": 40, "y": 21 },
{ "flags": 4, "matrix": [1, 3], "x": 61, "y": 21 },
{ "flags": 4, "matrix": [1, 4], "x": 81, "y": 21 },
{ "flags": 4, "matrix": [1, 5], "x": 101, "y": 21 },
{ "flags": 4, "matrix": [1, 6], "x": 122, "y": 21 },
{ "flags": 4, "matrix": [1, 7], "x": 142, "y": 21 },
{ "flags": 4, "matrix": [1, 8], "x": 162, "y": 21 },
{ "flags": 4, "matrix": [1, 9], "x": 183, "y": 21 },
{ "flags": 4, "matrix": [1, 10], "x": 203, "y": 21 },
{ "flags": 1, "matrix": [1, 11], "x": 224, "y": 21 },
{ "flags": 1, "matrix": [2, 0], "x": 0, "y": 42 },
{ "flags": 4, "matrix": [2, 1], "x": 20, "y": 42 },
{ "flags": 4, "matrix": [2, 2], "x": 40, "y": 42 },
{ "flags": 4, "matrix": [2, 3], "x": 61, "y": 42 },
{ "flags": 4, "matrix": [2, 4], "x": 81, "y": 42 },
{ "flags": 4, "matrix": [2, 5], "x": 101, "y": 42 },
{ "flags": 4, "matrix": [2, 6], "x": 122, "y": 42 },
{ "flags": 4, "matrix": [2, 7], "x": 142, "y": 42 },
{ "flags": 4, "matrix": [2, 8], "x": 162, "y": 42 },
{ "flags": 4, "matrix": [2, 9], "x": 183, "y": 42 },
{ "flags": 4, "matrix": [2, 10], "x": 203, "y": 42 },
{ "flags": 1, "matrix": [2, 11], "x": 224, "y": 42 },
{ "flags": 1, "matrix": [3, 0], "x": 0, "y": 64 },
{ "flags": 4, "matrix": [3, 1], "x": 20, "y": 64 },
{ "flags": 4, "matrix": [3, 2], "x": 40, "y": 64 },
{ "flags": 4, "matrix": [3, 3], "x": 61, "y": 64 },
{ "flags": 4, "matrix": [3, 4], "x": 81, "y": 64 },
{ "flags": 4, "matrix": [3, 5], "x": 101, "y": 64 },
{ "flags": 4, "matrix": [3, 6], "x": 122, "y": 64 },
{ "flags": 4, "matrix": [3, 7], "x": 142, "y": 64 },
{ "flags": 4, "matrix": [3, 8], "x": 162, "y": 64 },
{ "flags": 4, "matrix": [3, 9], "x": 183, "y": 64 },
{ "flags": 4, "matrix": [3, 10], "x": 203, "y": 64 },
{ "flags": 1, "matrix": [3, 11], "x": 224, "y": 64 },
{ "flags": 1, "matrix": [4, 0], "x": 0, "y": 86 },
{ "flags": 1, "matrix": [4, 1], "x": 20, "y": 86 },
{ "flags": 1, "matrix": [4, 2], "x": 40, "y": 86 },
{ "flags": 1, "matrix": [4, 3], "x": 61, "y": 86 },
{ "flags": 1, "matrix": [4, 4], "x": 81, "y": 86 },
{ "flags": 4, "matrix": [4, 5], "x": 111, "y": 86 },
{ "flags": 1, "matrix": [4, 7], "x": 142, "y": 86 },
{ "flags": 1, "matrix": [4, 8], "x": 162, "y": 86 },
{ "flags": 1, "matrix": [4, 9], "x": 183, "y": 86 },
{ "flags": 1, "matrix": [4, 10], "x": 203, "y": 86 },
{ "flags": 1, "matrix": [4, 11], "x": 224, "y": 86 }
]
},
"community_layouts": ["ortho_5x12"],
"layouts": {
"LAYOUT_ortho_5x12": {
"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 },
{ "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 },
{ "matrix": [4, 0], "x": 0, "y": 4 },
{ "matrix": [4, 1], "x": 1, "y": 4 },
{ "matrix": [4, 2], "x": 2, "y": 4 },
{ "matrix": [4, 3], "x": 3, "y": 4 },
{ "matrix": [4, 4], "x": 4, "y": 4 },
{ "matrix": [4, 5], "x": 5, "y": 4 },
{ "matrix": [4, 6], "x": 6, "y": 4 },
{ "matrix": [4, 7], "x": 7, "y": 4 },
{ "matrix": [4, 8], "x": 8, "y": 4 },
{ "matrix": [4, 9], "x": 9, "y": 4 },
{ "matrix": [4, 10], "x": 10, "y": 4 },
{ "matrix": [4, 11], "x": 11, "y": 4 }
]
}
}
}

View File

@@ -0,0 +1,36 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
_MAIN,
_RAISE,
_LOWER
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT_ortho_5x12(
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,
KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, CK_TOGG, RGB_MOD, RGB_TOG
),
[_RAISE] = LAYOUT_ortho_5x12(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
_______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LOWER] = LAYOUT_ortho_5x12(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
};

View File

@@ -0,0 +1,36 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layers {
_MAIN,
_RAISE,
_LOWER
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT_ortho_5x12(
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,
KC_PIPE, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
[_RAISE] = LAYOUT_ortho_5x12(
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
_______, KC_4, KC_5, KC_6, KC_PLUS, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
KC_ENT, KC_7, KC_8, KC_9, KC_MINS, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_MUTE, _______, KC_BSLS,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
),
[_LOWER] = LAYOUT_ortho_5x12(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
_______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, _______, KC_UP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
)
};

View File

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

View File

@@ -0,0 +1,18 @@
// Copyright 2023 @boardsource
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
__attribute__((weak)) void ui_init(void) {};
__attribute__((weak)) void ui_task(void) {};
#ifdef QUANTUM_PAINTER_ENABLE
void keyboard_post_init_kb(void) {
// Init the display
ui_init();
keyboard_post_init_user();
}
void housekeeping_task_kb(void) {
// Draw the display
ui_task();
}
#endif //QUANTUM_PAINTER_ENABLE

View File

@@ -0,0 +1,69 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#include <qp.h>
// clang-format off
const uint8_t font_thintel15[966] = {
0x00, 0xFF, 0x14, 0x00, 0x00, 0x51, 0x46, 0x46, 0x01, 0xC6, 0x03, 0x00, 0x00, 0x39, 0xFC, 0xFF,
0xFF, 0x0B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x01, 0xFE, 0x1D, 0x01, 0x00, 0x02, 0x00,
0x00, 0xC2, 0x00, 0x00, 0x84, 0x01, 0x00, 0x06, 0x03, 0x00, 0x46, 0x05, 0x00, 0x88, 0x07, 0x00,
0x46, 0x0A, 0x00, 0x82, 0x0C, 0x00, 0x43, 0x0D, 0x00, 0x83, 0x0E, 0x00, 0xC4, 0x0F, 0x00, 0x46,
0x11, 0x00, 0x83, 0x13, 0x00, 0xC5, 0x14, 0x00, 0x82, 0x16, 0x00, 0x44, 0x17, 0x00, 0xC5, 0x18,
0x00, 0x84, 0x1A, 0x00, 0x05, 0x1C, 0x00, 0xC5, 0x1D, 0x00, 0x85, 0x1F, 0x00, 0x45, 0x21, 0x00,
0x05, 0x23, 0x00, 0xC5, 0x24, 0x00, 0x85, 0x26, 0x00, 0x45, 0x28, 0x00, 0x02, 0x2A, 0x00, 0xC3,
0x2A, 0x00, 0x05, 0x2C, 0x00, 0xC5, 0x2D, 0x00, 0x85, 0x2F, 0x00, 0x45, 0x31, 0x00, 0x08, 0x33,
0x00, 0xC5, 0x35, 0x00, 0x85, 0x37, 0x00, 0x45, 0x39, 0x00, 0x05, 0x3B, 0x00, 0xC4, 0x3C, 0x00,
0x44, 0x3E, 0x00, 0xC5, 0x3F, 0x00, 0x85, 0x41, 0x00, 0x44, 0x43, 0x00, 0xC5, 0x44, 0x00, 0x85,
0x46, 0x00, 0x44, 0x48, 0x00, 0xC6, 0x49, 0x00, 0x06, 0x4C, 0x00, 0x45, 0x4E, 0x00, 0x05, 0x50,
0x00, 0xC5, 0x51, 0x00, 0x85, 0x53, 0x00, 0x45, 0x55, 0x00, 0x06, 0x57, 0x00, 0x45, 0x59, 0x00,
0x06, 0x5B, 0x00, 0x46, 0x5D, 0x00, 0x86, 0x5F, 0x00, 0xC6, 0x61, 0x00, 0x06, 0x64, 0x00, 0x44,
0x66, 0x00, 0xC4, 0x67, 0x00, 0x44, 0x69, 0x00, 0xC6, 0x6A, 0x00, 0x05, 0x6D, 0x00, 0xC3, 0x6E,
0x00, 0x05, 0x70, 0x00, 0xC5, 0x71, 0x00, 0x84, 0x73, 0x00, 0x05, 0x75, 0x00, 0xC5, 0x76, 0x00,
0x84, 0x78, 0x00, 0x05, 0x7A, 0x00, 0xC5, 0x7B, 0x00, 0x82, 0x7D, 0x00, 0x43, 0x7E, 0x00, 0x85,
0x7F, 0x00, 0x42, 0x81, 0x00, 0x06, 0x82, 0x00, 0x45, 0x84, 0x00, 0x05, 0x86, 0x00, 0xC5, 0x87,
0x00, 0x85, 0x89, 0x00, 0x44, 0x8B, 0x00, 0xC5, 0x8C, 0x00, 0x83, 0x8E, 0x00, 0xC5, 0x8F, 0x00,
0x86, 0x91, 0x00, 0xC6, 0x93, 0x00, 0x06, 0x96, 0x00, 0x45, 0x98, 0x00, 0x04, 0x9A, 0x00, 0x85,
0x9B, 0x00, 0x42, 0x9D, 0x00, 0x05, 0x9E, 0x00, 0xC5, 0x9F, 0x00, 0x04, 0xFB, 0x86, 0x02, 0x00,
0x00, 0x00, 0x00, 0x54, 0x45, 0x00, 0x50, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0xFD, 0xD2,
0xAF, 0x28, 0x00, 0x00, 0x00, 0x84, 0x53, 0x15, 0x0E, 0x55, 0x39, 0x04, 0x00, 0x00, 0x00, 0x00,
0x12, 0x15, 0x0A, 0x28, 0x54, 0x24, 0x00, 0x00, 0x00, 0x80, 0x50, 0x14, 0x52, 0x95, 0x58, 0x00,
0x00, 0x00, 0x14, 0x00, 0x00, 0x4A, 0x92, 0x24, 0x02, 0x00, 0x91, 0x24, 0x49, 0x01, 0x00, 0x20,
0x27, 0x05, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x1F, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x60, 0x0A, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x24, 0x22,
0x11, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x32, 0x00, 0x00, 0x20, 0x23, 0x22, 0x72, 0x00, 0x00,
0xC0, 0x24, 0x44, 0x44, 0x78, 0x00, 0x00, 0xC0, 0x24, 0x44, 0x50, 0x32, 0x00, 0x00, 0x80, 0x29,
0x95, 0x1E, 0x42, 0x00, 0x00, 0xE0, 0x85, 0x83, 0x50, 0x32, 0x00, 0x00, 0xC0, 0xA4, 0x70, 0x52,
0x32, 0x00, 0x00, 0xE0, 0x21, 0x42, 0x84, 0x10, 0x00, 0x00, 0xC0, 0xA4, 0x64, 0x52, 0x32, 0x00,
0x00, 0xC0, 0xA4, 0xE4, 0x50, 0x32, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x30, 0x60, 0x0A, 0x00,
0x00, 0x11, 0x11, 0x04, 0x41, 0x00, 0x00, 0x00, 0x80, 0x07, 0x1E, 0x00, 0x00, 0x00, 0x20, 0x08,
0x82, 0x88, 0x08, 0x00, 0x00, 0xC0, 0x24, 0x64, 0x04, 0x10, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x59,
0x55, 0x2D, 0x02, 0x1C, 0x00, 0x00, 0x00, 0xC0, 0xA4, 0xF4, 0x52, 0x4A, 0x00, 0x00, 0xE0, 0xA4,
0x74, 0x52, 0x3A, 0x00, 0x00, 0xC0, 0xA4, 0x10, 0x42, 0x32, 0x00, 0x00, 0xE0, 0xA4, 0x94, 0x52,
0x3A, 0x00, 0x00, 0x70, 0x11, 0x17, 0x71, 0x00, 0x00, 0x70, 0x11, 0x17, 0x11, 0x00, 0x00, 0xC0,
0xA4, 0xD0, 0x52, 0x32, 0x00, 0x00, 0x20, 0xA5, 0xF4, 0x52, 0x4A, 0x00, 0x00, 0x70, 0x22, 0x22,
0x72, 0x00, 0x00, 0xC0, 0x21, 0x84, 0x50, 0x32, 0x00, 0x00, 0x20, 0xA5, 0x32, 0x4A, 0x4A, 0x00,
0x00, 0x10, 0x11, 0x11, 0x71, 0x00, 0x00, 0x40, 0xB4, 0x55, 0x51, 0x14, 0x45, 0x00, 0x00, 0x00,
0x40, 0x34, 0x55, 0x59, 0x14, 0x45, 0x00, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x32, 0x00, 0x00,
0xE0, 0xA4, 0x74, 0x42, 0x08, 0x00, 0x00, 0xC0, 0xA4, 0x94, 0x52, 0x51, 0x00, 0x00, 0xE0, 0xA4,
0x74, 0x52, 0x4A, 0x00, 0x00, 0xC0, 0xA4, 0x60, 0x50, 0x32, 0x00, 0x00, 0xC0, 0x47, 0x10, 0x04,
0x41, 0x10, 0x00, 0x00, 0x00, 0x20, 0xA5, 0x94, 0x52, 0x32, 0x00, 0x00, 0x40, 0x14, 0x45, 0x51,
0xA4, 0x10, 0x00, 0x00, 0x00, 0x40, 0x14, 0x45, 0x51, 0xB5, 0x45, 0x00, 0x00, 0x00, 0x40, 0x14,
0x29, 0x84, 0x12, 0x45, 0x00, 0x00, 0x00, 0x40, 0x14, 0x45, 0x0E, 0x41, 0x10, 0x00, 0x00, 0x00,
0xC0, 0x07, 0x21, 0x84, 0x10, 0x7C, 0x00, 0x00, 0x00, 0x17, 0x11, 0x11, 0x11, 0x07, 0x00, 0x10,
0x21, 0x22, 0x44, 0x00, 0x00, 0x47, 0x44, 0x44, 0x44, 0x07, 0x00, 0x84, 0x12, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x93, 0x5C, 0x72, 0x00, 0x00, 0x20, 0x84, 0x93, 0x52, 0x3A, 0x00, 0x00, 0x00, 0x60,
0x11, 0x61, 0x00, 0x00, 0x00, 0x21, 0x97, 0x52, 0x72, 0x00, 0x00, 0x00, 0x00, 0x93, 0x5E, 0x70,
0x00, 0x00, 0x60, 0x11, 0x13, 0x11, 0x00, 0x00, 0x00, 0x00, 0x97, 0x52, 0x72, 0x28, 0x19, 0x20,
0x84, 0x93, 0x52, 0x4A, 0x00, 0x00, 0x10, 0x55, 0x00, 0x80, 0x20, 0x49, 0x0A, 0x00, 0x20, 0x84,
0x94, 0x4E, 0x4A, 0x00, 0x00, 0x54, 0x55, 0x00, 0x00, 0x00, 0x2C, 0x55, 0x55, 0x55, 0x00, 0x00,
0x00, 0x00, 0x80, 0x93, 0x52, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x93, 0x52, 0x32, 0x00, 0x00, 0x00,
0x80, 0x93, 0x52, 0x3A, 0x21, 0x00, 0x00, 0x00, 0x97, 0x52, 0x72, 0x08, 0x01, 0x00, 0x50, 0x13,
0x11, 0x00, 0x00, 0x00, 0x00, 0x17, 0x0C, 0x3A, 0x00, 0x00, 0x48, 0x96, 0x44, 0x00, 0x00, 0x00,
0x80, 0x94, 0x52, 0x72, 0x00, 0x00, 0x00, 0x00, 0x44, 0x51, 0xA4, 0x10, 0x00, 0x00, 0x00, 0x00,
0x00, 0x44, 0x51, 0x54, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x0A, 0xA1, 0x44, 0x00, 0x00,
0x00, 0x00, 0x80, 0x94, 0x52, 0x72, 0x28, 0x19, 0x00, 0x70, 0x24, 0x71, 0x00, 0x00, 0x4C, 0x08,
0x11, 0x84, 0x10, 0x0C, 0x00, 0x55, 0x55, 0x01, 0x83, 0x10, 0x82, 0x08, 0x21, 0x03, 0x00, 0x00,
0x00, 0xB0, 0x1A, 0x00, 0x00, 0x00,
};
// clang-format on

View File

@@ -0,0 +1,21 @@
{
"manufacturer": "Boardsource",
"maintainer": "Boardsource",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x7688",
"vid": "0x4273"
}
}

View File

@@ -0,0 +1,33 @@
# equals
![equals](https://i.imgur.com/c3adFqsh.jpeg)
* Keyboard Maintainer: [Cole Smith](https://github.com/boardsource)
* Hardware Supported: Equals PCB w/ RP2040
* Hardware Availability: [boardsource](https://boardsource.xyz)
Make example for this keyboard (after setting up your build environment):
make boardsource/equals/48:default
make boardsource/equals/60:default
make boardsource/equals/avr:default
Flashing example for this keyboard:
make boardsource/equals/48:default:flash
make boardsource/equals/60:default:flash
make boardsource/equals/avr:default:flash
Compile `avr` firmware if your PCB uses a drop-in microcontroller like Pro Micro.
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -0,0 +1,40 @@
// Copyright 2023 Cole Smith (@boardsource)
// SPDX-License-Identifier: GPL-2.0-or-later
#include <stdio.h>
#include "qp.h"
#include "qp_st7735.h"
#include "graphics/thintel15.qff.c"
static painter_device_t oled;
static painter_font_handle_t font;
__attribute__((weak)) void ui_init(void) {
oled = qp_st7735_make_spi_device(128, 160, OLED_CS_PIN, OLED_DC_PIN, OLED_RST_PIN, 8, 0);
font = qp_load_font_mem(font_thintel15);
qp_init(oled, QP_ROTATION_0);
qp_rect(oled, 0, 0, 130, 162, 0, 0, 0, true);
qp_rect(oled, 20, 20, 108, 60, 55, 55, 55, true);
qp_rect(oled, 20, 80, 108, 120, 55, 55, 55, true);
qp_flush(oled);
}
__attribute__((weak)) void ui_task(void) {
static const char *text = "Layer:";
int16_t width = qp_textwidth(font, text);
qp_drawtext(oled, 20, 140, font, text);
switch (get_highest_layer(layer_state)) {
case 0:
qp_drawtext(oled, (20 + width), 140, font, "QWERTY");
break;
case 1:
qp_drawtext(oled, (20 + width), 140, font, "SYMBOL");
break;
case 2:
qp_drawtext(oled, (20 + width), 140, font, "NUMBER");
break;
default:
qp_drawtext(oled, (20 + width), 140, font, "_PANIC_");
break;
}
}

View File

@@ -20,13 +20,13 @@ bool oled_task_kb(void) {
oled_write_raw(layer_zero, sizeof(layer_zero));
break;
case 1:
oled_write_raw(layer_zero, sizeof(layer_zero));
oled_write_raw(layer_one, sizeof(layer_one));
break;
case 2:
oled_write_raw(layer_zero, sizeof(layer_zero));
oled_write_raw(layer_two, sizeof(layer_two));
break;
case 3:
oled_write_raw(layer_zero, sizeof(layer_zero));
oled_write_raw(layer_three, sizeof(layer_three));
break;
}
} else {

View File

@@ -18,8 +18,8 @@
"url": "https://cannonkeys.com",
"usb": {
"device_version": "0.0.1",
"pid": "0xCA04",
"vid": "0x0028"
"pid": "0x0028",
"vid": "0xCA04"
},
"community_layouts": ["ortho_1x1"],
"layouts": {
@@ -29,4 +29,4 @@
]
}
}
}
}

View File

@@ -1,2 +1 @@
# Processor frequency
F_CPU = 16000000
# This file intentionally left blank

View File

@@ -0,0 +1,3 @@
{
"bootloader": "caterina"
}

View File

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

View File

@@ -11,6 +11,10 @@ Make example for this keyboard (after setting up your build environment):
make converter/usb_usb:default
If you use Arduino Leonardo with a USB Host Shield:
make converter/usb_usb/leonardo:default
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
Note that you have to choose the right hardware variant as your subproject, otherwise you will probably have issues.
@@ -23,8 +27,6 @@ If you are sure you have this correct, try changeing the default in `usb_usb/rul
The Pro Micro variant uses a 3.3V Pro Micro and thus runs at 8MHz, hence the following line in `usb_usb/pro_micro/rules.mk`:
`F_CPU = 8000000`
The converter sold by Hasu runs at 16MHz and so the corresponding line in `usb_usb/hasu/rules.mk` is:
`F_CPU = 16000000`
Getting the Hardware
--------------------

View File

@@ -71,6 +71,10 @@ uint8_t last_col;
static const char PROGMEM code_to_name[60] = {' ', ' ', ' ', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'R', 'E', 'B', 'T', '_', '-', '=', '[', ']', '\\', '#', ';', '\'', '`', ',', '.', '/', ' ', ' ', ' '};
static void set_keylog(uint16_t keycode, keyrecord_t *record) {
// save the row and column (useful even if we can't find a keycode to show)
last_row = record->event.key.row;
last_col = record->event.key.col;
key_name = ' ';
last_keycode = keycode;
if (IS_QK_MOD_TAP(keycode)) {
@@ -92,8 +96,6 @@ static void set_keylog(uint16_t keycode, keyrecord_t *record) {
// update keylog
key_name = pgm_read_byte(&code_to_name[keycode]);
last_row = record->event.key.row;
last_col = record->event.key.col;
}
static const char *depad_str(const char *depad_str, char depad_char) {
@@ -103,11 +105,9 @@ static const char *depad_str(const char *depad_str, char depad_char) {
}
static void oled_render_keylog(void) {
const char *last_row_str = get_u8_str(last_row, ' ');
oled_write(depad_str(last_row_str, ' '), false);
oled_write_char('0' + last_row, false);
oled_write_P(PSTR("x"), false);
const char *last_col_str = get_u8_str(last_col, ' ');
oled_write(depad_str(last_col_str, ' '), false);
oled_write_char('0' + last_col, false);
oled_write_P(PSTR(", k"), false);
const char *last_keycode_str = get_u16_str(last_keycode, ' ');
oled_write(depad_str(last_keycode_str, ' '), false);

View File

@@ -0,0 +1,44 @@
/* Copyright 2022 GSKY <gskyGit@gsky.com.tw>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
/* SPI Config for LED Driver */
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN A5
#define SPI_MOSI_PIN A7
#define SPI_MISO_PIN A6
#define DRIVER_1_CS A15
#define DRIVER_2_CS B15
#define DRIVER_1_EN C13
#define DRIVER_2_EN C13
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 66
#define DRIVER_2_LED_TOTAL 19
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)

View File

@@ -0,0 +1,23 @@
/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#include_next <halconf.h>

View File

@@ -0,0 +1,270 @@
{
"manufacturer": "Gsky",
"keyboard_name": "KD83A_BFG_Edition",
"maintainer": "Gsky",
"bootloader": "wb32-dfu",
"bootmagic": {
"matrix": [1, 3]
},
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "C2", "pin_b": "C3"}
]
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"indicators": {
"caps_lock": "C14"
},
"matrix_pins": {
"cols": ["A0", "A1", "A2", "A3", "A4", "A8", "A9", "A10"],
"rows": ["B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", "B10", "B12"]
},
"processor": "WB32FQ95",
"qmk": {
"tap_keycode_delay": 10
},
"rgb_matrix": {
"animations": {
"alphas_mods": true,
"gradient_up_down": true,
"gradient_left_right": true,
"breathing": true,
"band_sat": true,
"band_val": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_up_down": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"rainbow_moving_chevron": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"dual_beacon": true,
"rainbow_beacon": true,
"rainbow_pinwheels": true,
"raindrops": true,
"jellybean_raindrops": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"pixel_fractal": true,
"pixel_flow": true,
"pixel_rain": true,
"typing_heatmap": true,
"digital_rain": true,
"solid_reactive_simple": true,
"solid_reactive": true,
"solid_reactive_wide": true,
"solid_reactive_multiwide": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_nexus": true,
"solid_reactive_multinexus": true,
"splash": true,
"multisplash": true,
"solid_splash": true,
"solid_multisplash": true
},
"center_point": [76, 25],
"driver": "aw20216",
"layout": [
{ "flags": 4, "matrix": [1, 3], "x": 0, "y": 0 },
{ "flags": 4, "matrix": [2, 6], "x": 20, "y": 0 },
{ "flags": 4, "matrix": [3, 6], "x": 30, "y": 0 },
{ "flags": 4, "matrix": [3, 1], "x": 40, "y": 0 },
{ "flags": 4, "matrix": [3, 3], "x": 50, "y": 0 },
{ "flags": 4, "matrix": [0, 7], "x": 60, "y": 0 },
{ "flags": 4, "matrix": [6, 3], "x": 70, "y": 0 },
{ "flags": 4, "matrix": [7, 1], "x": 80, "y": 0 },
{ "flags": 4, "matrix": [7, 6], "x": 90, "y": 0 },
{ "flags": 4, "matrix": [10, 6], "x": 100, "y": 0 },
{ "flags": 4, "matrix": [10, 7], "x": 110, "y": 0 },
{ "flags": 4, "matrix": [10, 3], "x": 120, "y": 0 },
{ "flags": 4, "matrix": [10, 5], "x": 130, "y": 0 },
{ "flags": 4, "matrix": [9, 7], "x": 140, "y": 0 },
{ "flags": 4, "matrix": [0, 2], "x": 150, "y": 0 },
{ "flags": 4, "matrix": [1, 6], "x": 0, "y": 10 },
{ "flags": 4, "matrix": [1, 7], "x": 10, "y": 10 },
{ "flags": 4, "matrix": [2, 7], "x": 20, "y": 10 },
{ "flags": 4, "matrix": [3, 7], "x": 30, "y": 10 },
{ "flags": 4, "matrix": [4, 7], "x": 40, "y": 10 },
{ "flags": 4, "matrix": [4, 6], "x": 50, "y": 10 },
{ "flags": 4, "matrix": [5, 6], "x": 60, "y": 10 },
{ "flags": 4, "matrix": [5, 7], "x": 70, "y": 10 },
{ "flags": 4, "matrix": [6, 7], "x": 80, "y": 10 },
{ "flags": 4, "matrix": [7, 7], "x": 90, "y": 10 },
{ "flags": 4, "matrix": [8, 7], "x": 100, "y": 10 },
{ "flags": 4, "matrix": [8, 6], "x": 110, "y": 10 },
{ "flags": 4, "matrix": [6, 6], "x": 120, "y": 10 },
{ "flags": 4, "matrix": [10, 1], "x": 130, "y": 10 },
{ "flags": 4, "matrix": [11, 6], "x": 150, "y": 10 },
{ "flags": 4, "matrix": [1, 1], "x": 0, "y": 20 },
{ "flags": 4, "matrix": [1, 0], "x": 15, "y": 20 },
{ "flags": 4, "matrix": [2, 0], "x": 25, "y": 20 },
{ "flags": 4, "matrix": [3, 0], "x": 35, "y": 20 },
{ "flags": 4, "matrix": [4, 0], "x": 45, "y": 20 },
{ "flags": 4, "matrix": [4, 1], "x": 55, "y": 20 },
{ "flags": 4, "matrix": [5, 1], "x": 65, "y": 20 },
{ "flags": 4, "matrix": [5, 0], "x": 75, "y": 20 },
{ "flags": 4, "matrix": [6, 0], "x": 85, "y": 20 },
{ "flags": 4, "matrix": [7, 0], "x": 95, "y": 20 },
{ "flags": 4, "matrix": [8, 0], "x": 105, "y": 20 },
{ "flags": 4, "matrix": [8, 1], "x": 115, "y": 20 },
{ "flags": 4, "matrix": [6, 1], "x": 125, "y": 20 },
{ "flags": 4, "matrix": [10, 2], "x": 135, "y": 20 },
{ "flags": 4, "matrix": [6, 5], "x": 150, "y": 20 },
{ "flags": 4, "matrix": [2, 1], "x": 0, "y": 30 },
{ "flags": 4, "matrix": [1, 2], "x": 17, "y": 30 },
{ "flags": 8, "matrix": [2, 2], "x": 27, "y": 30 },
{ "flags": 4, "matrix": [3, 2], "x": 37, "y": 30 },
{ "flags": 4, "matrix": [4, 2], "x": 47, "y": 30 },
{ "flags": 4, "matrix": [4, 3], "x": 57, "y": 30 },
{ "flags": 4, "matrix": [5, 3], "x": 67, "y": 30 },
{ "flags": 4, "matrix": [5, 2], "x": 77, "y": 30 },
{ "flags": 4, "matrix": [6, 2], "x": 87, "y": 30 },
{ "flags": 4, "matrix": [7, 2], "x": 97, "y": 30 },
{ "flags": 4, "matrix": [8, 2], "x": 107, "y": 30 },
{ "flags": 4, "matrix": [8, 3], "x": 117, "y": 30 },
{ "flags": 4, "matrix": [10, 4], "x": 127, "y": 30 },
{ "flags": 4, "matrix": [1, 5], "x": 150, "y": 30 },
{ "flags": 4, "matrix": [0, 0], "x": 0, "y": 40 },
{ "flags": 4, "matrix": [1, 4], "x": 22, "y": 40 },
{ "flags": 4, "matrix": [2, 4], "x": 32, "y": 40 },
{ "flags": 4, "matrix": [3, 4], "x": 42, "y": 40 },
{ "flags": 4, "matrix": [4, 4], "x": 52, "y": 40 },
{ "flags": 4, "matrix": [4, 5], "x": 62, "y": 40 },
{ "flags": 4, "matrix": [5, 5], "x": 72, "y": 40 },
{ "flags": 4, "matrix": [5, 4], "x": 82, "y": 40 },
{ "flags": 4, "matrix": [6, 4], "x": 92, "y": 40 },
{ "flags": 4, "matrix": [7, 4], "x": 102, "y": 40 },
{ "flags": 4, "matrix": [8, 5], "x": 112, "y": 40 },
{ "flags": 4, "matrix": [9, 1], "x": 122, "y": 40 },
{ "flags": 4, "matrix": [3, 5], "x": 140, "y": 40 },
{ "flags": 4, "matrix": [2, 5], "x": 150, "y": 40 },
{ "flags": 4, "matrix": [0, 6], "x": 0, "y": 50 },
{ "flags": 4, "matrix": [9, 0], "x": 12, "y": 50 },
{ "flags": 4, "matrix": [9, 3], "x": 25, "y": 50 },
{ "flags": 4, "matrix": [9, 4], "x": 37, "y": 50 },
{ "flags": 4, "matrix": [9, 5], "x": 100, "y": 50 },
{ "flags": 4, "matrix": [9, 2], "x": 110, "y": 50 },
{ "flags": 4, "matrix": [0, 4], "x": 120, "y": 50 },
{ "flags": 4, "matrix": [0, 3], "x": 130, "y": 50 },
{ "flags": 4, "matrix": [7, 3], "x": 140, "y": 50 },
{ "flags": 4, "matrix": [0, 5], "x": 150, "y": 50 },
{ "flags": 4, "matrix": [11, 0], "x": 0, "y": 1 },
{ "flags": 4, "matrix": [11, 1], "x": 0, "y": 2 }
]
},
"url": "",
"usb": {
"device_version": "0.0.3",
"pid": "0xE392",
"vid": "0x342D"
},
"eeprom": {
"driver": "wear_leveling"
},
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "ESC", "matrix": [1, 3], "x": 0, "y": 0 },
{ "label": "F1", "matrix": [2, 6], "x": 2, "y": 0 },
{ "label": "F2", "matrix": [3, 6], "x": 3, "y": 0 },
{ "label": "F3", "matrix": [3, 1], "x": 4, "y": 0 },
{ "label": "F4", "matrix": [3, 3], "x": 5, "y": 0 },
{ "label": "F5", "matrix": [0, 7], "x": 6, "y": 0 },
{ "label": "F6", "matrix": [6, 3], "x": 7, "y": 0 },
{ "label": "F7", "matrix": [7, 1], "x": 8, "y": 0 },
{ "label": "F8", "matrix": [7, 6], "x": 9, "y": 0 },
{ "label": "F9", "matrix": [10, 6], "x": 10, "y": 0 },
{ "label": "F10", "matrix": [10, 7], "x": 11, "y": 0 },
{ "label": "F11", "matrix": [10, 3], "x": 12, "y": 0 },
{ "label": "F12", "matrix": [10, 5], "x": 13, "y": 0 },
{ "label": "Printscreen", "matrix": [9, 7], "x": 14, "y": 0 },
{ "label": "Del", "matrix": [0, 2], "x": 15, "y": 0 },
{ "label": "`", "matrix": [1, 6], "x": 0, "y": 1 },
{ "label": "1", "matrix": [1, 7], "x": 1, "y": 1 },
{ "label": "2", "matrix": [2, 7], "x": 2, "y": 1 },
{ "label": "3", "matrix": [3, 7], "x": 3, "y": 1 },
{ "label": "4", "matrix": [4, 7], "x": 4, "y": 1 },
{ "label": "5", "matrix": [4, 6], "x": 5, "y": 1 },
{ "label": "6", "matrix": [5, 6], "x": 6, "y": 1 },
{ "label": "7", "matrix": [5, 7], "x": 7, "y": 1 },
{ "label": "8", "matrix": [6, 7], "x": 8, "y": 1 },
{ "label": "9", "matrix": [7, 7], "x": 9, "y": 1 },
{ "label": "0", "matrix": [8, 7], "x": 10, "y": 1 },
{ "label": "-", "matrix": [8, 6], "x": 11, "y": 1 },
{ "label": "=", "matrix": [6, 6], "x": 12, "y": 1 },
{ "label": "Backspace", "matrix": [10, 1], "w": 2, "x": 13, "y": 1 },
{ "label": "Home", "matrix": [11, 6], "x": 15, "y": 1 },
{ "label": "Tab", "matrix": [1, 1], "w": 1.5, "x": 0, "y": 2 },
{ "label": "Q", "matrix": [1, 0], "x": 1.5, "y": 2 },
{ "label": "W", "matrix": [2, 0], "x": 2.5, "y": 2 },
{ "label": "E", "matrix": [3, 0], "x": 3.5, "y": 2 },
{ "label": "R", "matrix": [4, 0], "x": 4.5, "y": 2 },
{ "label": "T", "matrix": [4, 1], "x": 5.5, "y": 2 },
{ "label": "Y", "matrix": [5, 1], "x": 6.5, "y": 2 },
{ "label": "U", "matrix": [5, 0], "x": 7.5, "y": 2 },
{ "label": "I", "matrix": [6, 0], "x": 8.5, "y": 2 },
{ "label": "O", "matrix": [7, 0], "x": 9.5, "y": 2 },
{ "label": "P", "matrix": [8, 0], "x": 10.5, "y": 2 },
{ "label": "[", "matrix": [8, 1], "x": 11.5, "y": 2 },
{ "label": "]", "matrix": [6, 1], "x": 12.5, "y": 2 },
{ "label": "\\", "matrix": [10, 2], "w": 1.5, "x": 13.5, "y": 2 },
{ "label": "End", "matrix": [6, 5], "x": 15, "y": 2 },
{ "label": "Caps Lock", "matrix": [2, 1], "w": 1.75, "x": 0, "y": 3 },
{ "label": "A", "matrix": [1, 2], "x": 1.75, "y": 3 },
{ "label": "S", "matrix": [2, 2], "x": 2.75, "y": 3 },
{ "label": "D", "matrix": [3, 2], "x": 3.75, "y": 3 },
{ "label": "F", "matrix": [4, 2], "x": 4.75, "y": 3 },
{ "label": "G", "matrix": [4, 3], "x": 5.75, "y": 3 },
{ "label": "H", "matrix": [5, 3], "x": 6.75, "y": 3 },
{ "label": "J", "matrix": [5, 2], "x": 7.75, "y": 3 },
{ "label": "K", "matrix": [6, 2], "x": 8.75, "y": 3 },
{ "label": "L", "matrix": [7, 2], "x": 9.75, "y": 3 },
{ "label": ";", "matrix": [8, 2], "x": 10.75, "y": 3 },
{ "label": "'", "matrix": [8, 3], "x": 11.75, "y": 3 },
{ "label": "Enter", "matrix": [10, 4], "w": 2.25, "x": 12.75, "y": 3 },
{ "label": "PgUp", "matrix": [1, 5], "x": 15, "y": 3 },
{ "label": "Shift", "matrix": [0, 0], "w": 2.25, "x": 0, "y": 4 },
{ "label": "Z", "matrix": [1, 4], "x": 2.25, "y": 4 },
{ "label": "X", "matrix": [2, 4], "x": 3.25, "y": 4 },
{ "label": "C", "matrix": [3, 4], "x": 4.25, "y": 4 },
{ "label": "V", "matrix": [4, 4], "x": 5.25, "y": 4 },
{ "label": "B", "matrix": [4, 5], "x": 6.25, "y": 4 },
{ "label": "N", "matrix": [5, 5], "x": 7.25, "y": 4 },
{ "label": "M", "matrix": [5, 4], "x": 8.25, "y": 4 },
{ "label": ",", "matrix": [6, 4], "x": 9.25, "y": 4 },
{ "label": ".", "matrix": [7, 4], "x": 10.25, "y": 4 },
{ "label": "/", "matrix": [8, 5], "x": 11.25, "y": 4 },
{ "label": "Shift", "matrix": [9, 1], "w": 1.75, "x": 12.25, "y": 4 },
{ "label": "Up", "matrix": [3, 5], "x": 14, "y": 4 },
{ "label": "PgDn", "matrix": [2, 5], "x": 15, "y": 4 },
{ "label": "Ctrl", "matrix": [0, 6], "w": 1.25, "x": 0, "y": 5 },
{ "label": "Win", "matrix": [9, 0], "w": 1.25, "x": 1.25, "y": 5 },
{ "label": "Alt", "matrix": [9, 3], "w": 1.25, "x": 2.5, "y": 5 },
{ "label": "Space", "matrix": [9, 4], "w": 6.25, "x": 3.75, "y": 5 },
{ "label": "Alt", "matrix": [9, 5], "x": 10, "y": 5 },
{ "label": "FN", "matrix": [9, 2], "x": 11, "y": 5 },
{ "label": "Ctrl", "matrix": [0, 4], "x": 12, "y": 5 },
{ "label": "Left", "matrix": [0, 3], "x": 13, "y": 5 },
{ "label": "Down", "matrix": [7, 3], "x": 14, "y": 5 },
{ "label": "Right", "matrix": [0, 5], "x": 15, "y": 5 }
]
}
}
}

View File

@@ -0,0 +1,188 @@
/* Copyright 2022 GSKY <gskyGit@gsky.com.tw>
*
* 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 "kd83a_bfg_edition.h"
#ifdef RGB_MATRIX_ENABLE
const aw_led g_aw_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
//{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 0, k00, Esc
{0, CS1_SW1, CS2_SW1, CS3_SW1}, // 1, k13, Esc
{0, CS1_SW2, CS2_SW2, CS3_SW2}, // 2, k26, F1
{0, CS1_SW3, CS2_SW3, CS3_SW3}, // 3, k36, F2
{0, CS1_SW4, CS2_SW4, CS3_SW4}, // 4, k31, F3
{0, CS1_SW5, CS2_SW5, CS3_SW5}, // 5, k33, F4
{0, CS1_SW6, CS2_SW6, CS3_SW6}, // 6, k07, F5
{0, CS1_SW7, CS2_SW7, CS3_SW7}, // 7, k63, F6
{0, CS1_SW8, CS2_SW8, CS3_SW8}, // 8, k71, F7
{0, CS1_SW9, CS2_SW9, CS3_SW9}, // 9, k76, F8
{0, CS1_SW10, CS2_SW10, CS3_SW10}, // 10, ka6, F9
{0, CS1_SW11, CS2_SW11, CS3_SW11}, // 11, ka7, F10
{0, CS1_SW12, CS2_SW12, CS3_SW12}, // 12, ka3, F11
{1, CS1_SW1, CS2_SW1, CS3_SW1}, // 13, ka5, F12
{1, CS4_SW2, CS5_SW2, CS6_SW2}, // 14, k97, Printscreen
{1, CS4_SW5, CS5_SW5, CS6_SW5}, // 15, k02, Del
{0, CS4_SW1, CS5_SW1, CS6_SW1}, // 16, k16, `
{0, CS4_SW2, CS5_SW2, CS6_SW2}, // 17, k17, 1
{0, CS4_SW3, CS5_SW3, CS6_SW3}, // 18, k27, 2
{0, CS4_SW4, CS5_SW4, CS6_SW4}, // 19, k37, 3
{0, CS4_SW5, CS5_SW5, CS6_SW5}, // 20, k47, 4
{0, CS4_SW6, CS5_SW6, CS6_SW6}, // 21, k46, 5
{0, CS4_SW7, CS5_SW7, CS6_SW7}, // 22, k56, 6
{0, CS4_SW8, CS5_SW8, CS6_SW8}, // 23, k57, 7
{0, CS4_SW9, CS5_SW9, CS6_SW9}, // 24, k67, 8
{0, CS4_SW10, CS5_SW10, CS6_SW10}, // 25, k77, 9
{0, CS4_SW11, CS5_SW11, CS6_SW11}, // 26, k87, 0
{0, CS4_SW12, CS5_SW12, CS6_SW12}, // 27, k86, -
{1, CS1_SW5, CS2_SW5, CS3_SW5}, // 28, k66, =
{1, CS1_SW7, CS2_SW7, CS3_SW7}, // 29, ka1, Backspace
{1, CS1_SW2, CS2_SW2, CS3_SW2}, // 30, kc6, Home
{0, CS7_SW1, CS8_SW1, CS9_SW1}, // 31, k11, Tab
{0, CS7_SW2, CS8_SW2, CS9_SW2}, // 32, k10, Q
{0, CS7_SW3, CS8_SW3, CS9_SW3}, // 33, k20, W
{0, CS7_SW4, CS8_SW4, CS9_SW4}, // 34, k30, E
{0, CS7_SW5, CS8_SW5, CS9_SW5}, // 35, k40, R
{0, CS7_SW6, CS8_SW6, CS9_SW6}, // 36, k41, T
{0, CS7_SW7, CS8_SW7, CS9_SW7}, // 37, k51, Y
{0, CS7_SW8, CS8_SW8, CS9_SW8}, // 38, k50, U
{0, CS7_SW9, CS8_SW9, CS9_SW9}, // 39, k60, I
{0, CS7_SW10, CS8_SW10, CS9_SW10}, // 40, k70, O
{0, CS7_SW11, CS8_SW11, CS9_SW11}, // 41, k80, P
{0, CS7_SW12, CS8_SW12, CS9_SW12}, // 42, k81, [
{1, CS1_SW8, CS2_SW8, CS3_SW8}, // 43, k61, ]
{1, CS1_SW9, CS2_SW9, CS3_SW9}, // 44, ka2, "\\"
{1, CS4_SW3, CS5_SW3, CS6_SW3}, // 45, k65, End
{0, CS10_SW1, CS11_SW1, CS12_SW1}, // 46, k21, Caps Lock
{0, CS10_SW2, CS11_SW2, CS12_SW2}, // 47, k12, A
{0, CS10_SW3, CS11_SW3, CS12_SW3}, // 48, k22, S
{0, CS10_SW4, CS11_SW4, CS12_SW4}, // 49, k32, D
{0, CS10_SW5, CS11_SW5, CS12_SW5}, // 50, k42, F
{0, CS10_SW6, CS11_SW6, CS12_SW6}, // 51, k43, G
{0, CS10_SW7, CS11_SW7, CS12_SW7}, // 52, k53, H
{0, CS10_SW8, CS11_SW8, CS12_SW8}, // 53, k52, J
{0, CS10_SW9, CS11_SW9, CS12_SW9}, // 54, k62, K
{0, CS10_SW10, CS11_SW10, CS12_SW10}, // 55, k72, L
{0, CS10_SW11, CS11_SW11, CS12_SW11}, // 56, k82, ;
{0, CS10_SW12, CS11_SW12, CS12_SW12}, // 57, k83, '
{1, CS1_SW11, CS2_SW11, CS3_SW11}, // 58, ka4, Enter
{1, CS4_SW4, CS5_SW4, CS6_SW4}, // 59, k15, PgUp
{0, CS13_SW1, CS14_SW1, CS15_SW1}, // 60, k00, Shift_L
{0, CS13_SW2, CS14_SW2, CS15_SW2}, // 61, k14, Z
{0, CS13_SW3, CS14_SW3, CS15_SW3}, // 62, k24, X
{0, CS13_SW4, CS14_SW4, CS15_SW4}, // 63, k34, C
{0, CS13_SW5, CS14_SW5, CS15_SW5}, // 64, k44, V
{0, CS13_SW6, CS14_SW6, CS15_SW6}, // 65, k45, B
{0, CS13_SW7, CS14_SW7, CS15_SW7}, // 66, k55, N
{0, CS13_SW8, CS14_SW8, CS15_SW8}, // 67, k54, M
{0, CS13_SW9, CS14_SW9, CS15_SW9}, // 68, k64, ,
{0, CS13_SW10, CS14_SW10, CS15_SW10}, // 69, k74, .
{0, CS13_SW11, CS14_SW11, CS15_SW11}, // 70, k85, /
{1, CS4_SW8, CS5_SW8, CS6_SW8}, // 71, k91, Shift_R
{1, CS4_SW9, CS5_SW9, CS6_SW9}, // 72, k35, Up
{1, CS4_SW7, CS5_SW7, CS6_SW7}, // 73, k25, PgDn
{0, CS16_SW1, CS17_SW1, CS18_SW1}, // 74, k06, Ctrl_L
{0, CS16_SW2, CS17_SW2, CS18_SW2}, // 75, k90, Win_L
{0, CS16_SW3, CS17_SW3, CS18_SW3}, // 76, k93, Alt_L
{0, CS16_SW6, CS17_SW6, CS18_SW6}, // 77, k94, Space
{0, CS16_SW9, CS17_SW9, CS18_SW9}, // 78, k95, Alt_R
{0, CS16_SW10, CS17_SW10, CS18_SW10}, // 79, k92, FN
{0, CS16_SW12, CS17_SW12, CS18_SW12}, // 80, k04, Ctrl_R
{1, CS4_SW10, CS5_SW10, CS6_SW10}, // 81, k03, Left
{1, CS4_SW11, CS5_SW11, CS6_SW11}, // 82, k73, Down
{1, CS10_SW5, CS11_SW5, CS12_SW5}, // 83, k05, Right
{1, CS10_SW10, CS11_SW10, CS12_SW10}, // 84, kb0, Z1
{1, CS10_SW11, CS11_SW11, CS12_SW11}, // 85, kb1, Z2
};
#endif
#ifdef EEPROM_ENABLE
#include "spi_master.h"
void spi_init(void) {
static bool is_initialised = false;
if (!is_initialised) {
is_initialised = true;
// Try releasing special pins for a short time
setPinInput(SPI_SCK_PIN);
setPinInput(SPI_MOSI_PIN);
setPinInput(SPI_MISO_PIN);
chThdSleepMilliseconds(10);
palSetPadMode(PAL_PORT(SPI_SCK_PIN), PAL_PAD(SPI_SCK_PIN), PAL_MODE_ALTERNATE(SPI_SCK_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST | PAL_WB32_CURRENT_LEVEL3);
palSetPadMode(PAL_PORT(SPI_MOSI_PIN), PAL_PAD(SPI_MOSI_PIN), PAL_MODE_ALTERNATE(SPI_MOSI_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
palSetPadMode(PAL_PORT(SPI_MISO_PIN), PAL_PAD(SPI_MISO_PIN), PAL_MODE_ALTERNATE(SPI_MISO_PAL_MODE) | PAL_OUTPUT_TYPE_PUSHPULL | PAL_OUTPUT_SPEED_HIGHEST);
}
}
#endif
void keyboard_pre_init_kb(void) {
setPinOutput(C0);
setPinOutput(C15);
keyboard_pre_init_user();
};
void housekeeping_task_kb(void) {
writePin(C15, keymap_config.no_gui);
};
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (!process_record_user(keycode, record)) {
return false;
}
switch (keycode) {
case KC_SIRI:
if (record->event.pressed) {
host_consumer_send(0xCF);
} else {
host_consumer_send(0);
}
return false; /* Skip all further processing of this key */
default:
return true; /* Process all other keycodes normally */
}
};
#if defined(ENCODER_ENABLE)
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) {
return false;
}
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
return false;
};
#endif

View File

@@ -0,0 +1,22 @@
/* Copyright 2022 GSKY <gskyGit@gsky.com.tw>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
enum keyboard_keycodes {
KC_SIRI = QK_KB_0
};

View File

@@ -0,0 +1,78 @@
/* Copyright 2022 GSKY <gskyGit@gsky.com.tw>
*
* 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
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
enum custom_layers {
Win,
Mac,
Winfn,
Macfn,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[Win] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[Mac] = LAYOUT(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_DEL,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[Winfn] = LAYOUT(
QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_MOD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,
KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS,
KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI),
[Macfn] = LAYOUT(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_MOD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,
KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
};
#endif
layer_state_t layer_state_set_user(layer_state_t state) {
writePin(C0, layer_state_cmp(state, 1));
return state;
};

View File

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

View File

@@ -0,0 +1,78 @@
/* Copyright 2022 GSKY <gskyGit@gsky.com.tw>
*
* 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
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
enum custom_layers {
Win,
Mac,
Winfn,
Macfn,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Keymap _BL: Base Layer (Default Layer)
*/
[Win] = LAYOUT(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_DEL,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(Winfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[Mac] = LAYOUT(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_SIRI, KC_F5, KC_F6, KC_MRWD, KC_MPLY, KC_MFFD, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_DEL,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(Macfn),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[Winfn] = LAYOUT(
QK_BOOT, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, RGB_MOD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,
KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS,
KC_TRNS, GUI_TOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI),
[Macfn] = LAYOUT(
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_TRNS, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, RGB_MOD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_HUI,
KC_TRNS, KC_TRNS, TO(Win), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, TO(Mac), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_VAI, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_SPD, RGB_VAD, RGB_SPI),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
};
#endif
layer_state_t layer_state_set_user(layer_state_t state) {
writePin(C0, layer_state_cmp(state, 1));
return state;
};

View File

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

View File

@@ -0,0 +1,25 @@
/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include_next <mcuconf.h>
#undef WB32_SPI_USE_QSPI
#define WB32_SPI_USE_QSPI TRUE
#undef WB32_SPI_USE_SPIM2
#define WB32_SPI_USE_SPIM2 TRUE

View File

@@ -0,0 +1,25 @@
# kd83a_bfg_edition
![KD83A_BFG_EDITION](https://imgur.com/UXuXerrh.png)
![KD83A_BFG_EDITION](https://imgur.com/Dn852gEh.png)
An 83 keys keyboard, Equipped with the WestBerry Q95 microcontroller.
* Keyboard Maintainer: [GSKY](https://github.com/gksygithub)
* Hardware Supported: KD83A_BFG_Edition
* Hardware Availability: [GSKY GitHub](https://github.com/gksygithub/keyboard)
Make example for this keyboard (after setting up your build environment):
make darkproject/kd83a_bfg_edition:default
Flashing example for this keyboard:
make darkproject/kd83a_bfg_edition:default:flash
To reset the board into bootloader mode, do one of the following:
* Hold the Reset switch mounted on the surface of the PCB back side after the USB cable is connected
* Hold the Escape key while connecting the USB cable (also erases persistent settings)
* Fn+ESC will reset the board to bootloader mode
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

@@ -0,0 +1 @@
WEAR_LEVELING_DRIVER = spi_flash

View File

@@ -0,0 +1,44 @@
/* Copyright 2022 GSKY <gskyGit@gsky.com.tw>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* External spi flash */
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B14
#define WEAR_LEVELING_BACKING_SIZE (8 * 1024)
/* SPI Config for LED Driver */
#define SPI_DRIVER SPIDQ
#define SPI_SCK_PIN A5
#define SPI_MOSI_PIN A7
#define SPI_MISO_PIN A6
#define DRIVER_1_CS A15
#define DRIVER_2_CS B15
#define DRIVER_1_EN C13
#define DRIVER_2_EN C13
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 68
#define DRIVER_2_LED_TOTAL 54
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)

View File

@@ -0,0 +1,23 @@
/* Copyright (C) 2022 Westberry Technology (ChangZhou) Corp., Ltd
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#define HAL_USE_SPI TRUE
#define SPI_USE_WAIT TRUE
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
#include_next <halconf.h>

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