1
0

Compare commits

...

135 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
ikorihn
4345d34cf2 Fix build error when Automatic Mouse Layer is enabled (#22229) 2023-10-08 19:43:09 +01:00
Joel Challis
7ca652ce6d Flag vial keymaps in 'qmk lint' (#22227) 2023-10-08 12:45:13 +01:00
Brian
06d123de62 Adding BriianPowell Discipline Keyboard Layout Updates (#21474) 2023-10-08 01:36:05 +11:00
noahbei
b768d74b2b Update vid for printedpad (#22215) 2023-10-07 15:00:46 +01:00
era
69c1790dce Klein_HS PCB support (#22203) 2023-10-06 17:31:08 -07:00
James Young
63b48f5096 Move orphaned Yugo-M files (#22211)
Moves files that were left behind by #14996.

[bugfix]
2023-10-06 01:34:14 +01:00
Nick Brassel
127560ae22 Add qmk ci-validate-aliases (#22205) 2023-10-06 10:34:23 +11:00
noahbei
92873cc14f Add printedpad keyboard (#21202)
Co-authored-by: jack <0x6a73@protonmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-10-04 21:55:49 -07:00
studiokestra
2a8b3a809d Add Line TKL keyboard (#22172)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-10-04 21:53:41 -07:00
lalalademaxiya1
8f757eece8 Add Keychron Q1 Version 2 (#20416)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: adophoxia <100170946+adophoxia@users.noreply.github.com>
Co-authored-by: Adophoxia <andyao1528@gmail.com>
2023-10-04 21:51:16 -07:00
Etienne Collin
aaebb0a231 Add Wave keyboard (#22054)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-10-04 21:47:34 -07:00
xia0
9f31783249 Added 3dp660 oled keyboard (#20591)
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: xia0 <xiao@morgan.net.au>
2023-10-04 21:45:27 -07:00
leyew
a58f86812c [Keyboard] Add qwertyqop60hs (#22164)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-10-04 21:02:26 -07:00
thompson-ele
22fbbbb1cc [Keyboard] Add SP-111 v2 keyboard (#21652)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: jack <0x6a73@protonmail.com>
2023-10-04 20:56:26 -07:00
gskygithub
7603a464cd Add keyboard Projectd/75/Projectd_75_ansi (#21628)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: gksygithub <106651989+gksygithub@users.noreply.github.com>
2023-10-04 20:49:43 -07:00
Álvaro A. Volpato
d33f9ec86b Add Acheron Themis and its variants (#22142)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-10-04 20:35:24 -07:00
James Young
6e93b59f61 Monstargear XO87 Soldered: correct layout data (#22199)
Correct key positions on the bottom row for `LAYOUT_tkl_ansi_tsangan`.

[chore]
2023-10-04 11:17:01 +01:00
yuezp
5485d5023e Add the Split67 keyboard PCB (#22107)
Co-authored-by: “yuezp” <“yuezpchn@126.com”>
2023-10-03 21:02:42 -07:00
Coom
d9fa80c0b0 Added /handwired/ziyoulang_k3_mod (#21965)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2023-10-03 20:40:57 -07:00
Joel Challis
a638f6e5aa Fix minimum python version references (#22191) 2023-10-04 01:19:04 +01:00
Syenasweta
bc5d407bf7 [Keyboard] Add SyenaKeyboards (#22168)
Co-authored-by: Syenasweta <syenasweta@gmail.com>
2023-10-03 01:34:06 -06:00
Sergey Fedorov
f33881b1da Add Soulstone keyboard (#22093) 2023-10-03 01:27:00 -06:00
Joel Challis
997a6747ee Miscellaneous fixes for recently merged keyboards (#22179) 2023-10-02 11:49:53 +01:00
casuanoob
1b7a538353 Bastard Keyboards: Add support for Dilemma Max (4x6_4) (#22064)
* tentatively add dilemma 4x6_4 WIP untested 
PR by Casuanoob.

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-10-01 18:55:54 +01:00
フィルターペーパー
8813bdf5dd Remove rosetta instructions for Apple Silicon (#22174) 2023-09-30 22:33:57 -07:00
Brian Low
c23d873e1a keyboards: Add support for Sofle Choc (#16736)
Co-developed-by: Brian Low <github@brianlow.com>
Co-developed-by: duese <duese@users.noreply.github.com>

Co-authored-by: Thomas Weißschuh <thomas@t-8ch.de>
2023-09-30 19:15:47 +01:00
Andrew Kannan
b404d5e9e4 Add Brutalv2 60 Keyboard (#22094)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-09-29 19:43:40 -07:00
Moritz Plattner
cfb4bb9b98 teleport/native: switch from wrongly used user to kb function, boost matrix scan rate (#21172)
* enable LTO

* change from _user to _kb function

* switch matrix io delay to nops, add opt=3 for higher scan rates

* disable console which was enabled for testing but collides with endpoint used by VIA

* switched from opt=3 to opt=2

* Update keyboards/teleport/native/native.c

Co-authored-by: Joel Challis <git@zvecr.com>

* slightly upped debounce, as some testers had chatter with async + default debounce

---------

Co-authored-by: Joel Challis <git@zvecr.com>
2023-09-29 12:19:03 +01:00
James Young
ab1e851e7d 4pplet Eagle/Viper Rep Rev.A Layout Additions II (#22161) 2023-09-29 00:30:59 -07:00
DOIO2022
5626a9282c Add KB12 keyboard (#21605)
Co-authored-by: Pablo Martínez <58857054+elpekenin@users.noreply.github.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2023-09-28 23:42:45 -07:00
DUILCHOI
daea202bfd add linworks fave60 (#20796)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
2023-09-28 23:39:15 -07:00
James Young
f214ee7f3a Rura66 Layout Data (#22155)
* Friendly-format `info.json`

[style]

* Update layout data

- separate keyboard halves
- add vertical stagger

[refactor]
2023-09-28 21:55:14 -07:00
James Young
0edc68f7cd HnahKB Freyr Layout Additions (#22150)
* Add layout/matrix diagram

[docs]

* Add `LAYOUT_tkl_ansi_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_ansi_tsangan_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_ansi_tsangan`

[enhancement]

* Add `LAYOUT_tkl_ansi_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_ansi_wkl`

[enhancement]

* Add `LAYOUT_tkl_iso_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_iso_tsangan_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_iso_tsangan`

[enhancement]

* Add `LAYOUT_tkl_iso_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_iso_wkl`

[enhancement]

* Extend Community Layout support

Add as supported layouts:

- `tkl_ansi_split_bs_rshift`
- `tkl_ansi_tsangan`
- `tkl_ansi_tsangan_split_bs_rshift`
- `tkl_iso_split_bs_rshift`
- `tkl_iso_tsangan`
- `tkl_iso_tsangan_split_bs_rshift`

[enhancement]
2023-09-28 21:34:30 -07:00
Nick Brassel
c5706ef791 Allow for qmk mass-compile all:<keymap> (#22116)
Co-authored-by: Joel Challis <git@zvecr.com>
2023-09-29 06:48:20 +10:00
Nick Brassel
fb0c64a567 Allow inline generation of compile_commands.json while doing a qmk compile, using --compiledb (#21549) 2023-09-28 11:48:58 +01:00
Joel Challis
0ecb03ad47 Drop V2 production updates (#22147) 2023-09-27 03:57:57 +01:00
Joel Challis
25c850e762 Add support for YMD75 V4 - ISO (#22128) 2023-09-27 00:49:07 +01:00
Joel Challis
351b5cd2cd Initial support for CSTM80 (#22137) 2023-09-27 00:48:42 +01:00
Idan Kamara
ca9664b1ac [Keyboard] Add spankbd, 3x5+3 split keyboard (#22003) 2023-09-26 12:06:18 -06:00
Duncan Sutherland
46c1e7351e rastersoft/minitkl layout corrections (#22130) 2023-09-25 23:17:47 -07:00
Yanfei Guo
17ae28f0e4 Fix doc for programmable buttons. (#22136)
Co-authored-by: Yanfei Guo <yguo@anl.gov>
2023-09-25 23:17:20 -07:00
Nick Brassel
8d9c770a81 Fix entry into bootloader for STM32G431. (#22138) 2023-09-26 12:20:32 +10:00
Ikko Eltociear Ashimine
6eb2e43a8d Fix typo in oled_driver (#22134)
betwen -> between
2023-09-25 20:40:27 +01:00
Joy Lee
2fad45132f Added more rgb effects for rpk-001 keyboard (#22120) 2023-09-25 10:45:48 +01:00
spbgzh
538978b782 Add zoom98 (#22062)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2023-09-24 22:13:00 -07:00
Ross Montsinger
7e923580a5 Add Palmetto PCB (#21955) 2023-09-24 20:33:55 -07:00
dependabot[bot]
0c4bd1ccdc Bump tj-actions/changed-files from 38 to 39 (#21923)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-25 13:00:34 +10:00
Michael Büchler
4d994458f0 Document the RP2040-specific PS/2 implementation (#22079)
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2023-09-25 13:00:13 +10:00
Andrew Kannan
c10a46aa43 Add is0gr to QMK (#22024)
Co-authored-by: Duncan Sutherland <dunk2k_2000@hotmail.com>
Co-authored-by: Less/Rikki <86894501+lesshonor@users.noreply.github.com>
2023-09-25 12:59:38 +10:00
Duncan Sutherland
e3cbd8a965 amend 75_(ansi|iso) community_layouts in keyboards/ (#21837) 2023-09-25 12:57:18 +10:00
Duncan Sutherland
2181da4b72 amend split_* community_layouts in keyboards (#21847) 2023-09-25 12:56:33 +10:00
plaublin
131bc92b77 Fix variable misspelling (#21774) 2023-09-25 12:32:50 +10:00
Ben Cooper
4ebb065f94 Fix combo_ref_from_layer respect different default layer [#21780] (#21781) 2023-09-25 12:32:20 +10:00
DeskDaily
9d3c0018c1 Added Wyvern Hotswap by BredWorks (#21141)
Co-authored-by: Neil Brian Ramirez <nightlykeyboards@gmail.com>
Co-authored-by: Neil Brian Ramirez <nightlyboards@gmail.com>
2023-09-25 12:28:48 +10:00
892 changed files with 45977 additions and 802 deletions

View File

@@ -35,7 +35,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v38
uses: tj-actions/changed-files@v39
- name: Run qmk formatters
shell: 'bash {0}'

View File

@@ -27,7 +27,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v38
uses: tj-actions/changed-files@v39
- name: Print info
run: |
@@ -74,31 +74,10 @@ jobs:
fi
exit $exit_code
- name: Verify at most one added keyboard
- name: Verify keyboard aliases
if: always()
shell: 'bash {0}'
run: |
git reset --hard
git clean -xfd
# Get the keyboard list and count for the target branch
git checkout -f ${{ github.base_ref }}
git pull --ff-only
QMK_KEYBOARDS_BASE=$(qmk list-keyboards)
QMK_KEYBOARDS_BASE_COUNT=$(qmk list-keyboards | wc -l)
# Get the keyboard list and count for the PR
git checkout -f ${{ github.head_ref }}
git merge --no-commit --squash ${{ github.base_ref }}
QMK_KEYBOARDS_PR=$(qmk list-keyboards)
QMK_KEYBOARDS_PR_COUNT=$(qmk list-keyboards | wc -l)
echo "::group::Keyboards changes in this PR"
diff -d -U 0 <(echo "$QMK_KEYBOARDS_BASE") <(echo "$QMK_KEYBOARDS_PR") | grep -vE '^(---|\+\+\+|@@)' | sed -e 's@^-@Removed: @g' -e 's@^+@ Added: @g'
echo "::endgroup::"
if [[ $QMK_KEYBOARDS_PR_COUNT -gt $(($QMK_KEYBOARDS_BASE_COUNT + 1)) ]]; then
echo "More than one keyboard added in this PR -- see the PR Checklist."
echo "::error::More than one keyboard added in this PR -- see the PR Checklist."
exit 1
fi
qmk ci-validate-aliases

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

3
.gitignore vendored
View File

@@ -108,5 +108,6 @@ compile_commands.json
.clangd/
.cache/
# VIA(L) json files that don't belong in QMK repo
# VIA(L) files that don't belong in QMK repo
via*.json
/keyboards/**/keymaps/vial/*

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

@@ -4,6 +4,13 @@
// "target": "<keyboard_folder>"
// }
//
/* This list of aliases is for testing purposes -- ensures "linked list" recursive traversal works correctly. */
"_test_a": { "target": "_test_b" },
"_test_b": { "target": "_test_c" },
"_test_c": { "target": "planck/rev6" },
/* The main list of aliases for moved keyboards within QMK. */
"2_milk": {
"target": "spaceman/2_milk"
},
@@ -35,7 +42,7 @@
"target": "amjkeyboard/amjpad"
},
"angel64": {
"target": "angel64/alpha"
"target": "kakunpc/angel64/alpha"
},
"ashpil/modelm_usbc": {
"target": "ibm/model_m/ashpil_usbc"
@@ -47,10 +54,10 @@
"target": "viktus/at101_bh"
},
"atom47/rev2": {
"target": "maartenwut/atom47/rev2"
"target": "evyd13/atom47/rev2"
},
"atom47/rev3": {
"target": "maartenwut/atom47/rev3"
"target": "evyd13/atom47/rev3"
},
"bakeneko60": {
"target": "kkatano/bakeneko60"
@@ -65,7 +72,7 @@
"target": "bear_face/v1"
},
"bm16a": {
"target": "kprepublic/bm16a"
"target": "kprepublic/bm16a/v1"
},
"bm16s": {
"target": "kprepublic/bm16s"
@@ -77,16 +84,16 @@
"target": "kprepublic/bm43a"
},
"bm60poker": {
"target": "kprepublic/bm60poker"
"target": "kprepublic/bm60hsrgb_poker/rev1"
},
"bm60rgb": {
"target": "kprepublic/bm60rgb"
"target": "kprepublic/bm60hsrgb/rev1"
},
"bm60rgb_iso": {
"target": "kprepublic/bm60rgb_iso"
"target": "kprepublic/bm60hsrgb_iso/rev1"
},
"bm68rgb": {
"target": "kprepublic/bm68rgb"
"target": "kprepublic/bm68hsrgb/rev1"
},
"bpiphany/pegasushoof": {
"target": "bpiphany/pegasushoof/2013"
@@ -140,7 +147,10 @@
"target": "jagdpietr/drakon"
},
"durgod/k320": {
"target": "durgod/k3x0/k320"
"target": "durgod/k320/base"
},
"durgod/k3x0/k320": {
"target": "durgod/k320/base"
},
"durgod/hades": {
"target": "durgod/dgk6x/hades_ansi"
@@ -269,7 +279,7 @@
"target": "idb/idb_60"
},
"idobo": {
"target": "idobao/id75"
"target": "idobao/id75/v1"
},
"jacky_studio/piggy60": {
"target": "jacky_studio/piggy60/rev1"
@@ -401,7 +411,7 @@
"target": "mechlovin/adelais/rgb_led/rev1"
},
"mechlovin/adelais/standard_led": {
"target": "mechlovin/adelais/standard_led/rev2"
"target": "mechlovin/adelais/standard_led/arm/rev2"
},
"mechlovin/delphine": {
"target": "mechlovin/delphine/mono_led"
@@ -455,10 +465,10 @@
"target": "pabile/p20/ver1"
},
"pancake/feather": {
"target": "spaceman/pancake/feather"
"target": "spaceman/pancake/rev1/feather"
},
"pancake/promicro": {
"target": "spaceman/pancake/promicro"
"target": "spaceman/pancake/rev1/promicro"
},
"peiorisboards/ixora": {
"target": "coarse/ixora"
@@ -467,7 +477,7 @@
"target": "dm9records/plaid"
},
"plain60": {
"target": "maartenwut/plain60"
"target": "evyd13/plain60"
},
"ploopyco/trackball": {
"target": "ploopyco/trackball/rev1_005"
@@ -503,10 +513,10 @@
"target": "wilba_tech/rama_works_u80_a"
},
"ramonimbao/herringbone": {
"target": "ramonimbao/herringbone/v1"
"target": "rmi_kb/herringbone/v1"
},
"ramonimbao/mona": {
"target": "ramonimbao/mona/v1"
"target": "rmi_kb/mona/v1"
},
"rgbkb/pan": {
"target": "rgbkb/pan/rev1/32a"
@@ -542,10 +552,10 @@
"target": "tkw/stoutgat/v1"
},
"suihankey": {
"target": "suihankey/split/alpha"
"target": "kakunpc/suihankey/split/alpha"
},
"ta65": {
"target": "maartenwut/ta65"
"target": "evyd13/ta65"
},
"tartan": {
"target": "dm9records/tartan"
@@ -563,13 +573,13 @@
"target": "matthewdias/txuu"
},
"underscore33": {
"target": "underscore33/rev1"
"target": "tominabox1/underscore33/rev1"
},
"vinta": {
"target": "coarse/vinta"
},
"wasdat": {
"target": "maartenwut/wasdat"
"target": "evyd13/wasdat"
},
"westfoxtrot/cypher": {
"target": "westfoxtrot/cypher/rev1"
@@ -581,10 +591,10 @@
"target": "xiudi/xd002"
},
"xd004": {
"target": "xiudi/xd004"
"target": "xiudi/xd004/v1"
},
"xd60": {
"target": "xiudi/xd60"
"target": "xiudi/xd60/rev2"
},
"xd68": {
"target": "xiudi/xd68"
@@ -831,7 +841,7 @@
"target": "kagizaraya/halberd"
},
"handwired/hillside/0_1": {
"target": "handwired/hillside/48"
"target": "hillside/48/0_1"
},
"hecomi/alpha": {
"target": "takashiski/hecomi/alpha"
@@ -843,10 +853,10 @@
"target": "bpiphany/hid_liber"
},
"id67/default_rgb": {
"target": "idobao/id67/default_rgb"
"target": "idobao/id67"
},
"id67/rgb": {
"target": "idobao/id67/rgb"
"target": "idobao/id67"
},
"id80": {
"target": "idobao/id80/v2/ansi"
@@ -1236,7 +1246,7 @@
"target": "marksard/treadstone48/rev2"
},
"tronguylabs/m122_3270": {
"target": "ibm/model_m_122/m122_3270"
"target": "ibm/model_m_122/m122_3270/teensy"
},
"ua62": {
"target": "nacly/ua62"
@@ -1290,7 +1300,7 @@
"target": "ydkb/yd68"
},
"ymd75": {
"target": "ymdk/ymd75"
"target": "ymdk/ymd75/rev1"
},
"ymd96": {
"target": "ymdk/ymd96"

View File

@@ -6,7 +6,7 @@ The QMK CLI makes building and working with QMK keyboards easier. We have provid
### Requirements :id=requirements
QMK requires Python 3.6 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI.
QMK requires Python 3.7 or greater. We try to keep the number of requirements small but you will also need to install the packages listed in [`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt). These are installed automatically when you install the QMK CLI.
### Install Using Homebrew (macOS, some Linux) :id=install-using-homebrew
@@ -20,7 +20,7 @@ qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build
### Install Using pip :id=install-using-easy_install-or-pip
If your system is not listed above you can install QMK manually. First ensure that you have Python 3.6 (or later) installed and have installed pip. Then install QMK with this command:
If your system is not listed above you can install QMK manually. First ensure that you have Python 3.7 (or later) installed and have installed pip. Then install QMK with this command:
```
python3 -m pip install qmk

View File

@@ -44,7 +44,7 @@ def hello(cli):
First we import the `cli` object from `milc`. This is how we interact with the user and control the script's behavior. We use `@cli.argument()` to define a command line flag, `--name`. This also creates a configuration variable named `hello.name` (and the corresponding `user.name`) which the user can set so they don't have to specify the argument. The `cli.subcommand()` decorator designates this function as a subcommand. The name of the subcommand will be taken from the name of the function.
Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.6/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator.
Once inside our function we find a typical "Hello, World!" program. We use `cli.log` to access the underlying [Logger Object](https://docs.python.org/3.7/library/logging.html#logger-objects), whose behavior is user controllable. We also access the value for name supplied by the user as `cli.config.hello.name`. The value for `cli.config.hello.name` will be determined by looking at the `--name` argument supplied by the user, if not provided it will use the value in the `qmk.ini` config file, and if neither of those is provided it will fall back to the default supplied in the `cli.argument()` decorator.
# User Interaction
@@ -56,13 +56,13 @@ There are two main methods for outputting text in a subcommand- `cli.log` and `c
You can use special tokens to colorize your text, to make it easier to understand the output of your program. See [Colorizing Text](#colorizing-text) below.
Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.6/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example.
Both of these methods support built-in string formatting using python's [printf style string format operations](https://docs.python.org/3.7/library/stdtypes.html#old-string-formatting). You can use tokens such as `%s` and `%d` within your text strings then pass the values as arguments. See our Hello, World program above for an example.
You should never use the format operator (`%`) directly, always pass values as arguments.
### Logging (`cli.log`)
The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.6/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong.
The `cli.log` object gives you access to a [Logger Object](https://docs.python.org/3.7/library/logging.html#logger-objects). We have configured our log output to show the user a nice emoji for each log level (or the log level name if their terminal does not support unicode.) This way the user can tell at a glance which messages are most important when something goes wrong.
The default log level is `INFO`. If the user runs `qmk -v <subcommand>` the default log level will be set to `DEBUG`.

View File

@@ -317,7 +317,7 @@ At the time of this writing our tests are not very comprehensive. Looking at the
## Integration Tests
Integration tests can be found in `lib/python/qmk/tests/test_cli_commands.py`. This is where CLI commands are actually run and their overall behavior is verified. We use [`subprocess`](https://docs.python.org/3.6/library/subprocess.html#module-subprocess) to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.
Integration tests can be found in `lib/python/qmk/tests/test_cli_commands.py`. This is where CLI commands are actually run and their overall behavior is verified. We use [`subprocess`](https://docs.python.org/3.7/library/subprocess.html#module-subprocess) to launch each CLI command and a combination of checking output and returncode to determine if the right thing happened.
## Unit Tests

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

@@ -399,7 +399,7 @@ void oled_scroll_set_area(uint8_t start_line, uint8_t end_line);
// Sets scroll speed, 0-7, fastest to slowest. Default is three.
// Does not take effect until scrolling is either started or restarted
// the ssd1306 supports 8 speeds with the delay
// listed below betwen each frame of the scrolling effect
// listed below between each frame of the scrolling effect
// 0=2, 1=3, 2=4, 3=5, 4=25, 5=64, 6=128, 7=256
void oled_scroll_set_speed(uint8_t speed);

View File

@@ -2,7 +2,7 @@
Programmable Buttons are keys that have no predefined meaning. This means they can be processed on the host side by custom software without the operating system trying to interpret them.
The keycodes are emitted according to the HID Telephony Device page (`0x0B`), Programmable Button usage (`0x07`). On Linux (> 5.14) they are handled automatically and translated to `KEY_MACRO#` keycodes (up to `KEY_MACRO30`).
The keycodes are emitted according to the HID Telephony Device page (`0x0B`), Programmable Button usage (`0x09`). On Linux (> 5.14) they are handled automatically and translated to `KEY_MACRO#` keycodes (up to `KEY_MACRO30`).
?> Currently there is no known support in Windows or macOS. It may be possible to write a custom HID driver to receive these usages, but this is out of the scope of the QMK documentation.

View File

@@ -155,6 +155,29 @@ In your keyboard config.h:
#endif
```
### RP2040 PIO Version :id=rp2040-pio-version
The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU.
There are strict requirements for pin ordering but any pair of GPIO pins can be used. The GPIO used for clock must be directly after data, see the included info.json snippet for an example of correct order.
You may optionally switch the PIO peripheral used with the following define in config.h:
```c
#define PS2_PIO_USE_PIO1 // Force the usage of PIO1 peripheral, by default the PS2 implementation uses the PIO0 peripheral
```
Example info.json content:
```json
"ps2": {
"clock_pin": "GP1",
"data_pin": "GP0",
"driver": "vendor",
"enabled": true,
"mouse_enabled": true
}
```
## Additional Settings :id=additional-settings
### PS/2 Mouse Features :id=ps2-mouse-features

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

@@ -56,7 +56,7 @@ QMK maintains a Homebrew tap and formula which will automatically install the CL
You will need to install Homebrew. Follow the instructions on https://brew.sh.
!> **NOTE:** If you are using Apple Silicon, such as the M1, you will need to install a rosetta compatible version of Homebrew. This version does not override the base Homebrew. This can be done by running `arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"`. See here: [Rosetta-compatible Homebrew](https://stackoverflow.com/questions/64882584/how-to-run-the-homebrew-installer-under-rosetta-2-on-m1-macbook)
?> If you are using an Apple Silicon machine, the installation process will take significantly longer because GitHub actions do not have native runners to build binary packages for the ARM and AVR toolchains.
#### Installation
@@ -64,10 +64,6 @@ Install the QMK CLI by running:
brew install qmk/qmk/qmk
Install the QMK CLI on an Apple Silicon Mac by running:
arch -x86_64 brew install qmk/qmk/qmk
### ** Linux/WSL **
?> **Note for WSL users**: By default, the installation process will clone the QMK repository into your WSL home directory, but if you have cloned manually, ensure that it is located inside the WSL instance instead of the Windows filesystem (ie. not in `/mnt`), as accessing it is currently [extremely slow](https://github.com/microsoft/WSL/issues/4197).

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

@@ -454,7 +454,7 @@ void oled_scroll_set_area(uint8_t start_line, uint8_t end_line);
// Sets scroll speed, 0-7, fastest to slowest. Default is three.
// Does not take effect until scrolling is either started or restarted
// the ssd1306 supports 8 speeds with the delay
// listed below betwen each frame of the scrolling effect
// listed below between each frame of the scrolling effect
// 0=2, 1=3, 2=4, 3=5, 4=25, 5=64, 6=128, 7=256
void oled_scroll_set_speed(uint8_t speed);

View File

@@ -41,6 +41,16 @@
},
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"community_layouts": [
"60_ansi",
"60_ansi_split_bs_rshift",
"60_ansi_tsangan",
"60_tsangan_hhkb",
"60_hhkb",
"60_iso",
"60_iso_split_bs_rshift",
"60_iso_tsangan"
],
"layouts": {
"LAYOUT_all": {
"layout": [
@@ -115,6 +125,75 @@
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "|", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
@@ -186,6 +265,74 @@
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_tsangan": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "@", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "#", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "|", "matrix": [5, 6], "x": 13.5, "y": 1, "w": 1.5},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "\"", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 12.75, "y": 2, "w": 2.25},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 2.25},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
{"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_tsangan_hhkb": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
@@ -323,6 +470,288 @@
{"label": "GUI", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
{"label": "Alt", "matrix": [9, 5], "x": 12.5, "y": 4}
]
},
"LAYOUT_60_iso": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "\"", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_iso_split_bs_rshift": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "\"", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "Backspace", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 0], "x": 1.25, "y": 4, "w": 1.25},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.25},
{"label": "Space", "matrix": [9, 3], "x": 3.75, "y": 4, "w": 6.25},
{"label": "Alt", "matrix": [9, 4], "x": 10, "y": 4, "w": 1.25},
{"label": "Menu", "matrix": [8, 5], "x": 11.25, "y": 4, "w": 1.25},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4, "w": 1.25},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_iso_tsangan": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "\"", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "Backspace", "matrix": [3, 6], "x": 13, "y": 0, "w": 2},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 2.75},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
{"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_iso_tsangan_split_bs_rshift": {
"layout": [
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "!", "matrix": [1, 0], "x": 1, "y": 0},
{"label": "\"", "matrix": [0, 1], "x": 2, "y": 0},
{"label": "\u00a3", "matrix": [1, 1], "x": 3, "y": 0},
{"label": "$", "matrix": [0, 2], "x": 4, "y": 0},
{"label": "%", "matrix": [1, 2], "x": 5, "y": 0},
{"label": "^", "matrix": [0, 3], "x": 6, "y": 0},
{"label": "&", "matrix": [1, 3], "x": 7, "y": 0},
{"label": "*", "matrix": [0, 4], "x": 8, "y": 0},
{"label": "(", "matrix": [1, 4], "x": 9, "y": 0},
{"label": ")", "matrix": [0, 5], "x": 10, "y": 0},
{"label": "_", "matrix": [1, 5], "x": 11, "y": 0},
{"label": "+", "matrix": [0, 6], "x": 12, "y": 0},
{"label": "|", "matrix": [1, 6], "x": 13, "y": 0},
{"label": "Backspace", "matrix": [3, 6], "x": 14, "y": 0},
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 1, "w": 1.5},
{"label": "Q", "matrix": [3, 0], "x": 1.5, "y": 1},
{"label": "W", "matrix": [2, 1], "x": 2.5, "y": 1},
{"label": "E", "matrix": [3, 1], "x": 3.5, "y": 1},
{"label": "R", "matrix": [2, 2], "x": 4.5, "y": 1},
{"label": "T", "matrix": [3, 2], "x": 5.5, "y": 1},
{"label": "Y", "matrix": [2, 3], "x": 6.5, "y": 1},
{"label": "U", "matrix": [3, 3], "x": 7.5, "y": 1},
{"label": "I", "matrix": [2, 4], "x": 8.5, "y": 1},
{"label": "O", "matrix": [3, 4], "x": 9.5, "y": 1},
{"label": "P", "matrix": [2, 5], "x": 10.5, "y": 1},
{"label": "{", "matrix": [3, 5], "x": 11.5, "y": 1},
{"label": "}", "matrix": [2, 6], "x": 12.5, "y": 1},
{"label": "Caps Lock", "matrix": [4, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "A", "matrix": [5, 0], "x": 1.75, "y": 2},
{"label": "S", "matrix": [4, 1], "x": 2.75, "y": 2},
{"label": "D", "matrix": [5, 1], "x": 3.75, "y": 2},
{"label": "F", "matrix": [4, 2], "x": 4.75, "y": 2},
{"label": "G", "matrix": [5, 2], "x": 5.75, "y": 2},
{"label": "H", "matrix": [4, 3], "x": 6.75, "y": 2},
{"label": "J", "matrix": [5, 3], "x": 7.75, "y": 2},
{"label": "K", "matrix": [4, 4], "x": 8.75, "y": 2},
{"label": "L", "matrix": [5, 4], "x": 9.75, "y": 2},
{"label": ":", "matrix": [4, 5], "x": 10.75, "y": 2},
{"label": "@", "matrix": [5, 5], "x": 11.75, "y": 2},
{"label": "~", "matrix": [4, 6], "x": 12.75, "y": 2},
{"label": "Enter", "matrix": [7, 6], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"label": "Shift", "matrix": [6, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "|", "matrix": [7, 0], "x": 1.25, "y": 3},
{"label": "Z", "matrix": [6, 1], "x": 2.25, "y": 3},
{"label": "X", "matrix": [7, 1], "x": 3.25, "y": 3},
{"label": "C", "matrix": [6, 2], "x": 4.25, "y": 3},
{"label": "V", "matrix": [7, 2], "x": 5.25, "y": 3},
{"label": "B", "matrix": [6, 3], "x": 6.25, "y": 3},
{"label": "N", "matrix": [7, 3], "x": 7.25, "y": 3},
{"label": "M", "matrix": [6, 4], "x": 8.25, "y": 3},
{"label": "<", "matrix": [7, 4], "x": 9.25, "y": 3},
{"label": ">", "matrix": [6, 5], "x": 10.25, "y": 3},
{"label": "?", "matrix": [7, 5], "x": 11.25, "y": 3},
{"label": "Shift", "matrix": [6, 6], "x": 12.25, "y": 3, "w": 1.75},
{"label": "Fn", "matrix": [9, 6], "x": 14, "y": 3},
{"label": "Ctrl", "matrix": [8, 0], "x": 0, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 0], "x": 1.5, "y": 4},
{"label": "Alt", "matrix": [9, 1], "x": 2.5, "y": 4, "w": 1.5},
{"label": "Space", "matrix": [9, 3], "x": 4, "y": 4, "w": 7},
{"label": "Alt", "matrix": [8, 5], "x": 11, "y": 4, "w": 1.5},
{"label": "Win", "matrix": [9, 5], "x": 12.5, "y": 4},
{"label": "Ctrl", "matrix": [8, 6], "x": 13.5, "y": 4, "w": 1.5}
]
}
}
}

View File

@@ -2,7 +2,7 @@
```
┌───────┐
2u Backspace │36?
2u Backspace │36
└───────┘
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│00 │10 │01 │11 │02 │12 │03 │13 │04 │14 │05 │15 │06 │16 │36 │
@@ -19,6 +19,6 @@
│60 │ 2.25u LShift 2.75u RShift │66 │
└────────┘ └──────────┘
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
│80 │90 │91 │93 │85 │95 │86 │ Tsangan/WKL/HHKB
│80 │90 │91 │93 │85 │95 │86 │ Tsangan/HHKB
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
```

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,25 @@
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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 "quantum.h"
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ;
}
return res;
}

View File

@@ -0,0 +1,33 @@
/*
Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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 LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
#define RGBLED_NUM 1
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
#define WS2812_DMA_CHANNEL 6
#define WEAR_LEVELING_LOGICAL_SIZE 4096
#define WEAR_LEVELING_BACKING_SIZE 8192

View File

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

View File

@@ -0,0 +1,136 @@
{
"keyboard_name": "Themis 87H Rev. Alpha",
"usb": {
"pid": "0x5448",
"device_version": "0.0.1"
},
"matrix_pins": {
"cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ],
"rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"]
},
"features": {
"bootmagic": true,
"lto": true,
"mousekey": true,
"extrakey": true,
"console": false,
"backlight": false,
"rgblight": true,
"audio": false,
"encoder": false,
"nkro": true
},
"diode_direction": "COL2ROW",
"ws2812": {
"pin": "B15"
},
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"community_layouts": ["tkl_ansi"],
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
{"label":"Escape", "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":"Print Screen", "matrix": [6, 14], "x": 15.25, "y": 0},
{"label":"Scroll Lock", "matrix": [6, 17], "x": 16.25, "y": 0},
{"label":"Pause", "matrix": [6, 16], "x": 17.25, "y": 0},
{"label":"`~", "matrix": [1, 0], "x": 0, "y": 1.25},
{"label":"1!", "matrix": [1, 1], "x": 1, "y": 1.25},
{"label":"2@", "matrix": [1, 2], "x": 2, "y": 1.25},
{"label":"3#", "matrix": [1, 3], "x": 3, "y": 1.25},
{"label":"4$", "matrix": [1, 4], "x": 4, "y": 1.25},
{"label":"5%", "matrix": [1, 5], "x": 5, "y": 1.25},
{"label":"6^", "matrix": [1, 6], "x": 6, "y": 1.25},
{"label":"7&", "matrix": [1, 7], "x": 7, "y": 1.25},
{"label":"8*", "matrix": [1, 8], "x": 8, "y": 1.25},
{"label":"9(", "matrix": [1, 9], "x": 9, "y": 1.25},
{"label":"0)", "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":"Insert", "matrix": [7, 14], "x": 15.25, "y": 1.25},
{"label":"Home", "matrix": [7, 17], "x": 16.25, "y": 1.25},
{"label":"Page Up","matrix": [7, 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":"Delete", "matrix": [8, 14], "x": 15.25, "y": 2.25},
{"label":"End", "matrix": [8, 17], "x": 16.25, "y": 2.25},
{"label":"Page Down", "matrix": [8, 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, 12], "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, 2], "x": 2.25, "y": 4.25},
{"label":"X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
{"label":"C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
{"label":"V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
{"label":"B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
{"label":"N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
{"label":"M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
{"label":",<", "matrix": [4, 9], "x": 9.25, "y": 4.25},
{"label":".>", "matrix": [4, 10], "x": 10.25, "y": 4.25},
{"label":"/?", "matrix": [4, 11], "x": 11.25, "y": 4.25},
{"label":"Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
{"label":"Up", "matrix": [4, 15], "x": 16.25, "y": 4.25},
{"label":"LCtrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
{"label":"Lwin", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
{"label":"LAlt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
{"label":"Space", "matrix": [5, 6], "x": 3.75, "y": 5.25, "w": 6.25},
{"label":"RAlt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.25},
{"label":"RWin", "matrix": [5, 10], "x": 11.25, "y": 5.25, "w": 1.25},
{"label":"MO(1)", "matrix": [5, 11], "x": 12.5, "y": 5.25, "w": 1.25},
{"label":"RCtrl", "matrix": [5, 12], "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,37 @@
/*
Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi(
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_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, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_tkl_ansi(
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@@ -0,0 +1,37 @@
/*
Copyright 2020 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi(
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_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, MO(1) , KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_tkl_ansi(
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

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

View File

View File

@@ -0,0 +1,25 @@
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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 "quantum.h"
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ;
}
return res;
}

View File

@@ -0,0 +1,33 @@
/*
Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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 LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
#define RGBLED_NUM 1
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
#define WS2812_DMA_CHANNEL 6
#define WEAR_LEVELING_LOGICAL_SIZE 4096
#define WEAR_LEVELING_BACKING_SIZE 8192

View File

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

View File

@@ -0,0 +1,135 @@
{
"keyboard_name": "Themis 87H-T-SC Rev. Alpha",
"usb": {
"pid": "0x5449",
"device_version": "0.0.1"
},
"matrix_pins": {
"cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ],
"rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"]
},
"features": {
"bootmagic": true,
"lto": true,
"mousekey": true,
"extrakey": true,
"console": false,
"backlight": false,
"rgblight": true,
"audio": false,
"encoder": false,
"nkro": true
},
"diode_direction": "COL2ROW",
"ws2812": {
"pin": "B15"
},
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"community_layouts": ["tkl_ansi_tsangan"],
"layouts": {
"LAYOUT_tkl_ansi_tsangan": {
"layout": [
{"label":"Escape", "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, 6], "x": 6.5, "y": 0},
{"label":"F6", "matrix": [0, 7], "x": 7.5, "y": 0},
{"label":"F7", "matrix": [0, 8], "x": 8.5, "y": 0},
{"label":"F8", "matrix": [0, 9], "x": 9.5, "y": 0},
{"label":"F9", "matrix": [0, 10], "x": 11, "y": 0},
{"label":"F10", "matrix": [0, 11], "x": 12, "y": 0},
{"label":"F11", "matrix": [0, 12], "x": 13, "y": 0},
{"label":"F12", "matrix": [0, 13], "x": 14, "y": 0},
{"label":"Print Screen", "matrix": [6, 14], "x": 15.25, "y": 0},
{"label":"Scroll Lock", "matrix": [6, 17], "x": 16.25, "y": 0},
{"label":"Pause", "matrix": [6, 16], "x": 17.25, "y": 0},
{"label":"`~", "matrix": [1, 0], "x": 0, "y": 1.25},
{"label":"1!", "matrix": [1, 1], "x": 1, "y": 1.25},
{"label":"2@", "matrix": [1, 2], "x": 2, "y": 1.25},
{"label":"3#", "matrix": [1, 3], "x": 3, "y": 1.25},
{"label":"4$", "matrix": [1, 4], "x": 4, "y": 1.25},
{"label":"5%", "matrix": [1, 5], "x": 5, "y": 1.25},
{"label":"6^", "matrix": [1, 6], "x": 6, "y": 1.25},
{"label":"7&", "matrix": [1, 7], "x": 7, "y": 1.25},
{"label":"8*", "matrix": [1, 8], "x": 8, "y": 1.25},
{"label":"9(", "matrix": [1, 9], "x": 9, "y": 1.25},
{"label":"0)", "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":"Insert", "matrix": [7, 14], "x": 15.25, "y": 1.25},
{"label":"Home", "matrix": [7, 17], "x": 16.25, "y": 1.25},
{"label":"Page Up","matrix": [7, 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":"Delete", "matrix": [8, 14], "x": 15.25, "y": 2.25},
{"label":"End", "matrix": [8, 17], "x": 16.25, "y": 2.25},
{"label":"Page Down", "matrix": [8, 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, 12], "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, 2], "x": 2.25, "y": 4.25},
{"label":"X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
{"label":"C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
{"label":"V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
{"label":"B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
{"label":"N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
{"label":"M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
{"label":",<", "matrix": [4, 9], "x": 9.25, "y": 4.25},
{"label":".>", "matrix": [4, 10], "x": 10.25, "y": 4.25},
{"label":"/?", "matrix": [4, 11], "x": 11.25, "y": 4.25},
{"label":"Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
{"label":"Up", "matrix": [4, 15], "x": 16.25, "y": 4.25},
{"label":"LCtrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
{"label":"Lwin", "matrix": [5, 1], "x": 1.5, "y": 5.25},
{"label":"LAlt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
{"label":"Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
{"label":"RAlt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
{"label":"RWin", "matrix": [5, 11], "x": 12.5, "y": 5.25},
{"label":"RCtrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
{"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,37 @@
/*
Copyright 2023 Gondolindrim
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi_tsangan(
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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_tkl_ansi_tsangan(
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@@ -0,0 +1,37 @@
/*
Copyright 2023 Gondolindrim
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_ansi_tsangan(
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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_tkl_ansi_tsangan(
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

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

View File

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

View File

View File

@@ -0,0 +1,25 @@
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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 "quantum.h"
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
led_state.caps_lock ? rgblight_setrgb_at(0xAA,0xAA,0xAA,0) : rgblight_setrgb_at(0x00,0x00,0x00,0) ;
}
return res;
}

View File

@@ -0,0 +1,33 @@
/*
Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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 LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE
#define RGBLED_NUM 1
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
#define WS2812_PWM_DRIVER PWMD1
#define WS2812_PWM_CHANNEL 3
#define WS2812_PWM_PAL_MODE 1
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
#define WS2812_DMA_CHANNEL 6
#define WEAR_LEVELING_LOGICAL_SIZE 4096
#define WEAR_LEVELING_BACKING_SIZE 8192

View File

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

View File

@@ -0,0 +1,137 @@
{
"keyboard_name": "Themis 88H-T-SC Rev. Alpha",
"usb": {
"pid": "0x5450",
"device_version": "0.0.1"
},
"matrix_pins": {
"cols": ["A8" ,"C9" ,"C8" ,"B14","B12","B10","B1" ,"B0" ,"A7" ,"A6" ,"A5" ,"A4" ,"C5" ,"C7" ,"B3" ,"A2" ,"C12","D2" ],
"rows": ["A15","A10","C6" ,"C4" ,"A3" ,"A1" ,"C11","C10","B4"]
},
"features": {
"bootmagic": true,
"lto": true,
"mousekey": true,
"extrakey": true,
"console": false,
"backlight": false,
"rgblight": true,
"audio": false,
"encoder": false,
"nkro": true
},
"diode_direction": "COL2ROW",
"ws2812": {
"pin": "B15"
},
"processor": "STM32F401",
"bootloader": "stm32-dfu",
"community_layouts": ["tkl_f13_ansi_tsangan"],
"layouts": {
"LAYOUT_tkl_f13_ansi_tsangan": {
"layout": [
{"label":"Escape", "matrix": [0, 0], "x": 0, "y": 0},
{"label":"F1", "matrix": [0, 1], "x": 1.25, "y": 0},
{"label":"F2", "matrix": [0, 2], "x": 2.25, "y": 0},
{"label":"F3", "matrix": [0, 3], "x": 3.25, "y": 0},
{"label":"F4", "matrix": [0, 4], "x": 4.25, "y": 0},
{"label":"F5", "matrix": [0, 5], "x": 5.5, "y": 0},
{"label":"F6", "matrix": [0, 6], "x": 6.5, "y": 0},
{"label":"F7", "matrix": [0, 7], "x": 7.5, "y": 0},
{"label":"F8", "matrix": [0, 8], "x": 8.5, "y": 0},
{"label":"F9", "matrix": [0, 9], "x": 9.75, "y": 0},
{"label":"F10", "matrix": [0, 10], "x": 10.75, "y": 0},
{"label":"F11", "matrix": [0, 11], "x": 11.75, "y": 0},
{"label":"F12", "matrix": [0, 12], "x": 12.75, "y": 0},
{"label":"F13", "matrix": [0, 13], "x": 14, "y": 0},
{"label":"Print Screen", "matrix": [6, 14], "x": 15.25, "y": 0},
{"label":"Scroll Lock", "matrix": [6, 17], "x": 16.25, "y": 0},
{"label":"Pause", "matrix": [6, 16], "x": 17.25, "y": 0},
{"label":"`~", "matrix": [1, 0], "x": 0, "y": 1.25},
{"label":"1!", "matrix": [1, 1], "x": 1, "y": 1.25},
{"label":"2@", "matrix": [1, 2], "x": 2, "y": 1.25},
{"label":"3#", "matrix": [1, 3], "x": 3, "y": 1.25},
{"label":"4$", "matrix": [1, 4], "x": 4, "y": 1.25},
{"label":"5%", "matrix": [1, 5], "x": 5, "y": 1.25},
{"label":"6^", "matrix": [1, 6], "x": 6, "y": 1.25},
{"label":"7&", "matrix": [1, 7], "x": 7, "y": 1.25},
{"label":"8*", "matrix": [1, 8], "x": 8, "y": 1.25},
{"label":"9(", "matrix": [1, 9], "x": 9, "y": 1.25},
{"label":"0)", "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":"Insert", "matrix": [7, 14], "x": 15.25, "y": 1.25},
{"label":"Home", "matrix": [7, 17], "x": 16.25, "y": 1.25},
{"label":"Page Up","matrix": [7, 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":"Delete", "matrix": [8, 14], "x": 15.25, "y": 2.25},
{"label":"End", "matrix": [8, 17], "x": 16.25, "y": 2.25},
{"label":"Page Down", "matrix": [8, 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, 12], "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, 2], "x": 2.25, "y": 4.25},
{"label":"X", "matrix": [4, 3], "x": 3.25, "y": 4.25},
{"label":"C", "matrix": [4, 4], "x": 4.25, "y": 4.25},
{"label":"V", "matrix": [4, 5], "x": 5.25, "y": 4.25},
{"label":"B", "matrix": [4, 6], "x": 6.25, "y": 4.25},
{"label":"N", "matrix": [4, 7], "x": 7.25, "y": 4.25},
{"label":"M", "matrix": [4, 8], "x": 8.25, "y": 4.25},
{"label":",<", "matrix": [4, 9], "x": 9.25, "y": 4.25},
{"label":".>", "matrix": [4, 10], "x": 10.25, "y": 4.25},
{"label":"/?", "matrix": [4, 11], "x": 11.25, "y": 4.25},
{"label":"Shift", "matrix": [4, 12], "x": 12.25, "y": 4.25, "w": 2.75},
{"label":"Up", "matrix": [4, 15], "x": 16.25, "y": 4.25},
{"label":"LCtrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
{"label":"Lwin", "matrix": [5, 1], "x": 1.5, "y": 5.25},
{"label":"LAlt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.5},
{"label":"Space", "matrix": [5, 6], "x": 4, "y": 5.25, "w": 6.25},
{"label":"RAlt", "matrix": [5, 10], "x": 11, "y": 5.25, "w": 1.5},
{"label":"RWin", "matrix": [5, 11], "x": 12.5, "y": 5.25},
{"label":"RCtrl", "matrix": [5, 12], "x": 13.5, "y": 5.25, "w": 1.5},
{"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,37 @@
/*
Copyright 2023 Gondolindrim
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_tkl_f13_ansi_tsangan(
KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_F13, KC_PSCR, KC_SCRL, KC_PAUS ,
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL , KC_BSPC, KC_INS , KC_HOME, KC_PGUP ,
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL , KC_END , KC_PGDN ,
KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT ,
KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_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, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_tkl_f13_ansi_tsangan(
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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, RGB_SAI, RGB_VAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

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

View File

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

View File

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

View File

View File

@@ -0,0 +1,8 @@
{
"manufacturer": "AcheronProject",
"url": "",
"maintainer": "Gondolindrim",
"usb": {
"vid": "0xAC11"
}
}

View File

@@ -0,0 +1,23 @@
# Acheron Themis QMK firmware
![themis](https://i.imgur.com/kwemOsJh.png)
The Themis is Acheron Project's open-source, freely available tenkeyless (TKL) keyboard Printed Circuit Boards (PCB) which features:
- No LED lighting
- Solderless ("hotswap") MX switches support
- Fixed layout for each variant
* Keyboard Maintainer: [Gondolindrim](https://github.com/Gondolindrim)
* Hardware Supported: open-source PCB using the [Joker template](https://acheronproject.com/joker_mcus/joker/). First units were manufactured using STM32F4x1 microcontroller;
* Hardware Availability: open-source PCBs
In order to flash this PCB, first build the default layout (after setting up your build environment):
make acheron/themis/<revision>:default
After building or downloading the firmware, put the PCB into DFU mode by holding the reset button for at least five seconds and upload the firmware onto the microcontroller through a utility like `dfu-util` or QMK Toolbox. Alternatively, you can build and flash using:
make acheron/themis/<revision>: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).

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

@@ -23,6 +23,7 @@
"layout_aliases": {
"LAYOUT": "LAYOUT_all"
},
"community_layouts": ["75_ansi", "75_iso"],
"layouts": {
"LAYOUT_all": {
"layout": [
@@ -118,6 +119,99 @@
{"matrix": [5, 14], "x": 15, "y": 5}
]
},
"LAYOUT_75_ansi": {
"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": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [5, 8], "x": 14, "y": 0},
{"matrix": [0, 14], "x": 15, "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": [1, 12], "x": 12, "y": 1},
{"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
{"matrix": [1, 14], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2},
{"matrix": [2, 2], "x": 2.5, "y": 2},
{"matrix": [2, 3], "x": 3.5, "y": 2},
{"matrix": [2, 4], "x": 4.5, "y": 2},
{"matrix": [2, 5], "x": 5.5, "y": 2},
{"matrix": [2, 6], "x": 6.5, "y": 2},
{"matrix": [2, 7], "x": 7.5, "y": 2},
{"matrix": [2, 8], "x": 8.5, "y": 2},
{"matrix": [2, 9], "x": 9.5, "y": 2},
{"matrix": [2, 10], "x": 10.5, "y": 2},
{"matrix": [2, 11], "x": 11.5, "y": 2},
{"matrix": [2, 12], "x": 12.5, "y": 2},
{"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
{"matrix": [2, 14], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3},
{"matrix": [3, 2], "x": 2.75, "y": 3},
{"matrix": [3, 3], "x": 3.75, "y": 3},
{"matrix": [3, 4], "x": 4.75, "y": 3},
{"matrix": [3, 5], "x": 5.75, "y": 3},
{"matrix": [3, 6], "x": 6.75, "y": 3},
{"matrix": [3, 7], "x": 7.75, "y": 3},
{"matrix": [3, 8], "x": 8.75, "y": 3},
{"matrix": [3, 9], "x": 9.75, "y": 3},
{"matrix": [3, 10], "x": 10.75, "y": 3},
{"matrix": [3, 11], "x": 11.75, "y": 3},
{"matrix": [3, 13], "x": 12.75, "y": 3, "w": 2.25},
{"matrix": [3, 14], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
{"matrix": [4, 2], "x": 2.25, "y": 4},
{"matrix": [4, 3], "x": 3.25, "y": 4},
{"matrix": [4, 4], "x": 4.25, "y": 4},
{"matrix": [4, 5], "x": 5.25, "y": 4},
{"matrix": [4, 6], "x": 6.25, "y": 4},
{"matrix": [4, 7], "x": 7.25, "y": 4},
{"matrix": [4, 8], "x": 8.25, "y": 4},
{"matrix": [4, 9], "x": 9.25, "y": 4},
{"matrix": [4, 10], "x": 10.25, "y": 4},
{"matrix": [4, 11], "x": 11.25, "y": 4},
{"matrix": [4, 12], "x": 12.25, "y": 4, "w": 1.75},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 14], "x": 15, "y": 4},
{"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
{"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
{"matrix": [5, 5], "x": 3.75, "y": 5, "w": 6.25},
{"matrix": [5, 9], "x": 10, "y": 5},
{"matrix": [5, 10], "x": 11, "y": 5},
{"matrix": [5, 11], "x": 12, "y": 5},
{"matrix": [5, 12], "x": 13, "y": 5},
{"matrix": [5, 13], "x": 14, "y": 5},
{"matrix": [5, 14], "x": 15, "y": 5}
]
},
"LAYOUT_75_ansi_rwkl": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
@@ -210,6 +304,100 @@
{"matrix": [5, 14], "x": 15, "y": 5}
]
},
"LAYOUT_75_iso": {
"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": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [5, 8], "x": 14, "y": 0},
{"matrix": [0, 14], "x": 15, "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": [1, 12], "x": 12, "y": 1},
{"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
{"matrix": [1, 14], "x": 15, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
{"matrix": [2, 1], "x": 1.5, "y": 2},
{"matrix": [2, 2], "x": 2.5, "y": 2},
{"matrix": [2, 3], "x": 3.5, "y": 2},
{"matrix": [2, 4], "x": 4.5, "y": 2},
{"matrix": [2, 5], "x": 5.5, "y": 2},
{"matrix": [2, 6], "x": 6.5, "y": 2},
{"matrix": [2, 7], "x": 7.5, "y": 2},
{"matrix": [2, 8], "x": 8.5, "y": 2},
{"matrix": [2, 9], "x": 9.5, "y": 2},
{"matrix": [2, 10], "x": 10.5, "y": 2},
{"matrix": [2, 11], "x": 11.5, "y": 2},
{"matrix": [2, 12], "x": 12.5, "y": 2},
{"matrix": [2, 14], "x": 15, "y": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
{"matrix": [3, 1], "x": 1.75, "y": 3},
{"matrix": [3, 2], "x": 2.75, "y": 3},
{"matrix": [3, 3], "x": 3.75, "y": 3},
{"matrix": [3, 4], "x": 4.75, "y": 3},
{"matrix": [3, 5], "x": 5.75, "y": 3},
{"matrix": [3, 6], "x": 6.75, "y": 3},
{"matrix": [3, 7], "x": 7.75, "y": 3},
{"matrix": [3, 8], "x": 8.75, "y": 3},
{"matrix": [3, 9], "x": 9.75, "y": 3},
{"matrix": [3, 10], "x": 10.75, "y": 3},
{"matrix": [3, 11], "x": 11.75, "y": 3},
{"matrix": [3, 12], "x": 12.75, "y": 3},
{"matrix": [3, 13], "x": 13.75, "y": 2, "w": 1.25, "h": 2},
{"matrix": [3, 14], "x": 15, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4},
{"matrix": [4, 2], "x": 2.25, "y": 4},
{"matrix": [4, 3], "x": 3.25, "y": 4},
{"matrix": [4, 4], "x": 4.25, "y": 4},
{"matrix": [4, 5], "x": 5.25, "y": 4},
{"matrix": [4, 6], "x": 6.25, "y": 4},
{"matrix": [4, 7], "x": 7.25, "y": 4},
{"matrix": [4, 8], "x": 8.25, "y": 4},
{"matrix": [4, 9], "x": 9.25, "y": 4},
{"matrix": [4, 10], "x": 10.25, "y": 4},
{"matrix": [4, 11], "x": 11.25, "y": 4},
{"matrix": [4, 12], "x": 12.25, "y": 4, "w": 1.75},
{"matrix": [4, 13], "x": 14, "y": 4},
{"matrix": [4, 14], "x": 15, "y": 4},
{"matrix": [5, 0], "x": 0, "y": 5, "w": 1.25},
{"matrix": [5, 1], "x": 1.25, "y": 5, "w": 1.25},
{"matrix": [5, 2], "x": 2.5, "y": 5, "w": 1.25},
{"matrix": [5, 5], "x": 3.75, "y": 5, "w": 6.25},
{"matrix": [5, 9], "x": 10, "y": 5},
{"matrix": [5, 10], "x": 11, "y": 5},
{"matrix": [5, 11], "x": 12, "y": 5},
{"matrix": [5, 12], "x": 13, "y": 5},
{"matrix": [5, 13], "x": 14, "y": 5},
{"matrix": [5, 14], "x": 15, "y": 5}
]
},
"LAYOUT_75_iso_rwkl": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},

View File

@@ -0,0 +1,59 @@
/**
* Copyright 2020 Christopher Courtney <drashna@live.com> (@drashna)
* Copyright 2021 Quentin LEBASTARD <qlebastard@gmail.com>
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Publicw 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"
#ifdef SWAP_HANDS_ENABLE
const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
/* Left hand, matrix positions */
{{0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5}, {5, 5}},
{{0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6}, {5, 6}},
{{0, 7}, {1, 7}, {2, 7}, {3, 7}, {4, 7}, {5, 7}},
{{0, 8}, {1, 8}, {2, 8}, {3, 8}, {4, 8}, {5, 8}},
{{0, 9}, {1, 9}, {2, 9}, {3, 9}, {4, 9}, {5, 9}},
/* Right hand, matrix positions */
{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}},
{{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}},
{{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}},
{{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}},
{{0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4}, {5, 4}}
};
# ifdef ENCODER_MAP_ENABLE
const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0};
# endif
#endif
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) {
return false;
}
switch (index) {
case 0: // Left-half encoder, mouse scroll.
tap_code(clockwise ? KC_MS_WH_DOWN : KC_MS_WH_UP);
break;
case 1: // Right-half encoder, volume control.
tap_code(clockwise ? KC_AUDIO_VOL_UP : KC_AUDIO_VOL_DOWN);
break;
}
return true;
}
#endif // ENCODER_ENABLE

View File

@@ -0,0 +1,54 @@
/**
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
*
* 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
/* Handedness. */
#define SPLIT_HAND_PIN GP29
#define SPLIT_HAND_PIN_LOW_IS_LEFT // High -> right, Low -> left.
/* VBUS detection. */
#define USB_VBUS_PIN GP19
/* CRC. */
#define CRC8_USE_TABLE
#define CRC8_OPTIMIZE_SPEED
/* Cirque trackpad over SPI. */
#define SPI_DRIVER SPID0
#define SPI_SCK_PIN GP22
#define SPI_MOSI_PIN GP23
#define SPI_MISO_PIN GP20
#define POINTING_DEVICE_CS_PIN GP21
#undef CIRQUE_PINNACLE_DIAMETER_MM
#define CIRQUE_PINNACLE_DIAMETER_MM 40
/* Reset. */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP17
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
/* RGB matrix support. */
#define SPLIT_TRANSPORT_MIRROR
#define RGB_DISABLE_WHEN_USB_SUSPENDED
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
// Startup values.
#define RGB_MATRIX_DEFAULT_VAL 64
#define RGB_MATRIX_DEFAULT_SPD 32

View File

@@ -0,0 +1,22 @@
/**
* Copyright 2022 Charly Delay <charly@codesink.dev> (@0xcharly)
*
* 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
#include_next <halconf.h>

View File

@@ -0,0 +1,266 @@
{
"keyboard_name": "Dilemma Max",
"usb": {
"device_version": "1.0.0",
"pid": "0x1837"
},
"processor": "RP2040",
"bootloader": "rp2040",
"board": "GENERIC_RP_RP2040",
"matrix_pins": {
"cols": ["GP14", "GP8", "GP9", "GP7", "GP6", "GP28"],
"rows": ["GP15", "GP4", "GP5", "GP27", "GP26"]
},
"diode_direction": "ROW2COL",
"split": {
"enabled": true,
"soft_serial_pin": "GP1",
"bootmagic": {
"matrix": [5, 0]
}
},
"encoder": {
"enabled" : true,
"rotary" : [
{"pin_a": "GP25", "pin_b": "GP24"}
]
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true,
"caps_word": true,
"tri_layer": true
},
"ws2812": {
"pin": "GP10",
"driver": "vendor"
},
"rgb_matrix": {
"driver": "ws2812",
"split_count": [52, 52],
"max_brightness": 176,
"center_point": [112, 28],
"animations": {
"solid_color": true,
"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
},
"layout": [
{"x": 81, "y": 4, "flags": 2},
{"x": 65, "y": 2, "flags": 2},
{"x": 40, "y": 0, "flags": 2},
{"x": 29, "y": 9, "flags": 2},
{"x": 16, "y": 9, "flags": 2},
{"x": 0, "y": 16, "flags": 2},
{"x": 0, "y": 29, "flags": 2},
{"x": 0, "y": 40, "flags": 2},
{"x": 5, "y": 50, "flags": 2},
{"x": 17, "y": 49, "flags": 2},
{"x": 28, "y": 44, "flags": 2},
{"x": 40, "y": 43, "flags": 2},
{"x": 49, "y": 51, "flags": 2},
{"x": 62, "y": 53, "flags": 2},
{"x": 73, "y": 56, "flags": 2},
{"x": 85, "y": 59, "flags": 2},
{"x": 100, "y": 64, "flags": 2},
{"x": 106, "y": 55, "flags": 2},
{"x": 107, "y": 45, "flags": 2},
{"x": 91, "y": 51, "flags": 2},
{"x": 94, "y": 40, "flags": 2},
{"x": 108, "y": 33, "flags": 2},
{"x": 106, "y": 25, "flags": 2},
{"x": 108, "y": 16, "flags": 2},
{"matrix": [0, 5], "x": 75, "y": 10, "flags": 4},
{"matrix": [0, 4], "x": 62, "y": 9, "flags": 4},
{"matrix": [0, 3], "x": 49, "y": 6, "flags": 4},
{"matrix": [0, 2], "x": 35, "y": 10, "flags": 4},
{"matrix": [0, 1], "x": 22, "y": 16, "flags": 4},
{"matrix": [0, 0], "x": 9, "y": 16, "flags": 1},
{"matrix": [1, 0], "x": 9, "y": 27, "flags": 1},
{"matrix": [1, 1], "x": 22, "y": 27, "flags": 4},
{"matrix": [1, 2], "x": 35, "y": 20, "flags": 4},
{"matrix": [1, 3], "x": 49, "y": 17, "flags": 4},
{"matrix": [1, 4], "x": 62, "y": 19, "flags": 4},
{"matrix": [1, 5], "x": 75, "y": 21, "flags": 4},
{"matrix": [2, 5], "x": 75, "y": 31, "flags": 4},
{"matrix": [2, 4], "x": 62, "y": 30, "flags": 4},
{"matrix": [2, 3], "x": 49, "y": 27, "flags": 4},
{"matrix": [2, 2], "x": 35, "y": 31, "flags": 4},
{"matrix": [2, 1], "x": 22, "y": 37, "flags": 4},
{"matrix": [2, 0], "x": 9, "y": 37, "flags": 1},
{"matrix": [3, 0], "x": 9, "y": 48, "flags": 1},
{"matrix": [3, 1], "x": 22, "y": 48, "flags": 4},
{"matrix": [3, 2], "x": 35, "y": 41, "flags": 4},
{"matrix": [3, 3], "x": 49, "y": 38, "flags": 4},
{"matrix": [3, 4], "x": 62, "y": 40, "flags": 4},
{"matrix": [3, 5], "x": 75, "y": 42, "flags": 4},
{"matrix": [4, 3], "x": 54, "y": 51, "flags": 4},
{"matrix": [4, 1], "x": 68, "y": 53, "flags": 4},
{"matrix": [4, 2], "x": 81, "y": 57, "flags": 4},
{"matrix": [4, 4], "x": 92, "y": 64, "flags": 4},
{"x": 143, "y": 4, "flags": 2},
{"x": 159, "y": 2, "flags": 2},
{"x": 184, "y": 0, "flags": 2},
{"x": 195, "y": 9, "flags": 2},
{"x": 208, "y": 9, "flags": 2},
{"x": 224, "y": 16, "flags": 2},
{"x": 224, "y": 29, "flags": 2},
{"x": 224, "y": 40, "flags": 2},
{"x": 219, "y": 50, "flags": 2},
{"x": 207, "y": 49, "flags": 2},
{"x": 196, "y": 44, "flags": 2},
{"x": 184, "y": 43, "flags": 2},
{"x": 176, "y": 51, "flags": 2},
{"x": 162, "y": 53, "flags": 2},
{"x": 151, "y": 56, "flags": 2},
{"x": 139, "y": 59, "flags": 2},
{"x": 124, "y": 64, "flags": 2},
{"x": 118, "y": 55, "flags": 2},
{"x": 117, "y": 45, "flags": 2},
{"x": 133, "y": 51, "flags": 2},
{"x": 130, "y": 40, "flags": 2},
{"x": 116, "y": 33, "flags": 2},
{"x": 118, "y": 25, "flags": 2},
{"x": 116, "y": 16, "flags": 2},
{"matrix": [5, 5], "x": 149, "y": 10, "flags": 4},
{"matrix": [5, 4], "x": 162, "y": 9, "flags": 4},
{"matrix": [5, 3], "x": 175, "y": 6, "flags": 4},
{"matrix": [5, 2], "x": 189, "y": 10, "flags": 4},
{"matrix": [5, 1], "x": 202, "y": 16, "flags": 4},
{"matrix": [5, 0], "x": 215, "y": 16, "flags": 1},
{"matrix": [6, 0], "x": 215, "y": 27, "flags": 1},
{"matrix": [6, 1], "x": 202, "y": 27, "flags": 4},
{"matrix": [6, 2], "x": 189, "y": 20, "flags": 4},
{"matrix": [6, 3], "x": 175, "y": 17, "flags": 4},
{"matrix": [6, 4], "x": 162, "y": 19, "flags": 4},
{"matrix": [6, 5], "x": 149, "y": 21, "flags": 4},
{"matrix": [7, 5], "x": 149, "y": 31, "flags": 4},
{"matrix": [7, 4], "x": 162, "y": 30, "flags": 4},
{"matrix": [7, 3], "x": 175, "y": 27, "flags": 4},
{"matrix": [7, 2], "x": 189, "y": 31, "flags": 4},
{"matrix": [7, 1], "x": 202, "y": 37, "flags": 4},
{"matrix": [7, 0], "x": 215, "y": 37, "flags": 1},
{"matrix": [8, 0], "x": 215, "y": 48, "flags": 1},
{"matrix": [8, 1], "x": 202, "y": 48, "flags": 4},
{"matrix": [8, 2], "x": 189, "y": 41, "flags": 4},
{"matrix": [8, 3], "x": 175, "y": 38, "flags": 4},
{"matrix": [8, 4], "x": 162, "y": 40, "flags": 4},
{"matrix": [8, 5], "x": 149, "y": 42, "flags": 4},
{"matrix": [9, 4], "x": 170, "y": 51, "flags": 4},
{"matrix": [9, 2], "x": 156, "y": 53, "flags": 4},
{"matrix": [9, 1], "x": 143, "y": 57, "flags": 4},
{"matrix": [9, 3], "x": 132, "y": 64, "flags": 4}
]
},
"layouts": {
"LAYOUT": {
"layout": [
{"label":"L00", "matrix": [0, 0], "x":0, "y":0},
{"label":"L01", "matrix": [0, 1], "x":1, "y":0},
{"label":"L02", "matrix": [0, 2], "x":2, "y":0},
{"label":"L03", "matrix": [0, 3], "x":3, "y":0},
{"label":"L04", "matrix": [0, 4], "x":4, "y":0},
{"label":"L05", "matrix": [0, 5], "x":5, "y":0},
{"label":"R05", "matrix": [5, 5], "x":8, "y":0},
{"label":"R04", "matrix": [5, 4], "x":9, "y":0},
{"label":"R03", "matrix": [5, 3], "x":10, "y":0},
{"label":"R02", "matrix": [5, 2], "x":11, "y":0},
{"label":"R01", "matrix": [5, 1], "x":12, "y":0},
{"label":"R00", "matrix": [5, 0], "x":13, "y":0},
{"label":"L10", "matrix": [1, 0], "x":0, "y":1},
{"label":"L11", "matrix": [1, 1], "x":1, "y":1},
{"label":"L12", "matrix": [1, 2], "x":2, "y":1},
{"label":"L13", "matrix": [1, 3], "x":3, "y":1},
{"label":"L14", "matrix": [1, 4], "x":4, "y":1},
{"label":"L15", "matrix": [1, 5], "x":5, "y":1},
{"label":"R15", "matrix": [6, 5], "x":8, "y":1},
{"label":"R14", "matrix": [6, 4], "x":9, "y":1},
{"label":"R13", "matrix": [6, 3], "x":10, "y":1},
{"label":"R12", "matrix": [6, 2], "x":11, "y":1},
{"label":"R11", "matrix": [6, 1], "x":12, "y":1},
{"label":"R10", "matrix": [6, 0], "x":13, "y":1},
{"label":"L20", "matrix": [2, 0], "x":0, "y":2},
{"label":"L21", "matrix": [2, 1], "x":1, "y":2},
{"label":"L22", "matrix": [2, 2], "x":2, "y":2},
{"label":"L23", "matrix": [2, 3], "x":3, "y":2},
{"label":"L24", "matrix": [2, 4], "x":4, "y":2},
{"label":"L25", "matrix": [2, 5], "x":5, "y":2},
{"label":"R25", "matrix": [7, 5], "x":8, "y":2},
{"label":"R24", "matrix": [7, 4], "x":9, "y":2},
{"label":"R23", "matrix": [7, 3], "x":10, "y":2},
{"label":"R22", "matrix": [7, 2], "x":11, "y":2},
{"label":"R21", "matrix": [7, 1], "x":12, "y":2},
{"label":"R20", "matrix": [7, 0], "x":13, "y":2},
{"label":"L30", "matrix": [3, 0], "x":0, "y":3},
{"label":"L31", "matrix": [3, 1], "x":1, "y":3},
{"label":"L32", "matrix": [3, 2], "x":2, "y":3},
{"label":"L33", "matrix": [3, 3], "x":3, "y":3},
{"label":"L34", "matrix": [3, 4], "x":4, "y":3},
{"label":"L35", "matrix": [3, 5], "x":5, "y":3},
{"label":"R35", "matrix": [8, 5], "x":8, "y":3},
{"label":"R34", "matrix": [8, 4], "x":9, "y":3},
{"label":"R33", "matrix": [8, 3], "x":10, "y":3},
{"label":"R32", "matrix": [8, 2], "x":11, "y":3},
{"label":"R31", "matrix": [8, 1], "x":12, "y":3},
{"label":"R30", "matrix": [8, 0], "x":13, "y":3},
{"label":"L43", "matrix": [4, 3], "x":2.5, "y":4},
{"label":"L41", "matrix": [4, 1], "x":3.5, "y":4},
{"label":"L42", "matrix": [4, 2], "x":4.5, "y":4},
{"label":"L44", "matrix": [4, 4], "x":5.5, "y":4},
{"label":"R44", "matrix": [9, 4], "x":7.5, "y":4},
{"label":"R42", "matrix": [9, 2], "x":8.5, "y":4},
{"label":"R41", "matrix": [9, 1], "x":9.5, "y":4},
{"label":"R43", "matrix": [9, 3], "x":10.5, "y":4}
]
}
}
}

View File

@@ -0,0 +1,73 @@
/**
* Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
*
* 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 dilemma_keymap_layers {
LAYER_BASE = 0,
LAYER_LOWER,
LAYER_RAISE,
};
#define LOWER MO(LAYER_LOWER)
#define RAISE MO(LAYER_RAISE)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_BASE] = LAYOUT(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LALT,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
KC_LALT, KC_BSPC, KC_SPC, LOWER, RAISE, KC_ENT, KC_DEL, KC_LGUI
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
),
[LAYER_LOWER] = LAYOUT(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, EE_CLR, QK_BOOT, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
),
[LAYER_RAISE] = LAYOUT(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, QK_BOOT, EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
_______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
),
};
// clang-format on

View File

@@ -0,0 +1,2 @@
# Dilemma Max (4x6+4) default keymap

View File

@@ -0,0 +1,20 @@
/**
* Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
*
* 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 DYNAMIC_KEYMAP_LAYER_COUNT 8

View File

@@ -0,0 +1,132 @@
/**
* Copyright 2021 Charly Delay <charly@codesink.dev> (@0xcharly)
* Copyright 2023 casuanoob <casuanoob@hotmail.com> (@casuanoob)
*
* 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 dilemma_keymap_layers {
LAYER_BASE = 0,
LAYER_LOWER,
LAYER_RAISE,
LAYER_POINTER,
};
// Automatically enable sniping-mode on the pointer layer.
// #define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER
#define LOWER MO(LAYER_LOWER)
#define RAISE MO(LAYER_RAISE)
#define PT_Z LT(LAYER_POINTER, KC_Z)
#define PT_SLSH LT(LAYER_POINTER, KC_SLSH)
#ifndef POINTING_DEVICE_ENABLE
# define DRGSCRL KC_NO
# define DPI_MOD KC_NO
# define S_D_MOD KC_NO
# define SNIPING KC_NO
#endif // !POINTING_DEVICE_ENABLE
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[LAYER_BASE] = LAYOUT(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_LCTL, PT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, PT_SLSH, KC_LALT,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
KC_LALT, KC_BSPC, KC_SPC, LOWER, RAISE, KC_ENT, KC_DEL, KC_MUTE
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
),
[LAYER_LOWER] = LAYOUT(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_UNDS,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
RGB_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LBRC, KC_P7, KC_P8, KC_P9, KC_RBRC, XXXXXXX,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
RGB_TOG, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_PPLS, KC_P4, KC_P5, KC_P6, KC_PMNS, KC_PEQL,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
RGB_RMOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAST, KC_P1, KC_P2, KC_P3, KC_PSLS, KC_PDOT,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
),
[LAYER_RAISE] = LAYOUT(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_MNXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLU,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_MPLY, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, KC_MUTE,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
KC_MPRV, KC_HOME, KC_PGUP, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_VOLD,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
XXXXXXX, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
),
[LAYER_POINTER] = LAYOUT(
// ╭──────────────────────────────────────────────────────╮ ╭──────────────────────────────────────────────────────╮
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DPI_MOD, S_D_MOD, S_D_MOD, DPI_MOD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
XXXXXXX, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, XXXXXXX, KC_RSFT, KC_RCTL, KC_RALT, KC_RGUI, XXXXXXX,
// ├──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────┤
XXXXXXX, _______, DRGSCRL, SNIPING, EE_CLR, QK_BOOT, QK_BOOT, EE_CLR, SNIPING, DRGSCRL, _______, XXXXXXX,
// ╰──────────────────────────────────────────────────────┤ ├──────────────────────────────────────────────────────╯
XXXXXXX, KC_BTN2, KC_BTN1, KC_BTN3, KC_BTN3, KC_BTN1, KC_BTN2, XXXXXXX
// ╰───────────────────────────────────╯ ╰───────────────────────────────────╯
),
};
// clang-format on
#ifdef POINTING_DEVICE_ENABLE
# ifdef DILEMMA_AUTO_SNIPING_ON_LAYER
layer_state_t layer_state_set_user(layer_state_t state) {
dilemma_set_pointer_sniping_enabled(layer_state_cmp(state, DILEMMA_AUTO_SNIPING_ON_LAYER));
return state;
}
# endif // DILEMMA_AUTO_SNIPING_ON_LAYER
#endif // POINTING_DEVICE_ENABLEE
#ifdef RGB_MATRIX_ENABLE
// Forward-declare this helper function since it is defined in rgb_matrix.c.
void rgb_matrix_update_pwm_buffers(void);
#endif
#ifdef ENCODER_MAP_ENABLE
// clang-format off
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[LAYER_BASE] = {ENCODER_CCW_CW(KC_WH_U, KC_WH_D), ENCODER_CCW_CW(KC_VOLU, KC_VOLD)},
[LAYER_LOWER] = {ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(KC_LEFT, KC_RGHT)},
[LAYER_RAISE] = {ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_VOLU, KC_VOLD)},
[LAYER_POINTER] = {ENCODER_CCW_CW(RGB_HUD, RGB_HUI), ENCODER_CCW_CW(RGB_SAD, RGB_SAI)},
};
// clang-format on
#endif // ENCODER_MAP_ENABLE
void shutdown_user(void) {
#ifdef RGB_MATRIX_ENABLE
rgb_matrix_sethsv_noeeprom(HSV_RED);
rgb_matrix_update_pwm_buffers();
#endif // RGB_MATRIX_ENABLE
}

View File

@@ -0,0 +1,47 @@
# Dilemma Max `via` keymap
The Dilemma Max `via` keymap is based on the original [Dactyl Manuform](../../../../../handwired/dactyl_manuform) default keymap, with some features and changes specific to the Dilemma.
This layout also supports VIA.
## Customizing the keymap
### Dynamic DPI scaling
Use the following keycodes to change the default DPI:
- `POINTER_DEFAULT_DPI_FORWARD`: increases the DPI; decreases when shifted;
- `POINTER_DEFAULT_DPI_REVERSE`: decreases the DPI; increases when shifted.
There's a maximum of 16 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information.
Use the following keycodes to change the sniping mode DPI:
- `POINTER_SNIPING_DPI_FORWARD`: increases the DPI; decreases when shifted;
- `POINTER_SNIPING_DPI_REVERSE`: decreases the DPI; increases when shifted.
There's a maximum of 4 possible values for the sniping mode DPI. See the [Dilemma documentation](../../README.md) for more information.
### Drag-scroll
Use the `DRAGSCROLL_MODE` keycode to enable drag-scroll on hold. Use the `DRAGSCROLL_TOGGLE` keycode to enable/disable drag-scroll on key press.
### Circular scroll
By default, the firmware is configured to enable the circular scroll feature on Cirque trackpad.
To disable this, add the following to your keymap:
```c
#undef POINTING_DEVICE_GESTURES_SCROLL_ENABLE
```
### Sniping
Use the `SNIPING_MODE` keycode to enable sniping mode on hold. Use the `SNIPING_TOGGLE` keycode to enable/disable sniping mode on key press.
Change the value of `DILEMMA_AUTO_SNIPING_ON_LAYER` to automatically enable sniping mode on layer change. By default, sniping mode is enabled on the pointer layer:
```c
#define DILEMMA_AUTO_SNIPING_ON_LAYER LAYER_POINTER
```

View File

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

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