Compare commits

..
122 Commits
Author SHA1 Message Date
Drashna Jaelre a116b3f1ae Improve EEPROM defaults for Dynamic Keymaps (#12853) 2021-05-10 15:37:36 -07:00
Zach WhiteandErovia bc38c38f8c Move the module checking and updating to lib/python (#12416)
* move the module checking and updating to lib/python

* make flake8 happy

* Update lib/python/qmk/cli/__init__.py

Co-authored-by: Erovia <[email protected]>

* prompt the user to disable developer mode

* pyformat

* flake8

Co-authored-by: Erovia <[email protected]>
2021-05-10 12:00:52 -07:00
Zach White a3e7f3e7c5 Improve our CI tests (#11476)
* add a test and dry-run to qmk generate-api

* add a dry-run to qmk pyformat

* Add a --dry-run to qmk cformat

* reverse the order of nose2 and flake8 tests

* run CI test against cformat and pyformat

* fix programming errors

* tweak job name

* fix argument

* refine the files we select

* fix stack trace in --ci

* make cformat exit clean

* fix c file extensions

* decouple CI from pyformat

* remove --ci arg

* make ci happy

* use the environment var instead

* change output to text

* fix log message

* replace tabs
2021-05-10 11:18:44 -07:00
James Young 66ed80ad3a Lagrange handwired Configurator bugfix (#12854)
* use human-friendly formatting

* correct key object order
2021-05-10 10:37:05 -07:00
Joel ChallisandZach White 3f854e16ac Catch 'LAYOUTS = all' in lint (#12848)
Co-authored-by: Zach White <[email protected]>
2021-05-09 22:39:48 +02:00
Ryan 4fa32f0f04 KBDMini refactor (#12850) 2021-05-10 05:16:29 +10:00
Zach White 5c924efa04 fix the makefile snippet so flake8 and yapf don't fight (#12849) 2021-05-09 11:30:17 -07:00
Erovia 30aae6298b CLI: Use BASH if SHELL variable is not set (Windows) (#12847) 2021-05-09 19:19:42 +02:00
github-actions[bot]andQMK Bot 6c5e94061c [CI] Format code according to conventions (#12838)
Co-authored-by: QMK Bot <[email protected]>
2021-05-10 03:15:00 +10:00
Nick BrasselandErovia 1426ffc0ee Add script to perform parallel builds. (#12497)
Co-authored-by: Erovia <[email protected]>
2021-05-09 17:06:44 +02:00
Joel Challis f544b60aaa Align qmk info ascii logic with milc logging (#11627) 2021-05-09 15:53:18 +02:00
Joel Challis 7725d813c9 Allow MAKE environment override for 'qmk clean' (#12473) 2021-05-09 12:57:49 +02:00
Purdea AndreiandDrashna Jaelre 60a39f4f5d haptic: correct size of reserved field in the haptic structure. This saves 1 byte of wasted SRAM. (#12483)
Co-authored-by: Drashna Jaelre <[email protected]>
2021-05-08 20:45:41 -07:00
Sean Johnson df57590ec6 add ttys0's planck and preonic keymaps (#10560)
* resynced with upstream, and adjusted keymap layout for planck

* updated keyboard layout

Signed-off-by: Sean Johnson <[email protected]>

* swapped out bspc for del on symb layer

Signed-off-by: Sean Johnson <[email protected]>

* fixed typo with brightness media keys

* turns out my brightness config was correct, it was macOS that had gone sideways

* updated to bring in line with requirements for merging into upstream

* removed redundant config from rules.mk

moved media controls to FUNC layer for Planck layout

* added GPL2+ compatible license header

Signed-off-by: Sean Johnson <[email protected]>

* removed unused MIDI comment

Signed-off-by: Sean Johnson <[email protected]>

* removed extraneous MIDI comments

* removed extraneous comments
2021-05-08 20:00:11 -07:00
Seth Barberee b7fe24923e Update sethBarberee Userspace (#12620)
* update for LTO and guard RGBLED_SPLIT

* Revert "update for LTO and guard RGBLED_SPLIT"

This reverts commit ce81177cbe330ae3e1e14c264dc0cb0946f08d70.

* Revert "Revert "update for LTO and guard RGBLED_SPLIT""

This reverts commit 67da0ce9f38777064ad094c1ecba7ce17a40994f.

* update iris keymap for keymap_kc removal and overhaul userspace

* add licenses

* fix tap_dance error when rgblight is disabled and update/clean iris/sinc maps
2021-05-08 10:26:51 -07:00
067a6f0174 Hbbisenieks keymap update to remove kc_ keymaps (#12391)
* hbbisenieks keymap

* change from kc_ keymap

* Apply suggestions from code review

Co-authored-by: Takeshi ISHII <[email protected]>

Co-authored-by: Hilary Brenum <[email protected]>
Co-authored-by: Zach White <[email protected]>
Co-authored-by: Takeshi ISHII <[email protected]>
2021-05-08 09:35:32 -07:00
Mateusz Piotrowski 189e0d5b98 Update FreeBSD install method (#12815)
The easiest way to install QMK CLI and all the necessary
dependencies on FreeBSD is to use the packages
from the official FreeBSD Ports Collection.

This is possible since QMK CLI has been added to the Ports Collection:
https://www.freshports.org/sysutils/py-qmk/
2021-05-07 19:22:05 +02:00
stanrc85 56e5a83e68 [Keymap] My Arisu layout setup (#12647) 2021-05-07 19:51:47 +10:00
kb-elmo 34f3918244 Fix DZ60 64 key layout (#12551)
* add gk64 layout

* Apply suggestions from code review

* fix dz60 gk64 layout
2021-05-06 14:07:51 -07:00
timothynsheehan f3a1629469 Add docs on multiple encoders sharing pins (#11678)
Added explanation of how multiple encoders can share pins and the limitations of this configuration
2021-05-06 20:17:10 +02:00
Ryan 3d922e6257 Add a handful of consumer/gendesk page usages (#12811) 2021-05-06 17:16:07 +01:00
Mateusz Piotrowski 38b9f67c3b Fix qmk flash on FreeBSD (#12085)
When the USB device is connected, FreeBSD creates not one, but three
device nodes in /dev, e.g.: /dev/ttyU0, /dev/ttyU0.init, and
/dev/ttyU0.lock.

As a result, this leads to the USB variable containing 3 paths
(and therefore, whitespace) and messages like this one:

    Device /dev/ttyU0
    /dev/ttyU0.init
    /dev/ttyU0.lock has appeared; assuming it is the controller.

This changes fixes the use of the -z flag of "[" (see test(1)). Also, it
removes undesired paths from the USB variable, leaving only
one path there (i.e., "/dev/ttyU0").
2021-05-06 09:26:50 +10:00
Andrew Kannan c6778dde82 [Keyboard] ai03 Andromeda (#12676)
* Add andromeda to qmk

* Fix

* Another fix

* Fix via map

* Update andromeda

* Update confs for new qmk master

* Apply suggestions from code review

* Remove the ch hal and mcu conf as the andromeda does not need extra peripherals

* Update keyboards/ai03/andromeda/rules.mk

* Apply suggestions from code review

* Add bootloader note to readme
2021-05-04 12:38:38 -07:00
Matrix Zou c27a458799 [Keyboard] added Time 80 Reforged by Fox Lab (#11996)
* [Keyboard] added Time 80 Reforged by Fox Lab

* added Time 80 Reforged by Fox Lab
* split to two sub directories for universal and hotswap pcb
* Apply suggestions from code review

* Modified codes as suggested

* update code as suggested

* rgb log light keymaps added

* update code as suggested

* enable rgblight right to TIME logo, and add keymaps for it's control
* Apply suggestions from code review

* enable built-in switch LED support
* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review

* Apply suggestions from code review
2021-05-04 01:40:26 -07:00
James Young 8ed1addd1e Update noroadsleft userspace and keymaps (2021-05-03) (#12796)
* Set Dvorak as the standard base layer

* Remove unneeded includes

* Remove custom handling for Quake 2

Have now rewritten my in-game configuration to use Dvorak mapping instead of QWERTY, which means I don't need any of this stuff.

* Clean up comments in KC60 keymap
2021-05-03 17:31:36 -07:00
Joel Challis 25c97e0019 Shim cli to new keyboard script (#12780)
* Shim cli to new keyboard script

* Shim cli to new keyboard script

* Add docs
2021-05-02 16:59:10 +01:00
Joel Challis 0fd8faa1ad Fix unused import in recent generation code (#12781) 2021-05-02 08:43:40 -07:00
Joel Challis fc2b51194c Allow <keyboard>.h to be optional when going data driven (#12706)
* Allow <keyboard>.h to be optional when going data driven

* Remove stub files as no longer required

* Rename function

* Remove include of layouts.h for now

* Take advantage of type=keyboard_folder

* Take advantage of type=keyboard_folder - kb should still be mandatory
2021-05-01 02:00:04 +01:00
k.bigwheel 18dc12cd78 [Keyboard] Fix bootloader rule for meishi2 keyboard (#12740) 2021-05-01 06:23:39 +10:00
489c814a48 Add breeze variants (#12596)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Adrian <[email protected]>
2021-04-30 19:45:36 +02:00
James Young 8190a795ed DracuLad: add Configurator data and rework layout macro (#12727)
* add info.json file

* refactor keymaps for readability

* rework layout macro

Arranges the layout macro and keycodes to resemble the physical layout.

* readme touch-up

Corrections to capitalization and spelling, and removal of extra white space.
2021-04-29 11:25:30 -07:00
d3963a61cb Add firmware for CozyKeys Bloomer keyboard (#12639)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Erovia <[email protected]>
2021-04-29 18:55:01 +02:00
Joel Challis 4abc3ceb4b Align drivers.txt with toolbox (#12741) 2021-04-30 02:48:34 +10:00
Wilba 05ee0afd54 Fix F13 LED issue for WT75-B, WT75-C (#12729) 2021-04-29 03:39:14 -07:00
Nick Brassel 54e8dd0885 Fix up bad keycode in #12405. (#12722) 2021-04-28 11:46:13 +01:00
Xelus22 63cdf80885 add default folder to standard (#12712) 2021-04-28 11:39:14 +10:00
alittlepeace 2af86cec3d YMDK Wings: Update config.h (#12718)
Adds Caps Lock LED indicator configuration.
2021-04-27 13:54:34 -07:00
James Young e5cde191e1 Add flashing instructions to GMMK Pro readme (#12719) 2021-04-27 12:36:53 -07:00
W. Ducky 7be4047df0 GMMK Pro: Fixed Bootmagic Lite support; personal keymap; VIA support (#12554)
* Added WholesomeDucky keymap for GMMK Pro

* Finalized keymap & added 1000hz polling for GMMK Pro

* Corrected for RAlt and Fn being swapped

* Fixed RAlt and Fn being swapped in the layout definition. Updated personal keymap to reflect fixed layout.

* Removed an old comment from personal keymap for GMMK Pro

* added VIA support

* Defined bootmagic row and column for GMMK Pro Esc key

* Update keyboards/gmmk/pro/config.h

* Update keyboards/gmmk/pro/keymaps/via/keymap.c

* Update keyboards/gmmk/pro/keymaps/via/keymap.c
2021-04-27 11:37:11 -07:00
3fe356e65c Add Draculad keyboard (#12604)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Erovia <[email protected]>
Co-authored-by: mangoiv <[email protected]>
2021-04-27 19:41:11 +02:00
Ryan Mitchell b95231c1e3 GMMK Pro: add RESET binding, fix layout macro bug (#12684)
* add RESET binding, fix layout mod key bug (fixes #12683)

* remove underscore #define and use core's instead
2021-04-27 10:23:41 -07:00
James Young f9fb52951d Update noroadsleft userspace and keymaps (2021-04-26) (#12711)
* Update noroadsleft userspace and keymaps (2021-04-26)

- add Discipline keymap
- move Emulated Non-US Backslash, Numeric Keypad and F13-F24 code fully to userspace
- re-add some custom keycode handling I accidentally deleted
- update VRSN keycode
- update KC60 and userspace readmes

* remove Git readme from kc60 keymap

* update kc60:noroadsleft readme

Concatenates this readme into one file, and updates the image links.
2021-04-26 23:44:45 -07:00
Andrew Kannan b5419bd574 Add python-version to gitignore (#12678) 2021-04-26 21:18:17 +02:00
Xelus22 8f660ca1e6 [Keyboard] fix planck light via endpoints (#12701) 2021-04-26 10:24:19 -07:00
Xelus22 2f47bafd6a fix configs (#12631) 2021-04-26 12:52:00 +10:00
Luis Moreno 417a07c22d [Config] Add VSCode workspace files to .gitignore (#12469) 2021-04-26 06:46:28 +10:00
Xelus22andNick Brassel 611cd80861 [Keyboard] Ninjin (#12496)
* ninjin init

* put in gpl thing

* underglow

* update to latest chibios

* fix gpl headers

* remove other files

* fix header

* Update keyboards/xelus/ninjin/readme.md

Co-authored-by: Nick Brassel <[email protected]>

* Update keyboards/xelus/ninjin/mcuconf.h

Co-authored-by: Nick Brassel <[email protected]>

* Update keyboards/xelus/ninjin/halconf.h

Co-authored-by: Nick Brassel <[email protected]>

Co-authored-by: Nick Brassel <[email protected]>
2021-04-25 18:57:22 +10:00
peepeetee 89bd04b9eb peepeetee's *very janky* hub16 keymap (#12506)
* peepeetee's bodged hub16 keymap

* add layer 3 lighting

* actually adds layer 3 lighting

* fixes layer 0; behavior is that layor 0 is unaltered from base pattern, while other states have distinct solid colors
2021-04-25 14:02:42 +10:00
calebchongc 5b394e82c9 Update checking board master function (#12493)
changed is_master to is_keyboard_master()
2021-04-25 13:59:37 +10:00
Sergey Vlasov da6e888a32 Do not leak weak mods from tap dance to the interrupting keypress (#12471)
Tap dance callbacks may register weak mods; one case when it happens
is when a tap dance registers a key with modifiers.  When the tap
dance is interrupted by pressing another key, these weak mods could
affect the interrupting key (normally any stale weak mods are cleared
at the start of action_exec() when handling a keypress event, but the
tap dance interrupt check code is called later, and the weak mods left
by that code were not cleared).  Add another clear_weak_mods() call to
preprocess_tap_dance() to make sure that the interrupting keypress is
not affected by unrelated weak mods from the previous tap dance.

Fixes #12445.
2021-04-25 13:41:37 +10:00
github-actions[bot]andQMK Bot d3bf3d3b1c Format code according to conventions (#12681)
Co-authored-by: QMK Bot <[email protected]>
2021-04-25 13:15:48 +10:00
Purdea Andrei dbd65d01b6 Fix how USB queue overflow is handled in chibios. (#12576)
* Fix how USB queue overflow is handled in chibios.

This commit reverts PR 12472 (commit c823fe2d3f23ed090e36ce39beed4c448298bd2f),
and it implements the original intent of the commit in a better way.
The original intent of the above mentioned commit was to not deadlock the
keyboard when console is enabled, and hid_listen is not started.

The above mentioned commit had a few drawbacks:
1) When a lot of data was printed to the console, the queue would get full,
and drop data, even if hid_listen was running. (For example having matrix debug
enabled just didn't work right at all)
2) I believe the function in which this was implemented is used by all other
USB endpoints, so with the above change, overflow, and data loss could
happen in other important functions of QMK as well.

This commit implements deadlock prevention in a slightly similar way to how
it's done on AVR. There is an additional static local variable, that memorizes
whether the console has timeouted before. If we are in the timeouted=false
state, then we send the character normally with a 5ms timeout. If it does
time out, then hid_listen is likely not running, and future characters should
not be sent with a timeout, but those characters should still be sent if there
is space in the queue. The difference between the AVR implementation and this
one is that the AVR implementation checks the queue state directly, but this
implementation instead attempts to write the character with a zero timeout.
If it fails, then we remain in the timeouted=true state, if it succeeds, then
hid_listen started removing data from the queue, so we can go out of the
timeouted=true state.

* Added comment explaining the timeouted logic to console flow control.

* Console flow control: refactor chibios flowcontrol code to make it more readable, and rename the timeouted variable to timed_out on both chibios and lufa. Changed comments to says timed_out is an approximation of listener_disconnected, to make it clear that it's not the same thing

* fix typo
2021-04-25 13:11:41 +10:00
c7ca67a036 Add RGB matrix suspend wake function for Planck/rev6 (#12290)
* Add RGB matrix suspend wake function for Planck/rev6

* Update suggested definition to allow user override.

Co-authored-by: Nick Brassel <[email protected]>

Co-authored-by: filterpaper <filterpaper@localhost>
Co-authored-by: Nick Brassel <[email protected]>
2021-04-25 11:47:43 +10:00
Nick Brassel b88498ba85 Fix CLI incorrectly following DEFAULT_FOLDER (#12529)
* Attempt to sort out incorrectly following DEFAULT_FOLDER.

* Fix CI checks.

* qmk pyformat
2021-04-25 11:15:54 +10:00
Leon Anavi 0c50a9eae9 [Keymap] Add Git keymap for ANAVI Macro Pad 8 (#12436)
Git keymap for ANAVI Macro Pad 8 with the following shortcuts.
On the first row from left to right:

- git status
- git log
- git pull
- git push

On the second row from left to right:

- git diff
- git add
- git commit
- FN key to switch to the 2nd layout and control lights

Reduce the number of supported RGB animations and effects in
config.h to shrink the firmware size and fit it on the device.

Signed-off-by: Leon Anavi <[email protected]>
2021-04-25 11:14:28 +10:00
gkeyboard 35944df7b0 Add lm60n keyboard (#12408)
Add lm60n keyboard
2021-04-25 11:04:38 +10:00
Matthew Dias 2a45d99059 Add m3n3van rev2 (#12405)
* Add m3n3van rev2

* Add via support
2021-04-25 11:02:00 +10:00
Christian Fehmer 06f8cb1b8a Add VIA support for Filco Majestouch 2 /w The Tiger Lily (#12401) 2021-04-25 11:00:56 +10:00
Pavlos Vinieratos b2b075c123 not accessible and not needed anyway for a test keymap (#12366) 2021-04-25 11:00:12 +10:00
SonOfAresandRyan 54dc6b7bf2 adding keyboard (#12414)
* adding keyboard

* Update keyboards/iriskeyboards/readme.md - picture size

Co-authored-by: Ryan <[email protected]>

* Delete iriskeyboards.json, it belongs in VIA repo

* Update info.json

* Update readme.md

* Update keyboards/iriskeyboards/keymaps/default/keymap.c

Removing unnecessary layers

Co-authored-by: Ryan <[email protected]>

Co-authored-by: Ryan <[email protected]>
2021-04-22 17:15:28 -04:00
ffa1507c2c VIA support for Planck Rev6 (#9144)
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: George Wietor <[email protected]>
Co-authored-by: Jack Humbert <[email protected]>
2021-04-22 10:13:44 -07:00
rainkeebsandDrashna Jaelre 4f2afaa6fb Delilah keyboard added (#12638)
* Delilah keyboard added

* Apply suggestions from code review

Co-authored-by: Drashna Jaelre <[email protected]>

* removed unnecessary lines as per review

* removed unnecessary lines as per review

Co-authored-by: Drashna Jaelre <[email protected]>
2021-04-22 10:58:09 -04:00
MechMaster48 0b6d8150e4 Personal keymap for dztech DZ60RGB plus README.md (#12485)
* Personal keymap and README to go along with it.

* Noticed typo in README and removed name from comment in keymap

* Added GPL copyright notice
2021-04-21 19:50:26 -04:00
Joshua Coffey 054adbaf1e Update for the dodger keymap for the Planck (#12456) 2021-04-20 21:01:54 +02:00
Drashna JaelreandNick Brassel 6b5e349d7e Add additional info to PR Checklist (#12630)
Co-authored-by: Nick Brassel <[email protected]>
2021-04-20 20:12:57 +02:00
Joel Challis 1cecd593c8 Fix for gcc10 teensy_lc eeprom build warning (#12587) 2021-04-20 10:51:55 -07:00
2bccb7132d [Keyboard] Siris (#12415)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Swiftrax <[email protected]>
2021-04-20 10:50:06 -07:00
mechlovin 0d5458a7ad [Keyboard] add adelais rev4 (#12443) 2021-04-20 10:47:58 -07:00
Felix JenandRyan cce9ddff80 [Keyboard] Added BKS65 Solder PCB (#12451)
Co-authored-by: Ryan <[email protected]>
2021-04-20 10:47:31 -07:00
d330203486 [Keyboard] Add amigopunk, a handwired 75% ALPS (#12489)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-04-20 10:46:19 -07:00
kb-elmo 45a557641d [Keyboard] Matrix 1.2og AVR PCB - VIA support (#12534) 2021-04-20 10:24:36 -07:00
Mikkel Jeppesen 271c7d4923 [Keyboard] Added support for the older no_led revision (#12563) 2021-04-20 10:23:00 -07:00
duoshockandonline 54bad99e0e [Keyboard] Update ISO Macro vendor ID to meet VIA requirement (#12564)
Co-authored-by: online <[email protected]>
2021-04-20 10:22:29 -07:00
kb-elmo 9a3ba6874c [Keyboard] fix bella debounce (#12568) 2021-04-20 10:21:59 -07:00
yynmtandyynmt 5f670fbdc4 [Keyboard] Add Acperience12 macropad (#12573)
Co-authored-by: yynmt <[email protected]>
2021-04-20 10:21:39 -07:00
Dimitris PapavasiliouandDimitris Papavasiliou bd07120d33 [Keyboard] Fix and improve SPI transport in the Lagrange (#12606)
Co-authored-by: Dimitris Papavasiliou <[email protected]>
2021-04-20 10:17:39 -07:00
4ff16fe73e [Keyboard] doodle macropad - 03/14 (#12243)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2021-04-20 09:59:05 -07:00
mechlovin 21c147c11b [Keyboard] Refactor IF87_rev1 (#12574) 2021-04-20 09:56:32 -07:00
752f5d6eb6 [Keyboard] Fixing files for Orto4exent (#12607)
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
2021-04-20 09:32:20 -07:00
obosobandRyan b6c353db0c [Keyboard] Set OLED_DISPLAY_128X64 for Arch-36 (#12609)
Co-authored-by: Ryan <[email protected]>
2021-04-20 09:23:48 -07:00
GLozares 666944df2e [Keyboard] Add millipad keypad and default keymap (#12522) 2021-04-20 09:15:21 -07:00
Xelus22andRyan 3d37afd495 [Keyboard] Pachi Mini 32u4 (#12533)
Co-authored-by: Ryan <[email protected]>
2021-04-20 09:11:48 -07:00
Joel Challis f778ede8bd Initial firmware for Forever65 (#12572) 2021-04-20 16:17:47 +01:00
yiancarandRyan 8405d28670 [Keyboard] Carbo65 (#12406)
Co-authored-by: Ryan <[email protected]>
2021-04-19 21:12:48 -07:00
Jos Boersema f93ad79f41 [Keymap] Minifan minor issues (#12592) 2021-04-19 19:40:18 -07:00
kiwikeyandRyan dffa089173 [Keyboard] Add Wanderland - An Alice-layout keyboard (#12516)
Co-authored-by: Ryan <[email protected]>
2021-04-19 11:04:03 -07:00
JaeheeandRyan 3990c0f43d [Keyboard] Add jkdlab/binary_monkey (#12374)
Co-authored-by: Ryan <[email protected]>
2021-04-19 09:39:54 -07:00
peepeetee 20f35afd53 Fix bm68rgb led map (#12503) 2021-04-19 20:15:23 +10:00
AaronVerDowandAaron VerDow 00eea387fc [Keymap] Iracing replay keymap (#12461)
Co-authored-by: Aaron VerDow <[email protected]>
2021-04-19 02:23:20 -07:00
Robert VerstandRobert Verst 2274631c8f [Keymap] Fix handling of RV_LOCK and RV_SNAP for windows (#12498)
Co-authored-by: Robert Verst <[email protected]>
2021-04-19 02:22:49 -07:00
jack 81be065fa5 [Keyboard] VIA Support for LCK75 (#12402) 2021-04-19 02:22:18 -07:00
Wilba 53a35c0d0c [Keyboard] Update RAMA WORKS M50-A (#12459) 2021-04-19 02:21:27 -07:00
Michael Stapelberg cfbd9ba0e7 eclipse: recommend changing the default project make target (#12447)
This is required for example for quickly iterating with a debugger, where
Eclipse will build the project automatically.

It’s also shorter than the previous steps, which I think might not have been
updated since
https://qmk.fm/changes/2017-09-08-making-from-root-and-no-more-makefiles
2021-04-19 02:20:17 -07:00
Benedict Tan 5581ea8809 [Keyboard] Update dz60rgb default keymap (#12488)
The keymap for this PCB as of April 5, 2020 has a 4rth, largely superfluous layer, creating a total of 5 layers.

When ported to VIA, this results in a layer that users can access but cannot edit. I propose removing this layer completely along with it's access from the default.
2021-04-19 01:20:51 -07:00
Sergey Vlasov fe9bd0afb9 Fix F303 audio output on A4 with the dac_basic driver (#12480)
The dac_basic driver did not work properly with `#define AUDIO_PIN A4`
(instead of configuring the A4 pin, the driver actually was switching
the A5 pin to analog mode, breaking any other usage of that pin in
addition to emitting a distorted signal on the improperly configured
A4 pin).  Fix the code to configure the A4 pin as intended.
2021-04-19 00:32:14 -07:00
Michael Stapelberg 17c880b076 [Keymap] add kinesis/keymaps/stapelberg (#12430) 2021-04-18 23:42:40 -07:00
ef6802ca60 New keyboard keymap, small keymap updates to mm2 keymap (#12310)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Alex <[email protected]>
2021-04-18 23:17:34 -07:00
Wilba c7adb7a352 [Keyboard] Add wilba.tech WT60-G2 (#12395) 2021-04-18 23:12:48 -07:00
Wilba 10dfc8d92f [Keyboard] Add wilba.tech WT65-FX (#12394) 2021-04-18 23:12:26 -07:00
Wilba c7214e1d13 [Keyboard] Add wilba.tech WT65-F (#12393) 2021-04-18 23:12:05 -07:00
Eric WoodandRyan 94d9d2bb31 [Keyboard] Add handwired/frankie_macropad (#12349)
Co-authored-by: Ryan <[email protected]>
2021-04-18 23:04:16 -07:00
Conor Burns 0b560673ce [Keyboard] Updates for 0xCB 1337 (#12336) 2021-04-18 23:00:05 -07:00
Ben Fiedler 2b7078cd21 [Keymap] add my quefrency layout (#12104) 2021-04-18 22:44:23 -07:00
Angel RojasandDrashna Jaelre 99c46e4b73 [Keyboard] Add G1_65 keyboard (#12140)
Co-authored-by: Drashna Jaelre <[email protected]>
2021-04-18 22:30:36 -07:00
1e19227b31 [Keyboard] Capsunlocked CU80 Squish and Refactor (#12193)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Erovia <[email protected]>
2021-04-18 22:24:30 -07:00
LIParadiseandLIParadise 9b8c5c1860 [Keyboard] Helen80 matrix fixes (#11969)
Co-authored-by: LIParadise <a58524andy>
2021-04-18 22:05:21 -07:00
0afbf8cc3c [Keyboard] Add Dystopia keyboard (#11997)
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Erovia <[email protected]>
Co-authored-by: Sanctified <[email protected]>
2021-04-18 21:53:33 -07:00
2aab8a114e [Keyboard] Update MJ61 architecture to support multi version (#11787)
Co-authored-by: Ryan <[email protected]>
Co-authored-by: James Young <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2021-04-18 21:02:13 -07:00
6b2a3a67a6 [Keyboard] Adding of Monarch keyboard (#11769)
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Ramon Imbao <[email protected]>
2021-04-18 20:54:07 -07:00
Ian McLinden cfefecd951 [Keyboard] Added Koolertron AMAG23 (#11725) 2021-04-18 20:44:32 -07:00
05357d7937 [Keyboard] Add Tau4 keyboard (#11361)
with default and i2cscanner keymaps

Co-authored-by: Ryan <[email protected]>
Co-authored-by: James Young <[email protected]>
2021-04-18 20:36:40 -07:00
Nick Brassel a0089aa345 Fixup Satisfaction75 bootprocess. (#12621)
- Use normal ChibiOS I2C driver.
- Move drawing code to housekeeping -- previously it was during matrix
  scan, which gets executed during bootmagic checks. However, bootmagic
  is invoked before QWIIC subsystem is enabled, which means I2C isn't
  configured yet. All I2C calls to the OLED fail with timeouts while
  bootmagic is being checked. Housekeeping ensures this is executed once
  the system has initialised and settled.
- QWIIC OLED driver: properly clear out OLED buffer when clearing screen.
2021-04-19 13:08:01 +10:00
Richard Dawe eb7e668eb9 Add RGB controls to picture; label Layer 3 correctly (#12337) 2021-04-18 18:39:15 -04:00
a3d717cb83 Keymap: Orthocarpus keymap for idobo (#12462)
* Keymap: Orthocarpus keymap for idobo

* Update keyboards/idobo/keymaps/gkbd_75/config.h

Co-authored-by: Drashna Jaelre <[email protected]>

Co-authored-by: Giorgi Chavchanidze <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
2021-04-18 18:22:56 -04:00
Antoine R. Dumont fd65451679 keyboardio/atreus: Add ardumont keymap (#12479) 2021-04-18 18:14:23 -04:00
Pierre ChevalierandRyan d0973e1cfb Add ferris 0.2 (#12133)
Co-authored-by: Ryan <[email protected]>
2021-04-18 17:51:45 +02:00
MarioCoronaandErovia c32264d9b7 mcrown crkbd new keymap (#12092)
Co-authored-by: Erovia <[email protected]>
2021-04-17 17:46:46 +02:00
Harshit GoelandErovia 09a392433a Ergodone via support (#11618)
Co-authored-by: Erovia <[email protected]>
2021-04-16 16:26:19 +02:00
sendmmsg 3975c712f0 Bug in beautifier script, compound modifiers not correctly parsed (#12595) 2021-04-16 16:23:30 +02:00
Wilba a8c013a145 Fix audio on WT60-XT (#12526) 2021-04-15 13:19:41 -04:00
Jay Greco a69616c45c Optimize NIBBLE oled_bongocat keymap to reduce flash usage (#12330)
* Optimize with squeez-o frame compression

Adds VIA support!

* Clean up for PR

+ Add copyright header
- Remove debug print statements
2021-04-15 13:04:26 -04:00
MechMerlin 39d31d3ee4 update readme (#12322) 2021-04-15 13:01:25 -04:00
624 changed files with 20977 additions and 3843 deletions

No files matched your search

+28 -33
View File
@@ -1,47 +1,42 @@
name: Format Codebase name: PR Lint Format
on: on:
push: pull_request:
branches: paths:
- master - 'drivers/**'
- develop - 'lib/arm_atsam/**'
- 'lib/lib8tion/**'
- 'lib/python/**'
- 'platforms/**'
- 'quantum/**'
- 'tests/**'
- 'tmk_core/**'
jobs: jobs:
format: lint:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: qmkfm/base_container
# protect against those who develop with their fork on master container: qmkfm/base_container
if: github.repository == 'qmk/qmk_firmware'
steps: steps:
- uses: rlespinasse/[email protected] - uses: rlespinasse/[email protected]
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with: with:
token: ${{ secrets.API_TOKEN_GITHUB }} fetch-depth: 0
- name: Install dependencies - uses: trilom/[email protected]
run: | id: file_changes
apt-get update && apt-get install -y dos2unix
- name: Format files
run: |
bin/qmk cformat -a
bin/qmk pyformat
bin/qmk fileformat
- name: Become QMK Bot
run: |
git config user.name 'QMK Bot'
git config user.email '[email protected]'
- name: Create Pull Request
uses: peter-evans/create-pull-request@v3
with: with:
delete-branch: true output: ' '
branch: bugfix/format_${{ env.GITHUB_REF_SLUG }} fileOutput: ' '
author: QMK Bot <[email protected]>
committer: QMK Bot <[email protected]> - name: Run qmk cformat and qmk pyformat
commit-message: Format code according to conventions shell: 'bash {0}'
title: '[CI] Format code according to conventions' run: |
qmk cformat -n $(< ~/files.txt)
cformat_exit=$?
qmk pyformat -n
pyformat_exit=$?
exit $((cformat_exit + pyformat_exit))
+2
View File
@@ -50,6 +50,7 @@ doxygen/
.browse.VC.db* .browse.VC.db*
*.stackdump *.stackdump
# Let these ones be user specific, since we have so many different configurations # Let these ones be user specific, since we have so many different configurations
*.code-workspace
.vscode/c_cpp_properties.json .vscode/c_cpp_properties.json
.vscode/launch.json .vscode/launch.json
.vscode/tasks.json .vscode/tasks.json
@@ -71,6 +72,7 @@ id_rsa_*
# python things # python things
__pycache__ __pycache__
.python-version
# prerequisites for updating ChibiOS # prerequisites for updating ChibiOS
/util/fmpp* /util/fmpp*
-44
View File
@@ -3,7 +3,6 @@
""" """
import os import os
import sys import sys
from importlib.util import find_spec
from pathlib import Path from pathlib import Path
# Add the QMK python libs to our path # Add the QMK python libs to our path
@@ -12,52 +11,9 @@ qmk_dir = script_dir.parent
python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve() python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve()
sys.path.append(str(python_lib_dir)) sys.path.append(str(python_lib_dir))
def _check_modules(requirements):
""" Check if the modules in the given requirements.txt are available.
"""
with Path(qmk_dir / requirements).open() as fd:
for line in fd.readlines():
line = line.strip().replace('<', '=').replace('>', '=')
if len(line) == 0 or line[0] == '#' or line.startswith('-r'):
continue
if '#' in line:
line = line.split('#')[0]
module = dict()
module['name'] = line.split('=')[0] if '=' in line else line
module['import'] = module['name'].replace('-', '_')
# Not every module is importable by its own name.
if module['name'] == "pep8-naming":
module['import'] = "pep8ext_naming"
if not find_spec(module['import']):
print('Could not find module %s!' % module['name'])
print('Please run `python3 -m pip install -r %s` to install required python dependencies.' % (qmk_dir / requirements,))
if developer:
print('You can also turn off developer mode: qmk config user.developer=None')
print()
exit(255)
developer = False
# Make sure our modules have been setup
_check_modules('requirements.txt')
# Setup the CLI # Setup the CLI
import milc # noqa import milc # noqa
# For developers additional modules are needed
if milc.cli.config.user.developer:
# Do not run the check for 'config',
# so users can turn off developer mode
if len(sys.argv) == 1 or (len(sys.argv) > 1 and 'config' != sys.argv[1]):
developer = True
_check_modules('requirements-dev.txt')
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}' milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
+5 -1
View File
@@ -205,6 +205,7 @@ endif
# #
# https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic # https://docs.qmk.fm/#/feature_layouts?id=tips-for-making-layouts-keyboard-agnostic
# #
QMK_KEYBOARD_H = $(KEYBOARD_OUTPUT)/src/default_keyboard.h
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","") ifneq ("$(wildcard $(KEYBOARD_PATH_1)/$(KEYBOARD_FOLDER_1).h)","")
QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h QMK_KEYBOARD_H = $(KEYBOARD_FOLDER_1).h
endif endif
@@ -296,10 +297,13 @@ CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.
$(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES) $(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h
$(KEYBOARD_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES)
bin/qmk generate-keyboard-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.h
$(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES) $(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES)
bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h
.INTERMEDIATE : generated-files .INTERMEDIATE : generated-files
+12
View File
@@ -228,6 +228,18 @@ This command is directory aware. It will automatically fill in KEYBOARD if you a
qmk list-keymaps -kb planck/ez qmk list-keymaps -kb planck/ez
``` ```
## `qmk new-keyboard`
This command creates a new keyboard based on available templates.
This command will prompt for input to guide you though the generation process.
**Usage**:
```
qmk new-keyboard
```
## `qmk new-keymap` ## `qmk new-keymap`
This command creates a new keymap based on a keyboard's existing default keymap. This command creates a new keymap based on a keyboard's existing default keymap.
+17
View File
@@ -81,3 +81,20 @@ void encoder_update_user(uint8_t index, bool clockwise) {
## Hardware ## Hardware
The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground. The A an B lines of the encoders should be wired directly to the MCU, and the C/common lines should be wired to ground.
## Multiple Encoders
Multiple encoders may share pins so long as each encoder has a distinct pair of pins.
For example you can support two encoders using only 3 pins like this
```
#define ENCODERS_PAD_A { B1, B1 }
#define ENCODERS_PAD_B { B2, B3 }
```
You could even support three encoders using only three pins (one per encoder) however in this configuration, rotating two encoders which share pins simultaneously will often generate incorrect output. For example:
```
#define ENCODERS_PAD_A { B1, B1, B2 }
#define ENCODERS_PAD_B { B2, B3, B3 }
```
Here rotating Encoder 0 `B1 B2` and Encoder 1 `B1 B3` could be interpreted as rotating Encoder 2 `B2 B3` or `B3 B2` depending on the timing. This may still be a useful configuration depending on your use case
+4 -16
View File
@@ -104,19 +104,13 @@ You can also try the `qmk-git` package from AUR:
### ** FreeBSD ** ### ** FreeBSD **
#### Prerequisites
You will need to install Git and Python. It's possible that you already have both, but if not, run the following commands to install them:
pkg install git python3
Make sure that `$HOME/.local/bin` is added to your `$PATH` so that locally installed Python packages are available.
#### Installation #### Installation
Install the QMK CLI by running: Install the FreeBSD package for QMK CLI by running:
python3 -m pip install --user qmk pkg install -g "py*-qmk"
NOTE: remember to follow the instructions printed at the end of installation (use `pkg info -Dg "py*-qmk"` to show them again).
<!-- tabs:end --> <!-- tabs:end -->
@@ -162,12 +156,6 @@ After installing QMK you can set it up with this command:
In most situations you will want to answer `y` to all of the prompts. In most situations you will want to answer `y` to all of the prompts.
?>**Note on FreeBSD**:
It is suggested to run `qmk setup` as a non-`root` user to start with, but this will likely identify packages that need to be installed to your
base system using `pkg`. However the installation will probably fail when run as an unprivileged user.
To manually install the base dependencies, run `./util/qmk_install.sh` either as `root`, or with `sudo`.
Once that completes, re-run `qmk setup` to complete the setup and checks.
<!-- tabs:end --> <!-- tabs:end -->
?> The qmk home folder can be specified at setup with `qmk setup -H <path>`, and modified afterwards using the [cli configuration](cli_configuration.md?id=single-key-example) and the variable `user.qmk_home`. For all available options run `qmk setup --help`. ?> The qmk home folder can be specified at setup with `qmk setup -H <path>`, and modified afterwards using the [cli configuration](cli_configuration.md?id=single-key-example) and the variable `user.qmk_home`. For all available options run `qmk setup --help`.
+14 -12
View File
@@ -50,7 +50,7 @@ This is the most important plugin as it will allow Eclipse to _understand_ AVR C
### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console) ### [ANSI Escape in Console](https://marketplace.eclipse.org/content/ansi-escape-console)
This plugin is necessary to properly display the colored build output generated by the QMK makefile. This plugin is necessary to properly display the colored build output generated by the QMK makefile.
1. Open <kbd><kbd>Help</kbd> > <kbd>Eclipse Marketplace…</kbd></kbd> 1. Open <kbd>Help</kbd> > <kbd>Eclipse Marketplace…</kbd>
2. Search for _ANSI Escape in Console_ 2. Search for _ANSI Escape in Console_
3. Click the <samp>Install</samp> button of the plugin 3. Click the <samp>Install</samp> button of the plugin
4. Follow the instructions and agree again with the security warning for unsigned content. 4. Follow the instructions and agree again with the security warning for unsigned content.
@@ -59,7 +59,7 @@ Once both plugins are installed, restart Eclipse as prompted.
# Configure Eclipse for QMK # Configure Eclipse for QMK
## Importing the Project ## Importing the Project
1. Click <kbd><kbd>File</kbd> > <kbd>New</kbd> > <kbd>Makefile Project with Existing Code</kbd></kbd> 1. Click <kbd>File</kbd> > <kbd>New</kbd> > <kbd>Makefile Project with Existing Code</kbd>
2. On the next screen: 2. On the next screen:
* Select the directory where you cloned the repository as _Existing Code Location_; * Select the directory where you cloned the repository as _Existing Code Location_;
* (Optional) Give a different name to the project¹, e.g. _QMK_ or _Quantum_; * (Optional) Give a different name to the project¹, e.g. _QMK_ or _Quantum_;
@@ -73,16 +73,18 @@ Once both plugins are installed, restart Eclipse as prompted.
¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably `qmk_firmware`). ¹ There might be issues for importing the project with a custom name. If it does not work properly, try leaving the default project name (i.e. the name of the directory, probably `qmk_firmware`).
## Build Your Keyboard ## Build Your Keyboard
We will now configure a make target that cleans the project and builds the keymap of your choice.
1. On the right side of the screen, select the <kbd>Make Target</kbd> tab We will now change the default make target of the the project from `all` to the
2. Expand the folder structure to the keyboard of your choice, e.g. `qmk_firmware/keyboards/ergodox` specific keyboard and keymap combination we are working on,
3. Right-click on the keyboard folder and select <kbd>New…</kbd> (or select the folder and click the <kbd>New Make Target</kbd> icon above the tree) e.g. `kinesis/kint36:stapelberg`. This way, project-wide actions like cleaning
4. Choose a name for your build target, e.g. _clean \<your keymap\>_ and building the project will complete quickly, instead of taking a long time or
5. Make Target: this is the arguments that you give to `make` when building from the command line. If your target name does not match these arguments, uncheck <kbd>Same as target name</kbd> and input the correct arguments, e.g. `clean <your keymap>` outright locking up Eclipse.
6. Leave the other options checked and click <kbd>OK</kbd>. Your make target will now appear under the selected keyboard.
7. (Optional) Toggle the <kbd>Hide Empty Folders</kbd> icon button above the targets tree to only show your build target. 1. Focus an editor tab within the project
8. Double-click the build target you created to trigger a build. 2. Open the `Project` > `Properties` window, then select the `C/C++ Build` list
9. Select the <kbd>Console</kbd> view at the bottom to view the running build. entry and switch to the `Behavior` tab.
3. Change the default `Make build target` text fields for all enabled builds
from `all` to e.g. `kinesis/kint41:stapelberg`.
4. Verify your setup works by selecting `Project` > `Clean...`.
[1]: https://en.wikipedia.org/wiki/Eclipse_(software) [1]: https://en.wikipedia.org/wiki/Eclipse_(software)
+9
View File
@@ -68,6 +68,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- bare minimum required code for a board to boot into QMK should be present - bare minimum required code for a board to boot into QMK should be present
- initialisation code for the matrix and critical devices - initialisation code for the matrix and critical devices
- mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps - mirroring existing functionality of a commercial board (like custom keycodes and special animations etc.) should be handled through non-`default` keymaps
- VIAL-related files or changes will not be accepted, as they are not used by QMK firmware (no VIAL-specific core code has been submitted or merged)
- `keyboard.c` - `keyboard.c`
- empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed - empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed
- commented-out functions removed too - commented-out functions removed too
@@ -94,6 +95,8 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- standard layouts preferred in these keymaps, if possible - standard layouts preferred in these keymaps, if possible
- 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 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 also have a "manufacturer-matching" keymap that mirrors existing functionality of the commercial product, if porting an existing board - 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)
Also, specific to ChibiOS: Also, specific to ChibiOS:
- **strong** preference to using existing ChibiOS board definitions. - **strong** preference to using existing ChibiOS board definitions.
@@ -127,3 +130,9 @@ There are instructions on how to keep your fork updated here:
Thanks for contributing! Thanks for contributing!
``` ```
## Review Process
In general, we want to see two (or more) approvals that are meaningful (e.g. that have inspected code) before a PR will be considered for merge. These reviews are not limited to collaborators -- any community member willing to put in the time is welcomed (and encouraged). The only difference is that your checkmark won't be green, and that's fine!
Additionally, PR reviews are something that is done in our free time. We are not paid nor compensated for the time we spend reviewing, as it is a labor of love. As such, this means that it can take time for us to get to your Pull Request. Things like family, or life can get in the way of us getting to PRs, and burnout is a serious concern. The QMK firmware repository averages 200 PRs opened and 200 PRs merged every month, so please have patience.
+8 -8
View File
@@ -34,14 +34,14 @@
typedef union { typedef union {
uint32_t raw; uint32_t raw;
struct { struct {
bool enable : 1; bool enable : 1;
uint8_t feedback : 2; uint8_t feedback : 2;
uint8_t mode : 7; uint8_t mode : 7;
bool buzz : 1; bool buzz : 1;
uint8_t dwell : 7; uint8_t dwell : 7;
bool cont : 1; bool cont : 1;
uint8_t amplitude : 8; uint8_t amplitude : 8;
uint16_t reserved : 7; uint8_t reserved : 5;
}; };
} haptic_config_t; } haptic_config_t;
+2
View File
@@ -206,6 +206,8 @@ void clear_screen(void) {
send_data(0); send_data(0);
} }
} }
memset(micro_oled_screen_current, 0, LCDWIDTH * LCDHEIGHT / 8);
} }
/** \brief Clear SSD1306's memory. /** \brief Clear SSD1306's memory.
+10 -3
View File
@@ -36,12 +36,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
{ E6, B4, B2 } \ { E6, B4, B2 } \
} }
#define TAP_CODE_DELAY 10 #define TAP_CODE_DELAY 10
#define ENCODER_DIRECTION_FLIP
#define ENCODER_RESOLUTION 4 #define ENCODER_RESOLUTION 4
#define ENCODERS_PAD_A { F5 } #define ENCODERS_PAD_A { F5 }
#define ENCODERS_PAD_B { F6 } #define ENCODERS_PAD_B { F6 }
#define BACKLIGHT_PIN B5 #define BACKLIGHT_PIN B5
// #define BACKLIGHT_BREATHING #define BACKLIGHT_BREATHING
#define BACKLIGHT_LEVELS 7 #define BACKLIGHT_LEVELS 7
#define RGB_DI_PIN D3 #define RGB_DI_PIN D3
@@ -52,8 +53,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define RGBLIGHT_VAL_STEP 8 #define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */ #define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */ #define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
/*== all animations enable ==*/ // #define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_SNAKE
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#endif #endif
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
@@ -65,6 +70,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#define LOCKING_RESYNC_ENABLE #define LOCKING_RESYNC_ENABLE
/* Oled Size */ /* Oled Size */
#define OLED_DISPLAY_128X64 #define OLED_DISPLAY_128X64
#define OLED_FONT_END 255
#define OLED_FONT_H "gfxfont.c"
/* QMK DFU */ /* QMK DFU */
#define QMK_LED B0 #define QMK_LED B0
+276
View File
@@ -0,0 +1,276 @@
/*
Copyright 2021 0xCB - Conor Burns
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 "progmem.h"
static const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,
0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
0x4C, 0x10, 0x10, 0x10, 0x7C, 0x00,
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
0x00, 0xE0, 0xFC, 0x1E, 0x06, 0xC6,
0xC6, 0x06, 0x1E, 0xFC, 0xE0, 0x00,
0x00, 0x00, 0x60, 0xE0, 0x80, 0x00,
0x00, 0x80, 0xE0, 0x60, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xF8, 0x3C, 0x0E,
0x06, 0x06, 0x06, 0x0E, 0x0C, 0x00,
0x00, 0x00, 0xFE, 0xFE, 0x86, 0x86,
0x86, 0x86, 0x8C, 0x78, 0x70, 0x00,
0x00, 0x0E, 0x0E, 0x06, 0x06, 0xFE,
0xFE, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x0C, 0x8E, 0x86, 0x86, 0x86,
0x86, 0x86, 0xCE, 0xFE, 0x7C, 0x00,
0x00, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0xE6, 0xE6, 0x3E, 0x3E, 0x00,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x06, 0x78, 0x80, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xE0, 0x1C, 0x02, 0x01, 0x04, 0x18,
0x00, 0x00, 0x00, 0x02, 0x0C, 0x00,
0x80, 0x80, 0x71, 0x02, 0x1C, 0xE0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0x78, 0x06, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0xF0, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
0x00, 0x00, 0xFC, 0xFC, 0xFC, 0xFC,
0xFC, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0,
0x00, 0x00, 0x40, 0xF0, 0xFC, 0xFF,
0xFF, 0xFC, 0xF0, 0xC0, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0x3F, 0x78, 0x60, 0x63,
0x63, 0x60, 0x78, 0x3F, 0x07, 0x00,
0x00, 0x00, 0x60, 0x79, 0x19, 0x06,
0x06, 0x19, 0x79, 0x60, 0x00, 0x00,
0x00, 0x00, 0x07, 0x1F, 0x3C, 0x70,
0x60, 0x60, 0x60, 0x70, 0x30, 0x00,
0x00, 0x00, 0x7F, 0x7F, 0x61, 0x61,
0x61, 0x61, 0x31, 0x1E, 0x0E, 0x00,
0x00, 0x60, 0x60, 0x60, 0x60, 0x7F,
0x7F, 0x60, 0x60, 0x60, 0x60, 0x00,
0x00, 0x30, 0x71, 0x61, 0x61, 0x61,
0x61, 0x61, 0x73, 0x7F, 0x3E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x7F,
0x7F, 0x01, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x03, 0xBC,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
0x87, 0x38, 0x40, 0x80, 0x08, 0x08,
0x08, 0x04, 0x04, 0x02, 0x02, 0x01,
0x00, 0x00, 0x80, 0x40, 0x38, 0x87,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
0xBC, 0x03, 0x00, 0x00, 0x00, 0x00,
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
0x00, 0x00, 0x7F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0,
0xFC, 0xFE, 0xFC, 0xF8, 0xF9, 0xF3,
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x70, 0xD0, 0x70, 0x00, 0x07, 0x05,
0x07, 0x02, 0x02, 0x82, 0xC2, 0x42,
0x7E, 0xC0, 0xC0, 0xC0, 0x40, 0x7E,
0x42, 0xC2, 0x82, 0x02, 0x02, 0x07,
0x05, 0x07, 0x00, 0x70, 0xD0, 0x70,
0x00, 0x00, 0x00, 0x80, 0x40, 0x20,
0x10, 0xC8, 0xC8, 0x84, 0x04, 0x02,
0x02, 0x02, 0x02, 0xC2, 0xC2, 0xC2,
0xC2, 0xC4, 0xC4, 0xC8, 0x88, 0x90,
0x20, 0x40, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x01, 0xFD, 0x05, 0x04, 0x04, 0x04,
0x1F, 0x30, 0x40, 0x87, 0x9F, 0x1F,
0x01, 0x81, 0xFF, 0xFF, 0x00, 0x00,
0x1E, 0x9E, 0x86, 0x40, 0x30, 0x1F,
0x04, 0x04, 0x04, 0x05, 0xFD, 0x01,
0x00, 0x0F, 0x70, 0x80, 0x00, 0x00,
0x00, 0x00, 0x80, 0xE0, 0xF8, 0x3E,
0x0F, 0x03, 0x00, 0xFF, 0xFF, 0x01,
0x01, 0x01, 0x01, 0x01, 0x00, 0x00,
0x00, 0x00, 0x80, 0x70, 0x0F, 0x00,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0x00, 0x00, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x00,
0xC0, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x07, 0x03, 0x03,
0x03, 0x03, 0x07, 0xFF, 0xFF, 0xFF,
0xDF, 0x9F, 0x3F, 0x3C, 0x70, 0x40,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC0, 0x5F, 0xD0, 0x90, 0x90, 0x90,
0xFC, 0x06, 0x01, 0xF8, 0xFC, 0xFC,
0xC0, 0xC0, 0xFF, 0xFF, 0x00, 0x00,
0x3C, 0x3C, 0x30, 0x01, 0x06, 0xFC,
0x90, 0x90, 0x90, 0xD0, 0x5F, 0xC0,
0x00, 0xF0, 0x0E, 0x01, 0x00, 0x00,
0x00, 0x00, 0x01, 0x03, 0x07, 0x1E,
0x3C, 0xF0, 0xE0, 0xFF, 0xFF, 0x80,
0x80, 0x80, 0x80, 0xC1, 0xC1, 0xFF,
0x3E, 0x00, 0x01, 0x0E, 0xF0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x05, 0x07, 0x00, 0x70, 0x50,
0x70, 0x20, 0x20, 0x20, 0x21, 0x3F,
0x01, 0x61, 0x9F, 0x9F, 0x61, 0x01,
0x3F, 0x21, 0x20, 0x20, 0x20, 0x70,
0x50, 0x70, 0x00, 0x07, 0x05, 0x07,
0x00, 0x00, 0x00, 0x01, 0x02, 0x04,
0x08, 0x10, 0x13, 0x23, 0x20, 0x40,
0x40, 0x40, 0x40, 0x43, 0x43, 0x40,
0x40, 0x20, 0x20, 0x10, 0x10, 0x08,
0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
0x07, 0x07, 0x07, 0x07, 0x0F, 0x0F,
0x0F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
0x00, 0x00, 0x3F, 0x3F, 0x3F, 0x3F,
0x3F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF,
0x00, 0x80, 0xC0, 0x70, 0x7C, 0x3F,
0x3F, 0x1F, 0x0F, 0x0F, 0x07, 0x07,
0x07, 0x03, 0x03, 0x02, 0x00, 0x00,
0x00, 0x00, 0x02, 0x03, 0x03, 0x07,
0x07, 0x07, 0x0F, 0x0F, 0x1E, 0x3E,
0x3C, 0x7C, 0x70, 0xC0, 0x80, 0x00,
};
+55 -76
View File
@@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
#include <stdio.h>
enum layer_names { enum layer_names {
_HOME, _HOME,
@@ -51,11 +52,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef ENCODER_ENABLE #ifdef ENCODER_ENABLE
void encoder_update_user(uint8_t index, bool clockwise) { void encoder_update_user(uint8_t index, bool clockwise) {
if (IS_LAYER_ON(_RGB)) { if (IS_LAYER_ON(_RGB)) {
if (clockwise) { #ifdef RGBLIGHT_ENABLE
rgblight_increase_val(); if (clockwise) {
} else { rgblight_increase_val();
rgblight_decrease_val(); } else {
} rgblight_decrease_val();
}
#endif
} else if (IS_LAYER_ON(_BLED)) { } else if (IS_LAYER_ON(_BLED)) {
if (clockwise) { if (clockwise) {
backlight_increase(); backlight_increase();
@@ -82,74 +85,27 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
} }
static void render_logo(void) { static void render_logo(void) {
static const char PROGMEM logo[] = { static const char PROGMEM raw_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, oled_write_raw_P(raw_logo, sizeof(raw_logo));
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, static void render_logo_font(void) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, static const char PROGMEM qmk_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05,
0xf8, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x78,
0x38, 0x3f, 0x1c, 0x0e, 0x0e, 0x0e, 0xfe, 0x0e, 0x0e, 0x1e, 0x1c, 0x3f, 0x38, 0x78, 0x70, 0xe0,
0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0xf8, 0x05, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa0,
0x13, 0xa2, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc,
0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3c, 0x3c, 0x00, 0x00,
0x01, 0xff, 0xff, 0xff, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xa2, 0x13, 0xa0, 0x40, 0x00,
0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x80, 0xc0, 0x40,
0x40, 0xc0, 0x80, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf9, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x7f, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x0f,
0x1f, 0x1f, 0x01, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x0e, 0x0e, 0x80, 0xc0,
0xc0, 0xff, 0xff, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf9, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0x31, 0x40, 0x4e, 0x40, 0x31, 0x1f, 0x00, 0x00, 0x61, 0x16, 0x08, 0x16, 0x61,
0x00, 0x00, 0x1f, 0x31, 0x60, 0x40, 0x40, 0x60, 0x20, 0x00, 0x00, 0x7f, 0x44, 0x44, 0x64, 0x3b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f,
0x40, 0x40, 0x00, 0x00, 0x00, 0x20, 0x64, 0x44, 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x20, 0x64, 0x44,
0x44, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0x01, 0x00, 0x00, 0x00, 0x08, 0x14,
0x23, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07,
0x0f, 0xfe, 0x1e, 0x1c, 0x1c, 0x1c, 0xff, 0x1c, 0x1c, 0x1c, 0x1e, 0xfe, 0x0f, 0x07, 0x03, 0x03,
0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x11, 0x0a, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10,
0x10, 0x1f, 0x00, 0x00, 0x10, 0x28, 0x47, 0x28, 0x10, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10,
0x10, 0x10, 0x28, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(logo, sizeof(logo)); oled_write_P(qmk_logo, false);
} }
/* Shows the name of the current layer and locks for the host (CAPS etc.) */ /* Shows the name of the current layer and locks for the host (CAPS etc.) */
static void render_info(void) { static void render_info(void) {
@@ -174,16 +130,39 @@ static void render_info(void) {
led_t led_state = host_keyboard_led_state(); led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
}
static void render_rgbled_status(bool full) {
#ifdef RGBLIGHT_ENABLE
char buf[30];
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
if (full) {
snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n",
rgblight_get_mode(),
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
rgblight_get_val()/RGBLIGHT_VAL_STEP);
} else {
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
}
oled_write(buf, false);
} else {
oled_write_ln_P(PSTR("\n"), false);
}
#endif
} }
void oled_task_user(void) { void oled_task_user(void) {
static bool finished_timer = false; static bool finished_timer = false;
if ((timer_elapsed(startup_timer) < 3000) && !finished_timer) { if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
render_logo(); render_logo();
} else { } else {
finished_timer = true; if (!finished_timer) {
oled_clear();
finished_timer = true;
}
render_info(); render_info();
render_rgbled_status(true);
render_logo_font();
} }
} }
#endif #endif
+168
View File
@@ -0,0 +1,168 @@
/*
Copyright 2021 0xCB - Conor Burns
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
#include <stdio.h>
enum layer_names {
_HOME,
_MISC,
_RGB,
_BLED
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_HOME] = LAYOUT(
KC_MPRV, KC_MNXT, KC_MPLY,
KC_PGUP, KC_PGDN, TO(3),
KC_HOME, KC_END, TO(1)
),
[_MISC] = LAYOUT(
_______, _______, _______,
_______, _______, TO(0),
_______, _______, TO(2)
),
[_RGB] = LAYOUT(
RGB_HUI, RGB_HUD, RGB_MOD,
RGB_SAI, RGB_SAD, TO(1),
RGB_SPI, RGB_SPD, TO(3)
),
[_BLED] = LAYOUT(
BL_STEP, BL_BRTG, BL_TOGG,
BL_ON, BL_OFF, TO(2),
BL_INC, BL_DEC, TO(0)
)
};
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
#ifdef ENCODER_ENABLE
void encoder_update_user(uint8_t index, bool clockwise) {
if (IS_LAYER_ON(_RGB)) {
#ifdef RGBLIGHT_ENABLE
if (clockwise) {
rgblight_increase_val();
} else {
rgblight_decrease_val();
}
#endif
} else if (IS_LAYER_ON(_BLED)) {
if (clockwise) {
backlight_increase();
} else {
backlight_decrease();
}
} else {
if (clockwise) {
tap_code16(C(A(KC_UP)));
} else {
tap_code16(C(A(KC_DOWN)));
}
}
}
#endif
/* oled stuff :) */
#ifdef OLED_DRIVER_ENABLE
uint16_t startup_timer;
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
startup_timer = timer_read();
return rotation;
}
static void render_logo(void) {
static const char PROGMEM raw_logo[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
};
oled_write_raw_P(raw_logo, sizeof(raw_logo));
}
static void render_logo_font(void) {
static const char PROGMEM qmk_logo[] = {
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5,
0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00
};
oled_write_P(qmk_logo, false);
}
/* Shows the name of the current layer and locks for the host (CAPS etc.) */
static void render_info(void) {
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _HOME:
oled_write_ln_P(PSTR("HOME"), false);
break;
case _MISC:
oled_write_ln_P(PSTR("MISC"), false);
break;
case _RGB:
oled_write_ln_P(PSTR("RGB"), false);
break;
case _BLED:
oled_write_ln_P(PSTR("Backlight"), false);
break;
default:
oled_write_ln_P(PSTR("Undefined"), false);
}
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
}
static void render_rgbled_status(bool full) {
#ifdef RGBLIGHT_ENABLE
char buf[30];
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
if (full) {
snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n",
rgblight_get_mode(),
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
rgblight_get_val()/RGBLIGHT_VAL_STEP);
} else {
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
}
oled_write(buf, false);
} else {
oled_write_ln_P(PSTR("\n"), false);
}
#endif
}
void oled_task_user(void) {
static bool finished_timer = false;
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
render_logo();
} else {
if (!finished_timer) {
oled_clear();
finished_timer = true;
}
render_info();
render_rgbled_status(true);
render_logo_font();
}
}
#endif
+55 -76
View File
@@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include QMK_KEYBOARD_H #include QMK_KEYBOARD_H
#include <stdio.h>
enum layer_names { enum layer_names {
_HOME, _HOME,
@@ -51,11 +52,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
#ifdef ENCODER_ENABLE #ifdef ENCODER_ENABLE
void encoder_update_user(uint8_t index, bool clockwise) { void encoder_update_user(uint8_t index, bool clockwise) {
if (IS_LAYER_ON(_RGB)) { if (IS_LAYER_ON(_RGB)) {
if (clockwise) { #ifdef RGBLIGHT_ENABLE
rgblight_increase_val(); if (clockwise) {
} else { rgblight_increase_val();
rgblight_decrease_val(); } else {
} rgblight_decrease_val();
}
#endif
} else if (IS_LAYER_ON(_BLED)) { } else if (IS_LAYER_ON(_BLED)) {
if (clockwise) { if (clockwise) {
backlight_increase(); backlight_increase();
@@ -82,74 +85,27 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) {
} }
static void render_logo(void) { static void render_logo(void) {
static const char PROGMEM logo[] = { static const char PROGMEM raw_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, oled_write_raw_P(raw_logo, sizeof(raw_logo));
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, static void render_logo_font(void) {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, static const char PROGMEM qmk_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9,
0x00, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xD1, 0xD2, 0xD3, 0xD4, 0xD5,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0x00
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, };
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01,
0x01, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x01, 0x01, 0x01, 0x01,
0x01, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05,
0xf8, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0x70, 0x78,
0x38, 0x3f, 0x1c, 0x0e, 0x0e, 0x0e, 0xfe, 0x0e, 0x0e, 0x1e, 0x1c, 0x3f, 0x38, 0x78, 0x70, 0xe0,
0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x05, 0xf8, 0x05, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xa0,
0x13, 0xa2, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xfc,
0xfe, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xff, 0x00, 0x00, 0x00, 0x3e, 0x3e, 0x3c, 0x3c, 0x00, 0x00,
0x01, 0xff, 0xff, 0xff, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0xa2, 0x13, 0xa0, 0x40, 0x00,
0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0xc0, 0x40, 0x40, 0xc0, 0x80,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0xc0,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x80, 0xc0, 0x40,
0x40, 0xc0, 0x80, 0x00, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf9, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x7f, 0xff, 0xff, 0xc0, 0x80, 0x80, 0x0f,
0x1f, 0x1f, 0x01, 0x01, 0x01, 0x01, 0xff, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x0e, 0x0e, 0x80, 0xc0,
0xc0, 0xff, 0xff, 0x7f, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0xf9, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1f, 0x31, 0x40, 0x4e, 0x40, 0x31, 0x1f, 0x00, 0x00, 0x61, 0x16, 0x08, 0x16, 0x61,
0x00, 0x00, 0x1f, 0x31, 0x60, 0x40, 0x40, 0x60, 0x20, 0x00, 0x00, 0x7f, 0x44, 0x44, 0x64, 0x3b,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x7f,
0x40, 0x40, 0x00, 0x00, 0x00, 0x20, 0x64, 0x44, 0x44, 0x6e, 0x3b, 0x00, 0x00, 0x20, 0x64, 0x44,
0x44, 0x6e, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x03, 0x01, 0x00, 0x00, 0x00, 0x08, 0x14,
0x23, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x07, 0x07,
0x0f, 0xfe, 0x1e, 0x1c, 0x1c, 0x1c, 0xff, 0x1c, 0x1c, 0x1c, 0x1e, 0xfe, 0x0f, 0x07, 0x03, 0x03,
0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0a, 0x11, 0x0a, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x28, 0x44, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10,
0x10, 0x1f, 0x00, 0x00, 0x10, 0x28, 0x47, 0x28, 0x10, 0x00, 0x00, 0x1f, 0x10, 0x10, 0x10, 0x10,
0x10, 0x10, 0x28, 0x44, 0x28, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
oled_write_raw_P(logo, sizeof(logo)); oled_write_P(qmk_logo, false);
} }
/* Shows the name of the current layer and locks for the host (CAPS etc.) */ /* Shows the name of the current layer and locks for the host (CAPS etc.) */
static void render_info(void) { static void render_info(void) {
@@ -174,16 +130,39 @@ static void render_info(void) {
led_t led_state = host_keyboard_led_state(); led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
}
static void render_rgbled_status(bool full) {
#ifdef RGBLIGHT_ENABLE
char buf[30];
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
if (full) {
snprintf(buf, sizeof(buf), "RGB mode %2d: %d,%d,%d \n",
rgblight_get_mode(),
rgblight_get_hue()/RGBLIGHT_HUE_STEP,
rgblight_get_sat()/RGBLIGHT_SAT_STEP,
rgblight_get_val()/RGBLIGHT_VAL_STEP);
} else {
snprintf(buf, sizeof(buf), "[%2d] ", rgblight_get_mode());
}
oled_write(buf, false);
} else {
oled_write_ln_P(PSTR("\n"), false);
}
#endif
} }
void oled_task_user(void) { void oled_task_user(void) {
static bool finished_timer = false; static bool finished_timer = false;
if ((timer_elapsed(startup_timer) < 3000) && !finished_timer) { if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
render_logo(); render_logo();
} else { } else {
finished_timer = true; if (!finished_timer) {
oled_clear();
finished_timer = true;
}
render_info(); render_info();
render_rgbled_status(true);
render_logo_font();
} }
} }
#endif #endif
@@ -70,4 +70,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘ // └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
) )
}; };
+1 -1
View File
@@ -1,4 +1,4 @@
/* Copyright 2021 eithanshavit /* Copyright 2021 Afternoon Labs
* *
* This program is free software: you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -0,0 +1,22 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "config_common.h"
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
@@ -0,0 +1,72 @@
/* Copyright 2021 Afternoon Labs
*
* 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 {
_MAIN,
_LOWER,
_RAISE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LBRC, KC_RBRC, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_UP, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LEFT, KC_DOWN, KC_RIGHT, 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_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_LOWER] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_RAISE] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
};
@@ -0,0 +1,3 @@
# Default Southern Breeze Layout
This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half).
@@ -0,0 +1,9 @@
# LTO: link time optimization makes the build take slightly longer
# but makes the resulting .hex file smaller, which allows you to
# fit more features into smaller MCUs:
LTO_ENABLE = yes
# Support for these features make the hex file larger, but we want 'em:
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Support USB N-key roll over.
@@ -0,0 +1,86 @@
/* Copyright 2021 Afternoon Labs
*
* 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 {
_MAIN,
_LOWER,
_RAISE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_MINS, KC_EQL, KC_GRV, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LBRC, KC_RBRC, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_UP, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
KC_LEFT, KC_DOWN, KC_RIGHT, 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_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_LOWER] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
KC_MUTE, KC_VOLD, KC_VOLU, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_RAISE] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[3] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
)
};
@@ -0,0 +1,3 @@
# Default Southern Breeze Layout
This is the default suggested layout for the Southern Breeze Split Keyboard (with the arrow cluster on the left half).
@@ -0,0 +1,10 @@
VIA_ENABLE = yes
# LTO: link time optimization makes the build take slightly longer
# but makes the resulting .hex file smaller, which allows you to
# fit more features into smaller MCUs:
LTO_ENABLE = yes
# Support for these features make the hex file larger, but we want 'em:
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Support USB N-key roll over.
@@ -0,0 +1,49 @@
/* Copyright 2021 Afternoon Labs
*
* 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
/* USB Device descriptor parameter */
#define VENDOR_ID 0x616C
#define PRODUCT_ID 0x0005
#define DEVICE_VER 0x0001
#define MANUFACTURER AfternoonLabs
#define PRODUCT Southern Breeze
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
// wiring of each half
#define MATRIX_ROW_PINS \
{ F4, F5, F6, F7, B1 }
#define MATRIX_COL_PINS \
{ B2, D1, D0, D4, C6, D7, E6, B4, B5 }
#define SPLIT_HAND_PIN B3
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
#define SOFT_SERIAL_PIN D2
#define DIODE_DIRECTION COL2ROW
#define BOOTMAGIC_LITE_ROW_RIGHT 0
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
#define BOOTMAGIC_LITE_ROW_LEFT 0
#define BOOTMAGIC_LITE_COLUMN_LEFT 5
@@ -0,0 +1,84 @@
{
"keyboard_name": "Southern Breeze",
"url": "afternoonlabs.com/breeze",
"productId": "0x0005",
"maintainer": "eithanshavit",
"width": 19,
"height": 6,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0.375},
{"x":1, "y":0.375},
{"x":2, "y":0.375},
{"x":3.25, "y":0.375},
{"x":4.25, "y":0.375},
{"x":5.25, "y":0.125},
{"x":6.25, "y":0},
{"x":7.25, "y":0.125},
{"x":8.25, "y":0.25},
{"x":13, "y":0.25},
{"x":14, "y":0.125},
{"x":15, "y":0},
{"x":16, "y":0.125},
{"x":17, "y":0.375},
{"x":18, "y":0.375},
{"x":0, "y":1.375},
{"x":1, "y":1.375},
{"x":2, "y":1.375},
{"x":3.25, "y":1.375},
{"x":4.25, "y":1.375},
{"x":5.25, "y":1.125},
{"x":6.25, "y":1},
{"x":7.25, "y":1.125},
{"x":8.25, "y":1.25},
{"x":13, "y":1.25},
{"x":14, "y":1.125},
{"x":15, "y":1},
{"x":16, "y":1.125},
{"x":17, "y":1.375},
{"x":18, "y":1.375},
{"x":1, "y":2.375},
{"x":3.25, "y":2.375},
{"x":4.25, "y":2.375},
{"x":5.25, "y":2.125},
{"x":6.25, "y":2},
{"x":7.25, "y":2.125},
{"x":8.25, "y":2.25},
{"x":13, "y":2.25},
{"x":14, "y":2.125},
{"x":15, "y":2},
{"x":16, "y":2.125},
{"x":17, "y":2.375},
{"x":18, "y":2.375},
{"x":0, "y":3.375},
{"x":1, "y":3.375},
{"x":2, "y":3.375},
{"x":3.25, "y":3.375},
{"x":4.25, "y":3.375},
{"x":5.25, "y":3.125},
{"x":6.25, "y":3},
{"x":7.25, "y":3.125},
{"x":8.25, "y":3.25},
{"x":13, "y":3.25},
{"x":14, "y":3.125},
{"x":15, "y":3},
{"x":16, "y":3.125},
{"x":17, "y":3.375},
{"x":18, "y":3.375},
{"x":5.75, "y":4.25},
{"x":6.75, "y":4.25},
{"x":7.75, "y":4.5},
{"x":9.5, "y":3.75, "h":2, "r":30},
{"x":11.75, "y":3.75, "h":2, "r":-30},
{"x":13.5, "y":4.5},
{"x":14.5, "y":4.25},
{"x":15.5, "y":4.25}
]
}
}
}
@@ -0,0 +1,15 @@
# Southern Breeze
![Breeze](https://i.imgur.com/O8FJWD6.jpeg)
Split ergonomics meets productivity. Southern Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb cluster, arrow keys, and a 6 key macro cluster, with ortholinear column-staggered.
* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit)
* Hardware Supported: Breeze Rev1 PCB
* Hardware Availability: Coming soon
Make example for this keyboard (after setting up your build environment):
make afternoonlabs/southern_breeze/rev1:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
@@ -0,0 +1,17 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "rev1.h"
@@ -0,0 +1,41 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "southern_breeze.h"
#include "quantum.h"
#define LAYOUT( \
LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
LWUP, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
LWLT, LWDN, LWRT, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \
) \
{ \
{ L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \
{ L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \
{ L25, L24, L23, L22, L21, L20, KC_NO, LWUP, KC_NO }, \
{ L35, L34, L33, L32, L31, L30, LWRT, LWDN, LWLT }, \
{ LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ R00, R01, R02, R03, R04, R05, KC_NO, KC_NO, KC_NO }, \
{ R10, R11, R12, R13, R14, R15, KC_NO, KC_NO, KC_NO }, \
{ R20, R21, R22, R23, R24, R25, KC_NO, KC_NO, KC_NO }, \
{ R30, R31, R32, R33, R34, R35, KC_NO, KC_NO, KC_NO }, \
{ RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
}
@@ -0,0 +1,23 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
@@ -0,0 +1,17 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "southern_breeze.h"
@@ -0,0 +1,21 @@
/* Copyright 2021 Afternoon Labs
*
* 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
#ifdef KEYBOARD_afternoonlabs_southern_breeze_rev1
# include "rev1.h"
#endif
@@ -0,0 +1,22 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "config_common.h"
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
@@ -0,0 +1,71 @@
/* Copyright 2021 Afternoon Labs
*
* 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 {
_MAIN,
_LOWER,
_RAISE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, KC_WH_U, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_BTN1, KC_WH_D, KC_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_MS_U, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_MS_L, KC_MS_D, KC_MS_R, 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_LEFT, KC_DOWN, KC_RIGHT,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_LOWER] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_RAISE] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
};
@@ -0,0 +1,3 @@
# Default Summer Breeze Layout
This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters).
@@ -0,0 +1,9 @@
# LTO: link time optimization makes the build take slightly longer
# but makes the resulting .hex file smaller, which allows you to
# fit more features into smaller MCUs:
LTO_ENABLE = yes
# Support for these features make the hex file larger, but we want 'em:
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Support USB N-key roll over.
@@ -0,0 +1,86 @@
/* Copyright 2021 Afternoon Labs
*
* 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 {
_MAIN,
_LOWER,
_RAISE,
};
#define LOWER MO(_LOWER)
#define RAISE MO(_RAISE)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, KC_WH_U, _______, KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, KC_MINS, KC_EQL, KC_GRV,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_BTN1, KC_WH_D, KC_BTN2, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_LBRC, KC_RBRC, KC_BSLS,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_MS_U, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_UP,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
KC_MS_L, KC_MS_D, KC_MS_R, 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_LEFT, KC_DOWN, KC_RIGHT,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_ENT, RAISE, LOWER, XXXXXXX
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_LOWER] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[_RAISE] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PEQL, KC_PSLS, KC_PAST, KC_PMNS, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, KC_P0, KC_PDOT
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
),
[3] = LAYOUT(
//┌────────┬────────┬────────┐┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐┌────────┬────────┬────────┐
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//├────────┼────────┼────────┤├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤├────────┼────────┼────────┤
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
//└────────┴────────┴────────┘└────────┴────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┴────────┴────────┴────────┘└────────┴────────┴────────┘
_______, _______, _______, _______, _______, _______, _______, _______
// └────────┴────────┴────────┴────────┘ └────────┴────────┴────────┴────────┘
)
};
@@ -0,0 +1,3 @@
# Default Summer Breeze Layout
This is the default suggested layout for the Summer Breeze Split Keyboard (with both arrow clusters).
@@ -0,0 +1,10 @@
VIA_ENABLE = yes
# LTO: link time optimization makes the build take slightly longer
# but makes the resulting .hex file smaller, which allows you to
# fit more features into smaller MCUs:
LTO_ENABLE = yes
# Support for these features make the hex file larger, but we want 'em:
MOUSEKEY_ENABLE = yes # Allow mapping of mouse control keys
EXTRAKEY_ENABLE = yes # Allow audio & system control keys
COMMAND_ENABLE = yes # Commands for debug and configuration
NKRO_ENABLE = yes # Support USB N-key roll over.
@@ -0,0 +1,49 @@
/* Copyright 2021 Afternoon Labs
*
* 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
/* USB Device descriptor parameter */
#define VENDOR_ID 0x616C
#define PRODUCT_ID 0x0004
#define DEVICE_VER 0x0001
#define MANUFACTURER AfternoonLabs
#define PRODUCT Summer Breeze
/* key matrix size */
// Rows are doubled-up
#define MATRIX_ROWS 10
#define MATRIX_COLS 9
// wiring of each half
#define MATRIX_ROW_PINS \
{ F4, F5, F6, F7, B1 }
#define MATRIX_COL_PINS \
{ B2, D1, D0, D4, C6, D7, E6, B4, B5 }
#define SPLIT_HAND_PIN B3
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
#define SOFT_SERIAL_PIN D2
#define DIODE_DIRECTION COL2ROW
#define BOOTMAGIC_LITE_ROW_RIGHT 0
#define BOOTMAGIC_LITE_COLUMN_RIGHT 5
#define BOOTMAGIC_LITE_ROW_LEFT 0
#define BOOTMAGIC_LITE_COLUMN_LEFT 5
@@ -0,0 +1,94 @@
{
"keyboard_name": "Summer Breeze",
"url": "afternoonlabs.com/breeze",
"productId": "0x0004",
"maintainer": "eithanshavit",
"width": 19,
"height": 6,
"layouts": {
"LAYOUT": {
"layout": [
{"x":0, "y":0.375},
{"x":1, "y":0.375},
{"x":2, "y":0.375},
{"x":3.25, "y":0.375},
{"x":4.25, "y":0.375},
{"x":5.25, "y":0.125},
{"x":6.25, "y":0},
{"x":7.25, "y":0.125},
{"x":8.25, "y":0.25},
{"x":13, "y":0.25},
{"x":14, "y":0.125},
{"x":15, "y":0},
{"x":16, "y":0.125},
{"x":17, "y":0.375},
{"x":18, "y":0.375},
{"x":19.25, "y":0.375},
{"x":20.25, "y":0.375},
{"x":21.25, "y":0.375},
{"x":0, "y":1.375},
{"x":1, "y":1.375},
{"x":2, "y":1.375},
{"x":3.25, "y":1.375},
{"x":4.25, "y":1.375},
{"x":5.25, "y":1.125},
{"x":6.25, "y":1},
{"x":7.25, "y":1.125},
{"x":8.25, "y":1.25},
{"x":13, "y":1.25},
{"x":14, "y":1.125},
{"x":15, "y":1},
{"x":16, "y":1.125},
{"x":17, "y":1.375},
{"x":18, "y":1.375},
{"x":19.25, "y":1.375},
{"x":20.25, "y":1.375},
{"x":21.25, "y":1.375},
{"x":1, "y":2.375},
{"x":3.25, "y":2.375},
{"x":4.25, "y":2.375},
{"x":5.25, "y":2.125},
{"x":6.25, "y":2},
{"x":7.25, "y":2.125},
{"x":8.25, "y":2.25},
{"x":13, "y":2.25},
{"x":14, "y":2.125},
{"x":15, "y":2},
{"x":16, "y":2.125},
{"x":17, "y":2.375},
{"x":18, "y":2.375},
{"x":20.25, "y":2.375},
{"x":0, "y":3.375},
{"x":1, "y":3.375},
{"x":2, "y":3.375},
{"x":3.25, "y":3.375},
{"x":4.25, "y":3.375},
{"x":5.25, "y":3.125},
{"x":6.25, "y":3},
{"x":7.25, "y":3.125},
{"x":8.25, "y":3.25},
{"x":13, "y":3.25},
{"x":14, "y":3.125},
{"x":15, "y":3},
{"x":16, "y":3.125},
{"x":17, "y":3.375},
{"x":18, "y":3.375},
{"x":19.25, "y":3.375},
{"x":20.25, "y":3.375},
{"x":21.25, "y":3.375},
{"x":5.75, "y":4.25},
{"x":6.75, "y":4.25},
{"x":7.75, "y":4.5},
{"x":9.5, "y":3.75, "h":2, "r":30},
{"x":11.75, "y":3.75, "h":2, "r":-30},
{"x":13.5, "y":4.5},
{"x":14.5, "y":4.25},
{"x":15.5, "y":4.25}
]
}
}
}
@@ -0,0 +1,15 @@
# Summer Breeze
![Breeze](https://i.imgur.com/O8FJWD6.jpeg)
Split ergonomics meets productivity. Breeze Rev1 is a split keyboard with 6×4 keys, 4 key thumb clusters, arrow keys, and two 6 key macro clusters, with ortholinear column-staggered.
* Keyboard Maintainer: [Eithan Shavit](https://github.com/eithanshavit)
* Hardware Supported: Breeze Rev1 PCB
* Hardware Availability: Coming soon
Make example for this keyboard (after setting up your build environment):
make afternoonlabs/summer_breeze/rev1:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
@@ -0,0 +1,17 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "rev1.h"
@@ -0,0 +1,41 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "summer_breeze.h"
#include "quantum.h"
#define LAYOUT( \
LW00, LW01, LW02, L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, MC0, MC1, MC2, \
LW10, LW11, LW12, L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, MC3, MC4, MC5, \
LW21, L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, AUP, \
LW30, LW31, LW32, L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, ALT, ADN, ART, \
LT0, LT1, LT2, LT3, RT0, RT1, RT2, RT3 \
) \
{ \
{ L05, L04, L03, L02, L01, L00, LW02, LW01, LW00 }, \
{ L15, L14, L13, L12, L11, L10, LW12, LW11, LW10 }, \
{ L25, L24, L23, L22, L21, L20, KC_NO, LW01, KC_NO }, \
{ L35, L34, L33, L32, L31, L30, LW32, LW31, LW30 }, \
{ LT3, LT2, LT1, LT0, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ R00, R01, R02, R03, R04, R05, MC0, MC1, MC2 }, \
{ R10, R11, R12, R13, R14, R15, MC3, MC4, MC5 }, \
{ R20, R21, R22, R23, R24, R25, KC_NO, AUP, KC_NO }, \
{ R30, R31, R32, R33, R34, R35, ALT, ADN, ART }, \
{ RT0, RT1, RT2, RT3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
}
@@ -0,0 +1,23 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = caterina
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = no # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = no # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes
@@ -0,0 +1,17 @@
/* Copyright 2021 Afternoon Labs
*
* 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 "summer_breeze.h"
@@ -0,0 +1,21 @@
/* Copyright 2021 Afternoon Labs
*
* 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
#ifdef KEYBOARD_afternoonlabs_summer_breeze_rev1
# include "rev1.h"
#endif
+17
View File
@@ -0,0 +1,17 @@
/*
Copyright 2021 Andrew Kannan
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 "andromeda.h"
+35
View File
@@ -0,0 +1,35 @@
/*
Copyright 2021 Andrew Kannan
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
#define LAYOUT_tkl_ansi_wkl( \
K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K313, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K415, \
K500, K502, K507, K511, K513, K514, K515, K516 \
) { \
{ K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213 , K214, K215, K216 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, KC_NO, K313, KC_NO, KC_NO, KC_NO }, \
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, KC_NO, K415, KC_NO }, \
{ K500, KC_NO, K502, KC_NO, KC_NO, KC_NO, KC_NO, K507, KC_NO, KC_NO, KC_NO, K511, KC_NO, K513, K514, K515, K516 } \
}
@@ -1,5 +1,5 @@
/* /*
Copyright 2021 CapsUnlocked Copyright 2021 Andrew Kannan
This program is free software: you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@@ -17,36 +17,27 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once #pragma once
#include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
#define VENDOR_ID 0x4355 #define VENDOR_ID 0xA103
#define PRODUCT_ID 0x0083 #define PRODUCT_ID 0x000A
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER CapsUnlocked #define MANUFACTURER ai03 Design Studio
#define PRODUCT CU80 v2 ISO RGB #define PRODUCT Andromeda
/* key matrix size */
#define MATRIX_ROWS 6 #define MATRIX_ROWS 6
#define MATRIX_COLS 17 #define MATRIX_COLS 17
#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 } #define MATRIX_COL_PINS { A10, A9, A8, B15, B14, B13, B12, B11, B10, B2, B1, B0, A7, A6, B5, B8, B9 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 } #define MATRIX_ROW_PINS { B4, B3, A15, A3, A4, A5 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW #define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ /* define if matrix has ghost */
#define DEBOUNCE 5 //#define MATRIX_HAS_GHOST
/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE #define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */ /* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE #define LOCKING_RESYNC_ENABLE
/* Define RGB */
#define RGB_DI_PIN E6
#define DRIVER_LED_TOTAL 88
#define RGBLED_NUM 88
#define RGB_MATRIX_KEYPRESSES
#define RGBLIGHT_LIMIT_VAL 50
+12
View File
@@ -0,0 +1,12 @@
{
"keyboard_name": "Andromeda",
"url": "",
"maintainer": "ai03",
"width": 18.25,
"height": 6.25,
"layouts": {
"LAYOUT_tkl_ansi_wkl": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.25}, {"label":"!", "x":1, "y":1.25}, {"label":"@", "x":2, "y":1.25}, {"label":"#", "x":3, "y":1.25}, {"label":"$", "x":4, "y":1.25}, {"label":"%", "x":5, "y":1.25}, {"label":"^", "x":6, "y":1.25}, {"label":"&", "x":7, "y":1.25}, {"label":"*", "x":8, "y":1.25}, {"label":"(", "x":9, "y":1.25}, {"label":")", "x":10, "y":1.25}, {"label":"_", "x":11, "y":1.25}, {"label":"+", "x":12, "y":1.25}, {"label":"Backspace", "x":13, "y":1.25, "w":2}, {"label":"Insert", "x":15.25, "y":1.25}, {"label":"Home", "x":16.25, "y":1.25}, {"label":"PgUp", "x":17.25, "y":1.25}, {"label":"Tab", "x":0, "y":2.25, "w":1.5}, {"label":"Q", "x":1.5, "y":2.25}, {"label":"W", "x":2.5, "y":2.25}, {"label":"E", "x":3.5, "y":2.25}, {"label":"R", "x":4.5, "y":2.25}, {"label":"T", "x":5.5, "y":2.25}, {"label":"Y", "x":6.5, "y":2.25}, {"label":"U", "x":7.5, "y":2.25}, {"label":"I", "x":8.5, "y":2.25}, {"label":"O", "x":9.5, "y":2.25}, {"label":"P", "x":10.5, "y":2.25}, {"label":"{", "x":11.5, "y":2.25}, {"label":"}", "x":12.5, "y":2.25}, {"label":"|", "x":13.5, "y":2.25, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.25}, {"label":"End", "x":16.25, "y":2.25}, {"label":"PgDn", "x":17.25, "y":2.25}, {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75}, {"label":"A", "x":1.75, "y":3.25}, {"label":"S", "x":2.75, "y":3.25}, {"label":"D", "x":3.75, "y":3.25}, {"label":"F", "x":4.75, "y":3.25}, {"label":"G", "x":5.75, "y":3.25}, {"label":"H", "x":6.75, "y":3.25}, {"label":"J", "x":7.75, "y":3.25}, {"label":"K", "x":8.75, "y":3.25}, {"label":"L", "x":9.75, "y":3.25}, {"label":":", "x":10.75, "y":3.25}, {"label":"\"", "x":11.75, "y":3.25}, {"label":"Enter", "x":12.75, "y":3.25, "w":2.25}, {"label":"Shift", "x":0, "y":4.25, "w":2.25}, {"label":"Z", "x":2.25, "y":4.25}, {"label":"X", "x":3.25, "y":4.25}, {"label":"C", "x":4.25, "y":4.25}, {"label":"V", "x":5.25, "y":4.25}, {"label":"B", "x":6.25, "y":4.25}, {"label":"N", "x":7.25, "y":4.25}, {"label":"M", "x":8.25, "y":4.25}, {"label":"<", "x":9.25, "y":4.25}, {"label":">", "x":10.25, "y":4.25}, {"label":"?", "x":11.25, "y":4.25}, {"label":"Shift", "x":12.25, "y":4.25, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.25}, {"label":"Ctrl", "x":0, "y":5.25, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.25, "w":1.5}, {"x":4, "y":5.25, "w":7}, {"label":"Alt", "x":11, "y":5.25, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.25, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.25}, {"label":"\u2193", "x":16.25, "y":5.25}, {"label":"\u2192", "x":17.25, "y":5.25}]
}
}
}
@@ -0,0 +1,33 @@
/*
Copyright 2012,2013 Jun Wako <[email protected]>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_tkl_ansi_wkl(
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_SLCK, 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_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
)
};
@@ -0,0 +1,65 @@
/*
Copyright 2012,2013 Jun Wako <[email protected]>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN1,
_FN2,
_FN3
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_tkl_ansi_wkl(
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_SLCK, 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_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1] = LAYOUT_tkl_ansi_wkl(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_FN2] = LAYOUT_tkl_ansi_wkl(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[_FN3] = LAYOUT_tkl_ansi_wkl(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};
+12
View File
@@ -0,0 +1,12 @@
# ai03 Andromeda
* Keyboard Maintainer: [ai03](https://github.com/ai03-2725)
* Hardware Supported: Andromeda PCB
Make example for this keyboard (after setting up your build environment):
make ai03/andromeda:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
Press and hold the reset button for at least 5 seconds before releasing to enter the bootloader mode.
+22
View File
@@ -0,0 +1,22 @@
# MCU name
MCU = STM32F072
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = yes # Console for debug
COMMAND_ENABLE = yes # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
+17
View File
@@ -0,0 +1,17 @@
/* Copyright 2021
*
* 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 "amag23.h"
+32
View File
@@ -0,0 +1,32 @@
/* Copyright 2021
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
// clang-format off
#define LAYOUT_all( \
K00, K01, K02, K03, K04, K05, \
K10, K11, K12, K13, K14, K15, \
K20, K21, K22, K23, K24, K25, \
K30, K31, K32, K33, K34 \
) { \
{ K00, K01, K02, K03, K04, K05 }, \
{ K10, K11, K12, K13, K14, K15 }, \
{ K20, K21, K22, K23, K24, K25 }, \
{ K30, K31, K32, K33, KC_NO, K34 } \
}
// clang-format on
+50
View File
@@ -0,0 +1,50 @@
/* Copyright 2021
*
* 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 "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x4B54 // "KT"
#define PRODUCT_ID 0x2323
#define DEVICE_VER 0x0001
#define MANUFACTURER Koolertron
#define PRODUCT AMAG23
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 6
#define MATRIX_ROW_PINS { A0, A1, A2, A3 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, B4, B5 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION ROW2COL
#define RGBLED_NUM 7
#define RGBLIGHT_ANIMATIONS
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* 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
+36
View File
@@ -0,0 +1,36 @@
{
"keyboard_name": "AMAG23",
"url": "http://www.koolertron.com/koolertron-one-handed-macro-mechanical-keyboard-rgb-led-backlit-portable-mini-onehanded-mechanical-gaming-keypad-23-fully-programmable-keys-blue-switches-p-874.html",
"maintainer": "ianmclinden",
"width": 6,
"height": 4,
"layouts": {
"LAYOUT_all": {
"layout": [
{"label":"K00", "x":0, "y":0},
{"label":"K01", "x":1, "y":0},
{"label":"K02", "x":2, "y":0},
{"label":"K03", "x":3, "y":0},
{"label":"K04", "x":4, "y":0},
{"label":"K05", "x":5, "y":0},
{"label":"K10", "x":0, "y":1},
{"label":"K11", "x":1, "y":1},
{"label":"K12", "x":2, "y":1},
{"label":"K13", "x":3, "y":1},
{"label":"K14", "x":4, "y":1},
{"label":"K15", "x":5, "y":1},
{"label":"K20", "x":0, "y":2},
{"label":"K21", "x":1, "y":2},
{"label":"K22", "x":2, "y":2},
{"label":"K23", "x":3, "y":2},
{"label":"K24", "x":4, "y":2},
{"label":"K25", "x":5, "y":2},
{"label":"K30", "x":0, "y":3},
{"label":"K31", "x":1, "y":3},
{"label":"K32", "x":2, "y":3},
{"label":"K33", "x":3, "y":3},
{"label":"K34", "x":4, "y":3, "w":2}
]
}
}
}
+40
View File
@@ -0,0 +1,40 @@
/* Copyright 2021
*
* 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
// Defines names for use in layer keycodes and the keymap
enum layer_names {
BASE,
FN1
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE] = LAYOUT_all( /* Base Layer */
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_Y,
MO(FN1), KC_A, KC_S, KC_D, KC_F, KC_G,
KC_Z, KC_X, KC_C, KC_B, KC_SPC
),
[FN1] = LAYOUT_all( /* Function Layer */
KC_NO, KC_NO, KC_NO, RGB_MOD, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
),
};
// clang-format on
@@ -0,0 +1,14 @@
# Factory Keymap for Koolertron AMAG23
## Additional Notes
Default Keymap for AMAG23 as indicated on the original [product page](http://www.koolertron.com/koolertron-one-handed-macro-mechanical-keyboard-rgb-led-backlit-portable-mini-onehanded-mechanical-gaming-keypad-23-fully-programmable-keys-blue-switches-p-853.html).
## Keymap
![AMAG23 Factory Layout](https://i.imgur.com/c28RfwI.png)
## Build
To build the factory keymap, simply run:
make amag23:default
+40
View File
@@ -0,0 +1,40 @@
/* Copyright 2021
*
* 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
// Defines names for use in layer keycodes and the keymap
enum layer_names {
BASE,
FN1
};
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[BASE] = LAYOUT_all( /* Base Layer */
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
MO(FN1), KC_A, KC_S, KC_D, KC_F, KC_G,
KC_LSFT, KC_Z, KC_X, KC_C, KC_SPC
),
[FN1] = LAYOUT_all( /* Function Layer */
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
_______, RGB_TOG, RGB_VAI, RGB_MOD, RGB_HUI, _______,
_______, _______, RGB_VAD, RGB_RMOD,RGB_HUD, _______,
_______, _______, _______, _______, _______
),
};
// clang-format on
+14
View File
@@ -0,0 +1,14 @@
# QWERT Keymap for Koolertron AMAG23
## Additional Notes
QWERT keymap, based on the left hand of an ortholinear layout.
## Keymap
![AMAG23 QWERT Layout](https://i.imgur.com/fiDUo77.png)
## Build
To build the factory keymap, simply run:
make amag23:qwert
+27
View File
@@ -0,0 +1,27 @@
# AMAG23 (Koolertron)
![Koolertron AMAG23](https://i.imgur.com/DakwCxk.jpg)
One Handed Macro Mechanical Keyboard, 23 Key with optional RGB backlighting.
- Keyboard Maintainer: [ianmclinden](https://github.com/ianmclinden)
- Hardware Supported: AMAG23 (ATmega32A)
- Hardware Availability:
- [Newegg](https://www.newegg.com/p/32K-00H1-00001)
- [Amazon](https://www.amazon.com/Koolertron-Mechanical-Keyboard-One-Handed-Programmable/dp/B07RM1TBR8)
Make example for this keyboard (after setting up your build environment):
make amag23:default
Flashing example for this keyboard ([after setting up the bootloadHID flashing environment](https://docs.qmk.fm/#/flashing_bootloadhid))
make amag23:default:flash
**Reset Key**: Hold down the *Escape* key while plugging in the keyboard.
**Tips**:
- The keyboard comes with bootloadHID installed from factory.
- The RGB leds seem to be chained together in diagonal rows. The result is that only 7 individual colors are supported, and these are striped across the keypad.
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).
+19
View File
@@ -0,0 +1,19 @@
# MCU name
MCU = atmega32a
# Bootloader selection
BOOTLOADER = bootloadHID
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
WS2812_DRIVER = i2c
@@ -0,0 +1,23 @@
/* Copyright 2021 Leon Anavi <[email protected]>
*
* 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
#undef RGBLIGHT_ANIMATIONS
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_CHRISTMAS
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_SNAKE
@@ -0,0 +1,144 @@
/* Copyright 2021 Leon Anavi <[email protected]>
*
* 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
#define _MAIN 0
#define _FN 1
/*
* This keymap contains the following shortcuts for Git. On the
* first row from left to right:
*
* git status
* git log
* git pull
* git push
*
* On the second row from left to right:
*
* git diff
* git add
* git commit
* FN key to switch to the 2nd layout and control lights
*
*/
enum custom_keycodes {
GITCOMMIT = SAFE_RANGE,
GITPUSH,
GITPULL,
GITSTATUS,
GITDIFF,
GITLOG,
GITADD
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case GITCOMMIT:
if (record->event.pressed) {
SEND_STRING("git commit -s\n");
}
break;
case GITPUSH:
if (record->event.pressed) {
SEND_STRING("git push\n");
}
break;
case GITPULL:
if (record->event.pressed) {
SEND_STRING("git pull\n");
}
break;
case GITSTATUS:
if (record->event.pressed) {
SEND_STRING("git status\n");
}
break;
case GITDIFF:
if (record->event.pressed) {
SEND_STRING("git diff ");
}
break;
case GITLOG:
if (record->event.pressed) {
SEND_STRING("git log\n");
}
break;
case GITADD:
if (record->event.pressed) {
SEND_STRING("git add ");
}
break;
}
return true;
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_MAIN] = LAYOUT_ortho_2x4(
GITSTATUS, GITLOG, GITPULL, GITPUSH,
GITDIFF, GITADD, GITCOMMIT, MO(_FN)
),
[_FN] = LAYOUT_ortho_2x4(
RGB_TOG, RGB_MOD, RGB_M_R, RGB_M_SN,
BL_TOGG, BL_STEP, BL_BRTG, _______
)
};
#ifdef OLED_DRIVER_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
}
void oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_ln_P(PSTR("ANAVI Macro Pad 8"), false);
oled_write_P(PSTR("Active layer: "), false);
switch (get_highest_layer(layer_state)) {
case _MAIN:
oled_write_ln_P(PSTR("Git"), false);
break;
case _FN:
oled_write_ln_P(PSTR("FN"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
oled_write_ln_P(PSTR("N/A"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(PSTR("Num Lock: "), false);
oled_write_ln_P(led_state.num_lock ? PSTR("On") : PSTR("Off"), false);
oled_write_P(PSTR("Caps Lock: "), false);
oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false);
oled_write_P(PSTR("Scroll Lock: "), false);
oled_write_ln_P(led_state.scroll_lock ? PSTR("On") : PSTR("Off"), false);
oled_write_P(PSTR("Backlit: "), false);
oled_write_ln_P(is_backlight_enabled() ? PSTR("On") : PSTR("Off"), false);
#ifdef RGBLIGHT_ENABLE
static char rgbStatusLine1[26] = {0};
snprintf(rgbStatusLine1, sizeof(rgbStatusLine1), "RGB Mode: %d", rgblight_get_mode());
oled_write_ln(rgbStatusLine1, false);
static char rgbStatusLine2[26] = {0};
snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
oled_write_ln(rgbStatusLine2, false);
#endif
}
#endif
+2
View File
@@ -55,4 +55,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
11, 10, 9, 8, 7, 6 } 11, 10, 9, 8, 7, 6 }
#endif #endif
#define OLED_DISPLAY_128X64
#define EE_HANDS #define EE_HANDS
+50
View File
@@ -0,0 +1,50 @@
/* Copyright 2021 Stanrc85
*
* 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
#include "stanrc85.h"
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QWERTY] = LAYOUT(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_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_PGDN,
KC_CTLE, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, MO(_FN2_60),
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, LT_BPCF, KC_LGUI, LT_SPCF, TD_TWIN, KC_LEFT, KC_DOWN, KC_RGHT
),
[_DEFAULT] = LAYOUT(
KC_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_BSLS, KC_GRV, 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_BSPC, 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, MO(_FN2_60),
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_SPC, MO(_FN1_60), KC_SPC, KC_RALT, KC_LEFT, KC_DOWN, KC_RGHT
),
[_FN1_60] = LAYOUT(
KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_DEL, _______,
_______, _______, CA_QUOT, _______, CA_SCLN, KC_VOLU, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PSCR, _______, _______, KC_INS, _______,
KC_CAPS, _______, _______, KC_LCTL, KC_LSFT, KC_VOLD, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______,
_______, KC_RDP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______
),
[_FN2_60] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MAKE, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, TG(_DEFAULT)
)
};
@@ -0,0 +1 @@
USER_NAME := stanrc85
+1 -1
View File
@@ -29,7 +29,7 @@ led_config_t g_led_config = { {
{ 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {225, 0}, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete { 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {202, 0}, {225, 0}, // Esc, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, -, =, Backspace, Delete
{ 4, 16}, { 22, 16}, { 37, 16}, { 52, 16}, { 67, 16}, { 82, 16}, { 97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {206, 16}, {225, 16}, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home { 4, 16}, { 22, 16}, { 37, 16}, { 52, 16}, { 67, 16}, { 82, 16}, { 97, 16}, {112, 16}, {127, 16}, {142, 16}, {157, 16}, {172, 16}, {187, 16}, {206, 16}, {225, 16}, // Tab, Q, W, E, R, T, Y, U, I, O, P, [, ], backslash , Home
{ 6, 32}, { 26, 32}, { 41, 32}, { 56, 32}, { 71, 32}, { 86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {225, 32}, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up { 6, 32}, { 26, 32}, { 41, 32}, { 56, 32}, { 71, 32}, { 86, 32}, {101, 32}, {116, 32}, {131, 32}, {146, 32}, {161, 32}, {176, 32}, {201, 32}, {225, 32}, // Capslock, A, S, D, F, G, H, J, K, L, ;, ', Enter, Page up
{ 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, { 10, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down { 9, 48}, { 34, 48}, { 49, 48}, { 64, 48}, { 79, 48}, { 94, 48}, {109, 48}, {124, 48}, {139, 48}, {154, 48}, {169, 48}, {189, 48}, {208, 48}, {225, 48}, // LShift, Z, X, C, V, B, N, M, ,, ., /, Shift, Up, Page Down
{ 2, 64}, { 21, 64}, { 39, 64}, { 94, 64}, {148, 64}, {163, 64}, {178, 64}, {193, 64}, {208, 64}, {225, 64}, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right { 2, 64}, { 21, 64}, { 39, 64}, { 94, 64}, {148, 64}, {163, 64}, {178, 64}, {193, 64}, {208, 64}, {225, 64}, // Ctrl, GUI, Alt, Space, RAlt, FN, Ctrl, Left, Down, Right
{185, 45}, {160, 45}, {125, 45}, { 95, 45}, { 60, 45}, { 25, 45} // UNDERGLOW {185, 45}, {160, 45}, {125, 45}, { 95, 45}, { 60, 45}, { 25, 45} // UNDERGLOW
}, { }, {
+2 -2
View File
@@ -21,8 +21,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */ /* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED #define VENDOR_ID 0x4245 //BE
#define PRODUCT_ID 0x6060 #define PRODUCT_ID 0x544C //TL
#define DEVICE_VER 0x0001 #define DEVICE_VER 0x0001
#define MANUFACTURER Bathroom Epiphanies #define MANUFACTURER Bathroom Epiphanies
#define PRODUCT tiger_lily #define PRODUCT tiger_lily
@@ -0,0 +1,18 @@
/* Copyright 2021 Fehmer
*
* 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 3
@@ -0,0 +1,40 @@
/* Copyright 2021 Fehmer
*
* 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(
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_SLCK,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_NLCK,KC_PSLS,KC_PAST,KC_PMNS,
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_P7, KC_P8, KC_P9,KC_PPLS,
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_P4, KC_P5, KC_P6,
KC_LSFT,KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M,KC_COMM, KC_DOT,KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3,KC_PENT,
KC_LCTL,KC_LGUI,KC_LALT, KC_SPC, KC_RALT,KC_RGUI, KC_APP,KC_RCTL, KC_LEFT,KC_DOWN,KC_RGHT, KC_P0,KC_PDOT),
[1] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS),
[2] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS,
KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS,KC_TRNS, KC_TRNS,KC_TRNS)
};
@@ -0,0 +1,14 @@
VIA_ENABLE = yes
LTO_ENABLE = yes
MOUSEKEY_ENABLE = yes
EXTRAKEY_ENABLE = yes
CONSOLE_ENABLE = no
COMMAND_ENABLE = yes
NKRO_ENABLE = yes
BACKLIGHT_ENABLE = no
MIDI_ENABLE = no
AUDIO_ENABLE = no
UNICODE_ENABLE = no
BLUETOOTH_ENABLE = no
RGBLIGHT_ENABLE = no
SLEEP_LED_ENABLE = no
@@ -51,6 +51,18 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
/* define if matrix has ghost */ /* define if matrix has ghost */
//#define MATRIX_HAS_GHOST //#define MATRIX_HAS_GHOST
// I2C config
#define I2C_DRIVER I2CD1
#define I2C1_SCL_BANK GPIOB
#define I2C1_SCL 6
#define I2C1_SDA 7
#define I2C1_SCL_PAL_MODE 1
#define I2C1_SDA_PAL_MODE 1
#define I2C1_TIMINGR_PRESC 0x00U
#define I2C1_TIMINGR_SCLDEL 0x03U
#define I2C1_TIMINGR_SDADEL 0x01U
#define I2C1_TIMINGR_SCLH 0x03U
#define I2C1_TIMINGR_SCLL 0x09U
/* Set 0 if debouncing isn't needed */ /* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5 #define DEBOUNCE 5
@@ -1,124 +0,0 @@
/* Copyright 2018 Jack Humbert
* Copyright 2018 Yiancar
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* This library is only valid for STM32 processors.
* This library follows the convention of the AVR i2c_master library.
* As a result addresses are expected to be already shifted (addr << 1).
* I2CD1 is the default driver which corresponds to pins B6 and B7. This
* can be changed.
* Please ensure that HAL_USE_I2C is TRUE in the halconf.h file and that
* STM32_I2C_USE_I2C1 is TRUE in the mcuconf.h file. Pins B6 and B7 are used
* but using any other I2C pins should be trivial.
*/
#include "i2c_master.h"
#include "quantum.h"
#include <string.h>
#include <hal.h>
static uint8_t i2c_address;
// This configures the I2C clock to 400khz assuming a 48Mhz clock
// For more info : https://www.st.com/en/embedded-software/stsw-stm32126.html
static const I2CConfig i2cconfig = {
STM32_TIMINGR_PRESC(0x00U) |
STM32_TIMINGR_SCLDEL(0x03U) | STM32_TIMINGR_SDADEL(0x01U) |
STM32_TIMINGR_SCLH(0x03U) | STM32_TIMINGR_SCLL(0x09U),
0,
0
};
static i2c_status_t chibios_to_qmk(const msg_t status) {
switch (status) {
case I2C_NO_ERROR:
return I2C_STATUS_SUCCESS;
case I2C_TIMEOUT:
return I2C_STATUS_TIMEOUT;
// I2C_BUS_ERROR, I2C_ARBITRATION_LOST, I2C_ACK_FAILURE, I2C_OVERRUN, I2C_PEC_ERROR, I2C_SMB_ALERT
default:
return I2C_STATUS_ERROR;
}
}
__attribute__ ((weak))
void i2c_init(void)
{
// Try releasing special pins for a short time
palSetPadMode(GPIOB, 6, PAL_MODE_INPUT);
palSetPadMode(GPIOB, 7, PAL_MODE_INPUT);
chThdSleepMilliseconds(10);
palSetPadMode(GPIOB, 6, PAL_MODE_ALTERNATE(1) | PAL_STM32_OTYPE_OPENDRAIN);
palSetPadMode(GPIOB, 7, PAL_MODE_ALTERNATE(1) | PAL_STM32_OTYPE_OPENDRAIN);
//i2cInit(); //This is invoked by halInit() so no need to redo it.
}
i2c_status_t i2c_start(uint8_t address)
{
i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
return I2C_STATUS_SUCCESS;
}
i2c_status_t i2c_transmit(uint8_t address, const uint8_t* data, uint16_t length, uint16_t timeout)
{
i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
i2cAcquireBus(&I2C_DRIVER);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, 0, 0, TIME_MS2I(timeout));
i2cReleaseBus(&I2C_DRIVER);
return chibios_to_qmk(status);
}
i2c_status_t i2c_receive(uint8_t address, uint8_t* data, uint16_t length, uint16_t timeout)
{
i2c_address = address;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterReceiveTimeout(&I2C_DRIVER, (i2c_address >> 1), data, length, TIME_MS2I(timeout));
return chibios_to_qmk(status);
}
i2c_status_t i2c_writeReg(uint8_t devaddr, uint8_t regaddr, const uint8_t* data, uint16_t length, uint16_t timeout)
{
i2c_address = devaddr;
i2cStart(&I2C_DRIVER, &i2cconfig);
uint8_t complete_packet[length + 1];
for(uint8_t i = 0; i < length; i++)
{
complete_packet[i+1] = data[i];
}
complete_packet[0] = regaddr;
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), complete_packet, length + 1, 0, 0, TIME_MS2I(timeout));
return chibios_to_qmk(status);
}
i2c_status_t i2c_readReg(uint8_t devaddr, uint8_t regaddr, uint8_t* data, uint16_t length, uint16_t timeout)
{
i2c_address = devaddr;
i2cStart(&I2C_DRIVER, &i2cconfig);
msg_t status = i2cMasterTransmitTimeout(&I2C_DRIVER, (i2c_address >> 1), &regaddr, 1, data, length, TIME_MS2I(timeout));
return chibios_to_qmk(status);
}
void i2c_stop(void)
{
i2cStop(&I2C_DRIVER);
}
@@ -380,7 +380,7 @@ void matrix_init_kb(void)
} }
void matrix_scan_kb(void) { void housekeeping_task_kb(void) {
rtcGetTime(&RTCD1, &last_timespec); rtcGetTime(&RTCD1, &last_timespec);
uint16_t minutes_since_midnight = last_timespec.millisecond / 1000 / 60; uint16_t minutes_since_midnight = last_timespec.millisecond / 1000 / 60;
+3 -30
View File
@@ -19,37 +19,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x4355
#define PRODUCT_ID 0x0081
#define DEVICE_VER 0x0001
#define MANUFACTURER CapsUnlocked
#define PRODUCT CU80 v2 ANSI
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
#define LOCKING_SUPPORT_ENABLE #define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */ /* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE #define LOCKING_RESYNC_ENABLE
#define RGB_DI_PIN E6 /* Define RGB */
#ifdef RGB_DI_PIN #define DRIVER_LED_TOTAL 87
#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 87
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 50
#endif
+139 -97
View File
@@ -1,100 +1,142 @@
{ {
"keyboard_name": "CapsUnlocked CU80 v2 ANSI", "manufacturer": "CapsUnlocked",
"maintainer": "rys", "keyboard_name": "CapsUnlocked CU80 v2 ANSI",
"url": "https://caps-unlocked.com/cu80-round-2/", "maintainer": "rys / maz0r",
"width": 18.25, "height": 6.5,
"height": 6.5, "width": 18.25,
"layouts": { "bootloader": "atmel-dfu",
"LAYOUT_tkl_ansi": { "debounce": 5,
"layout": [ "diode_direction": "COL2ROW",
{"label":"Esc", "x":0, "y":0}, "features": {
{"label":"F1", "x":2, "y":0}, "audio": false,
{"label":"F2", "x":3, "y":0}, "backlight": false,
{"label":"F3", "x":4, "y":0}, "bluetooth": false,
{"label":"F4", "x":5, "y":0}, "bootmagic_lite": true,
{"label":"F5", "x":6.5, "y":0}, "command": false,
{"label":"F6", "x":7.5, "y":0}, "console": false,
{"label":"F7", "x":8.5, "y":0}, "extrakey": true,
{"label":"F8", "x":9.5, "y":0}, "mousekey": false,
{"label":"F9", "x":11, "y":0}, "nkro": true,
{"label":"F10", "x":12, "y":0}, "rgblight": true,
{"label":"F11", "x":13, "y":0}, "sleep_led": false,
{"label":"F12", "x":14, "y":0}, "unicode": false
{"label":"PrtSc", "x":15.25, "y":0}, },
{"label":"Scroll Lock", "x":16.25, "y":0}, "matrix_pins": {
{"label":"Pause", "x":17.25, "y":0}, "cols": ["B0", "B1", "B2", "B3", "F4", "F5", "F6", "F7", "B6", "B5", "D7", "B4", "D6", "F0", "D1", "C6", "D4"],
{"label":"\u00ac", "x":0, "y":1.5}, "rows": ["D3", "D2", "B7", "F1", "C7", "D5"]
{"label":"!", "x":1, "y":1.5}, },
{"label":"@", "x":2, "y":1.5}, "processor": "atmega32u4",
{"label":"£", "x":3, "y":1.5}, "rgblight": {
{"label":"$", "x":4, "y":1.5}, "animations": {
{"label":"%", "x":5, "y":1.5}, "all": false
{"label":"^", "x":6, "y":1.5}, },
{"label":"&", "x":7, "y":1.5}, "brightness_steps": 8,
{"label":"*", "x":8, "y":1.5}, "hue_steps": 8,
{"label":"(", "x":9, "y":1.5}, "led_count": 87,
{"label":")", "x":10, "y":1.5}, "max_brightness": 50,
{"label":"_", "x":11, "y":1.5}, "pin": "E6",
{"label":"+", "x":12, "y":1.5}, "saturation_steps": 8
{"label":"Backspace", "x":13, "y":1.5, "w":2}, },
{"label":"Insert", "x":15.25, "y":1.5}, "url": "https://caps-unlocked.com/cu80-round-2/",
{"label":"Home", "x":16.25, "y":1.5}, "usb": {
{"label":"PgUp", "x":17.25, "y":1.5}, "device_ver": "0x0001",
{"label":"Tab", "x":0, "y":2.5, "w":1.5}, "pid": "0x0081",
{"label":"Q", "x":1.5, "y":2.5}, "vid": "0x4355"
{"label":"W", "x":2.5, "y":2.5}, },
{"label":"E", "x":3.5, "y":2.5}, "community_layouts": ["tkl_ansi"],
{"label":"R", "x":4.5, "y":2.5}, "layouts": {
{"label":"T", "x":5.5, "y":2.5}, "LAYOUT_tkl_ansi": {
{"label":"Y", "x":6.5, "y":2.5}, "c_macro": true,
{"label":"U", "x":7.5, "y":2.5}, "filename": "keyboards/capsunlocked/cu80/v2_ansi/v2_ansi.h",
{"label":"I", "x":8.5, "y":2.5}, "layout": [
{"label":"O", "x":9.5, "y":2.5}, { "label": "Esc", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
{"label":"P", "x":10.5, "y":2.5}, { "label": "F1", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
{"label":"{", "x":11.5, "y":2.5}, { "label": "F2", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
{"label":"}", "x":12.5, "y":2.5}, { "label": "F3", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
{"label":"|", "x":13.5, "y":2.5, "w":1.5}, { "label": "F4", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
{"label":"Delete", "x":15.25, "y":2.5}, { "label": "F5", "matrix": [0, 6], "w": 1, "x": 6.5, "y": 0 },
{"label":"End", "x":16.25, "y":2.5}, { "label": "F6", "matrix": [0, 7], "w": 1, "x": 7.5, "y": 0 },
{"label":"PgDn", "x":17.25, "y":2.5}, { "label": "F7", "matrix": [0, 8], "w": 1, "x": 8.5, "y": 0 },
{"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, { "label": "F8", "matrix": [0, 9], "w": 1, "x": 9.5, "y": 0 },
{"label":"A", "x":1.75, "y":3.5}, { "label": "F9", "matrix": [0, 10], "w": 1, "x": 11, "y": 0 },
{"label":"S", "x":2.75, "y":3.5}, { "label": "F10", "matrix": [0, 11], "w": 1, "x": 12, "y": 0 },
{"label":"D", "x":3.75, "y":3.5}, { "label": "F11", "matrix": [0, 12], "w": 1, "x": 13, "y": 0 },
{"label":"F", "x":4.75, "y":3.5}, { "label": "F12", "matrix": [0, 13], "w": 1, "x": 14, "y": 0 },
{"label":"G", "x":5.75, "y":3.5}, { "label": "PrtSc", "matrix": [0, 14], "w": 1, "x": 15.25, "y": 0 },
{"label":"H", "x":6.75, "y":3.5}, { "label": "Scroll Lock", "matrix": [0, 15], "w": 1, "x": 16.25, "y": 0 },
{"label":"J", "x":7.75, "y":3.5}, { "label": "Pause", "matrix": [0, 16], "w": 1, "x": 17.25, "y": 0 },
{"label":"K", "x":8.75, "y":3.5}, { "label": "\u00ac", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.5 },
{"label":"L", "x":9.75, "y":3.5}, { "label": "!", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.5 },
{"label":":", "x":10.75, "y":3.5}, { "label": "@", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.5 },
{"label":"\"", "x":11.75, "y":3.5}, { "label": "\u00a3", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.5 },
{"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, { "label": "$", "matrix": [1, 4], "w": 1, "x": 4, "y": 1.5 },
{"label":"Shift", "x":0, "y":4.5, "w":2.25}, { "label": "%", "matrix": [1, 5], "w": 1, "x": 5, "y": 1.5 },
{"label":"Z", "x":2.25, "y":4.5}, { "label": "^", "matrix": [1, 6], "w": 1, "x": 6, "y": 1.5 },
{"label":"X", "x":3.25, "y":4.5}, { "label": "&", "matrix": [1, 7], "w": 1, "x": 7, "y": 1.5 },
{"label":"C", "x":4.25, "y":4.5}, { "label": "*", "matrix": [1, 8], "w": 1, "x": 8, "y": 1.5 },
{"label":"V", "x":5.25, "y":4.5}, { "label": "(", "matrix": [1, 9], "w": 1, "x": 9, "y": 1.5 },
{"label":"B", "x":6.25, "y":4.5}, { "label": ")", "matrix": [1, 10], "w": 1, "x": 10, "y": 1.5 },
{"label":"N", "x":7.25, "y":4.5}, { "label": "_", "matrix": [1, 11], "w": 1, "x": 11, "y": 1.5 },
{"label":"M", "x":8.25, "y":4.5}, { "label": "+", "matrix": [1, 12], "w": 1, "x": 12, "y": 1.5 },
{"label":"<", "x":9.25, "y":4.5}, { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 },
{"label":">", "x":10.25, "y":4.5}, { "label": "Insert", "matrix": [1, 14], "w": 1, "x": 15.25, "y": 1.5 },
{"label":"?", "x":11.25, "y":4.5}, { "label": "Home", "matrix": [1, 15], "w": 1, "x": 16.25, "y": 1.5 },
{"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, { "label": "PgUp", "matrix": [1, 16], "w": 1, "x": 17.25, "y": 1.5 },
{"label":"Up", "x":16.25, "y":4.5}, { "label": "Tab", "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 },
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, { "label": "Q", "matrix": [2, 1], "w": 1, "x": 1.5, "y": 2.5 },
{"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, { "label": "W", "matrix": [2, 2], "w": 1, "x": 2.5, "y": 2.5 },
{"label":"Win", "x":2.5, "y":5.5, "w":1.25}, { "label": "E", "matrix": [2, 3], "w": 1, "x": 3.5, "y": 2.5 },
{"label":"Space", "x":3.75, "y":5.5, "w":6.25}, { "label": "R", "matrix": [2, 4], "w": 1, "x": 4.5, "y": 2.5 },
{"label":"Win", "x":10, "y":5.5, "w":1.25}, { "label": "T", "matrix": [2, 5], "w": 1, "x": 5.5, "y": 2.5 },
{"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, { "label": "Y", "matrix": [2, 6], "w": 1, "x": 6.5, "y": 2.5 },
{"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, { "label": "U", "matrix": [2, 7], "w": 1, "x": 7.5, "y": 2.5 },
{"label":"Fn", "x":13.75, "y":5.5, "w":1.25}, { "label": "I", "matrix": [2, 8], "w": 1, "x": 8.5, "y": 2.5 },
{"label":"Left", "x":15.25, "y":5.5}, { "label": "O", "matrix": [2, 9], "w": 1, "x": 9.5, "y": 2.5 },
{"label":"Down", "x":16.25, "y":5.5}, { "label": "P", "matrix": [2, 10], "w": 1, "x": 10.5, "y": 2.5 },
{"label":"Right", "x":17.25, "y":5.5} { "label": "{", "matrix": [2, 11], "w": 1, "x": 11.5, "y": 2.5 },
] { "label": "}", "matrix": [2, 12], "w": 1, "x": 12.5, "y": 2.5 },
} { "label": "|", "matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 2.5 },
{ "label": "Delete", "matrix": [2, 14], "w": 1, "x": 15.25, "y": 2.5 },
{ "label": "End", "matrix": [2, 15], "w": 1, "x": 16.25, "y": 2.5 },
{ "label": "PgDn", "matrix": [2, 16], "w": 1, "x": 17.25, "y": 2.5 },
{ "label": "Caps Lock", "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 },
{ "label": "A", "matrix": [3, 1], "w": 1, "x": 1.75, "y": 3.5 },
{ "label": "S", "matrix": [3, 2], "w": 1, "x": 2.75, "y": 3.5 },
{ "label": "D", "matrix": [3, 3], "w": 1, "x": 3.75, "y": 3.5 },
{ "label": "F", "matrix": [3, 4], "w": 1, "x": 4.75, "y": 3.5 },
{ "label": "G", "matrix": [3, 5], "w": 1, "x": 5.75, "y": 3.5 },
{ "label": "H", "matrix": [3, 6], "w": 1, "x": 6.75, "y": 3.5 },
{ "label": "J", "matrix": [3, 7], "w": 1, "x": 7.75, "y": 3.5 },
{ "label": "K", "matrix": [3, 8], "w": 1, "x": 8.75, "y": 3.5 },
{ "label": "L", "matrix": [3, 9], "w": 1, "x": 9.75, "y": 3.5 },
{ "label": ":", "matrix": [3, 10], "w": 1, "x": 10.75, "y": 3.5 },
{ "label": "\"", "matrix": [3, 11], "w": 1, "x": 11.75, "y": 3.5 },
{ "label": "Enter", "matrix": [3, 12], "w": 2.25, "x": 12.75, "y": 3.5 },
{ "label": "Shift", "matrix": [4, 0], "w": 2.25, "x": 0, "y": 4.5 },
{ "label": "Z", "matrix": [4, 2], "w": 1, "x": 2.25, "y": 4.5 },
{ "label": "X", "matrix": [4, 3], "w": 1, "x": 3.25, "y": 4.5 },
{ "label": "C", "matrix": [4, 4], "w": 1, "x": 4.25, "y": 4.5 },
{ "label": "V", "matrix": [4, 5], "w": 1, "x": 5.25, "y": 4.5 },
{ "label": "B", "matrix": [4, 6], "w": 1, "x": 6.25, "y": 4.5 },
{ "label": "N", "matrix": [4, 7], "w": 1, "x": 7.25, "y": 4.5 },
{ "label": "M", "matrix": [4, 8], "w": 1, "x": 8.25, "y": 4.5 },
{ "label": "<", "matrix": [4, 9], "w": 1, "x": 9.25, "y": 4.5 },
{ "label": ">", "matrix": [4, 10], "w": 1, "x": 10.25, "y": 4.5 },
{ "label": "?", "matrix": [4, 11], "w": 1, "x": 11.25, "y": 4.5 },
{ "label": "Shift", "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 },
{ "label": "Up", "matrix": [4, 15], "w": 1, "x": 16.25, "y": 4.5 },
{ "label": "Ctrl", "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.5 },
{ "label": "Alt", "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.5 },
{ "label": "Win", "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.5 },
{ "label": "Space", "matrix": [5, 5], "w": 6.25, "x": 3.75, "y": 5.5 },
{ "label": "Win", "matrix": [5, 9], "w": 1.25, "x": 10, "y": 5.5 },
{ "label": "AltGr", "matrix": [5, 10], "w": 1.25, "x": 11.25, "y": 5.5 },
{ "label": "Ctrl", "matrix": [5, 11], "w": 1.25, "x": 12.5, "y": 5.5 },
{ "label": "Fn", "matrix": [5, 12], "w": 1.25, "x": 13.75, "y": 5.5 },
{ "label": "Left", "matrix": [5, 13], "w": 1, "x": 15.25, "y": 5.5 },
{ "label": "Down", "matrix": [5, 15], "w": 1, "x": 16.25, "y": 5.5 },
{ "label": "Right", "matrix": [5, 16], "w": 1, "x": 17.25, "y": 5.5 }
]
} }
}
} }
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_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_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_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
[1] = LAYOUT_tkl_ansi( [1] = LAYOUT_tkl_ansi(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R,
@@ -32,7 +32,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_SPD,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD
), ),
}; };
@@ -23,7 +23,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_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_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_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_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
[1] = LAYOUT_tkl_ansi( [1] = LAYOUT_tkl_ansi(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R,
@@ -31,7 +31,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_SPD,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD _______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD
), ),
[2] = LAYOUT_tkl_ansi( [2] = LAYOUT_tkl_ansi(
@@ -4,12 +4,13 @@ The CU80 v2 ANSI is the PCB for round 2 of the CU80 TKL keyboard, with fixed lay
To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in, or use the reset button on the back of the PCB. To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in, or use the reset button on the back of the PCB.
* Keyboard maintainer: [rys](https://github.com/rys) * Keyboard maintainer: [rys](https://github.com/rys) & [maz0r](https://github.com/maz0r)
* Hardware supported: [CU80 v2 ANSI](https://imgur.com/gOWpJqe) * Hardware supported: [CU80 v2 ANSI](https://imgur.com/gOWpJqe)
* Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/) * Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/)
Make and flash example for this keyboard (after setting up your build environment): Make and flash example for this keyboard (after setting up your build environment):
make capsunlocked/cu80/v2_ansi:default:flash make capsunlocked/cu80/v2_ansi:default:flash
make capsunlocked/cu80/v2_ansi/rgb: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). 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).
@@ -0,0 +1,37 @@
/*
Copyright 2021 CapsUnlocked
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
/* enable RGB matrix */
#define CU80_RGB
/* update the product for RGB Matrix variant in VIA/VIAL and Remap-keys.app */
#undef PRODUCT_ID
#undef PRODUCT
#define PRODUCT_ID 0x0082
#define PRODUCT CU80 v2 ANSI RGB
/* moved to RGB specific */
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 50
/* RGB firmware override */
#undef RGBLIGHT_ANIMATIONS
#undef RGBLIGHT_HUE_STEP
#undef RGBLIGHT_SAT_STEP
#undef RGBLIGHT_VAL_STEP
#undef RGBLIGHT_LIMIT_VAL
@@ -0,0 +1,3 @@
# CU80 v2 ANSI RGB
Overrides
@@ -0,0 +1,3 @@
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
RGB_MATRIX_ENABLE = yes # Enable RGB matrix
RGB_MATRIX_DRIVER = WS2812 # Set Driver to WS2812
+1 -16
View File
@@ -7,19 +7,4 @@ BOOTLOADER = atmel-dfu
# Build Options # Build Options
# change yes to no to disable # change yes to no to disable
# #
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration NO_USB_STARTUP_CHECK = yes # resolve possible sleep issue
MOUSEKEY_ENABLE = no # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
UNICODE_ENABLE = no # Unicode
BLUETOOTH_ENABLE = no # Enable Bluetooth
AUDIO_ENABLE = no # Audio output
LAYOUTS = tkl_ansi
@@ -16,3 +16,33 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#include "v2_ansi.h" #include "v2_ansi.h"
#ifdef CU80_RGB
void matrix_init_kb(void) {
setPinOutput(E6);
matrix_init_user();
}
/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */
void rgb_matrix_indicators_kb(void) {
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color(62, 255, 255, 255);
}
if (host_keyboard_led_state().scroll_lock) {
rgb_matrix_set_color(14, 255, 255, 255);
}
}
/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */
led_config_t g_led_config = {{{0, NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}, {32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16}, {33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49}, {62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50}, {63, NO_LED, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, NO_LED, NO_LED, 75}, {86, 85, 84, NO_LED, NO_LED, 83, NO_LED, NO_LED, NO_LED, 82, 81, 80, 79, 78, NO_LED, 77, 76}
},
/*board layout accounting for led directions */
{{0, 0}, {28, 0}, {42, 0}, {56, 0}, {71, 0}, {85, 0}, {99, 0}, {113, 0}, {127, 0}, {141, 0}, {155, 0}, {169, 0}, {184, 0}, {198, 0}, {212, 0}, {226, 0}, {226, 13}, {212, 13}, {198, 13}, {184, 13}, {169, 13}, {155, 13}, {141, 13}, {127, 13}, {113, 13}, {99, 13}, {85, 13}, {71, 13}, {56, 13}, {42, 13}, {28, 13}, {14, 13}, {0, 13}, {0, 26}, {14, 26}, {28, 26}, {42, 26}, {56, 26}, {71, 26}, {85, 26}, {99, 26}, {113, 26}, {127, 26}, {141, 26},
{155, 26}, {169, 26}, {184, 26}, {198, 26}, {212, 26}, {226, 26}, {169, 38}, {155, 38}, {141, 38}, {127, 38}, {113, 38}, {99, 38}, {85, 38}, {71, 38}, {56, 38}, {42, 38}, {28, 38}, {14, 38}, {0, 38}, {0, 51}, {28, 51}, {42, 51}, {56, 51}, {71, 51}, {85, 51}, {99, 51}, {113, 51}, {127, 51}, {141, 51}, {155, 51}, {169, 51}, {212, 51}, {226, 64}, {212, 64}, {184, 64}, {169, 64}, {155, 64}, {141, 64}, {127, 64}, {71, 64}, {28, 64}, {14, 64}, {0, 64}
},
/* marks scroll and caps as function modifiers for led effects */
{4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4, 1, 1, 1, 1, 4, 1, 1, 1}};
#endif
@@ -1,100 +0,0 @@
{
"keyboard_name": "CapsUnlocked CU80 v2 ANSI RGB",
"maintainer": "rys",
"url": "https://caps-unlocked.com/cu80-round-2/",
"width": 18.25,
"height": 6.5,
"layouts": {
"LAYOUT_tkl_ansi": {
"layout": [
{"label":"Esc", "x":0, "y":0},
{"label":"F1", "x":2, "y":0},
{"label":"F2", "x":3, "y":0},
{"label":"F3", "x":4, "y":0},
{"label":"F4", "x":5, "y":0},
{"label":"F5", "x":6.5, "y":0},
{"label":"F6", "x":7.5, "y":0},
{"label":"F7", "x":8.5, "y":0},
{"label":"F8", "x":9.5, "y":0},
{"label":"F9", "x":11, "y":0},
{"label":"F10", "x":12, "y":0},
{"label":"F11", "x":13, "y":0},
{"label":"F12", "x":14, "y":0},
{"label":"PrtSc", "x":15.25, "y":0},
{"label":"Scroll Lock", "x":16.25, "y":0},
{"label":"Pause", "x":17.25, "y":0},
{"label":"\u00ac", "x":0, "y":1.5},
{"label":"!", "x":1, "y":1.5},
{"label":"@", "x":2, "y":1.5},
{"label":"£", "x":3, "y":1.5},
{"label":"$", "x":4, "y":1.5},
{"label":"%", "x":5, "y":1.5},
{"label":"^", "x":6, "y":1.5},
{"label":"&", "x":7, "y":1.5},
{"label":"*", "x":8, "y":1.5},
{"label":"(", "x":9, "y":1.5},
{"label":")", "x":10, "y":1.5},
{"label":"_", "x":11, "y":1.5},
{"label":"+", "x":12, "y":1.5},
{"label":"Backspace", "x":13, "y":1.5, "w":2},
{"label":"Insert", "x":15.25, "y":1.5},
{"label":"Home", "x":16.25, "y":1.5},
{"label":"PgUp", "x":17.25, "y":1.5},
{"label":"Tab", "x":0, "y":2.5, "w":1.5},
{"label":"Q", "x":1.5, "y":2.5},
{"label":"W", "x":2.5, "y":2.5},
{"label":"E", "x":3.5, "y":2.5},
{"label":"R", "x":4.5, "y":2.5},
{"label":"T", "x":5.5, "y":2.5},
{"label":"Y", "x":6.5, "y":2.5},
{"label":"U", "x":7.5, "y":2.5},
{"label":"I", "x":8.5, "y":2.5},
{"label":"O", "x":9.5, "y":2.5},
{"label":"P", "x":10.5, "y":2.5},
{"label":"{", "x":11.5, "y":2.5},
{"label":"}", "x":12.5, "y":2.5},
{"label":"|", "x":13.5, "y":2.5, "w":1.5},
{"label":"Delete", "x":15.25, "y":2.5},
{"label":"End", "x":16.25, "y":2.5},
{"label":"PgDn", "x":17.25, "y":2.5},
{"label":"Caps Lock", "x":0, "y":3.5, "w":1.75},
{"label":"A", "x":1.75, "y":3.5},
{"label":"S", "x":2.75, "y":3.5},
{"label":"D", "x":3.75, "y":3.5},
{"label":"F", "x":4.75, "y":3.5},
{"label":"G", "x":5.75, "y":3.5},
{"label":"H", "x":6.75, "y":3.5},
{"label":"J", "x":7.75, "y":3.5},
{"label":"K", "x":8.75, "y":3.5},
{"label":"L", "x":9.75, "y":3.5},
{"label":":", "x":10.75, "y":3.5},
{"label":"\"", "x":11.75, "y":3.5},
{"label":"Enter", "x":12.75, "y":3.5, "w":2.25},
{"label":"Shift", "x":0, "y":4.5, "w":2.25},
{"label":"Z", "x":2.25, "y":4.5},
{"label":"X", "x":3.25, "y":4.5},
{"label":"C", "x":4.25, "y":4.5},
{"label":"V", "x":5.25, "y":4.5},
{"label":"B", "x":6.25, "y":4.5},
{"label":"N", "x":7.25, "y":4.5},
{"label":"M", "x":8.25, "y":4.5},
{"label":"<", "x":9.25, "y":4.5},
{"label":">", "x":10.25, "y":4.5},
{"label":"?", "x":11.25, "y":4.5},
{"label":"Shift", "x":12.25, "y":4.5, "w":2.75},
{"label":"Up", "x":16.25, "y":4.5},
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25},
{"label":"Alt", "x":1.25, "y":5.5, "w":1.25},
{"label":"Win", "x":2.5, "y":5.5, "w":1.25},
{"label":"Space", "x":3.75, "y":5.5, "w":6.25},
{"label":"Win", "x":10, "y":5.5, "w":1.25},
{"label":"AltGr", "x":11.25, "y":5.5, "w":1.25},
{"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25},
{"label":"Fn", "x":13.75, "y":5.5, "w":1.25},
{"label":"Left", "x":15.25, "y":5.5},
{"label":"Down", "x":16.25, "y":5.5},
{"label":"Right", "x":17.25, "y":5.5}
]
}
}
}
@@ -1,38 +0,0 @@
/*
Copyright 2021 CapsUnlocked
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_SLCK, 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_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
[1] = LAYOUT_tkl_ansi(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI, RGB_SAI, RGB_VAI,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_VAD,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, RGB_RMOD,RGB_TOG, RGB_MOD
),
};
@@ -1,3 +0,0 @@
# The default ANSI keymap for the CU80
This CU80 is keymap is for the fixed ANSI variant with fully populated bottom row.
@@ -1,18 +0,0 @@
# CU80 v2 ANSI RGB
The CU80 v2 ANSI is the PCB for round 2 of the CU80 TKL keyboard, with matrix RGB lighting, fixed ANSI layout and VIA support.
This firmware adds RGB matrix support.
To place the keyboard into bootloader mode in order to flash it, hold the ESC key while plugging the board in.
* Keyboard maintainer: [rys](https://github.com/rys)
* Hardware supported: CU80 v2 ANSI
* Hardware availability: [CapsUnlocked](https://caps-unlocked.com/cu80-round-2/)
Make and flash example for this keyboard (after setting up your build environment):
make capsunlocked/cu80/v2_ansi_rgb:default:flash
make capsunlocked/cu80/v2_ansi_rgb:via: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).
@@ -1,67 +0,0 @@
/*
Copyright 2021 CapsUnlocked
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 "v2_ansi_rgb.h"
#include "rgb_matrix_types.h"
void matrix_init_kb(void) {
setPinOutput(E6);
matrix_init_user();
}
/* Set LED 62 (Caps Lock) and LED 14 (Scroll Lock) when key active */
void rgb_matrix_indicators_kb(void) {
if (host_keyboard_led_state().caps_lock) {
rgb_matrix_set_color(62, 255, 255, 255);
}
if (host_keyboard_led_state().scroll_lock) {
rgb_matrix_set_color(14, 255, 255, 255);
}
}
/* Leds on the CU80 go ltr > rtl > ltr > rlt > Ltr > rtl */
led_config_t g_led_config = {
{
{ 0,NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
{ 32,31 ,30 ,29 ,28 ,27 ,26 ,25 ,24 ,23 ,22 ,21 ,20 ,19 ,18 ,17 ,16 },
{ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49 },
{ 62, 61, 60, 59,58,57,56,55,54,53,52,51,50 },
{ 63, NO_LED, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, NO_LED, NO_LED, 75 },
{ 86 ,85 ,84 ,NO_LED, NO_LED ,83, NO_LED,NO_LED, NO_LED ,82 ,81 ,80 ,79 ,78 ,NO_LED,77 ,76 }
},
/*board layout accounting for led directions */
{
{0,0}, {28,0}, {42,0}, {56,0}, {71,0}, {85,0}, {99,0}, {113,0}, {127,0}, {141,0}, {155,0}, {169,0}, {184,0}, {198,0}, {212,0}, {226,0},
{226,13}, {212,13}, {198,13}, {184,13}, {169,13}, {155,13}, {141,13}, {127,13}, {113,13}, {99,13}, {85,13}, {71,13}, {56,13}, {42,13}, {28,13}, {14,13}, {0,13},
{0,26}, {14,26}, {28,26}, {42,26}, {56,26}, {71,26}, {85,26}, {99,26}, {113,26}, {127,26}, {141,26}, {155,26}, {169,26}, {184,26}, {198,26}, {212,26}, {226,26},
{169,38}, {155,38}, {141,38}, {127,38}, {113,38}, {99,38}, {85,38}, {71,38}, {56,38}, {42,38}, {28,38}, {14,38}, {0,38},
{0,51}, {28,51}, {42,51}, {56,51}, {71,51}, {85,51}, {99,51}, {113,51}, {127,51}, {141,51}, {155,51}, {169,51}, {212,51},
{226,64}, {212,64}, {184,64}, {169,64}, {155,64}, {141,64}, {127,64}, {71,64}, {28,64}, {14,64}, {0,64}
},
/* marks scroll and caps as function modifiers for led effects */
{
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
}
};
@@ -1,46 +0,0 @@
/*
Copyright 2021 CapsUnlocked
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include "quantum.h"
/* This a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
* layout of the board and position of the keys.
*
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
#define LAYOUT_tkl_ansi( \
K000, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016, \
\
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116, \
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216, \
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, \
K400, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, K415, \
K500, K501, K502, K505, K509, K510, K511, K512, K513, K515, K516 \
) { \
{ K000, KC_NO, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K013, K014, K015, K016 }, \
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, K115, K116 }, \
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, K215, K216 }, \
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, KC_NO, KC_NO, KC_NO }, \
{ K400, KC_NO, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K412, KC_NO, KC_NO, K415, KC_NO }, \
{ K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, KC_NO, K509, K510, K511, K512, K513, KC_NO, K515, K516 }, \
}
+3 -29
View File
@@ -19,37 +19,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "config_common.h" #include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0x4355
#define PRODUCT_ID 0x0080
#define DEVICE_VER 0x0001
#define MANUFACTURER CapsUnlocked
#define PRODUCT CU80 v2 ISO
/* key matrix size */
#define MATRIX_ROWS 6
#define MATRIX_COLS 17
#define MATRIX_ROW_PINS { D3, D2, B7, F1, C7, D5 }
#define MATRIX_COL_PINS { B0, B1, B2, B3, F4, F5, F6, F7, B6, B5, D7, B4, D6, F0, D1, C6, D4 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
#define LOCKING_SUPPORT_ENABLE #define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */ /* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE #define LOCKING_RESYNC_ENABLE
#define RGB_DI_PIN E6 /* Define RGB */
#ifdef RGB_DI_PIN #define DRIVER_LED_TOTAL 88
#define RGBLIGHT_ANIMATIONS #define RGBLIGHT_ANIMATIONS
#define RGBLED_NUM 88
#define RGBLIGHT_HUE_STEP 8
#define RGBLIGHT_SAT_STEP 8
#define RGBLIGHT_VAL_STEP 8
#define RGBLIGHT_LIMIT_VAL 50
#endif
+140 -98
View File
@@ -1,101 +1,143 @@
{ {
"keyboard_name": "CapsUnlocked CU80 v2 ISO", "manufacturer": "CapsUnlocked",
"maintainer": "rys", "keyboard_name": "CapsUnlocked CU80 v2 ISO",
"url": "https://caps-unlocked.com/cu80-round-2/", "maintainer": "rys / maz0r",
"width": 18.25, "height": 6.5,
"height": 6.5, "width": 18.25,
"layouts": { "bootloader": "atmel-dfu",
"LAYOUT_tkl_iso": { "debounce": 5,
"layout": [ "diode_direction": "COL2ROW",
{"label":"Esc", "x":0, "y":0}, "features": {
{"label":"F1", "x":2, "y":0}, "audio": false,
{"label":"F2", "x":3, "y":0}, "backlight": false,
{"label":"F3", "x":4, "y":0}, "bluetooth": false,
{"label":"F4", "x":5, "y":0}, "bootmagic_lite": true,
{"label":"F5", "x":6.5, "y":0}, "command": false,
{"label":"F6", "x":7.5, "y":0}, "console": false,
{"label":"F7", "x":8.5, "y":0}, "extrakey": true,
{"label":"F8", "x":9.5, "y":0}, "mousekey": false,
{"label":"F9", "x":11, "y":0}, "nkro": true,
{"label":"F10", "x":12, "y":0}, "rgblight": true,
{"label":"F11", "x":13, "y":0}, "sleep_led": false,
{"label":"F12", "x":14, "y":0}, "unicode": false
{"label":"PrtSc", "x":15.25, "y":0}, },
{"label":"Scroll Lock", "x":16.25, "y":0}, "matrix_pins": {
{"label":"Pause", "x":17.25, "y":0}, "cols": ["B0", "B1", "B2", "B3", "F4", "F5", "F6", "F7", "B6", "B5", "D7", "B4", "D6", "F0", "D1", "C6", "D4"],
{"label":"\u00ac", "x":0, "y":1.5}, "rows": ["D3", "D2", "B7", "F1", "C7", "D5"]
{"label":"!", "x":1, "y":1.5}, },
{"label":"\"", "x":2, "y":1.5}, "processor": "atmega32u4",
{"label":"£", "x":3, "y":1.5}, "rgblight": {
{"label":"$", "x":4, "y":1.5}, "animations": {
{"label":"%", "x":5, "y":1.5}, "all": false
{"label":"^", "x":6, "y":1.5}, },
{"label":"&", "x":7, "y":1.5}, "brightness_steps": 8,
{"label":"*", "x":8, "y":1.5}, "hue_steps": 8,
{"label":"(", "x":9, "y":1.5}, "led_count": 88,
{"label":")", "x":10, "y":1.5}, "max_brightness": 50,
{"label":"_", "x":11, "y":1.5}, "pin": "E6",
{"label":"+", "x":12, "y":1.5}, "saturation_steps": 8
{"label":"Backspace", "x":13, "y":1.5, "w":2}, },
{"label":"Insert", "x":15.25, "y":1.5}, "url": "https://caps-unlocked.com/cu80-round-2/",
{"label":"Home", "x":16.25, "y":1.5}, "usb": {
{"label":"PgUp", "x":17.25, "y":1.5}, "device_ver": "0x0001",
{"label":"Tab", "x":0, "y":2.5, "w":1.5}, "pid": "0x0080",
{"label":"Q", "x":1.5, "y":2.5}, "vid": "0x4355"
{"label":"W", "x":2.5, "y":2.5}, },
{"label":"E", "x":3.5, "y":2.5}, "community_layouts": ["tkl_iso"],
{"label":"R", "x":4.5, "y":2.5}, "layouts": {
{"label":"T", "x":5.5, "y":2.5}, "LAYOUT_tkl_iso": {
{"label":"Y", "x":6.5, "y":2.5}, "c_macro": true,
{"label":"U", "x":7.5, "y":2.5}, "filename": "keyboards/capsunlocked/cu80/v2_iso/v2_iso.h",
{"label":"I", "x":8.5, "y":2.5}, "layout": [
{"label":"O", "x":9.5, "y":2.5}, { "label": "Esc", "matrix": [0, 0], "w": 1, "x": 0, "y": 0 },
{"label":"P", "x":10.5, "y":2.5}, { "label": "F1", "matrix": [0, 2], "w": 1, "x": 2, "y": 0 },
{"label":"{", "x":11.5, "y":2.5}, { "label": "F2", "matrix": [0, 3], "w": 1, "x": 3, "y": 0 },
{"label":"}", "x":12.5, "y":2.5}, { "label": "F3", "matrix": [0, 4], "w": 1, "x": 4, "y": 0 },
{"label":"Delete", "x":15.25, "y":2.5}, { "label": "F4", "matrix": [0, 5], "w": 1, "x": 5, "y": 0 },
{"label":"End", "x":16.25, "y":2.5}, { "label": "F5", "matrix": [0, 6], "w": 1, "x": 6.5, "y": 0 },
{"label":"PgDn", "x":17.25, "y":2.5}, { "label": "F6", "matrix": [0, 7], "w": 1, "x": 7.5, "y": 0 },
{"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, { "label": "F7", "matrix": [0, 8], "w": 1, "x": 8.5, "y": 0 },
{"label":"A", "x":1.75, "y":3.5}, { "label": "F8", "matrix": [0, 9], "w": 1, "x": 9.5, "y": 0 },
{"label":"S", "x":2.75, "y":3.5}, { "label": "F9", "matrix": [0, 10], "w": 1, "x": 11, "y": 0 },
{"label":"D", "x":3.75, "y":3.5}, { "label": "F10", "matrix": [0, 11], "w": 1, "x": 12, "y": 0 },
{"label":"F", "x":4.75, "y":3.5}, { "label": "F11", "matrix": [0, 12], "w": 1, "x": 13, "y": 0 },
{"label":"G", "x":5.75, "y":3.5}, { "label": "F12", "matrix": [0, 13], "w": 1, "x": 14, "y": 0 },
{"label":"H", "x":6.75, "y":3.5}, { "label": "PrtSc", "matrix": [0, 14], "w": 1, "x": 15.25, "y": 0 },
{"label":"J", "x":7.75, "y":3.5}, { "label": "Scroll Lock", "matrix": [0, 15], "w": 1, "x": 16.25, "y": 0 },
{"label":"K", "x":8.75, "y":3.5}, { "label": "Pause", "matrix": [0, 16], "w": 1, "x": 17.25, "y": 0 },
{"label":"L", "x":9.75, "y":3.5}, { "label": "\u00ac", "matrix": [1, 0], "w": 1, "x": 0, "y": 1.5 },
{"label":":", "x":10.75, "y":3.5}, { "label": "!", "matrix": [1, 1], "w": 1, "x": 1, "y": 1.5 },
{"label":"@", "x":11.75, "y":3.5}, { "label": "\"", "matrix": [1, 2], "w": 1, "x": 2, "y": 1.5 },
{"label":"~", "x":12.75, "y":3.5}, { "label": "\u00a3", "matrix": [1, 3], "w": 1, "x": 3, "y": 1.5 },
{"label":"Enter", "x":13.75, "y":2.5, "w":1.25, "h":2}, { "label": "$", "matrix": [1, 4], "w": 1, "x": 4, "y": 1.5 },
{"label":"Shift", "x":0, "y":4.5, "w":1.25}, { "label": "%", "matrix": [1, 5], "w": 1, "x": 5, "y": 1.5 },
{"label":"|", "x":1.25, "y":4.5}, { "label": "^", "matrix": [1, 6], "w": 1, "x": 6, "y": 1.5 },
{"label":"Z", "x":2.25, "y":4.5}, { "label": "&", "matrix": [1, 7], "w": 1, "x": 7, "y": 1.5 },
{"label":"X", "x":3.25, "y":4.5}, { "label": "*", "matrix": [1, 8], "w": 1, "x": 8, "y": 1.5 },
{"label":"C", "x":4.25, "y":4.5}, { "label": "(", "matrix": [1, 9], "w": 1, "x": 9, "y": 1.5 },
{"label":"V", "x":5.25, "y":4.5}, { "label": ")", "matrix": [1, 10], "w": 1, "x": 10, "y": 1.5 },
{"label":"B", "x":6.25, "y":4.5}, { "label": "_", "matrix": [1, 11], "w": 1, "x": 11, "y": 1.5 },
{"label":"N", "x":7.25, "y":4.5}, { "label": "+", "matrix": [1, 12], "w": 1, "x": 12, "y": 1.5 },
{"label":"M", "x":8.25, "y":4.5}, { "label": "Backspace", "matrix": [1, 13], "w": 2, "x": 13, "y": 1.5 },
{"label":"<", "x":9.25, "y":4.5}, { "label": "Insert", "matrix": [1, 14], "w": 1, "x": 15.25, "y": 1.5 },
{"label":">", "x":10.25, "y":4.5}, { "label": "Home", "matrix": [1, 15], "w": 1, "x": 16.25, "y": 1.5 },
{"label":"?", "x":11.25, "y":4.5}, { "label": "PgUp", "matrix": [1, 16], "w": 1, "x": 17.25, "y": 1.5 },
{"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, { "label": "Tab", "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2.5 },
{"label":"Up", "x":16.25, "y":4.5}, { "label": "Q", "matrix": [2, 1], "w": 1, "x": 1.5, "y": 2.5 },
{"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, { "label": "W", "matrix": [2, 2], "w": 1, "x": 2.5, "y": 2.5 },
{"label":"Alt", "x":1.25, "y":5.5, "w":1.25}, { "label": "E", "matrix": [2, 3], "w": 1, "x": 3.5, "y": 2.5 },
{"label":"Win", "x":2.5, "y":5.5, "w":1.25}, { "label": "R", "matrix": [2, 4], "w": 1, "x": 4.5, "y": 2.5 },
{"label":"Space", "x":3.75, "y":5.5, "w":6.25}, { "label": "T", "matrix": [2, 5], "w": 1, "x": 5.5, "y": 2.5 },
{"label":"Win", "x":10, "y":5.5, "w":1.25}, { "label": "Y", "matrix": [2, 6], "w": 1, "x": 6.5, "y": 2.5 },
{"label":"AltGr", "x":11.25, "y":5.5, "w":1.25}, { "label": "U", "matrix": [2, 7], "w": 1, "x": 7.5, "y": 2.5 },
{"label":"Ctrl", "x":12.5, "y":5.5, "w":1.25}, { "label": "I", "matrix": [2, 8], "w": 1, "x": 8.5, "y": 2.5 },
{"label":"Fn", "x":13.75, "y":5.5, "w":1.25}, { "label": "O", "matrix": [2, 9], "w": 1, "x": 9.5, "y": 2.5 },
{"label":"Left", "x":15.25, "y":5.5}, { "label": "P", "matrix": [2, 10], "w": 1, "x": 10.5, "y": 2.5 },
{"label":"Down", "x":16.25, "y":5.5}, { "label": "{", "matrix": [2, 11], "w": 1, "x": 11.5, "y": 2.5 },
{"label":"Right", "x":17.25, "y":5.5} { "label": "}", "matrix": [2, 12], "w": 1, "x": 12.5, "y": 2.5 },
] { "label": "Delete", "matrix": [2, 14], "w": 1, "x": 15.25, "y": 2.5 },
} { "label": "End", "matrix": [2, 15], "w": 1, "x": 16.25, "y": 2.5 },
{ "label": "PgDn", "matrix": [2, 16], "w": 1, "x": 17.25, "y": 2.5 },
{ "label": "Caps Lock", "matrix": [3, 0], "w": 1.75, "x": 0, "y": 3.5 },
{ "label": "A", "matrix": [3, 1], "w": 1, "x": 1.75, "y": 3.5 },
{ "label": "S", "matrix": [3, 2], "w": 1, "x": 2.75, "y": 3.5 },
{ "label": "D", "matrix": [3, 3], "w": 1, "x": 3.75, "y": 3.5 },
{ "label": "F", "matrix": [3, 4], "w": 1, "x": 4.75, "y": 3.5 },
{ "label": "G", "matrix": [3, 5], "w": 1, "x": 5.75, "y": 3.5 },
{ "label": "H", "matrix": [3, 6], "w": 1, "x": 6.75, "y": 3.5 },
{ "label": "J", "matrix": [3, 7], "w": 1, "x": 7.75, "y": 3.5 },
{ "label": "K", "matrix": [3, 8], "w": 1, "x": 8.75, "y": 3.5 },
{ "label": "L", "matrix": [3, 9], "w": 1, "x": 9.75, "y": 3.5 },
{ "label": ":", "matrix": [3, 10], "w": 1, "x": 10.75, "y": 3.5 },
{ "label": "@", "matrix": [3, 11], "w": 1, "x": 11.75, "y": 3.5 },
{ "label": "~", "matrix": [3, 12], "w": 1, "x": 12.75, "y": 3.5 },
{ "h": 2, "label": "Enter", "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2.5 },
{ "label": "Shift", "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4.5 },
{ "label": "|", "matrix": [4, 1], "w": 1, "x": 1.25, "y": 4.5 },
{ "label": "Z", "matrix": [4, 2], "w": 1, "x": 2.25, "y": 4.5 },
{ "label": "X", "matrix": [4, 3], "w": 1, "x": 3.25, "y": 4.5 },
{ "label": "C", "matrix": [4, 4], "w": 1, "x": 4.25, "y": 4.5 },
{ "label": "V", "matrix": [4, 5], "w": 1, "x": 5.25, "y": 4.5 },
{ "label": "B", "matrix": [4, 6], "w": 1, "x": 6.25, "y": 4.5 },
{ "label": "N", "matrix": [4, 7], "w": 1, "x": 7.25, "y": 4.5 },
{ "label": "M", "matrix": [4, 8], "w": 1, "x": 8.25, "y": 4.5 },
{ "label": "<", "matrix": [4, 9], "w": 1, "x": 9.25, "y": 4.5 },
{ "label": ">", "matrix": [4, 10], "w": 1, "x": 10.25, "y": 4.5 },
{ "label": "?", "matrix": [4, 11], "w": 1, "x": 11.25, "y": 4.5 },
{ "label": "Shift", "matrix": [4, 12], "w": 2.75, "x": 12.25, "y": 4.5 },
{ "label": "Up", "matrix": [4, 15], "w": 1, "x": 16.25, "y": 4.5 },
{ "label": "Ctrl", "matrix": [5, 0], "w": 1.25, "x": 0, "y": 5.5 },
{ "label": "Alt", "matrix": [5, 1], "w": 1.25, "x": 1.25, "y": 5.5 },
{ "label": "Win", "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.5 },
{ "label": "Space", "matrix": [5, 5], "w": 6.25, "x": 3.75, "y": 5.5 },
{ "label": "Win", "matrix": [5, 9], "w": 1.25, "x": 10, "y": 5.5 },
{ "label": "AltGr", "matrix": [5, 10], "w": 1.25, "x": 11.25, "y": 5.5 },
{ "label": "Ctrl", "matrix": [5, 11], "w": 1.25, "x": 12.5, "y": 5.5 },
{ "label": "Fn", "matrix": [5, 12], "w": 1.25, "x": 13.75, "y": 5.5 },
{ "label": "Left", "matrix": [5, 13], "w": 1, "x": 15.25, "y": 5.5 },
{ "label": "Down", "matrix": [5, 15], "w": 1, "x": 16.25, "y": 5.5 },
{ "label": "Right", "matrix": [5, 16], "w": 1, "x": 17.25, "y": 5.5 }
]
} }
}
} }
@@ -24,7 +24,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
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_DEL, KC_END, KC_PGDN, 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_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, MO(1), KC_LEFT, KC_DOWN, KC_RGHT KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
), ),
[1] = LAYOUT_tkl_iso( [1] = LAYOUT_tkl_iso(
RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_P, RGB_M_B, RGB_M_R,
Loaded 100 of 624 files, more files were not shown because too many files have changed in this diff. Show more