Compare commits

...

1498 Commits

Author SHA1 Message Date
Zach White
c13ce5479c wip 2021-09-05 10:54:33 -07:00
QMK Bot
0b1dee6c50 Merge remote-tracking branch 'origin/master' into develop 2021-09-04 14:02:25 +00:00
JayceFayne
014aa0661e Fix Space Cadet md link (#14300) 2021-09-04 15:01:56 +01:00
QMK Bot
e4fcdf57cf Merge remote-tracking branch 'origin/master' into develop 2021-09-04 02:02:43 +00:00
Albert Y
c9262cf7f8 Enable extra keys for Technik ortho and stagger (#14282)
* Extra keys for technik ortho

* Extra keys for technik staggered

Co-authored-by: filterpaper <filterpaper@localhost>
2021-09-04 03:02:15 +01:00
QMK Bot
d272bf2dc2 Merge remote-tracking branch 'origin/master' into develop 2021-09-03 20:03:43 +00:00
James Young
b15bd128a5 FJLabs Ready100 Configurator Fixes (#14291)
* grid-align keycodes; use short-form keycodes

No logic change.

* info.json: correct layout macro reference

* info.json: correct LAYOUT_64key data

Removes an extra key from the layout data.

* 64_ansi Community Layout support

* rename LAYOUT_64key to LAYOUT_64_ansi (with alias for backwards compatibility)
* add LAYOUTS = 64_ansi to rules.mk

* remove width and height keys from info.json
2021-09-03 21:03:15 +01:00
QMK Bot
9f17f9b2e1 Merge remote-tracking branch 'origin/master' into develop 2021-09-03 20:02:20 +00:00
James Young
06c89e8abf Naiping NPhhkb: 60_tsangan_hhkb Community Layout support (#14292)
* 60_tsangan_hhkb Community Layout support

* rename LAYOUT to LAYOUT_60_tsangan_hhkb
* add LAYOUTS = 60_tsangan_hhkb to rules.mk

* correct maintainer field in info.json

* remove width and height keys from info.json

* fix GitHub account link on readme
2021-09-03 21:01:50 +01:00
QMK Bot
88bb29fb17 Merge remote-tracking branch 'origin/master' into develop 2021-09-03 20:00:59 +00:00
James Young
90909fbaf7 takashicompany/endzone34: correct QMK Configurator key sequence (#14290)
* update info.json formatting

* convert tabs to spaces
* apply human-friendly formatting

* correct Configurator key sequence

* remove width and height keys from info.json
2021-09-03 21:00:29 +01:00
QMK Bot
f95706810a Merge remote-tracking branch 'origin/master' into develop 2021-09-03 18:48:40 +00:00
James Young
5f6d9913f8 OwLab Voice65 Hotswap: 65_ansi_blocker Community Layout support (#14293)
* 65_ansi_blocker Community Layout support

* rename LAYOUT to LAYOUT_65_ansi_blocker (with alias for backwards compatibility)
* add LAYOUTS = 65_ansi_blocker to rules.mk

* remove width and height keys from info.json
2021-09-03 11:48:10 -07:00
QMK Bot
337be283ca Merge remote-tracking branch 'origin/master' into develop 2021-09-03 16:10:08 +00:00
Ryan
8574bf20d3 Remove more cruft in keyboard files (#14288) 2021-09-03 17:09:30 +01:00
QMK Bot
5bb9da6bca Merge remote-tracking branch 'origin/master' into develop 2021-09-02 17:50:50 +00:00
jhauh
a01057d19d [Keymap] Update iris fluffactually keymap (#14265)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-02 10:50:17 -07:00
QMK Bot
751dc35546 Merge remote-tracking branch 'origin/master' into develop 2021-09-02 17:50:12 +00:00
Drashna Jaelre
956cf8d7bf [Keyboard] Work Louder board fixup (#14247)
* [Keyboard] Add some last minute tweaks to Work board

* Additional fixes

* Fix rgb pin

* Fix ws2812 hackery

* additional led tweaks

* Add indicator LEDs

* fix bootmagic settings

* Fix up RGB stuff

* Limit power draw for entire board

* fixup lights and such

* change LED order on loop

* Fix indicators if via is not enabled

* Enable Sleep for rgb matrix

* Even more LED tweaks

* Final tweaks?

* Tweak keycodes
2021-09-02 10:49:44 -07:00
QMK Bot
d68d34644a Merge remote-tracking branch 'origin/master' into develop 2021-09-02 17:18:08 +00:00
James Young
d36a7c512d PistachioPro: correct Configurator key sequence (#14277)
* info.json: apply human-friendly formatting

* correct LAYOUT key sequence

Moves the Enter key object to the correct place in sequence.
2021-09-02 10:17:35 -07:00
QMK Bot
d8a2142f24 Merge remote-tracking branch 'origin/master' into develop 2021-09-02 17:10:14 +00:00
James Young
ebfa7e14f3 Matrix Falcon info.json fixes (#14273)
* apply human-friendly formatting to info.json

* update key labels; correct maintainer field

* add LAYOUT_all data to info.json

* remove width and height keys from info.json (per fauxpark)

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-02 18:09:38 +01:00
QMK Bot
c2da0da1dc Merge remote-tracking branch 'origin/master' into develop 2021-09-02 17:09:13 +00:00
James Young
0290dd3547 Yoichiro Lunakey Macro: correct Configurator key sequence (#14276)
* apply human-friendly formatting to info.json

* correct Configurator key sequence
2021-09-02 18:08:35 +01:00
QMK Bot
0ed4002c19 Merge remote-tracking branch 'origin/master' into develop 2021-09-02 04:13:12 +00:00
jonavin
98a2e9dc0e [Keymap] new murphpad landscape keymap with encoder enhanced functions (#14103)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Jonavin <=>
2021-09-01 21:12:57 -07:00
peott-fr
e056ae58a0 [Keymap] Fine-tuning Nyquist keymap. (#14269) 2021-09-01 21:12:15 -07:00
QMK Bot
98436577d7 Merge remote-tracking branch 'origin/master' into develop 2021-09-02 04:09:36 +00:00
Drashna Jaelre
37aef4ebe1 [Keymap] Fix Drashna Keymap issues missed before Develop merge (#14271) 2021-09-01 21:08:58 -07:00
QMK Bot
cfedd3054e Merge remote-tracking branch 'origin/master' into develop 2021-09-02 03:51:21 +00:00
James Young
c1e5c920a9 naiping/np64: 64_ansi Community Layout support and codebase touch-up (#14264) 2021-09-01 20:50:44 -07:00
QMK Bot
e597469964 Merge remote-tracking branch 'origin/master' into develop 2021-09-02 03:47:31 +00:00
James Young
b55154fb0a neson design/n6: Extended Community Layout Support and Layout Macro Fix (#14266) 2021-09-01 20:47:28 -07:00
James Young
c0eab2a504 wuque/serneity65: Layout Macro rework and Configurator fix (#14267) 2021-09-01 20:46:53 -07:00
QMK Bot
f77602b8fb Merge remote-tracking branch 'origin/master' into develop 2021-09-02 03:44:58 +00:00
hvp
cb53c4fd41 [Keymap] hvp keymap for Cornelius, updated ut47.2 and userspace (#14187) 2021-09-01 20:44:36 -07:00
peott-fr
872414f454 [Keymap] Add peott-fr H87 keymap (#14232) 2021-09-01 20:44:12 -07:00
QMK Bot
7847acdded Merge remote-tracking branch 'origin/master' into develop 2021-09-02 03:43:04 +00:00
jonavin
b6ca21c65c [Keymap] Jonavin keymap gmmk pro (#14220)
add rgb nightmode and optional colemak layer 

Co-authored-by: Jonavin <=>
2021-09-01 20:42:31 -07:00
QMK Bot
b0104e99a5 Merge remote-tracking branch 'origin/master' into develop 2021-09-02 03:41:44 +00:00
Christian Eiden
cded3b7582 [Keymap] own scylla keymap (#14224)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-09-01 20:41:17 -07:00
QMK Bot
d437f78f57 Merge remote-tracking branch 'origin/master' into develop 2021-09-02 03:41:03 +00:00
qieq
bb356a1584 [Docs] Update path to keycode.h (#14263) 2021-09-01 20:40:12 -07:00
QMK Bot
48a7b50238 Merge remote-tracking branch 'origin/master' into develop 2021-09-01 17:44:43 +00:00
James Young
7575bc23a6 MatchstickWorks SouthPad: correct Configurator key sequence (#14255)
* matchstickworks/southpad: correct Configurator key sequence

* replace tabs with spaces; apply four-space indent
2021-09-01 10:44:03 -07:00
QMK Bot
b4065c557a Merge remote-tracking branch 'origin/master' into develop 2021-09-01 12:21:39 +00:00
James Young
583f07ac58 owl8: add info.json file (#14256)
* owl8: add info.json file

* remove width and height keys (per fauxpark)

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-01 13:20:56 +01:00
Ryan
1b357ea432 Fix typos from 14248 (#14261) 2021-09-01 13:19:17 +01:00
QMK Bot
4df91985f7 Merge remote-tracking branch 'origin/master' into develop 2021-09-01 09:49:03 +00:00
Jay Greco
c573926e05 Fix snailmap compilation error (#14250)
* Fix snailmap compilation error

* Update keymap.c with correct OLED_ENABLE defines
2021-09-01 10:48:14 +01:00
Ryan
41c50bb653 Change keyboard level include guards to pragma once (#14248)
* Change keyboard level include guards to `pragma once`

And clean up a lot of layout macros

* Oops

* Remove dangling endif
2021-09-01 19:03:14 +10:00
QMK Bot
971d36bb9e Merge remote-tracking branch 'origin/master' into develop 2021-09-01 02:51:13 +00:00
James Young
8d97c54770 mnk50: Configurator Fix and Layout Macro Additions (#14257)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-09-01 12:50:32 +10:00
QMK Bot
d019c8a991 Merge remote-tracking branch 'origin/master' into develop 2021-09-01 00:51:16 +00:00
Casey Webster
c5ec423438 [Keymap] cwebster2 Keymap and userspace updates (#14258) 2021-08-31 17:50:42 -07:00
QMK Bot
54ae829b04 Merge remote-tracking branch 'origin/master' into develop 2021-08-31 23:19:00 +00:00
Andre Brait
fac5ec4656 Move GMMK Pro layouts to the correct subdir (#14241)
Also fix a compilation issue in the mike1808 keymap
2021-09-01 00:18:35 +01:00
QMK Bot
7d797d2e34 Merge remote-tracking branch 'origin/master' into develop 2021-08-31 22:26:19 +00:00
Drashna Jaelre
b7693c971c [Keyboard] Disable console on Iris Rev5 (#14249) 2021-08-31 15:25:46 -07:00
QMK Bot
94c9716e5b Merge remote-tracking branch 'origin/master' into develop 2021-08-31 18:30:22 +00:00
James Young
92106ee038 emi20: remove dead space from Configurator layout (#14254) 2021-08-31 19:29:49 +01:00
QMK Bot
9abc657903 Merge remote-tracking branch 'origin/master' into develop 2021-08-31 18:25:13 +00:00
Felix Jen
b6d7b13a7a [Keyboard] Add FJLabs KF87 PCB (#14179)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-31 11:24:41 -07:00
QMK Bot
7830d671d3 Merge remote-tracking branch 'origin/master' into develop 2021-08-31 18:23:39 +00:00
Ibnu Daru Aji
6f5428687c [Keymap] reflects current rick's keymap (#14169) 2021-08-31 11:23:02 -07:00
Takeshi ISHII
1fdf766988 handwired/symmetric70_proto use post_rules.mk (#14235) 2021-08-31 16:58:43 +09:00
Takeshi ISHII
b8c68afb2f [Keyboard] Helix use post_rules.mk (#14216)
* Helix/pico use post_rules.mk insted of local_features.mk

Tested with the following procedure.
```
git checkout 77a93fec79 (qmk/develop)
make clean
make helix/pico:all:check-md5
make helix/pico/sc:all:check-md5
git checkout helix_use_post_rules.mk
make clean
make helix/pico:all:check-md5
make helix/pico/sc:all:check-md5
```

* Helix/rev2 use post_rules.mk

Tested with the following procedure.
```
git checkout 77a93fec79 (qmk/develop)
make clean
make helix/pico:all:check-md5
make helix/pico/sc:all:check-md5
make helix/rev2:all:check-md5
make helix/rev2/sc:all:check-md5
git checkout helix_use_post_rules.mk
make clean
make helix/pico:all:check-md5
make helix/pico/sc:all:check-md5
make helix/rev2:all:check-md5
make helix/rev2/sc:all:check-md5
```
2021-08-31 16:58:07 +09:00
QMK Bot
bab997c8c4 Merge remote-tracking branch 'origin/master' into develop 2021-08-31 05:19:55 +00:00
Salicylic-acid3
bdd0a6c097 [Keyboard] Addition of VIA keymap and a few fixes for naked60 (#14225)
Co-authored-by: Joel Challis <git@zvecr.com>
2021-08-30 22:19:21 -07:00
QMK Bot
4d4c61f2e8 Merge remote-tracking branch 'origin/master' into develop 2021-08-30 23:26:17 +00:00
Joel Challis
f2c9e82e5b cherry pick tidy up (#14244) 2021-08-31 00:25:41 +01:00
QMK Bot
a163d34abc Merge remote-tracking branch 'origin/master' into develop 2021-08-30 23:13:53 +00:00
coliss86
1e7117317f Documentation: Fix links in key overrides (#14228)
Co-authored-by: Joel Challis <git@zvecr.com>
2021-08-31 09:13:19 +10:00
QMK Bot
25a2502216 Merge remote-tracking branch 'origin/master' into develop 2021-08-30 19:34:52 +00:00
JX
5ed8edae49 Update ws2812_spi.c (#14237) 2021-08-30 20:34:19 +01:00
Drashna Jaelre
15710db4ad Move feature suspend logic out of platform specific code (#14210) 2021-08-30 20:21:03 +01:00
QMK Bot
cf28feaf4d Merge remote-tracking branch 'origin/master' into develop 2021-08-30 18:50:23 +00:00
Danny
2dc07391bd [Keyboard] Add Iris Rev. 5 (#13934)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-30 11:49:46 -07:00
QMK Bot
d770e273e1 Merge remote-tracking branch 'origin/master' into develop 2021-08-30 18:42:37 +00:00
dogspace
27aebba1b1 [Keymap] Add new snailmap keymap to nullbitsco/nibble keyboard (#14024)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-30 11:42:04 -07:00
QMK Bot
3f4d39ec84 Merge remote-tracking branch 'origin/master' into develop 2021-08-30 18:29:26 +00:00
kb-elmo
c9283f4c1f [Keyboard] Add OwLab Jelly Epoch (#14190)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-30 11:29:15 -07:00
Rifaa Subekti
b63114ea29 [Keyboard] add slamz keyboard (#14188)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-30 11:28:54 -07:00
QMK Bot
3471b2ac89 Merge remote-tracking branch 'origin/master' into develop 2021-08-30 18:23:31 +00:00
Purdea Andrei
9583f9f589 [Bug] Fix build error when enabling NO_HAPTIC_MOD (#14178)
Without this build would fail, if a keyboard had haptic feedback enabled,
TAPPING_TOGGLE was not overridden in a config.h, and if NO_HAPTIC_MOD was
defined in config.h.
2021-08-30 11:22:53 -07:00
QMK Bot
4853ca1437 Merge remote-tracking branch 'origin/master' into develop 2021-08-30 18:05:43 +00:00
Felix Jen
949cfd4632 [Keyboard] add maker keyboards alexa (#14165) 2021-08-30 11:05:13 -07:00
QMK Bot
9a888a5ec5 Merge remote-tracking branch 'origin/master' into develop 2021-08-30 18:05:13 +00:00
peott-fr
557fce7a8e [Keymap] Add peott-fr keymap for Kbd6x (#14164) 2021-08-30 11:04:42 -07:00
QMK Bot
5b4f63c45f Merge remote-tracking branch 'origin/master' into develop 2021-08-30 18:04:21 +00:00
Vincent Vorholter
9d32cb68c3 [Keyboard] Changed ProductID on basketweav keyboards (#14162)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Vince Vorholter <vince@28east.co.za>
2021-08-30 11:03:53 -07:00
Zach White
596c4a1f87 Remove bin/qmk (#14231)
* Remove the bin/qmk script

* remove bin/qmk from workflows
2021-08-29 16:50:22 -07:00
QMK Bot
b46064a891 Merge remote-tracking branch 'origin/master' into develop 2021-08-29 23:47:04 +00:00
Zach White
baa423004a ensure that the directory for sys.executable is in the user's path (#14229) 2021-08-29 16:46:36 -07:00
QMK Bot
92e606b927 Merge remote-tracking branch 'origin/master' into develop 2021-08-29 23:42:27 +00:00
Zach White
b705020daf move everything from qmkfm/base_container to qmkfm/qmk_cli (#14230) 2021-08-29 16:41:56 -07:00
QMK Bot
5fbfab1f3b Merge remote-tracking branch 'origin/master' into develop 2021-08-29 21:53:15 +00:00
peott-fr
13a2da973f Nyquist (#14202)
* adding my Nyquist keymap

* Updating Nyquist keymap with licensing.

* Cleaning-up and improving Nyquist keymap.

* Cleaning-up and improving Nyquist keymap.
2021-08-29 22:52:49 +01:00
QMK Bot
532bff7b6c Merge remote-tracking branch 'origin/master' into develop 2021-08-29 21:25:08 +00:00
Sergey Vlasov
a1866a962c Update the nix-shell environment (#13316)
* Nix: Allow calls to `bin/qmk` even when the build was started by `qmk`

The `$PATH` modifications performed by the Nix wrapper for the `qmk`
executable prevent `bin/qmk` from working properly (the changed `$PATH`
contains a wrong `python3` executable which does not have the needed
Python modules in its module path).  As a workaround, disable the
generation of that wrapper for the `qmk` Python package (there is yet
another wrapper generated while building the Python environment, which
would still set the Python module path properly when running `qmk`).

Although `bin/qmk` is officially deprecated, QMK CLI still invokes it in
some cases (at least `qmk doctor` and `qmk pytest`), therefore keeping
these invocations working is useful.

* Nix: Update `util/nix/pyproject.toml` to match `requirements*.txt`

Update the Python dependency information used by Poetry to match the
current state of the qmk_firmware code.

* Nix: Bump QMK CLI dependency to 1.0.0; bump other Python deps

Update Python dependencies for nix-shell to the most recent releases:

 - dotty-dict: 1.3.0 -> no longer used
 - milc: 1.4.2 -> 1.6.2
 - pep8-naming: 0.11.1 -> 0.12.1
 - pygments: 2.9.0 -> 2.10.0
 - pyrsistent: 0.17.3 -> 0.18.0
 - pyusb: 1.1.1 -> 1.2.1
 - setuptools-scm: 6.0.1 -> no longer used
 - qmk: 0.1.0 -> 1.0.0
 - qmk-dotty-dict: not used -> 1.3.0.post1
 - yapf: 0.30.0 -> 0.31.0

Note to self: The command to update Python dependencies changed to:

    ( cd util/nix && nix run 'nixpkgs#poetry' -- update --lock )
2021-08-29 22:24:43 +01:00
QMK Bot
d227c8692a Merge remote-tracking branch 'origin/master' into develop 2021-08-29 19:19:29 +00:00
J.Flanagan
ef7fdee6c8 [Keyboard] Add Viktus SP Mini (#14069)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-29 12:18:56 -07:00
QMK Bot
55d6956553 Merge remote-tracking branch 'origin/master' into develop 2021-08-29 11:10:11 +00:00
Trent Hoh
f87cd8e8a0 [Keyboard] Corrected layout for np24 by YMDK (#14096)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-29 04:09:43 -07:00
QMK Bot
8800adc533 Merge remote-tracking branch 'origin/master' into develop 2021-08-29 11:08:51 +00:00
peott-fr
94d7635a4a [Keymap] My Prime E keymap (#14117) 2021-08-29 04:08:23 -07:00
QMK Bot
7209d7cca9 Merge remote-tracking branch 'origin/master' into develop 2021-08-29 11:08:23 +00:00
Weirdo
5d5668c3f8 [Keyboard] Add kelownaRGB64 (#14141)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-29 04:07:54 -07:00
QMK Bot
77a93fec79 Merge remote-tracking branch 'origin/master' into develop 2021-08-29 06:06:26 +00:00
Takeshi ISHII
9afc64cd61 [Keyboard] fix compile error make helix/rev2/sc:all (#14214) 2021-08-29 15:06:00 +09:00
Zach White
c729df09ca fix automatic directory for qmk lint (#14215) 2021-08-28 23:02:31 -07:00
Zach White
566d598516 Add check for non-assignment code in rules.mk (#12108)
* Add check for non-assignment code in rules.mk

* fix lint check

* fix lint

* fixup to reflect the final state of #8422

* fix lint
2021-08-29 12:37:55 +10:00
Zach White
f155865804 remove qmk console, which is now part of the global cli (#14206) 2021-08-29 11:27:57 +10:00
QMK Bot
1ac3b3e9b6 Merge remote-tracking branch 'origin/master' into develop 2021-08-29 00:52:22 +00:00
Nick Brassel
dd8922d482 Fixup upstream paths for submodules. (#14205) 2021-08-29 10:51:53 +10:00
QMK Bot
7b8cdfc19d Merge remote-tracking branch 'origin/master' into develop 2021-08-28 23:48:16 +00:00
Nick Brassel
6caebb7b61 Bootmagic lite docs clarity. (#14204) 2021-08-29 09:47:48 +10:00
Takeshi ISHII
9fe7b5307a add 'include keyboard_features.mk' into build_keyboard.mk (#8422)
* add 'include keyboard_features.mk' into build_keyboard.mk

keyboard_features.mk is a keyboard-local version of the functions performed by common_features.mk.

* add comment into build_keyboard.mk

* added description of keyboard_features.mk in hardware_keyboard_guidelines.md.

* rename `keyboard_features.mk` to `post_rules.mk`
2021-08-29 09:42:57 +10:00
Nick Brassel
f061ca4974 Breaking changes develop merge to master, 2021Q3 edition. (#14196) 2021-08-29 08:20:25 +10:00
Nick Brassel
4bad375d7c 2021Q3 pre-merge develop changelog, keyboard aliases (#14198)
* Initial changelog.

* Data driven.

* Submodule update.

* Updated breaking changes docs.

* Aliases.

* Aliases.
2021-08-29 08:18:18 +10:00
Drashna Jaelre
29ec2d8f42 [Docs] Add examples to RGB Matrix Indicators docs (#12797) 2021-08-27 06:41:33 +10:00
QMK Bot
7e1634e2a6 Merge remote-tracking branch 'origin/master' into develop 2021-08-26 17:50:09 +00:00
jackytrabbit
ff65185dec Add support for lazydesigners/cassette8 (#14145)
* Add support for lazydesigners/cassette8

Add support for lazydesigners/cassette8

* Update keyboards/lazydesigners/cassette8/config.h

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

* Update keyboards/lazydesigners/cassette8/rules.mk

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

* Update keyboards/lazydesigners/cassette8/rules.mk

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

* Update keyboards/lazydesigners/cassette8/config.h

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

* Update keyboards/lazydesigners/cassette8/rules.mk

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

* Update keyboards/lazydesigners/cassette8/rules.mk

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

* Update keyboards/lazydesigners/cassette8/info.json

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2021-08-26 18:49:36 +01:00
QMK Bot
a13b0d8a6c Merge remote-tracking branch 'origin/master' into develop 2021-08-26 17:47:28 +00:00
jpuerto96
3fce5e6912 New Keyboard - V4n4g0rth0n (#14152)
* General: Initial commit for v4n4g0rth0n

* Remove unecessary things|

* General: Fix info.json

* Finalize changes

* Update keyboards/v4n4g0rth0n/config.h

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

* Update keyboards/v4n4g0rth0n/v1/rules.mk

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

* Update keyboards/v4n4g0rth0n/v4n4g0rth0n.h

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

* Update keyboards/v4n4g0rth0n/v4n4g0rth0n.h

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

* Update keyboards/v4n4g0rth0n/v2/keymaps/default/keymap.c

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

* Update keyboards/v4n4g0rth0n/v1/keymaps/default/keymap.c

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

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-26 18:45:48 +01:00
Joel Challis
87cdb1cf9a Update readme files (#14172) 2021-08-26 16:53:24 +01:00
Joel Challis
48d0ad28e7 Move to correct location (#14171) 2021-08-26 14:14:48 +01:00
QMK Bot
6d646880a4 Merge remote-tracking branch 'origin/master' into develop 2021-08-26 11:38:28 +00:00
kb-elmo
edf35615cf Skeletn87 - Fix RGB pin (#14170)
* add Skeletn87

* update skeletn87 files

* update skeletn87 soldered

* update readme image

* update readme (again)

* fix skeletn87 indicator LEDs

* fix led pin for production PCB
2021-08-26 12:37:55 +01:00
QMK Bot
2bc978437e Merge remote-tracking branch 'origin/master' into develop 2021-08-25 23:56:39 +00:00
Charles
ee3a1133f1 [keyboard] Add 0x3E (#14088)
* Add 0x3E - default config

* Apply suggestions from code review

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

* Apply suggestions from code review 2

Firmware size optimization

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

* Rename files as per project guidelines + remove empty

* Update link in readme.md

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-26 00:56:09 +01:00
QMK Bot
0c97bc5179 Merge remote-tracking branch 'origin/master' into develop 2021-08-25 23:40:04 +00:00
8bits4ever
4c5334cb9e [converter/a1200] Changing layout macro reference info.json (#14143)
* Rename keyboards/converter/a1200/config.h to keyboards/converter/a1200/teensy2pp/config.h

* Rename keyboards/converter/a1200/rules.mk to keyboards/converter/a1200/teensy2pp/rules.mk

* Create dummy

* Add files via upload

* Delete dummy

* Update readme.md

* Update info.json
2021-08-26 00:39:34 +01:00
QMK Bot
329c130202 Merge remote-tracking branch 'origin/master' into develop 2021-08-25 19:04:06 +00:00
MechMaster48
89f2b9486f [Keymap] mechmaster48 keymap for OLKB Preonic rev3 (#14137) 2021-08-25 12:03:27 -07:00
Joel Challis
527b1e52aa Move nix folder alongside vagrant (#14132) 2021-08-25 15:27:48 +01:00
Joel Challis
a84de5e22b Revert 14083 && 14144 (#14150)
* Revert "Short term bodge for firmware size bloat (#14144)"

This reverts commit a8d6547346.

* Revert "Tidy up quantum.c now some of tmk_core has been merged (#14083)"

This reverts commit c4dbf4bf01.
2021-08-25 01:16:59 +01:00
QMK Bot
3855713ca0 Merge remote-tracking branch 'origin/master' into develop 2021-08-24 22:10:04 +00:00
Albert Y
bb1b822247 [Keyboard] Update Technik ortholinear RGB matrix points (#14124)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-08-24 15:09:26 -07:00
Joel Challis
622c3cac3a Fix merge artifacts (#14146) 2021-08-24 17:18:25 +01:00
Joel Challis
2cade3a483 Align some quantum sub-directories (#14134)
* Misc folder tidy

* Review comments

* Remove redundant entry
2021-08-24 17:07:11 +01:00
QMK Bot
2827a3cf75 Merge remote-tracking branch 'origin/master' into develop 2021-08-24 15:44:36 +00:00
Yoichiro Tanaka
b4867e1600 [Keyboard] Add yoichiro/lunakey_macro (#13849)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-24 08:44:00 -07:00
Joel Challis
a8d6547346 Short term bodge for firmware size bloat (#14144) 2021-08-24 16:09:23 +01:00
Drashna Jael're
e3b68ddfe8 Merge remote-tracking branch 'origin/master' into develop 2021-08-24 07:32:31 -07:00
Takeshi ISHII
c9c60d227e add wait_cpuclock() macro for AVR and CPU_CLOCK macro (#12755) 2021-08-24 14:34:24 +01:00
Joel Challis
c4dbf4bf01 Tidy up quantum.c now some of tmk_core has been merged (#14083) 2021-08-24 14:28:37 +01:00
GG
097e85e930 [Keyboard] Add serneity65 (#13889) 2021-08-24 02:50:56 -07:00
Xelus22
c4a2dc9a2d fix (#14142) 2021-08-24 19:39:24 +10:00
Christian Sandven
3ef978cb13 [Keyboard] Fix keyprez qmk configurator (#14119) 2021-08-24 01:54:17 -07:00
kb-elmo
a4aa6ccf7b [Keyboard] Add QEZ keyboard (#14131) 2021-08-24 01:49:50 -07:00
Albert Y
b8c74d6b5d [Keyboard] Update Technik staggered RGB matrix points (#14125)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-08-24 01:49:13 -07:00
stickandgum
eaad654798 [Keymap] Fixed GMMK Pro -> stickandgum keymap readme.md (#14123)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-08-24 01:48:35 -07:00
Rifaa Subekti
e1c264f579 [Keyboard] Update info.json for ocean/gin_v2 (#14121)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-24 01:42:23 -07:00
Drashna Jaelre
bc239cd520 [Keymap] Drashna keymap fixups (#14140) 2021-08-24 01:37:14 -07:00
Drashna Jaelre
3455e2408d [Keyboard] Fix default keymap for quark squared keyboard (#14139) 2021-08-24 01:19:00 -07:00
Xelus22
4e1c5887c5 [Core] Refactor OLED to allow easy addition of other types (#13454)
* add docs

* core changes

* update keyboards to new OLED

* updated users to new OLED

* update layouts to new OLED

* fixup docs

* drashna's suggestion

* fix up docs

* new keyboards with oled

* core split changes

* remaining keyboard files

* Fix The Helix keyboards oled options

* reflect develop

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: mtei <2170248+mtei@users.noreply.github.com>
2021-08-24 16:28:26 +10:00
Joel Challis
47a38c3f0e Remove more unused files (#14135) 2021-08-24 14:02:53 +10:00
Drashna Jaelre
6fd20acf4b Fix Mouse Shared EP functionality (#14136)
Specifically, if you enable the shared endpoint for mouse reports (or keyboard, which force enables it for mouse), and you don't have mousekeys enabled, it does not properly enable shared mouse EP for pointing device (which uses mouse reports).   This cause it to error out in compiling.  This fixes up some of the logic to ensure that all use cases are supported, and consolidates some of the code.
2021-08-24 11:40:24 +10:00
lalalademaxiya1
e3483b4126 [Keyboard] Add new keyboard version: keychron/q1/rev_0102 (#14029)
* Add keyboard Q1

* Update keyboards/keychron/q1/readme.md

* Update keyboards/keychron/q1/rev_0100/rules.mk

* Update keyboards/keychron/q1/readme.md

* Change layer switch function to "default_layout_set"

* Update keyboards/keychron/q1/rev_0100/info.json

* Update keyboards/keychron/q1/q1.c

* Mask out the DIP switch to fix sleeping issue when switch is ON

* Added and changed readme.md

Added keyboards\q1\rev_0100\readme.md
Changed keyboards\q1\readme.md since different MCU may used in other version.

* update

* update keymap name

* update keymap for keychron/q1/rev_0102

* Update info.json
2021-08-23 17:32:15 -07:00
Drashna Jaelre
d57d9aec4f Fix bootloadHID comments breaking :flash (#14133) 2021-08-23 23:46:06 +01:00
Donald Kjer
e756a21636 eeprom_stm32: implement high density wear leveling (#12567)
* eeprom_stm32: implement wear leveling
Update EECONFIG_MAGIC_NUMBER
eeprom_stm32: check emulated eeprom size is large enough
* eeprom_stm32: Increasing simulated EEPROM density on stm32
* Adding utility script to decode emulated eeprom
* Adding unit tests
* Applying qmk cformat changes
* cleaned up flash mocking
* Fix for stm32eeprom_parser.py checking via signature with wrong base
* Fix for nk65 keyboard

Co-authored-by: Ilya Zhuravlev <whatever@xyz.is>
Co-authored-by: zvecr <git@zvecr.com>
2021-08-23 23:15:34 +01:00
QMK Bot
2481e109a0 Merge remote-tracking branch 'origin/master' into develop 2021-08-23 22:06:37 +00:00
Olli Helenius
9472c4b8cb Fix US_RDQU keycode (#13464)
`US_RDQU` and `US_LDQU` were aliased to the same keycode. `US_RDQU`
should use the right bracket.
2021-08-24 08:06:04 +10:00
Path Nirvana
f314705921 adding uf2 flash support for blackpill 401 (#13968)
* adding uf2 flash support for blackpill 401

* forgot to add blackpill to keyboard header file

* making changes requested by drashna

* fixing tzarc s comments

* removing the keyboard

* undo the change to dactyl_manuform.h
2021-08-24 08:05:10 +10:00
QMK Bot
718f0a2482 Merge remote-tracking branch 'origin/master' into develop 2021-08-23 14:26:24 +00:00
Rifaa Subekti
a72b562141 [Keyboard] update default and via keymap for ocean/wang_v2 (#14122) 2021-08-23 07:25:51 -07:00
Nick Brassel
d8778eba92 Fixup line endings. 2021-08-23 19:37:16 +10:00
stickandgum
71df135254 [Keymap] Feature rich keymap for GMMK Pro (ANSI) (#14120)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-08-22 19:19:11 -07:00
QMK Bot
355872cc1d Merge remote-tracking branch 'origin/master' into develop 2021-08-23 02:10:58 +00:00
Vino Rodrigues
5cd7999bc4 [Keyboard] Update rgb matrix config in kbdfans/kbd67/mkiirgb/v3/v3.c (#14094)
This patch corrects 2 issues with the LED matrix of the KDBFans KBD67 Lite (v3)
* Incorrect mapping of the right-shift, down-arrow, and right-arrow.  (i.e. `NO_LED` positions of the `g_led_config` key matrix in the .c file do not match the `LAYOUT_65_ansi_blocker` matrix in the .h file.
* Remapping of the *LED Index to Physical Position* using physical measurements from actual keyboard and accounting for the southpaw LED position to define the true centre of the keyboard (more relevant to circular animations).
2021-08-22 19:10:23 -07:00
Dasky
9af069ecf3 Fix typo (#14118) 2021-08-23 09:31:38 +10:00
QMK Bot
f043b8be38 Merge remote-tracking branch 'origin/master' into develop 2021-08-22 21:43:07 +00:00
Bror Winther
aa28335651 Add fix for brew upgrade (#12921)
Add a fix for `brew upgrade` so only formulae is upgraded and not casks
2021-08-22 14:42:34 -07:00
QMK Bot
4b87c1f40b Merge remote-tracking branch 'origin/master' into develop 2021-08-22 16:29:18 +00:00
Ryan
5319727b70 Fix line endings for quark_squared info.json (#14113) 2021-08-22 17:28:48 +01:00
QMK Bot
7dfa93d9b6 Merge remote-tracking branch 'origin/master' into develop 2021-08-22 06:04:52 +00:00
npspears
46fb874269 [Keyboard] add support for Quark² (#14109)
Quark² is a hotswap version of the Quark PCB
2021-08-21 23:04:20 -07:00
QMK Bot
34d0376ab9 Merge remote-tracking branch 'origin/master' into develop 2021-08-22 05:12:24 +00:00
Christian Sandven
9a51076859 [Keyboard] Keyprez bison (#14100)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-21 22:11:56 -07:00
QMK Bot
f709394442 Merge remote-tracking branch 'origin/master' into develop 2021-08-22 05:11:44 +00:00
precondition
aedd8cca31 [Keyboard] Kyria default reformat (#14080)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-21 22:11:32 -07:00
Conor Burns
b1b6fe1c3d [Keymap] added bongocat keymap to 0xCB Static (#14093)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-21 22:11:15 -07:00
peepeetee
78ccd9c201 Organize KPrepublic, K.T.E.C, xiudi boards into directories (#12159)
* reset; redoing my steps; and recommit

* include xd002/.noci
2021-08-22 13:53:49 +10:00
Nick Brassel
c70abc8d04 Warn when building a board that uses arm_atsam (#10904)
* Add deprecation warning during build when building a board that uses arm_atsam.

* Rewording.

* Wording.

* Fixup.
2021-08-22 13:49:33 +10:00
Drashna Jaelre
dcef03853d [Keyboard] Disable Console on Keebio Quefrency (#14108) 2021-08-22 12:08:05 +10:00
Drashna Jaelre
f4a2f2bb7e [Keyboard] Fix compile issues for Tractyl Manuform (#14105) 2021-08-21 18:34:16 -07:00
Drashna Jaelre
e08d6a33fc [Core] Fix copypasta issue with pmw3360 sensor config (#14106) 2021-08-21 18:34:04 -07:00
Joakim Tufvegren
0ae20e7457 Make solo half of split keyboards (more) usable. (#13523)
* Make solo half of split keyboards (more) usable.

Using only one half of a split keyboard (that's using the split_common
framework to communicate) is not a great experience, since several read
timeouts per scan cycle cause an unusably slow scan rate.

This change blocks all split communication attempts for 500 ms
(configurable) after an error occurs, causing the scan rate to become at
least _more_ usable, but might need some tweaking to work fully on most
keyboards. One read timeout still needs to occur after the 500 ms has
passed, and if that timeout isn't low enough, some scan cycles may still
be too slow.

* Fix lint complaint.

* Require 25 consecutive comm errors to see comms as disconnected.

The number of max errors can be overridden by defining
`SPLIT_MAX_CONNECTION_ERRORS`.

* Add comments to new defines, and ability to disable disconnection check.

Also increase `SPLIT_MAX_CONNECTION_ERRORS` to 40, since it's divisible
by most relevant numbers for the description.

* Make lint happy ...again

* Only update `connection_check_timer` when needed.

* Add new defines to split keyboard documentation.

* Move connection timeout logic to transport.c, add `is_transport_connected`.

* Use split_common disconnection logic in matrix.c.

Instead of doing more or less the same thing twice.

* Move disconnection logic to `transport_master`.

Is a cleaner implementation, and causes the scan rate while disconnected
to increase instead of decrease.

* Lint fixes.

* Lower default `SERIAL_USART_TIMEOUT` to 20 ms.

The read timeout must be low enough to not cause exessively long scan
cycles when using a solo split half. 10 ms was determined from testing
to work fine even with the slowest defined baudrate of 19200 (5 ms was
too low for that case), so 20 ms should be fine for most cases.

* Remove `SERIAL_USART_TIMEOUT` from ergodox_infinity/config.h

Was somewhat mistakenly included in an earlier PR.

* Fix building with `USE_I2C`.

* Reduce built firmware size.

Not really sure why this works, the idea was taken from tzarc's work on
split disconnection.

* Tweak and improve opt-out for split disconnection logic.

There are now two ways to opt out from this feature:
* Set `SPLIT_MAX_CONNECTION_ERRORS` to 0. This will completely disable
  the connection status checks (also affects the slave matrix reset logic in
  matrix.c, though).
* Set `SPLIT_CONNECTION_CHECK_TIMEOUT` to 0. This will only disable the
  communication throttling while disconnected. Will make the firmware
  smaller.

* Make split disconnection logic work with custom transports.

Includes a fallback implementation for keyboards using a custom
split_util.c but not a custom matrix.c (currently no such keyboard seems
to be merged, though).

* Remove unnecessary include of timer.h

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

Co-authored-by: Joel Challis <git@zvecr.com>
2021-08-22 10:51:17 +10:00
Drashna Jaelre
c5f41d42d8 Updated RGB Matrix suspend define part 3 (#13954)
* Updated RGB Matrix suspend define part 3

* Revert "Update config.h for kbdfans/kbd67/mkiirgb/v3 (#13978)"

This reverts commit 80015f7fb0.

* Add additional boards/keymaps
2021-08-22 09:46:35 +10:00
Drashna Jaelre
58a5030661 [Keymap] Drashna's Improve OLEDs and custom Split code (#14063)
* Fill the oleds with right mods

* Enable double mods on x32 oleds

* Disable forced NKRO

* Make oleds fancy only on good MCUs

* Overhaul oled display

* Further enhance oled, with kitty!

* Final oled form

* Not working transport

* Transport id of woring

* Add acceleration

* fix button placement for accel macro

* Fix accelartion location and behavior

* Remove OLED sync code

* Fix alignment issue

* Remove audio hack

* Fix up zima keymap

* Add matrix slave scan function and cleanup drashna.h

* Clean up user space

* Allow userspace sync to be disable-able

* Fix weird issue with audio

* Fix alignment issue with user split sync

* Disable second rgb matrix task

* Disable additional animations

* Change dynamic keymap settings

* Hacky fix for borked corne

* Add Blackpill (F411) support to tractyl manuform

* remove manual via eeprom reset

* Remove all references to rgblight twinkle

* Fix issues with config processing
2021-08-21 13:34:44 -07:00
Drashna Jaelre
da1c011afc Improve pmw3360 sensor and make it more hardware agnostic (#14097) 2021-08-20 21:14:23 -07:00
QMK Bot
3452c89c8b Merge remote-tracking branch 'origin/master' into develop 2021-08-21 04:13:34 +00:00
Drashna Jaelre
c1cad5b751 [Keyboard] Fix naiping/npminila layout macro (#14098) 2021-08-21 14:13:02 +10:00
Drashna Jaelre
a80d789147 Fix issues with VIA EEPROM init and bring in line with eeconfig functionality (#13243)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-20 21:02:53 -07:00
Nick Brassel
afd3bcbf45 Fix up compilation issues. (#14095) 2021-08-21 13:38:38 +10:00
QMK Bot
ce379ef458 Merge remote-tracking branch 'origin/master' into develop 2021-08-20 22:32:01 +00:00
Ryan
a7d48b063e Fix LED Matrix suspend code (#14090) 2021-08-20 10:43:49 -07:00
QMK Bot
e8943a8b0c Merge remote-tracking branch 'origin/master' into develop 2021-08-20 17:33:25 +00:00
Zach White
1ec6ce8c37 Merge remote-tracking branch 'origin/master' into develop
Resolved Conflicts:
	lib/python/qmk/info.py
2021-08-20 08:22:41 -07:00
Drashna Jaelre
92fa07336c [Bug] Fix RGB/LED Matrix Suspend code (#14084) 2021-08-20 06:14:42 -07:00
QMK Bot
da11a49905 Merge remote-tracking branch 'origin/master' into develop 2021-08-20 13:14:35 +00:00
Joel Challis
69c71d4843 Align DIP_SWITCH_PINS_RIGHT implementation with encoders (#14079) 2021-08-20 10:15:11 +01:00
Joel Challis
b229b0fba7 Fix issues with recent keymap.json changes (#14089)
* Fix issues with recent keymap.json changes

* Allow empty author string
2021-08-20 19:11:49 +10:00
QMK Bot
0741aae1d9 Merge remote-tracking branch 'origin/master' into develop 2021-08-20 04:36:09 +00:00
QMK Bot
8dfd33e3d1 Merge remote-tracking branch 'origin/master' into develop 2021-08-20 04:27:09 +00:00
QMK Bot
c6f24f66bd Merge remote-tracking branch 'origin/master' into develop 2021-08-20 04:22:05 +00:00
Simon Arlott
0a1bf7f6aa Support using a timer for wait_us() on ChibiOS-based boards (#12211)
* Support using a timer for wait_us() on ChibiOS-based boards (#12198)

There are spare GPT timers that can be used to get a more accurate
wait_ms() time. This is required for the matrix scan unselect delay (30µs)
to be shorter than the system tick rate of 100µs.

This is limited to the maximum GPT duration of 65535 so values above that
will automatically use the previous implementation based on the system
tick.

Using a specific timer means it can't be shared by another thread at the
same time so when wait_us() is called from anything other than the main
thread it will use the system tick implementation too.

* Update tmk_core/common/chibios/wait.c

* Update tmk_core/common/chibios/wait.c

Co-authored-by: Joel Challis <git@zvecr.com>
2021-08-20 00:31:23 +01:00
moyi4681
462e7f075a move volcano660 to ilumkb folder (#13550)
* move volcano660 to ilumkb folder

* Update rules.mk

* Fix up readme

Co-authored-by: zvecr <git@zvecr.com>
2021-08-19 20:02:07 +01:00
QMK Bot
3413766649 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 18:59:06 +00:00
Dasky
7f1c90b7a8 [Core] Speed up pimoroni trackball driver (#13823) 2021-08-19 11:58:17 -07:00
QMK Bot
e988f58374 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 18:45:19 +00:00
James Young
4279b14adf Merge remote-tracking branch 'upstream/master' into develop
Conflicts:
	keyboards/gmmk/pro/ansi/keymaps/jonavin/rules.mk
	keyboards/space_space/rules.mk
2021-08-19 11:32:23 -07:00
XScorpion2
9d1c98c891 Added right vs left specific pin assignments for dip switch (#13074)
* Added right vs left specific pin assignments for dip switch

* Update feature_dip_switch.md

* Ran formatting tools
2021-08-19 18:39:15 +01:00
QMK Bot
af3673a5b6 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 17:14:07 +00:00
QMK Bot
a85126b79e Merge remote-tracking branch 'origin/master' into develop 2021-08-19 16:41:46 +00:00
Evelien-Lillian Dekkers
81e19d61c0 [Keyboard] Refactor atom47 and add rev4 and rev5 (#13201)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-08-19 09:40:28 -07:00
QMK Bot
374b388382 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 16:31:49 +00:00
QMK Bot
d112935cea Merge remote-tracking branch 'origin/master' into develop 2021-08-19 16:29:30 +00:00
QMK Bot
b7a3ddb6d1 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 16:12:49 +00:00
QMK Bot
db316716c1 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 16:12:04 +00:00
QMK Bot
1445fd21c8 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 15:53:48 +00:00
QMK Bot
a995dd16a2 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 15:51:56 +00:00
QMK Bot
2ff1a6a72f Merge remote-tracking branch 'origin/master' into develop 2021-08-19 15:42:23 +00:00
QMK Bot
7a125872e2 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 15:41:40 +00:00
Takeshi ISHII
f86a087127 [Keymap] fix helix:fraanrosi compile error caused by #13677. (#14061)
I'm against using RGBLIGHT_ANIMATIONS because this happens.
See also #8688.
2021-08-19 15:45:47 +09:00
QMK Bot
c8e8c21367 Merge remote-tracking branch 'origin/master' into develop 2021-08-19 00:42:53 +00:00
QMK Bot
b23a4db47a Merge remote-tracking branch 'origin/master' into develop 2021-08-19 00:38:25 +00:00
QMK Bot
c6dc1f7f8d Merge remote-tracking branch 'origin/master' into develop 2021-08-19 00:33:59 +00:00
Joel Challis
2e734fb6b9 Add config.h and rules.mk support for data driven keymaps (#12859)
* Add config.h and rules.mk support for data driven keymaps

* tidy up after rebase

* Rename key as it can contain more than just keyboard overrides

* tidy up after rebase

* Add validation
2021-08-18 21:52:41 +01:00
QMK Bot
10fab4ec07 Merge remote-tracking branch 'origin/master' into develop 2021-08-18 17:35:15 +00:00
QMK Bot
342e765e9c Merge remote-tracking branch 'origin/master' into develop 2021-08-18 08:51:22 +00:00
Ryan
b16091659c Move USB Host Shield and Arduino core to lib/ (#13973) 2021-08-18 18:20:25 +10:00
Drashna Jael're
cf5e40c251 Merge remote-tracking branch 'origin/master' into develop 2021-08-17 22:33:17 -07:00
Nick Brassel
ceb3ebda46 Fixup atsam builds. (#14052) 2021-08-18 01:59:22 +01:00
Joel Challis
58cd8c366c Various fixes from reorg of files (#14051) 2021-08-18 09:54:41 +10:00
tucvbif
703f027717 Allow for removal of hysteresis on 4x encoders (#13698)
* Remove hysteresis on 4x encoders

Sometimes, controller skips encoder pulses and when it returns to default position, the encoder_pulses variable isn't equals 0. And when I turn encoder in opposite direciton, it skips first click becase of encoder_pulses crosses zero. To prevent this, I add the ENCODER_DEFAULT_POS constant, and reset encoder_pulses into 0 when the state variable equals ENCODER_DEFAULT_POS.

* Documentation for ENCODER_DEFAULT_POS
2021-08-18 09:40:00 +10:00
Joel Challis
b8e913c8db Migrate platform independent code from tmk_core -> quantum (#13673)
* Migrate action|keyboard|keycode|eeconfig from tmk_core -> quantum
2021-08-18 00:18:58 +01:00
Joel Challis
96e2b13d1d Begin to carve out platform/protocol API - Single main loop (#13843)
* Begin to carve out platform/protocol API

* Fix up after rebase
2021-08-18 00:11:07 +01:00
Joel Challis
4c9003b177 Move chibios board files to allow tmk_core platform migration (#13777)
* Move board files

* fix up after rebase
2021-08-18 00:04:15 +01:00
Drashna Jaelre
4c4f632378 Add a toggle key for GUI On/Off in Magic feature (#13830) 2021-08-18 08:47:50 +10:00
ruro
3b28178deb --parallel improvements (#13800)
* improve make parallel jobs support

* document the --parallel option

* disable the output-sync for interactive targets
2021-08-18 08:46:59 +10:00
Tomas Guinan
999391f3ae Created "paddlegame" keymap (#13629)
* Added gmmk pro paddlegame keymap

* Replaced config.h with my own

* Adjust code to better fit style guide

* Update readme to include layout

* Fixed keymap, was missing a few keys

* Replaced all instances of _isWinKeyDisabled with keymap_config.no_gui

* Update keyboards/gmmk/pro/ansi/keymaps/paddlegame/keymap.c

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

Co-authored-by: Tomas Guinan <bngrybt@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-18 08:43:27 +10:00
Joel Challis
1bb7af4d44 Relocate platform specific drivers (#13894)
* Relocate platform specific drivers

* Move stm eeprom

* Tidy up slightly
2021-08-17 23:43:09 +01:00
Donald Kjer
483691dd73 Fixes for clang not being able to run unit tests (#13546) 2021-08-18 07:12:12 +10:00
Mikael Manukyan
857716794b gmmk/pro/mike1808 keymap (#13398)
* Add gmmk/pro/mike1808 keymap

* Add licenses

* Update readme

* Add underglow support for rgb matrix layers

* Change FN to TT

* Fix rgb layer disabling during rgb settings change

* also clean up some code
2021-08-18 07:10:46 +10:00
Nick Brassel
8db1d22117 Fixup massdrop/alt, cest73/tkm. (#14048)
* Fixup massdrop/alt.

* Fixup `cest73/tkm` bootmagic lite.

* Update keyboards/cest73/tkm/rules.mk

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-08-18 06:44:18 +10:00
a-chol
75b49aff56 Digitizer HID interface : absolute coordinates for mouse cursor (#12851)
* Add digitizer HID interface for setting the mouse cursor position at
absolute screen coordinates. Tested on Pro Micro, Proton C and
Blackpill.

* Update docs/feature_digitizer.md

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

* Update tmk_core/protocol/usb_descriptor.c

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

* Add missing copyrights
Add V-USB support

* Add support for digitizer dedicated endpoint for lufa and chibios.
Fix formatting issues
Move digitizer_task definition to the feature's base implementation file

* Run cformat on modified files

* Change digitizer report usage to Digitizer instead of Pen to avoid
pointer disappearing on Windows.

* Update tmk_core/protocol/vusb/vusb.c

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

* Run cformat from docker image

* Remove send_digitizer from host_driver_t and instead rely on the
declaration being the interface to the implementation in each
HW-specific usb implementation.

* Fix build : send_digitizer shouldn't be static in vusb and add
weak-linkage implementation for tests without usb implementation

* Change digitizer user interface to match pointing device's

* Update documentation with new API

Co-authored-by: a-chol <nothing@none.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-08-18 04:52:44 +10:00
mechlovin
7794e97f32 Add mechlovin9 rev2 PCB (#12767)
* Add mechlovin9 rev2 PCB

Move mechlovin9 PCB from mechlovin/hannah65/mechlovin9 to mechlovin/mechlovin9
And add mechlovin9 rev.2

* update

* change bootloader and  bootmagic button

* Add mechlovin9 rev2 PCB

Move mechlovin9 PCB from mechlovin/hannah65/mechlovin9 to mechlovin/mechlovin9
And add mechlovin9 rev.2
2021-08-18 04:49:40 +10:00
freqmod
705774f7bf Steno combinedkeys (#12538)
* Add support for steno keys that press adjacent keys simultaniously

* Add some docs for steno combined keys
2021-08-18 04:48:00 +10:00
50an6xy06r6n
4b96d5876e Fix Indicator LED issues (#12097) 2021-08-18 04:44:19 +10:00
Ryan
37496f4b60 Add alternate ldscript for STM32duino (F103xB) (#12914)
* Add alternate ldscript for STM32duino (F103xB)

* Refactor out common ldscript stuff

* Move ldscripts into stm32duino board dir, add search path to ldflags
2021-08-18 04:23:22 +10:00
Drashna Jaelre
7da97c293d Rgb matrix/enable modes explicitly (#13758)
* Change animations to require explicet activation

* Add support for legacy config

* Make default for now

* Add LED Matrix support

* change LED Matrix docs
2021-08-18 04:19:00 +10:00
Drashna Jaelre
85351dc23d [CLI] Add qmk-hid bootloader detection support to qmk console (#14038)
* [CLI] Add qmk-hid bootloader detection support to `qmk console`

* Remove duplicate entry

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

* Begrudgingly add lufa-ms

* Add udev rules for hid bootloaders

* Update util/udev/50-qmk.rules

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* Fix VID/PID combos

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2021-08-18 04:13:54 +10:00
Drashna Jaelre
fae5cc6c67 [Keyboard] Fixup Neson Design N6 ISSI includes (#14045) 2021-08-17 10:31:34 -07:00
QMK Bot
a6d2993fc5 Merge remote-tracking branch 'origin/master' into develop 2021-08-17 16:14:10 +00:00
QMK Bot
aeda1a003e Merge remote-tracking branch 'origin/master' into develop 2021-08-17 16:07:05 +00:00
QMK Bot
b87e2947c1 Merge remote-tracking branch 'origin/master' into develop 2021-08-17 15:44:51 +00:00
Drashna Jaelre
e443fa2892 Fix wait_us overflow in matrix for dactyl based boards (#14039) 2021-08-17 08:20:01 -07:00
Zach White
8d9bfdc254 Add a lot more data to info.json (#13366)
* add some split data to info.json

* add tags

* add half of config_options.md to info.json

* add support for designating master split

* sort out split transport and primary

* fix bad data in UNUSED_PINS

* fixup custom transport

* wip

* allow for setting split right half keyboard matrix

* add SPLIT_USB_DETECT

* minor cleanup

* fix an erroneous message

* rework split.usb_detect

* adding missing rgblight vars to info.json

* add mouse_key to info.json

* add all remaining options from docs/config_options.md

* fix audio voices

* qmk info: Change text output to use dotted notation

* tweak layout output

* resolve alias names

* break out some functions to make flake8 happy

* add a field for bootloader instructions

* qmk generate-info-json: add a write-to-file argument

Adds an argument that instructs qmk generate-info-json to write the output to a file instead of just to the terminal.

* -arg_only, +action

Because it was never my intention that one would have to specify a value for the argument that enables writing the file.

* Bring qmk generate-info-json inline with other generate commands

* pytest fixup

* fix esca/getawayvan

* fix data driven errors for bpiphany converters

* features.force_nkro -> usb.force_nkro

* split.primary->split.main

* fix esca/getawayvan_f042

* fix the bpiphany converters for real

* fix bpiphany/tiger_lily

* Apply suggestions from code review

Co-authored-by: Nick Brassel <nick@tzarc.org>

* fix generate-api errors

* fix matrix pin extraction for split boards

* fix ploopyco/trackball_nano/rev1_001

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-08-16 23:33:30 +01:00
QMK Bot
fac717c11c Merge remote-tracking branch 'origin/master' into develop 2021-08-16 20:51:03 +00:00
QMK Bot
3867c70859 Merge remote-tracking branch 'origin/master' into develop 2021-08-16 20:16:47 +00:00
QMK Bot
fc50b6d22e Merge remote-tracking branch 'origin/master' into develop 2021-08-16 20:11:52 +00:00
Joel Challis
2bc8215ce5 Unify behaviour of wait on AVR (#14025) 2021-08-16 17:28:12 +01:00
QMK Bot
4818debcd0 Merge remote-tracking branch 'origin/master' into develop 2021-08-16 10:18:27 +00:00
QMK Bot
6c662a600c Merge remote-tracking branch 'origin/master' into develop 2021-08-16 06:44:50 +00:00
QMK Bot
3202b3900e Merge remote-tracking branch 'origin/master' into develop 2021-08-16 02:41:52 +00:00
Joel Challis
ab941ce614 Move all the flash logic from tmk_core (#13927) 2021-08-15 21:55:23 +01:00
Drashna Jaelre
4e3726bfe1 Fixup Audio startup and add to documents (#13606)
* Fixup Audio startup and add to documents

* fix doc descriptions
2021-08-15 21:51:50 +01:00
James Young
4b453dca92 Remove MIDI Configuration boilerplate (#11151)
* remove keyboard-level instances of `MIDI_ENABLE = no`

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e  '/^[ #]*MIDI_ENABLE[ \t]*=[ \t]*no/d' {} +
```

Co-Authored-By: Nick Brassel <nick@tzarc.org>

* fix case-sensitivity issues on MIDI_ENABLE

Change instances of `MIDI_ENABLE = YES` to `MIDI_ENABLE = yes`.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;MIDI_ENABLE[ \t]*=[ \t]*[Yy][Ee][Ss];MIDI_ENABLE = yes;g' {} +
```

* replace `# MIDI controls` with `# MIDI support`

Replace `# MIDI controls` with `# MIDI support` in keyboard-level `rules.mk` files.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;#[ \t]*MIDI[ \t]*\(controls\|support\).*;# MIDI support;g' {} +
```

* align inline comments

Aligns the inline comments to the length used by the QMK AVR rules.mk template.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;MIDI_ENABLE *= *yes.*;MIDI_ENABLE = yes           # MIDI support;g'  {} +
```

* remove commented instances of `MIDI_ENABLE` from keyboard `rules.mk` files

Commands:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;#\([ \t]*MIDI_ENABLE\) = yes; \1 = no ;' {} +
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;^\([ \t]*\)\(MIDI_ENABLE = no\);\2\1;' {} +
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e '/^[ #]\+MIDI_ENABLE *= *no/d' {} +
```

* remove MIDI configuration boilerplate from keyboard config.h files

Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-08-16 06:51:13 +10:00
Zach White
fd340f8957 Defer the expensive search for layout macros until info.json has been processed (#14007)
* defer the expensive search for layout macros until info.json has been processed

* fixup names
2021-08-16 06:30:58 +10:00
Drashna Jaelre
f56c202fb3 Fix ifdefs for OLED split sync code (#14017) 2021-08-15 00:54:08 -07:00
Drashna Jaelre
488aaa0980 Enable sync of OLED/ST7565 display on/off state on Splits (#13542)
* Enable sync of OLED/ST7565 display on/off state on Splits

* Only send if states are not matched

Co-authored-by: Nick Brassel <nick@tzarc.org>

Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-08-15 15:39:08 +10:00
fauxpark
4b3691e72d Merge remote-tracking branch 'upstream/master' into develop 2021-08-15 15:27:25 +10:00
Zach White
8a54127782 Fix errors that have cropped up in develop (#14005)
* frooastboard: remove duplicate values from config.h

* pistachio_pro: remove unused pin D5
2021-08-15 11:02:46 +10:00
Zach White
60a36863bc [Keyboard] ez_maker/directpins for easy one-offs in qmk_configurator (#13321)
* new keyboard: handwired/directpins

* fix promicro keyboard_name

* add teensy2 and teensy2++ support

* align with handwired/onekey

* tweak pids

* add teensy 3.2 and teensy lc to directpins

* move directpins from handwired to ez_maker

* add docs for easy maker
2021-08-14 08:42:59 -07:00
QMK Bot
110a320321 Merge remote-tracking branch 'origin/master' into develop 2021-08-14 15:08:27 +00:00
QMK Bot
a6d77fdf27 Merge remote-tracking branch 'origin/master' into develop 2021-08-14 14:59:20 +00:00
QMK Bot
0bb9a5c128 Merge remote-tracking branch 'origin/master' into develop 2021-08-14 14:18:47 +00:00
QMK Bot
3c013ca7b0 Merge remote-tracking branch 'origin/master' into develop 2021-08-14 13:20:22 +00:00
QMK Bot
d1be25e9ab Merge remote-tracking branch 'origin/master' into develop 2021-08-14 09:10:32 +00:00
QMK Bot
4039c5dda9 Merge remote-tracking branch 'origin/master' into develop 2021-08-14 09:03:03 +00:00
QMK Bot
e021357299 Merge remote-tracking branch 'origin/master' into develop 2021-08-14 08:48:55 +00:00
QMK Bot
3036189584 Merge remote-tracking branch 'origin/master' into develop 2021-08-14 06:36:00 +00:00
QMK Bot
1715fa0e8b Merge remote-tracking branch 'origin/master' into develop 2021-08-14 04:55:04 +00:00
Pete Sevander
fd3dc3a997 Fix combo_disable (#13988)
- Dump key buffer when combos are disabled.
- Recursive calls to `dump_key_buffer` need to start dumping the buffer
  from index i+1 to avoid possible infinite loops.
- Handle combo key releases even though combo processing is disabled.
2021-08-14 14:45:52 +10:00
QMK Bot
e80772da40 Merge remote-tracking branch 'origin/master' into develop 2021-08-14 01:15:07 +00:00
QMK Bot
1412a785ed Merge remote-tracking branch 'origin/master' into develop 2021-08-14 00:01:38 +00:00
Drashna Jaelre
7ef4d0c886 Fix pmw3360 code to only output debug info if mouse debugging is enabled (#13993) 2021-08-13 14:20:47 -07:00
Drashna Jael're
7ed235d15d Merge remote-tracking branch 'origin/master' into develop 2021-08-13 14:15:58 -07:00
QMK Bot
854b292873 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 19:30:22 +00:00
QMK Bot
fcddaadc56 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 19:29:21 +00:00
QMK Bot
bd811f6546 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 19:28:35 +00:00
QMK Bot
5c0daf5442 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 19:27:20 +00:00
QMK Bot
21387a7f59 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 19:26:50 +00:00
QMK Bot
a75204743a Merge remote-tracking branch 'origin/master' into develop 2021-08-13 18:53:04 +00:00
QMK Bot
d358492fb4 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 18:48:39 +00:00
QMK Bot
72bd653895 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 18:47:00 +00:00
QMK Bot
924a0b30c3 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 18:41:31 +00:00
Andre Brait
5711a3bac2 [Keymap] Improve andrebrait keymap (#13985) 2021-08-13 11:33:04 -07:00
QMK Bot
fa1ec32e39 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 18:31:14 +00:00
QMK Bot
349d36ff89 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 18:30:33 +00:00
Drashna Jaelre
041ff26ff1 [Keyboard] Fixup Ungodly Launch Pad config (#13992) 2021-08-13 11:28:43 -07:00
QMK Bot
ad2f3a0cf5 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 18:23:05 +00:00
QMK Bot
8fea9722dd Merge remote-tracking branch 'origin/master' into develop 2021-08-13 18:21:40 +00:00
QMK Bot
ceb428c9aa Merge remote-tracking branch 'origin/master' into develop 2021-08-13 18:18:30 +00:00
QMK Bot
cdba934f86 Merge remote-tracking branch 'origin/master' into develop 2021-08-13 17:38:51 +00:00
QMK Bot
4adb7d2176 Merge remote-tracking branch 'origin/master' into develop 2021-08-12 20:15:32 +00:00
Drashna Jaelre
477365912d Fix some additional bootmagic settings (#13979) 2021-08-12 13:03:40 -07:00
Drashna Jaelre
799c2bdfa3 [Keyboard] Fix default keymap for GMMK Pro Iso (#13980) 2021-08-13 04:47:20 +10:00
QMK Bot
968a3b324b Merge remote-tracking branch 'origin/master' into develop 2021-08-12 18:04:20 +00:00
Drashna Jael're
8e8ec6338c Merge remote-tracking branch 'origin/master' into develop 2021-08-12 09:18:18 -07:00
QMK Bot
176bce50e9 Merge remote-tracking branch 'origin/master' into develop 2021-08-12 14:43:35 +00:00
QMK Bot
cb8be2d468 Merge remote-tracking branch 'origin/master' into develop 2021-08-12 14:25:30 +00:00
QMK Bot
fd1b0f91e5 Merge remote-tracking branch 'origin/master' into develop 2021-08-12 13:59:41 +00:00
Andre Brait
33f64903b4 [Keymap] Add andrebrait layout for GMMK Pro (#13932) 2021-08-12 06:55:19 -07:00
QMK Bot
7fe375aef5 Merge remote-tracking branch 'origin/master' into develop 2021-08-12 03:40:49 +00:00
QMK Bot
353c615c29 Merge remote-tracking branch 'origin/master' into develop 2021-08-12 02:45:25 +00:00
QMK Bot
d9f2f9d22f Merge remote-tracking branch 'origin/master' into develop 2021-08-12 02:44:46 +00:00
James Young
345f6dc4e6 Merge remote-tracking branch 'upstream/master' into develop
Fixes merge conflicts in:

- keyboards/poker87c/rules.mk and keyboards/poker87d/rules.mk
  - Conflicts from PR 13961
- keyboards/tronguylabs/m122_3270/keymaps/default/keymap.c
  - Conflict from PR 13947
2021-08-11 09:48:25 -07:00
QMK Bot
f4c447f2df Merge remote-tracking branch 'origin/master' into develop 2021-08-11 07:19:55 +00:00
QMK Bot
5ed7210d53 Merge remote-tracking branch 'origin/master' into develop 2021-08-11 02:11:51 +00:00
QMK Bot
d58dc522a5 Merge remote-tracking branch 'origin/master' into develop 2021-08-11 02:10:38 +00:00
QMK Bot
1537e3975d Merge remote-tracking branch 'origin/master' into develop 2021-08-11 00:31:28 +00:00
QMK Bot
80cb96bb15 Merge remote-tracking branch 'origin/master' into develop 2021-08-10 23:56:43 +00:00
Luigi311
8d1255ccab Handwired/Stream_Cheap/2x4: Add via support (#13297)
* Handwired/Stream_Cheap/2x4: Add via support

Signed-off-by: Luigi311 <luigi311.lg@gmail.com>

* Handwired/Stream_Cheap: Update readme for via

Signed-off-by: Luigi311 <luigi311.lg@gmail.com>

* Handwired/Stream_Cheap/2x4: Add 2x4 to via json

Signed-off-by: Luigi311 <luigi311.lg@gmail.com>

* Handwired/Stream_Cheap/2x4: Add GPL2+ License to keymap

Signed-off-by: Luigi311 <luigi311.lg@gmail.com>
2021-08-11 07:40:30 +10:00
Alin Marin Elena
184c2e35af add support for m65 and simple 5x13 ortholinear (#12315)
* add support for m65 and simple 5x13 ortholinear

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

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

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

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

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

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

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

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

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

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

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

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* updates as per @sigprof review plus reformat

* pins all now are defined at microcontroller level

* profuct id defined at microcontroller level

* put leds on when _ADJ is on

* add danish keymap

* make default uk centric iso as per readme

* default is now iso generic, uk is its own business

* add license

* update imgur links to reflect the layout

* leds for _ADJ layer now do not prevent the other layers leds to get on

* Update keyboards/m65/keymaps/uk/keymap.c

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

* Update keyboards/m65/keymaps/dk/keymap.c

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

* Update keyboards/m65/keymaps/uk/readme.md

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

* Update keyboards/m65/readme.md

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

* add support for gd32f303cct6 by we act in rev2

* Revert "add support for gd32f303cct6 by we act in rev2"

This reverts commit 4ad3834925.

* Update keyboards/m65/rev1/rules.mk

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

* Update keyboards/m65/keymaps/dk/readme.md

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

* Update keyboards/m65/keymaps/uk/readme.md

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

* Update keyboards/m65/keymaps/default/readme.md

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

* remove empty hal

* add capslock

* Update keyboards/m65/readme.md

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

* Update keyboards/m65/config.h

Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>

Co-authored-by: Alin M Elena <alin-marin.elena@stfc.ac.uk>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-08-11 06:59:01 +10:00
QMK Bot
d888ac17ea Merge remote-tracking branch 'origin/master' into develop 2021-08-10 14:48:55 +00:00
QMK Bot
5b8f2eccbf Merge remote-tracking branch 'origin/master' into develop 2021-08-10 09:15:00 +00:00
QMK Bot
75a58c3cef Merge remote-tracking branch 'origin/master' into develop 2021-08-10 08:03:36 +00:00
QMK Bot
85090b77af Merge remote-tracking branch 'origin/master' into develop 2021-08-10 05:24:08 +00:00
QMK Bot
3e0517f1ef Merge remote-tracking branch 'origin/master' into develop 2021-08-10 04:07:54 +00:00
QMK Bot
f0a2641cf1 Merge remote-tracking branch 'origin/master' into develop 2021-08-09 21:15:07 +00:00
Dasky
bb2986c115 Fix compliation for ferris 0.2 bling (#13937)
* Fix include
2021-08-09 14:04:40 -07:00
James Young
7bec943043 Merge remote-tracking branch 'upstream/master' into develop
Fixes merge conflicts in:

- keyboards/bm40hsrgb/config.h
  - Conflict from PR 13132:
    - RGB_DISABLE_WHEN_USB_SUSPENDED signature updated in develop branch, unmodified in master branch
    - updated file with changes from master branch

- keyboards/keebio/iris/keymaps/nstickney/keymap.c
  - Conflict from PR 11456:
    - layer_state_set_user() updated in develop branch, removed in master branch
    - updated file with changes from master branch
2021-08-09 12:14:22 -07:00
Joel Challis
c0628c2820 Remove backwards compatibility of debounce names (#13877)
* Remove backwards compatibility of debounce names

* Update docs

* Update keyboards/keymaps
2021-08-09 19:46:18 +01:00
Joel Challis
7c691d82bf Remove ONEHAND_ENABLE (#13920) 2021-08-09 19:46:03 +01:00
Drashna Jaelre
2617ac6041 Fixup rgb matrix config for KBD67 mkII boards (#13931) 2021-08-09 19:26:02 +01:00
QMK Bot
8d19f4f187 Merge remote-tracking branch 'origin/master' into develop 2021-08-09 17:06:58 +00:00
QMK Bot
ed7f06bd7b Merge remote-tracking branch 'origin/master' into develop 2021-08-09 17:05:08 +00:00
Andre Brait
dbee96098d Make default keymap for GMMK Pro reflect stock (#13850) 2021-08-09 10:04:58 -07:00
QMK Bot
f3cede7299 Merge remote-tracking branch 'origin/master' into develop 2021-08-09 17:04:30 +00:00
Zach White
12681bacc4 Merge remote-tracking branch 'origin/master' into develop
Conflicts:
	keyboards/kbdfans/kbd67/mkiirgb/mkiirgb.c
2021-08-09 08:34:14 -07:00
Nick Brassel
65e3760853 Fix compilation issue. (#13926) 2021-08-09 13:20:15 +10:00
thpoll83
b43c6bc176 Add support for STM32F407x MCUs. (#13718)
* Add support for STM32F407x MCUs.

* Removing STMF407 MCU variation

* Update quantum/mcu_selection.mk

Remove options for dfu flashing

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

* DISABLE STM32_USB_USE_OTG1

* Update platforms/chibios/GENERIC_STM32_F407XE/configs/mcuconf.h

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

* Update platforms/chibios/GENERIC_STM32_F407XE/configs/mcuconf.h

Co-authored-by: thomas.pollak <thomas.pollak@dynatrace.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-08-09 06:52:13 +10:00
QMK Bot
ac92ded0cc Merge remote-tracking branch 'origin/master' into develop 2021-08-08 04:42:36 +00:00
QMK Bot
8e5213ca6c Merge remote-tracking branch 'origin/master' into develop 2021-08-08 04:41:43 +00:00
Drashna Jaelre
b9dcd5ac38 [Keymap] Drashna split transport improvement (#13905)
* Fix up split stuff

* Fix Split perf issues

* Allow LTO to be disabled

* Fixup WPM and encoders

* Fixup qmk keys per scan

* Add bootloader info

* Change encoder pins

* Fixup corne oled code

* Expand transport sync

* Improve user transport

* Cleanup mouse processing at keymap level

* Improve layer checking for mouse layering
2021-08-07 21:40:48 -07:00
QMK Bot
100333818f Merge remote-tracking branch 'origin/master' into develop 2021-08-08 04:15:54 +00:00
QMK Bot
21b71932f7 Merge remote-tracking branch 'origin/master' into develop 2021-08-08 04:13:48 +00:00
QMK Bot
6c5ef3ce30 Merge remote-tracking branch 'origin/master' into develop 2021-08-08 03:38:09 +00:00
QMK Bot
d0f1a4c48a Merge remote-tracking branch 'origin/master' into develop 2021-08-08 03:24:59 +00:00
Drashna Jaelre
d06f50a31a [Keyboard] Fix matrix_output_unselect_delay for handwired/xealousbrown (#13913) 2021-08-08 01:36:38 +10:00
QMK Bot
243e75659c Merge remote-tracking branch 'origin/master' into develop 2021-08-07 14:57:43 +00:00
Drashna Jaelre
6fb9842936 Clean up remaining RGB_DISABLE_WHEN_USB_SUSPENDED defines Part 2 (#13912) 2021-08-07 15:18:06 +01:00
Liyang HU
383fae55c5 Refactor quantum/command.{c,h} for code size & {read,maintain}ability (#11842)
* quantum/command.c: coalesce `print()`s in `command_common_help()` & `print_version()`

Also undo some damage by clang-format in b624f32f94

* quantum/command.c: replace `print(…); print_{,val_}{dec,hex}*(…);` sequences with single `xprintf(…)`

`print_{dec,hex}*(…)` are just `#define`s for `xprintf(…)` anyway.

Each additional `xprintf(…)` costs ~8 bytes: the call instructions,
plus an additional NUL terminator.

This _really_ adds up: this commit saves 814 bytes on my ATmega32.

* quantum/command.c: optimise `mousekey_console()` for size & legibility

Made various tweaks to the interface, but still functionally identical.

Assume `KC_1`…`KC_0` to be contiguous, and removed `numkey2num(…)` entirely.
It was exported in `command.h` by 1a0bac8bcc for no obvious reason, before
which it was `static`. I doubt anyone uses it.

`mousekey_console()` is now enabled regardless of `MK_3_SPEED`.
Needs fleshing out for things other than the X11 variant though.

This commit saves 638 bytes on my ATmega32.
2021-08-07 17:12:57 +10:00
James Young
a03aa301de Remove Full Bootmagic (#13846)
* disambiguate Bootmagic rules in keymaps

The files edited by this commit were added at a point in time where `BOOTMAGIC_ENABLE = yes` enabled full Bootmagic.

This commit edits the files to specify that full Bootmagic is intended.

* remove BOOTMAGIC_ENABLE=full setting

* unify commented BOOTMAGIC_ENABLE rules in keyboards

Explicitly sets `BOOTMAGIC_ENABLE = no` in keyboards where the rule was commented out.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;#[ \t]*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-zA-Z]\+\).*;\1 = no       # Virtual DIP switch configuration;g' {} +
```

* remove commented Bootmagic rules from keymap/user level

Command:

```
find keyboards/ layouts/ users/ -type f -name 'rules.mk' -exec sed -i -e '/#.*\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*/d' {} +
```

* update keyboard BOOTMAGIC_ENABLE rule formatting

Sets the formatting of BOOTMAGIC_ENABLE rules to `BOOTMAGIC_ENABLE = [value]`, without the inline comments (which will be replaced later).

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
```

* update keyboards' BOOTMAGIC_ENABLE settings

Updates keyboard `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used.

Command:

```
find keyboards/ -type f -name 'rules.mk' -and -not -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = \)full;\1lite;g' '{}' +
```

* update keymap/user BOOTMAGIC_ENABLE settings

Updates keymap/user `rules.mk` files to use `BOOTMAGIC_ENABLE = lite` where `BOOTMAGIC_ENABLE = full` was being used.

Commands:

```
find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' +
find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE[ \t=]\+\)full;\1lite;g' '{}' +
```

* remove and replace inline comments in keyboards and keymap/user files

Removes and replaces the inline comments, which have been updated to read `Enable Bootmagic Lite`.

Commands:

```
find keyboards/ -type f -name 'rules.mk' -and -path '*/keymaps/*' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
find layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE\)[ \t=]\+\([a-z]\+\).*;\1 = \2;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = lite\);\1     # Enable Bootmagic Lite;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = yes\);\1      # Enable Bootmagic Lite;g' '{}' +
find keyboards/ layouts/community/ users/ -type f -name 'rules.mk' -exec sed -i -e 's;\(BOOTMAGIC_ENABLE = no\);\1       # Enable Bootmagic Lite;g' '{}' +
```

* rename improperly named makefiles

Some files intended to be used as makefiles had improper names causing them to not be used as intended when building.

This commit corrects the filenames of the affected files.

* update renamed file with new rule formatting

* update QMK's template files

Updates QMK's `rules.mk` templates to use the new inline comment.

* update QMK Docs

- remove documentation of full Bootmagic
- update links to Bootmagic Lite doc
- add doc for Magic Keycodes

* rules.mk patch for coarse/ixora and coarse/vinta
2021-08-06 23:59:56 -07:00
QMK Bot
0bc9090b1f Merge remote-tracking branch 'origin/master' into develop 2021-08-07 06:52:44 +00:00
QMK Bot
7b709aaecc Merge remote-tracking branch 'origin/master' into develop 2021-08-07 06:52:11 +00:00
QMK Bot
1f94e99565 Merge remote-tracking branch 'origin/master' into develop 2021-08-07 06:51:32 +00:00
QMK Bot
07a7724f2b Merge remote-tracking branch 'origin/master' into develop 2021-08-07 06:50:18 +00:00
QMK Bot
58bb1dbde7 Merge remote-tracking branch 'origin/master' into develop 2021-08-07 06:07:10 +00:00
QMK Bot
e8112e49cd Merge remote-tracking branch 'origin/master' into develop 2021-08-07 05:59:33 +00:00
QMK Bot
e2ac8d5f3e Merge remote-tracking branch 'origin/master' into develop 2021-08-07 05:48:48 +00:00
QMK Bot
b38fdc0a57 Merge remote-tracking branch 'origin/master' into develop 2021-08-07 04:48:50 +00:00
QMK Bot
36b2f06d9e Merge remote-tracking branch 'origin/master' into develop 2021-08-07 00:03:19 +00:00
QMK Bot
25425dc9bc Merge remote-tracking branch 'origin/master' into develop 2021-08-07 00:02:28 +00:00
Sergey Vlasov
610035dce8 Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys (#9404)
* Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys

Implement an additional option for dual-role keys which converts the
dual-role key press into a hold action immediately when another key is
pressed (this is different from the existing PERMISSIVE_HOLD option,
which selects the hold action when another key is tapped (pressed and
then released) while the dual-role key is pressed).  The Mod-Tap keys
already behave in a similar way, unless the IGNORE_MOD_TAP_INTERRUPT
option is enabled (but with some additional delays); the added option
makes this behavior available for all other kinds of dual-role keys.

* [Docs] Update tap-hold docs for HOLD_ON_OTHER_KEY_PRESS

Document the newly added HOLD_ON_OTHER_KEY_PRESS option and update the
documentation for closely related options (PERMISSIVE_HOLD and
IGNORE_MOD_TAP_INTERRUPT).

Use Layer Tap instead of Mod Tap in examples for PERMISSIVE_HOLD and
HOLD_ON_OTHER_KEY_PRESS, because the effect of using these options with
Mod Tap keys is mostly invisible without IGNORE_MOD_TAP_INTERRUPT.

Add comments before return statements in sample implementations of
`get_ignore_mod_tap_interrupt()`, `get_hold_on_other_key_press()` and
`get_permissive_hold()`.

Thanks to @Erovia and @precondition for comments and suggestions to
improve the documentation.
2021-08-07 09:16:26 +10:00
Gigahawk
13b94b468d Copy GMMK Pro screw specs to ISO readme (#13908) 2021-08-07 08:11:17 +10:00
QMK Bot
9e7bfdf6c6 Merge remote-tracking branch 'origin/master' into develop 2021-08-06 11:55:12 +00:00
Nick Brassel
f24bca5bb3 Update ChibiOS-Contrib, mirroring script. (#13896) 2021-08-06 16:40:12 +10:00
QMK Bot
538d9d7890 Merge remote-tracking branch 'origin/master' into develop 2021-08-06 05:54:10 +00:00
QMK Bot
3ba2ce40a5 Merge remote-tracking branch 'origin/master' into develop 2021-08-06 05:18:45 +00:00
Drashna Jaelre
ea5d778f90 [Keyboard] Remove console from keebio via keyboards (#13901) 2021-08-05 21:29:29 -07:00
QMK Bot
293168f444 Merge remote-tracking branch 'origin/master' into develop 2021-08-06 04:28:58 +00:00
Nick Brassel
0dafd83f72 Fix up builds after #8591 (#13900) 2021-08-06 09:57:09 +10:00
Pete Sevander
7e983796e1 Process combos earlier & overlapping combos (#8591)
* Combo processing improvements.

Now it is possible to use ModTap and LayerTap keys as part of combos.
Overlapping combos also don't trigger all the combos, just exactly the
one that you press.

New settings:
- COMBO_MUST_HOLD_MODS
- COMBO_MOD_TERM
- COMBO_TERM_PER_COMBO
- COMBO_MUST_HOLD_PER_COMBO
- COMBO_STRICT_TIMER
- COMBO_NO_TIMER

* Remove the size flags from combo_t struct boolean members.

This in the end actually saves space as the members are accessed so many
times. The amount of operations needed to access the bits uses more
memory than setting the size saves.

* Fix `process_combo_key_release` not called correctly with tap-only combos

* Fix not passing a pointer when NO_ACTION_TAPPING is defined.

* Docs for `COMBO_ONLY_FROM_LAYER`

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update quantum/process_keycode/process_combo.c

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Add `EXTRA_SHORT_COMBOS` option.

Stuff combo's `disabled` and `active` flags into `state`. Possibly can
save some space.

* Add more examples and clarify things with dict management system.

- Simple examples now has a combo that has modifiers included.
- The slightly more advanced examples now are actually more advanced
  instead of just `tap_code16(<modded-keycode>)`.
- Added a note that `COMBO_ACTION`s are not needed anymore as you can
  just use custom keycodes.
- Added a note that the `g/keymap_combo.h` macros use the
  `process_combo_event` function and that it is not usable in one's
  keymap afterwards.

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Change "the" combo action example to "email" example.

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Fix sneaky infinite loop with `combo_disable()`

No need to call `dump_key_buffer` when disabling combos because the
buffer is either being dumped if a combo-key was pressed, or the buffer is empty
if a non-combo-key is pressed.

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

* Update docs/feature_combo.md

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>

Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-08-06 09:44:57 +10:00
Juan Pablo Kutianski
07553b41f0 [Feature] Swap buttons on PS2 Mouse/Trackball (#9205)
* [Feature Request] Swap buttons on PS2 Mouse/Trackball

* [Feature Request] Swap buttons on PS2 Mouse/Trackball

* Added id: to the doc

* Missing space

* Solve comment
https://github.com/qmk/qmk_firmware/pull/9205#discussion_r430783182

* Solve comments https://github.com/qmk/qmk_firmware/pull/9205#discussion_r430783182 & https://github.com/qmk/qmk_firmware/pull/9205#discussion_r430783884

* Format code more according to https://docs.qmk.fm/#/coding_conventions_c

* change logic to LUT

* WIP: Clean up

* WIP: Solution with xor operators to mask the change

* delete #endif & added the missed xor operator (ahhh)

* Variable (mouse_report->buttons): avoid setting twice https://github.com/qmk/qmk_firmware/pull/9205#discussion_r430783884

* Update tmk_core/protocol/ps2_mouse.c

Co-authored-by: Nick Brassel <nick@tzarc.org>

Co-authored-by: juank <juank@fktech.net>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-08-06 09:09:58 +10:00
Takeshi ISHII
339675693b add yaml_build_options target (#10533)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-08-06 08:18:32 +10:00
Nick Brassel
6aaf3e84e9 Rework as per 9824 (#13898) 2021-08-06 08:14:43 +10:00
JohSchneider
bcb6e23387 Arm ps2 mouse interrupt (#6490)
* ps2_mouse on ARM: an interrupt-version of the ps2-mouse code ported to ARM/chibios

* ps2_mouse on ARM: link EXT callback-channel selection to the user defined PS2_LINE_CLOCK

* ps2_mouse on ARM: replace DELAY_X defines with hardware-agnostic wait_X

* ps2_mouse on ARM: replace chibios-specific defines for the pins/lines with defines from quantum/config_common.h

and drop the '_LINE' component from teh define name

* ps2_mouse on ARM: expose the software-intterupt port as a user editable define

* Update docs/feature_ps2_mouse.md

Co-Authored-By: Hugo van Kemenade <hugovk@users.noreply.github.com>

* Update feature_ps2_mouse.md

* use a define to deduce the PS_DATA_PORT instead

* reduce all-zero extcfg to oneliner

* ps2_mouse: use generic wait instead of avr-delay

* Update docs/feature_ps2_mouse.md

* ps2_mouse: changes for new chibios version

(17.6.0 -> 19.1.0)
replacing the legacy externa-interrupt driver with pal-callbacks

* ps2_mouse: use PLATFORM_KEY

Co-Authored-By: Joel Challis <git@zvecr.com>

* ps2_mouse: clang-format corrections

* ps2_mouse: add systemlocks

using the chibios equivalent to AVRs cli: chSys[Unl|L]ock

Co-authored-by: Johannes <you@example.com>
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2021-08-06 07:51:24 +10:00
Joel Challis
5bbc527460 Bump gtest (#13885)
* Bump gtest

* Pin to latest release
2021-08-05 10:46:14 +10:00
Joel Challis
bdaea259af Tidy up rgbkb/mun (#13801)
* Tidy up rgbkb/mun
2021-08-05 00:59:50 +01:00
QMK Bot
cb4d91f85f Merge remote-tracking branch 'origin/master' into develop 2021-08-04 21:33:19 +00:00
Dasky
3917fd5639 [Keyboard] Fix knops keymaps (#13872) 2021-08-04 12:10:31 -07:00
Drashna Jaelre
3568eafd65 [Keyboard] Switch Draculad to using WPM char hack (#13886) 2021-08-04 11:30:49 -07:00
QMK Bot
6525b82f5f Merge remote-tracking branch 'origin/master' into develop 2021-08-04 12:25:28 +00:00
QMK Bot
d9f30d366a Merge remote-tracking branch 'origin/master' into develop 2021-08-04 10:35:54 +00:00
QMK Bot
d27ab328dc Merge remote-tracking branch 'origin/master' into develop 2021-08-04 02:10:01 +00:00
QMK Bot
600faab707 Merge remote-tracking branch 'origin/master' into develop 2021-08-04 00:23:25 +00:00
QMK Bot
4ffc9d8288 Merge remote-tracking branch 'origin/master' into develop 2021-08-03 23:30:12 +00:00
QMK Bot
2dbc71f037 Merge remote-tracking branch 'origin/master' into develop 2021-08-03 22:54:45 +00:00
QMK Bot
c48d9c2b2a Merge remote-tracking branch 'origin/master' into develop 2021-08-03 21:40:39 +00:00
Joakim Tufvegren
982b782ce3 Trigger a wakeup after USB Reset on ChibiOS. (#12831)
After a USB Reset event the device must, according to the spec wake up
from any suspend state, so the Configured event that arrives afterwards
should be interpreted as an implicit wakeup.
2021-08-04 07:39:34 +10:00
Joakim Tufvegren
1409b36851 Remove the #10088 hotfix for Teensy 3.1-like Input:Club keyboards (#12870)
* Remove the #10088 hotfix for K20x MCU:s.

It seems to _cause_ the issue it intended to solve there.

* Cleaner way of removing #10088 hotfix.

Now only affects Ergodox Infinity, Whitefox and K-type, though.

Switches over Ergodox Infinity to the `IC_TEENSY_3_1` board, since that
was a nice place to implement the `restart_usb_driver` override.
However, I would guess this issue is present for other K20x/Teensy 3.1
boards as well...

* Fix comment regarding `IC_TEENSY_3_1` for all keyboards using it.
2021-08-04 07:38:37 +10:00
Joel Challis
34de7ca224 Move print/debug files to quantum (#12069)
* move print/debug files to quantum

* Update comments
2021-08-03 18:49:33 +01:00
Joel Challis
3f419dc872 Unconditionally call led_init_ports (#12116)
* Unconditionally call led_init_ports

* Another call to led_init_ports
2021-08-03 18:34:32 +01:00
QMK Bot
2bc7511b9e Merge remote-tracking branch 'origin/master' into develop 2021-08-03 17:21:26 +00:00
QMK Bot
51eb5285a6 Merge remote-tracking branch 'origin/master' into develop 2021-08-03 17:04:00 +00:00
QMK Bot
738e8e72ba Merge remote-tracking branch 'origin/master' into develop 2021-08-03 16:40:14 +00:00
QMK Bot
6961976855 Merge remote-tracking branch 'origin/master' into develop 2021-08-03 07:04:43 +00:00
QMK Bot
a14f331c0a Merge remote-tracking branch 'origin/master' into develop 2021-08-03 03:17:45 +00:00
QMK Bot
79c88767dd Merge remote-tracking branch 'origin/master' into develop 2021-08-03 01:02:06 +00:00
QMK Bot
a174d20d06 Merge remote-tracking branch 'origin/master' into develop 2021-08-03 00:53:24 +00:00
QMK Bot
5decdad8c6 Merge remote-tracking branch 'origin/master' into develop 2021-08-02 08:24:57 +00:00
QMK Bot
83bd56e68c Merge remote-tracking branch 'origin/master' into develop 2021-08-02 04:28:52 +00:00
Nick Brassel
ee3c138385 Merge remote-tracking branch 'upstream/master' into develop 2021-08-02 13:55:36 +10:00
a_p_u_r_o
26b62f7a6c Fix alignment of USB out report buffer 2 -> 4 (#13838) 2021-08-02 00:32:26 +01:00
Drashna Jaelre
ebed2e9a81 [BUG] Fix Key Override includes (#13831)
* [BUG] Fix Key Override includes

* simplify includes
2021-08-01 16:29:23 +01:00
Jonavin
53683e8d20 fix develop branch move file (#13832)
Co-authored-by: zvecr <git@zvecr.com>
2021-08-01 22:37:59 +10:00
Drashna Jaelre
41a770ded3 [Keyboard] Fix SRC include for matrix/m20add issi driver (#13826) 2021-07-31 12:18:11 -07:00
Drashna Jaelre
7bcbeffc2d Fix compile issues due to LED changes (#13821) 2021-07-31 17:30:13 +01:00
Joel Challis
70fb3e1aaf __flash? (#13799) 2021-07-31 14:35:30 +01:00
Joel Challis
206a995ccd Move some led drivers to common folder (#13749)
* Move some led drivers to common folder
2021-07-31 14:31:09 +01:00
Dasky
aeb252435d [develop] Fix pimoroni trackball read address (#13810) 2021-07-31 06:12:19 -07:00
Drashna Jaelre
f587ee5b5b Update LUFA Submodule (2021-07-30) (#13819) 2021-07-31 06:08:44 -07:00
QMK Bot
6c33290ffa Merge remote-tracking branch 'origin/master' into develop 2021-07-31 09:47:25 +00:00
ruro
52dad230d6 [CLI] Make qmk doctor more lenient about system config (#13804) 2021-07-30 21:43:42 -07:00
QMK Bot
6d82c92476 Merge remote-tracking branch 'origin/master' into develop 2021-07-31 00:34:43 +00:00
QMK Bot
7c70a90867 Merge remote-tracking branch 'origin/master' into develop 2021-07-30 23:22:11 +00:00
QMK Bot
99fc2173a4 Merge remote-tracking branch 'origin/master' into develop 2021-07-30 23:15:44 +00:00
QMK Bot
f1af7da9ba Merge remote-tracking branch 'origin/master' into develop 2021-07-30 21:00:46 +00:00
Ryan
b021c2f2c5 Port new_keyboard.sh to CLI (#13706)
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-07-30 21:57:40 +01:00
QMK Bot
770a525425 Merge remote-tracking branch 'origin/master' into develop 2021-07-30 18:45:24 +00:00
QMK Bot
de1898e69e Merge remote-tracking branch 'origin/master' into develop 2021-07-30 18:18:01 +00:00
QMK Bot
d34e61a43c Merge remote-tracking branch 'origin/master' into develop 2021-07-30 18:17:17 +00:00
QMK Bot
70dceefa01 Merge remote-tracking branch 'origin/master' into develop 2021-07-30 18:16:50 +00:00
QMK Bot
701808372e Merge remote-tracking branch 'origin/master' into develop 2021-07-30 17:10:40 +00:00
QMK Bot
3461bdad43 Merge remote-tracking branch 'origin/master' into develop 2021-07-30 17:02:12 +00:00
QMK Bot
e6c884415d Merge remote-tracking branch 'origin/master' into develop 2021-07-30 16:54:23 +00:00
QMK Bot
04a2fa8ff3 Merge remote-tracking branch 'origin/master' into develop 2021-07-30 15:13:15 +00:00
QMK Bot
dfb370402e Merge remote-tracking branch 'origin/master' into develop 2021-07-30 15:12:13 +00:00
QMK Bot
f87c72ef8f Merge remote-tracking branch 'origin/master' into develop 2021-07-30 15:11:30 +00:00
QMK Bot
4735aab75b Merge remote-tracking branch 'origin/master' into develop 2021-07-30 13:48:29 +00:00
QMK Bot
ba1fdf97b1 Merge remote-tracking branch 'origin/master' into develop 2021-07-30 07:17:44 +00:00
QMK Bot
38686dd0c5 Merge remote-tracking branch 'origin/master' into develop 2021-07-30 07:07:41 +00:00
James Young
80d8c4a483 Merge remote-tracking branch 'upstream/master' into develop 2021-07-29 23:04:06 -07:00
Ryan
25f43837d2 Remove references to info.json width and height in CLI (#13728) 2021-07-29 22:37:18 -07:00
QMK Bot
441914e0ad Merge remote-tracking branch 'origin/master' into develop 2021-07-29 17:45:54 +00:00
QMK Bot
d243512ad6 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 16:50:56 +00:00
QMK Bot
703d886c21 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 16:12:56 +00:00
QMK Bot
ae6a3ae20e Merge remote-tracking branch 'origin/master' into develop 2021-07-29 16:12:19 +00:00
QMK Bot
5bb736d1d6 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 16:04:06 +00:00
QMK Bot
935079f266 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 15:50:58 +00:00
QMK Bot
957bd4d1d1 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 15:50:24 +00:00
QMK Bot
faf4f6d005 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 15:49:11 +00:00
QMK Bot
58baf5a3d8 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 15:48:22 +00:00
QMK Bot
04a0f0cb18 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 15:47:52 +00:00
QMK Bot
1df2f23ab4 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 15:43:12 +00:00
QMK Bot
5418777454 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 15:29:02 +00:00
QMK Bot
ec8d08810f Merge remote-tracking branch 'origin/master' into develop 2021-07-29 15:23:56 +00:00
QMK Bot
614c627114 Merge remote-tracking branch 'origin/master' into develop 2021-07-29 02:01:05 +00:00
QMK Bot
69661eb5ab Merge remote-tracking branch 'origin/master' into develop 2021-07-28 23:34:48 +00:00
QMK Bot
aabbaf11aa Merge remote-tracking branch 'origin/master' into develop 2021-07-28 11:02:58 +00:00
Joel Challis
4ef8ff458d Minor tidy up of key overrides (#13747)
* Minor tidy up of key overrides

* Update quantum/quantum.c

* Update quantum/quantum.c
2021-07-28 12:01:49 +01:00
QMK Bot
50964ae821 Merge remote-tracking branch 'origin/master' into develop 2021-07-28 11:01:28 +00:00
Joel Challis
03d258c222 matrix_scan_x -> x_task (#13748) 2021-07-28 12:01:23 +01:00
Drashna Jaelre
c52c69d45f Allow for higher USB Polling rate on ATSAM boards (#13755) 2021-07-28 12:00:16 +01:00
QMK Bot
2f4361c88f Merge remote-tracking branch 'origin/master' into develop 2021-07-28 07:25:28 +00:00
Joel Challis
7ac7ca96e9 Remove some legacy files (#13715) 2021-07-27 23:57:42 +01:00
Joel Challis
3858a784c7 Align AW20216 driver (#13712)
* Align AW20216 driver

* Update drivers/awinic/aw20216.h

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

* Review comments

* formatting fixes

* stop if start failed?

* review comments

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-07-27 23:55:51 +01:00
Ryan
56443fe3cf Fix typo in Dactyl Manuform (#13740) 2021-07-27 08:16:41 -07:00
Ryan
468f705455 Dactyl Manuform cleanup (#13686) 2021-07-27 22:00:38 +10:00
QMK Bot
95de60513d Merge remote-tracking branch 'origin/master' into develop 2021-07-27 02:45:36 +00:00
QMK Bot
998ac203e4 Merge remote-tracking branch 'origin/master' into develop 2021-07-27 02:44:18 +00:00
Albert Y
be34fdea4b [Keyboard] Add RGB matrix support for Kyria (#12789)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: filterpaper <filterpaper@localhost>
2021-07-26 19:42:34 -07:00
Drashna Jaelre
3affdcb45b Reduce firmware size in prep for #12670 (#13724)
* Reduce firmware size in pre for #12670

* Also disable pixel mode, just in case
2021-07-27 12:41:28 +10:00
Albert Y
e032fbe326 [Keyboard] Update kyria make path example (#13720)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-07-26 18:01:16 -07:00
Drashna Jaelre
eb46c954dc [Keymap] Drashna's Defaults cleanup (#13722) 2021-07-26 17:59:49 -07:00
Joel Challis
368efb5d2b Remove legacy BACKLIGHT_CUSTOM_DRIVER option (#13731) 2021-07-27 10:17:58 +10:00
Nick Brassel
394272a266 Merge remote-tracking branch 'upstream/master' into develop 2021-07-27 10:11:52 +10:00
Xelus22
e0375c0b71 [Keyboard Update] Change to L422 (#13717)
* change to L422

* Add bootloader

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

* add bootloader

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-07-26 16:05:13 +10:00
Xelus22
b9902a3f59 [Keyboard] Valor Rev 2 (#13551)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-07-25 22:34:39 -07:00
Drashna Jaelre
9e782e4f14 [Bug] Include gpio.h in solenoid driver for GPIO Control functions (#13716) 2021-07-25 21:24:47 -07:00
Joel Challis
f945c352e7 Haptic: driver-> feature (#13713) 2021-07-25 19:14:58 -07:00
Drashna Jaelre
4bb595f94b [Keyboard] Fix up SplitKB keyboards (#13511) 2021-07-25 18:18:39 -07:00
QMK Bot
d908970522 Merge remote-tracking branch 'origin/master' into develop 2021-07-25 16:18:46 +00:00
Drashna Jaelre
71e9f8fc11 Update LUFA (18-07-2021) and add QMK-HID Bootloader support (#13588)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-07-24 23:00:57 -07:00
Drashna Jaelre
a030950fd6 [Keyboard] Fix compile size for the Vitamins Included via keymap (#13696) 2021-07-25 14:19:38 +10:00
Marc Tamsky
958483a4ba docs/cli_commands: fix typo (#13697) 2021-07-25 13:51:40 +10:00
Dasky
a938c54512 dirty fix (#13695) 2021-07-25 12:33:30 +10:00
Nick Brassel
4ec8764c70 Merge remote-tracking branch 'upstream/master' into develop 2021-07-25 12:17:15 +10:00
Drashna Jaelre
fdf3ce3cd1 [Keyboard] Fix compile size for the Lets Split Sockets via keymap (#13691) 2021-07-25 11:05:48 +10:00
Drashna Jaelre
210da7b233 [Keyboard] Fix Compile size on ungodly Launch Pad (#13692) 2021-07-25 11:05:19 +10:00
Ryan
8cc568bc29 Fix & clean up tronguylabs/m122_3270 (#13684) 2021-07-25 11:02:36 +10:00
Drashna Jaelre
95730d4f96 [Keyboard] Fix compile size for the Merge UM70 via keymap (#13690) 2021-07-25 11:01:13 +10:00
Drashna Jaelre
0b95ac2e4b Clean up remaining RGB_DISABLE_WHEN_USB_SUSPENDED defines (#13689) 2021-07-24 20:17:04 +01:00
Dasky
ab42945c9a [Keyboard] Fix Q1 change dip switch to bool (#13687) 2021-07-24 10:45:34 -07:00
Dasky
d972919204 [Docs] Fix typo in dip switch example (#13688) 2021-07-24 10:44:31 -07:00
QMK Bot
93fc2cbc8a Merge remote-tracking branch 'origin/master' into develop 2021-07-24 16:37:57 +00:00
QMK Bot
e681c4368b Merge remote-tracking branch 'origin/master' into develop 2021-07-24 15:40:38 +00:00
QMK Bot
7aa1938fa4 Merge remote-tracking branch 'origin/master' into develop 2021-07-24 15:39:35 +00:00
Joel Challis
e562238309 Fix up xd002 rgb keymaps (#13685) 2021-07-24 15:50:32 +01:00
Joel Challis
567da49ed0 Avoid LTO conficts on arm_atsam (#13676) 2021-07-24 12:13:06 +01:00
Drashna Jaelre
7907a72584 [Keyboard] Reduce compile size for dz60rgb v2.1 (#13680) 2021-07-24 19:36:41 +10:00
Drashna Jaelre
a2d0efe5ad [Keyboard] Fix type on pandora via keymap (#13681) 2021-07-24 18:06:56 +10:00
Drashna Jaelre
b8a1e14f53 Remove deprecated callbacks for encoders and dip switches (#13404) 2021-07-24 00:37:19 -07:00
Drashna Jaelre
73d4d7dc2b [Keyboard] Quick hack to fix Astro65 board (#13665)
* [Keyboard] Quick hack to fix Astro65 board

* Use proper pins
2021-07-23 23:38:54 -07:00
QMK Bot
b7fe93c4b8 Merge remote-tracking branch 'origin/master' into develop 2021-07-24 03:45:59 +00:00
Nick Brassel
489c0f969d Disables rgblight twinkle by default. (#13677)
This takes up about 700 bytes of space, and needs to be swapped to
opt-in, rather than opt-out. Build failures in general on AVR due to the
scarcity of available flash. People can re-enable it by adding to their
keymap's config.h files:

```
  #define RGBLIGHT_EFFECT_TWINKLE
```
2021-07-24 13:40:00 +10:00
Drashna Jaelre
83a0d85f2b [Keyboard] Fix split matrix for sekigon grs 70ec (#13672) 2021-07-23 18:06:06 -07:00
Drashna Jaelre
e35672169e [Keyboard] Fix matrix delay on Drop boards (#13671) 2021-07-23 23:36:39 +01:00
Drashna Jaelre
8f1ebdb718 [Keyboard] Disable console by default on all Keebio boards (#13649) 2021-07-23 14:57:24 -07:00
Erovia
fdcea06336 CLI/Docs: Fix the format commands' name (#13668)
PR #13296 changed the name of the `cformat` and `pyformat` commands to
`format-c` and `format-py` respectively. This PR updates the documentation
and some parts of the CLI to use the new names.
Also add documentation for the new `format-text` subcommand, introduced
in the same PR.
2021-07-23 21:41:33 +01:00
Drashna Jaelre
164a74a078 [Keyboard] Enable LTO by default on BastardKB Scylla (#13664) 2021-07-23 11:28:41 -07:00
Takeshi ISHII
5b904a92c4 [Keyboard] Fix symmetric70_proto build break on develop branch (#13667)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-07-23 09:05:06 -07:00
Nick Brassel
6747890562 [Keyboard] Remove broken, unmaintained converter/ibm_5291 (#13658) 2021-07-23 08:17:15 -07:00
QMK Bot
8ea31698c9 Merge remote-tracking branch 'origin/master' into develop 2021-07-23 15:11:42 +00:00
Zach White
fa32c66e9d [Keyboard] Fix dc01/left so that it doesn't throw a warning (#13653) 2021-07-23 08:06:12 -07:00
QMK Bot
4ff4c05719 Merge remote-tracking branch 'origin/master' into develop 2021-07-23 04:45:49 +00:00
Drashna Jaelre
816accda3d Fix errors with matrix_output_unselect_delay function calls (#13645) 2021-07-22 21:42:59 -07:00
QMK Bot
750f40566a Merge remote-tracking branch 'origin/master' into develop 2021-07-23 04:24:47 +00:00
Drashna Jaelre
21e0a9780d [Keyboard] Fix matrix issues with Promethium (#13648) 2021-07-22 21:02:50 -07:00
Drashna Jaelre
bf57c552c9 [Keyboard] Fix Matrix Row number for ggkeyboards/genisis (#13647) 2021-07-22 21:02:16 -07:00
Drashna Jaelre
7f8bc83b30 [Keyboard] Fix default keymap for 0xCB 1337 keyboard (#13646) 2021-07-22 20:59:55 -07:00
Zach White
677222301e [Keyboard] Remove the vision_division keyboard (#13571) 2021-07-22 19:19:47 -07:00
QMK Bot
94065ca64a Merge remote-tracking branch 'origin/master' into develop 2021-07-23 01:51:40 +00:00
QMK Bot
e1eb307d74 Merge remote-tracking branch 'origin/master' into develop 2021-07-23 01:48:06 +00:00
Albert Y
b057c93caa Include lib8tion.c into RGB/LED matrix build list (#12699)
Co-authored-by: filterpaper <filterpaper@localhost>
2021-07-22 18:37:22 -07:00
QMK Bot
490fa5a9e3 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 22:01:53 +00:00
QMK Bot
34a9acd090 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 16:39:42 +00:00
Dasky
f33532764f [Keyboard][Bug] Add timer_avr to includes for broken builds (#13641) 2021-07-22 09:39:27 -07:00
QMK Bot
3316ac3f42 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 16:36:05 +00:00
QMK Bot
62099dc120 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 08:11:39 +00:00
Xelus22
6e9f667672 [Bug] Develop - DC01 left (#13597) 2021-07-22 01:06:03 -07:00
QMK Bot
78fb223da7 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 07:53:44 +00:00
QMK Bot
44ea6d0442 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 07:18:21 +00:00
Donald Kjer
13a514923a [Keyboard] Add Durgod Taurus K310 keyboard (#12314)
Co-authored-by: Tyler Tidman <tyler.tidman@draak.ca>
Co-authored-by: Simon Arlott <sa.me.uk>
2021-07-22 00:09:00 -07:00
QMK Bot
931bf52b74 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 06:58:28 +00:00
QMK Bot
b5a1db9c05 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 06:48:20 +00:00
Patrick Stadler
fb9a254a43 Retain brightness with lighting layers (#13025)
Add guard `RGBLIGHT_LAYERS_RETAIN_VAL` to retain the currently used val
when applying lighting layers.
2021-07-21 23:46:12 -07:00
QMK Bot
85128302c8 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 06:40:51 +00:00
QMK Bot
a2d94371c6 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 06:40:15 +00:00
QMK Bot
0753cbc77f Merge remote-tracking branch 'origin/master' into develop 2021-07-22 06:31:35 +00:00
QMK Bot
5c42446508 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 06:22:35 +00:00
QMK Bot
203c4fdf58 Merge remote-tracking branch 'origin/master' into develop 2021-07-22 05:57:21 +00:00
QMK Bot
71560853ce Merge remote-tracking branch 'origin/master' into develop 2021-07-22 05:46:45 +00:00
QMK Bot
b28c5e6acb Merge remote-tracking branch 'origin/master' into develop 2021-07-22 05:40:08 +00:00
QMK Bot
874a3df950 Merge remote-tracking branch 'origin/master' into develop 2021-07-21 18:30:35 +00:00
QMK Bot
201b4dc7ab Merge remote-tracking branch 'origin/master' into develop 2021-07-21 18:26:05 +00:00
Ryan
78265ea742 Fix MATRIX_COLS for aeboards/constellation/rev2 (#13633) 2021-07-21 19:26:00 +01:00
QMK Bot
d2cdb0b1d3 Merge remote-tracking branch 'origin/master' into develop 2021-07-21 17:14:33 +00:00
QMK Bot
df37ce4ea2 Merge remote-tracking branch 'origin/master' into develop 2021-07-21 15:36:02 +00:00
QMK Bot
531886b984 Merge remote-tracking branch 'origin/master' into develop 2021-07-21 05:28:30 +00:00
QMK Bot
793fabc449 Merge remote-tracking branch 'origin/master' into develop 2021-07-21 05:05:45 +00:00
QMK Bot
598fa867d1 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 20:10:21 +00:00
AlisGraveNil
c98e25887c [Keyboard] GameBuddy v1.M (#12637)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-07-20 13:10:15 -07:00
QMK Bot
200f1e8e6a Merge remote-tracking branch 'origin/master' into develop 2021-07-20 20:08:44 +00:00
Zach White
4ab8734d6e Move all our CLI file formatters to the format dir (#13296)
* move all our file formatters to the format dir

* Apply suggestions from code review

Co-authored-by: Erovia <Erovia@users.noreply.github.com>

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-07-20 11:52:14 -07:00
QMK Bot
c4db9f7fb2 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 17:48:49 +00:00
QMK Bot
32a44b6a2c Merge remote-tracking branch 'origin/master' into develop 2021-07-20 17:47:04 +00:00
QMK Bot
362bbe53c7 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 17:44:20 +00:00
QMK Bot
11334ef6af Merge remote-tracking branch 'origin/master' into develop 2021-07-20 17:25:14 +00:00
QMK Bot
14a839e39c Merge remote-tracking branch 'origin/master' into develop 2021-07-20 17:12:47 +00:00
QMK Bot
638fda5946 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 16:59:21 +00:00
Jsully
4188d2272c [Keyboard] Add Durgod Hades, Galaxy and Venus Keyboards (#12893)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Don Kjer <don.kjer@gmail.com>
2021-07-20 09:44:22 -07:00
QMK Bot
6fa53023cb Merge remote-tracking branch 'origin/master' into develop 2021-07-20 16:41:40 +00:00
QMK Bot
154c7bc3e2 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 16:35:24 +00:00
QMK Bot
02f8bbee45 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 16:34:49 +00:00
QMK Bot
dbaba42175 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 16:19:56 +00:00
QMK Bot
8925199ae8 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 16:17:22 +00:00
fauxpark
2e673c419a Merge remote-tracking branch 'upstream/master' into develop 2021-07-20 23:13:39 +10:00
QMK Bot
52ce2088e8 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 05:29:00 +00:00
QMK Bot
8109363148 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 05:27:43 +00:00
QMK Bot
36e2666cba Merge remote-tracking branch 'origin/master' into develop 2021-07-20 05:26:56 +00:00
QMK Bot
692e80d3c0 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 05:26:17 +00:00
QMK Bot
80c8a99204 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 05:25:11 +00:00
QMK Bot
9c5a0fb0b2 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 04:05:10 +00:00
QMK Bot
18ae1f423f Merge remote-tracking branch 'origin/master' into develop 2021-07-20 04:02:05 +00:00
QMK Bot
cf4a121700 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 03:50:18 +00:00
QMK Bot
d5907a674f Merge remote-tracking branch 'origin/master' into develop 2021-07-20 03:46:37 +00:00
Joakim Tufvegren
1414e9736d Switch Ergodox Infinity over to split_common (#13481) 2021-07-19 18:54:32 -07:00
QMK Bot
85621311db Merge remote-tracking branch 'origin/master' into develop 2021-07-20 01:49:28 +00:00
QMK Bot
6b2b42678d Merge remote-tracking branch 'origin/master' into develop 2021-07-20 01:48:31 +00:00
Gigahawk
b994921703 [Keyboard] Split GMMK Pro PCBs into separate revisions (#13570)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-07-19 17:57:19 -07:00
QMK Bot
5753226588 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 00:52:37 +00:00
QMK Bot
a480520e4e Merge remote-tracking branch 'origin/master' into develop 2021-07-20 00:32:52 +00:00
QMK Bot
f9332747e3 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 00:30:40 +00:00
QMK Bot
f493f560cc Merge remote-tracking branch 'origin/master' into develop 2021-07-20 00:27:04 +00:00
QMK Bot
85c4672981 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 00:07:14 +00:00
QMK Bot
2a3dde1d94 Merge remote-tracking branch 'origin/master' into develop 2021-07-20 00:06:21 +00:00
QMK Bot
1ece36549a Merge remote-tracking branch 'origin/master' into develop 2021-07-20 00:05:18 +00:00
Xelus22
b73a29aaea [Bug] Develop - Change uint32_t to layer_state_t (#13596)
* fix sat75

* update uint32_t to layer_state
2021-07-19 09:50:55 -07:00
QMK Bot
f792aee954 Merge remote-tracking branch 'origin/master' into develop 2021-07-18 00:41:56 +00:00
QMK Bot
1374722033 Merge remote-tracking branch 'origin/master' into develop 2021-07-17 23:26:23 +00:00
QMK Bot
2eb8349437 Merge remote-tracking branch 'origin/master' into develop 2021-07-17 23:18:15 +00:00
QMK Bot
c329b549e4 Merge remote-tracking branch 'origin/master' into develop 2021-07-17 17:16:52 +00:00
QMK Bot
4be8eec4f2 Merge remote-tracking branch 'origin/master' into develop 2021-07-17 08:43:29 +00:00
Ryan
777fffb067 Revert "Add rgblight to RGB Matrix VPATH" (#13559) 2021-07-17 13:39:52 +10:00
QMK Bot
d1295ffe9a Merge remote-tracking branch 'origin/master' into develop 2021-07-17 03:13:57 +00:00
QMK Bot
cdae9a7b19 Merge remote-tracking branch 'origin/master' into develop 2021-07-16 19:16:39 +00:00
QMK Bot
3495ffab77 Merge remote-tracking branch 'origin/master' into develop 2021-07-16 16:49:59 +00:00
QMK Bot
edefcdc94f Merge remote-tracking branch 'origin/master' into develop 2021-07-16 16:43:21 +00:00
Ryan
332a5aa7cb Move SENDSTRING_BELL code to send_string.h (#13566) 2021-07-16 09:40:20 -07:00
QMK Bot
4bef126293 Merge remote-tracking branch 'origin/master' into develop 2021-07-16 16:40:05 +00:00
QMK Bot
ff33eaea41 Merge remote-tracking branch 'origin/master' into develop 2021-07-16 16:38:29 +00:00
Johannes Choo
10d7eca5af Fix LED Hit Counter for LED/RGB Matrix (#12674) 2021-07-16 09:37:18 -07:00
QMK Bot
4066662bdf Merge remote-tracking branch 'origin/master' into develop 2021-07-16 16:09:10 +00:00
Ryan
7ed5ac4a60 Use string literals for SERIAL_NUMBER (#13403) 2021-07-16 19:43:18 +10:00
QMK Bot
f0198ad15e Merge remote-tracking branch 'origin/master' into develop 2021-07-16 03:55:56 +00:00
Nick Brassel
610788184a Merge remote-tracking branch 'upstream/master' into develop 2021-07-16 09:11:51 +10:00
Chris Cullin
70267b35c3 Dual RGB Matrix IS31FL3737 driver support to address #13442 (#13457)
* initial commit

* removed changes to write_pwm_buffer

* backward compatbility added

* fixed issue with backward compatibility

* documentation update

* removed unneccessary comment. branched from master

* updated per comments #13457

* removed blank line

* cformat on diff files
2021-07-15 22:52:05 +01:00
QMK Bot
e07401bb5a Merge remote-tracking branch 'origin/master' into develop 2021-07-15 16:55:32 +00:00
QMK Bot
b7ec43ed14 Merge remote-tracking branch 'origin/master' into develop 2021-07-15 04:24:45 +00:00
QMK Bot
f134c5e124 Merge remote-tracking branch 'origin/master' into develop 2021-07-14 20:56:59 +00:00
QMK Bot
21b3234780 Merge remote-tracking branch 'origin/master' into develop 2021-07-14 20:55:48 +00:00
Ryan
fd8628ccdc Migrate more fn_actions stuff (#13502) 2021-07-15 03:52:45 +10:00
QMK Bot
e69c325a9c Merge remote-tracking branch 'origin/master' into develop 2021-07-14 17:50:47 +00:00
Zach White
44d322623e Merge remote-tracking branch 'origin/master' into develop
Resolved Conflicts:
	keyboards/checkerboards/nop60/info.json
2021-07-14 10:30:28 -07:00
Jonas Gessner
52cfc9259b [Feature] Key Overrides (#11422) 2021-07-13 10:13:51 -07:00
XScorpion2
1ae4d52013 Keyboards/sol rev2 fix (#13533)
* Fixed a recent develop error

* minor fix cause I am tired
2021-07-13 18:45:31 +10:00
Takeshi ISHII
ac2e6e01f1 Change the prototype of matrix_output_unselect_delay() (#13045)
The prototype of matrix_output_unselect_delay() has been changed as follows.

```c
void matrix_output_unselect_delay(uint8_t line, bool key_pressed);
```

Currently, no keyboard seems to be redefining `matrix_output_unselect_delay()`, so there is no change in the system behavior.

With this change, the keyboard level code can get some optimization hints, for example, the following.

```c
 void matrix_output_unselect_delay(uint8_t line, bool key_pressed) {
     /* If none of the keys are pressed,
      *  there is no need to wait for time for the next line. */
     if (key_pressed) {
 #ifdef MATRIX_IO_DELAY
 #  if MATRIX_IO_DELAY > 0
         wait_us(MATRIX_IO_DELAY);
 #  endif
 #else
         wait_us(30);
 #endif
     }
}
```
2021-07-13 16:50:25 +09:00
QMK Bot
a62b10176e Merge remote-tracking branch 'origin/master' into develop 2021-07-12 17:15:14 +00:00
Alex Marmon
00e97aae67 [Keymap] add simple gmmk pro macos keymap with rgb (#13504) 2021-07-12 09:36:24 -07:00
QMK Bot
9d282d81ac Merge remote-tracking branch 'origin/master' into develop 2021-07-12 15:53:05 +00:00
Chris Cullin
9c74fd14bc Enable g_is31_leds PROGMEM for RGB Matrix IS31FL3737 driver (#13480) 2021-07-12 08:51:23 -07:00
Joakim Tufvegren
4706231831 Fix two out of bounds accesses from #13330. (#13525)
Two occurrences of `MATRIX_ROWS` weren't properly changed to
`ROWS_PER_HAND` in #13330, causing a crash during boot on at least my
Ergodox Infinity (including #13481).
2021-07-12 08:43:05 -07:00
QMK Bot
89980ff004 Merge remote-tracking branch 'origin/master' into develop 2021-07-12 07:24:08 +00:00
Drashna Jaelre
ccc0b23a75 Unify matrix for split common and regular matrix (#13330) 2021-07-11 14:31:35 -07:00
Zach White
0b06452d00 Matrix consistency check (#13470)
* Add a check to make sure the matrix sizes match the actual matrix size

* make flake8 happy
2021-07-11 09:43:58 -07:00
QMK Bot
fd284c43a5 Merge remote-tracking branch 'origin/master' into develop 2021-07-11 16:42:52 +00:00
QMK Bot
14ba806140 Merge remote-tracking branch 'origin/master' into develop 2021-07-11 15:50:47 +00:00
QMK Bot
ca0c57125f Merge remote-tracking branch 'origin/master' into develop 2021-07-11 15:47:49 +00:00
Zach White
adf0d70da4 first pass: matrix consistency improvements (#13471) 2021-07-11 08:41:57 -07:00
QMK Bot
5a50a28962 Merge remote-tracking branch 'origin/master' into develop 2021-07-11 07:52:16 +00:00
QMK Bot
36890181f7 Merge remote-tracking branch 'origin/master' into develop 2021-07-11 05:37:58 +00:00
QMK Bot
0bfb14409a Merge remote-tracking branch 'origin/master' into develop 2021-07-11 05:08:58 +00:00
Erovia
e05f9c4a08 CLI: Add git and venv info to doctor's output (#13405)
Most of the checks are saved from zvecr's retired 'up/status'
subcommand PR.
2021-07-10 16:04:50 +01:00
QMK Bot
789be4f114 Merge remote-tracking branch 'origin/master' into develop 2021-07-10 07:36:22 +00:00
QMK Bot
ee44df5b91 Merge remote-tracking branch 'origin/master' into develop 2021-07-10 01:33:32 +00:00
QMK Bot
9cb8f6d781 Merge remote-tracking branch 'origin/master' into develop 2021-07-09 16:11:26 +00:00
QMK Bot
5179d573aa Merge remote-tracking branch 'origin/master' into develop 2021-07-09 09:41:24 +00:00
QMK Bot
8ffdf83015 Merge remote-tracking branch 'origin/master' into develop 2021-07-08 17:59:15 +00:00
QMK Bot
ff61b870cf Merge remote-tracking branch 'origin/master' into develop 2021-07-08 08:47:41 +00:00
QMK Bot
1fd1198522 Merge remote-tracking branch 'origin/master' into develop 2021-07-08 08:46:57 +00:00
Joakim Tufvegren
e675a9fc60 Use the new ST7565 driver on Ergodox Infinity (#13165) 2021-07-07 18:05:35 +10:00
QMK Bot
90af59ea9d Merge remote-tracking branch 'origin/master' into develop 2021-07-07 01:28:42 +00:00
QMK Bot
dd0df14d89 Merge remote-tracking branch 'origin/master' into develop 2021-07-07 01:27:51 +00:00
QMK Bot
ab43bfe9c9 Merge remote-tracking branch 'origin/master' into develop 2021-07-07 01:07:10 +00:00
QMK Bot
eac5af5c23 Merge remote-tracking branch 'origin/master' into develop 2021-07-07 01:06:24 +00:00
QMK Bot
99d1475141 Merge remote-tracking branch 'origin/master' into develop 2021-07-07 01:05:02 +00:00
QMK Bot
0aa963c740 Merge remote-tracking branch 'origin/master' into develop 2021-07-06 22:20:51 +00:00
QMK Bot
2048c28f78 Merge remote-tracking branch 'origin/master' into develop 2021-07-06 21:47:54 +00:00
QMK Bot
26bb2d7063 Merge remote-tracking branch 'origin/master' into develop 2021-07-06 17:48:01 +00:00
QMK Bot
150f4ef5dc Merge remote-tracking branch 'origin/master' into develop 2021-07-06 14:56:47 +00:00
QMK Bot
fc4f03086f Merge remote-tracking branch 'origin/master' into develop 2021-07-06 05:34:38 +00:00
Thomas Weißschuh
a535d24ecf core: chibios: bootloader: use integer pointers as volatile (#13450)
This prevents gcc from incorrectly trying to validate array bounds.

```
tmk_core/common/chibios/bootloader.c: error: '__builtin_memcpy' offset [0, 21] is out of the bounds [0, 0] [-Werror=array-bounds]
  107 |     __builtin_memcpy((void *) VBAT, (const void *)sys_reset_to_loader_magic, sizeof(sys_reset_to_loader_magic));
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578#c16
Fixes #12925
2021-07-06 00:24:48 +01:00
Ryan
82137e14f2 Migrate SHIFT_ESC and RGB fn_actions to Grave Escape and RGB keycodes (#13360) 2021-07-06 09:08:08 +10:00
Ryan
50d4dfd2e6 keymap_extras: Remove deprecated defines (#12949) 2021-07-06 09:05:11 +10:00
QMK Bot
ca1b114297 Merge remote-tracking branch 'origin/master' into develop 2021-07-05 17:15:57 +00:00
fauxpark
0386aea09f Merge remote-tracking branch 'upstream/master' into develop 2021-07-05 21:57:13 +10:00
QMK Bot
bcf09d9f68 Merge remote-tracking branch 'origin/master' into develop 2021-07-05 10:08:07 +00:00
QMK Bot
da7cba40a3 Merge remote-tracking branch 'origin/master' into develop 2021-07-05 04:12:23 +00:00
QMK Bot
83c8e750de Merge remote-tracking branch 'origin/master' into develop 2021-07-05 00:34:58 +00:00
Jameson Thatcher
550d9253b0 Allow invert of SPLIT_HAND_PIN logic (#13433)
* added support for inverting the hand pin for split keyboards

* Added docs about SPLIT_HAND_LOW_IS_LEFT

* Update docs/feature_split_keyboard.md

bring #define for split hand pin low for left half name in line with grid pin define

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

* Update quantum/split_common/split_util.c

update split hand pin low is left name to match split hand grid define

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

Co-authored-by: Joel Challis <git@zvecr.com>
2021-07-05 09:06:40 +10:00
QMK Bot
40c5f97871 Merge remote-tracking branch 'origin/master' into develop 2021-07-04 22:41:06 +00:00
QMK Bot
08e4808bf5 Merge remote-tracking branch 'origin/master' into develop 2021-07-04 15:35:18 +00:00
QMK Bot
6e00b5aaed Merge remote-tracking branch 'origin/master' into develop 2021-07-04 03:24:49 +00:00
QMK Bot
99ce5446ad Merge remote-tracking branch 'origin/master' into develop 2021-07-04 03:14:17 +00:00
QMK Bot
c022821c76 Merge remote-tracking branch 'origin/master' into develop 2021-07-04 02:55:03 +00:00
QMK Bot
ef7862280d Merge remote-tracking branch 'origin/master' into develop 2021-07-04 01:06:32 +00:00
QMK Bot
def12e2287 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 23:49:24 +00:00
QMK Bot
b635ca4976 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 16:45:04 +00:00
QMK Bot
55837093d5 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 16:09:35 +00:00
QMK Bot
6b59220097 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 16:05:07 +00:00
QMK Bot
a39c445c26 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 15:18:57 +00:00
QMK Bot
c82e0d64a2 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 15:14:07 +00:00
QMK Bot
19daf3da23 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 15:03:31 +00:00
Gigahawk
6ac037aa3c AW20216 use register increment for framebuffer flushes (#13430) 2021-07-03 08:01:23 -07:00
Drashna Jaelre
0b22783c64 Improve 'show_build_options' target (#13425)
* Improve 'show_build_options' target

* Align the output to maximize readibility
* Add Bootloader to listed output

* Also alighn build options

Thanks mtei!
2021-07-03 07:43:49 -07:00
QMK Bot
4459f91dc2 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 08:37:05 +00:00
QMK Bot
4f0a7e4364 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 08:16:45 +00:00
QMK Bot
8465d28d0f Merge remote-tracking branch 'origin/master' into develop 2021-07-03 08:07:02 +00:00
QMK Bot
b45b9ed536 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 08:01:00 +00:00
QMK Bot
4ba56d7219 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 07:59:58 +00:00
QMK Bot
15bcae710e Merge remote-tracking branch 'origin/master' into develop 2021-07-03 07:58:41 +00:00
QMK Bot
3824651f3b Merge remote-tracking branch 'origin/master' into develop 2021-07-03 07:57:54 +00:00
Koichi Katano
9d61043363 [Keyboard] Add Bakeneko65 V3 and revision folders (#13228) 2021-07-03 00:57:50 -07:00
SergioPoverony
ca4536e492 [Keyboard] Add Creator Pro by SergioPoverony (#13154)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-07-03 00:55:39 -07:00
QMK Bot
eea89cc636 Merge remote-tracking branch 'origin/master' into develop 2021-07-03 07:51:01 +00:00
Thomas Weißschuh
b5c361542e mousekey: expose current report to users (#13069) 2021-07-03 00:50:47 -07:00
Drashna Jaelre
3ab805fc67 Add support for NO_PIN to all matrix types (#12238)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-07-03 00:20:11 -07:00
Drashna Jaelre
8da8aabbe5 Improve layer mask handling (#13065) 2021-07-03 00:19:52 -07:00
fauxpark
03807c2c6e Merge remote-tracking branch 'upstream/master' into develop 2021-07-03 16:38:05 +10:00
team0110
7629b7f52a [Keyboard] Relocalize and Update p1800fl (#12425)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: marhalloweenvt <marhalloweenvt@gmail.com>
Co-authored-by: Drashna Jael're <drashna@live.com>
2021-07-02 21:46:28 -07:00
William Ehman
ad30218701 [Keyboard] manyboard macro (#11896)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-07-02 20:53:13 -07:00
Stefan Kerkmann
04bc74d8f5 Switch split_common to CRC subsystem (#13418) 2021-07-02 22:28:32 +01:00
QMK Bot
638373a16c Merge remote-tracking branch 'origin/master' into develop 2021-07-02 13:01:28 +00:00
QMK Bot
abe8b080bf Merge remote-tracking branch 'origin/master' into develop 2021-07-02 06:21:57 +00:00
QMK Bot
371d3bfbdd Merge remote-tracking branch 'origin/master' into develop 2021-07-02 06:09:01 +00:00
Ryan
b721e054a2 Add rgblight to RGB Matrix VPATH (#13371) 2021-07-02 16:08:45 +10:00
QMK Bot
348750294b Merge remote-tracking branch 'origin/master' into develop 2021-07-02 00:46:10 +00:00
Stefan Kerkmann
117bff17ba [Core] Unite half-duplex and full-duplex serial drivers (#13081)
* Unite half-duplex and full-duplex serial driver.

* Add full duplex operation mode to the interrupt based driver
* Delete DMA UART based full duplex driver
* The new driver targets #11930

* Fix freezes with failing transactions in half-duplex

* Increase default serial TX/RX buffer size to 128 bytes

* Correctly use bool instead of size_t

Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-07-02 08:24:08 +10:00
QMK Bot
47b12470e7 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 19:39:55 +00:00
QMK Bot
8f018c2863 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 19:17:58 +00:00
QMK Bot
0b7936c4e8 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 17:12:52 +00:00
Drashna Jaelre
0bde920817 Convert Dip Switch callbacks to boolean functions (#13399) 2021-07-01 08:22:21 -07:00
QMK Bot
8f78be076d Merge remote-tracking branch 'origin/master' into develop 2021-07-01 10:48:20 +00:00
QMK Bot
b6348ffffd Merge remote-tracking branch 'origin/master' into develop 2021-07-01 09:23:16 +00:00
QMK Bot
2bf8671293 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 09:22:38 +00:00
QMK Bot
b22fc58f25 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 09:21:48 +00:00
QMK Bot
5ca893bd55 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 08:24:38 +00:00
QMK Bot
70b1d7e459 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 08:23:37 +00:00
QMK Bot
dddefa2fd7 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 08:22:19 +00:00
QMK Bot
7fdb95af36 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 08:08:12 +00:00
QMK Bot
af13b7bf05 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 08:06:43 +00:00
QMK Bot
896f11b2bd Merge remote-tracking branch 'origin/master' into develop 2021-07-01 07:54:37 +00:00
QMK Bot
425c0dad01 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 07:45:16 +00:00
QMK Bot
29228e5b78 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 07:42:50 +00:00
Drashna Jaelre
b7cf9a888a Drashna's split updates (#13350)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-07-01 00:42:32 -07:00
QMK Bot
bbe45185e3 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 07:30:05 +00:00
QMK Bot
2b7172cbff Merge remote-tracking branch 'origin/master' into develop 2021-07-01 07:13:28 +00:00
QMK Bot
8b2e5d622c Merge remote-tracking branch 'origin/master' into develop 2021-07-01 06:42:24 +00:00
Ryan
44260c3414 Remove API_SYSEX_ENABLEs from rules.mk (#13389) 2021-06-30 23:30:42 -07:00
QMK Bot
70cc5809f9 Merge remote-tracking branch 'origin/master' into develop 2021-07-01 05:05:13 +00:00
Nick Brassel
8bb231aa1c Adds support for STM32L412xB, STM32L422xB. (#13383)
* Adds support for STM32L412xB, STM32L422xB.

* Add to list of supported MCUs.

* Disable SPI1 by default.
2021-06-30 10:07:40 +10:00
QMK Bot
8596504361 Merge remote-tracking branch 'origin/master' into develop 2021-06-29 23:31:17 +00:00
Michael Stapelberg
f533d9e033 add kinT kinesis keyboard controller (kint41 variant) (#13333)
fixes https://github.com/kinx-project/kint/issues/5
2021-06-30 08:54:45 +10:00
QMK Bot
76ed98c51d Merge remote-tracking branch 'origin/master' into develop 2021-06-29 22:37:42 +00:00
Ryan
653082235a Relocate RGB/HSV color defs to a more fitting place (#13377) 2021-06-29 19:15:58 +01:00
QMK Bot
1e2378fe7f Merge remote-tracking branch 'origin/master' into develop 2021-06-29 17:19:42 +00:00
QMK Bot
888cec0290 Merge remote-tracking branch 'origin/master' into develop 2021-06-29 03:39:53 +00:00
QMK Bot
8b919aa5d6 Merge remote-tracking branch 'origin/master' into develop 2021-06-29 03:31:16 +00:00
QMK Bot
3f813f87cd Merge remote-tracking branch 'origin/master' into develop 2021-06-29 03:25:00 +00:00
QMK Bot
8080bc17d0 Merge remote-tracking branch 'origin/master' into develop 2021-06-29 01:55:05 +00:00
QMK Bot
2665b4e487 Merge remote-tracking branch 'origin/master' into develop 2021-06-28 17:32:05 +00:00
Ryan
cb23fe9fc1 Move RGBLight code into its own folder (#13312) 2021-06-28 15:15:24 +10:00
QMK Bot
5a5015594f Merge remote-tracking branch 'origin/master' into develop 2021-06-27 03:22:31 +00:00
Joakim Tufvegren
ed56fc7da1 Fix building layouts from JSON (#13310)
Broken by #12632.
2021-06-27 12:52:38 +10:00
QMK Bot
023b85db96 Merge remote-tracking branch 'origin/master' into develop 2021-06-26 19:08:13 +00:00
Ryan
bbe43a91eb CLI: Add subcommand to generate version.h (#13151) 2021-06-27 02:29:02 +10:00
Zach White
546f5f2c4f Error log cleanup (#13349)
* error log cleanup: 40percentclub/25

40percentclub/25: Claims to support a community layout that does not exist: ortho_5x5

* error log cleanup: 40percentclub/4x4

☒ 40percentclub/4x4: Claims to support a community layout that does not exist: ortho_4x8
☒ 40percentclub/4x4: Claims to support a community layout that does not exist: ortho_4x16

* error log cleanup: 40percentclub/5x5

☒ 40percentclub/5x5: Claims to support a community layout that does not exist: ortho_5x5

* error log cleanup: 40percentclub/nori

☒ 40percentclub/nori: Claims to support a community layout that does not exist: ortho_4x8

* error log cleanup: barracuda

☒ barracuda: Claims to support a community layout that does not exist: ortho_3x11

* error log cleanup: bpiphany/frosty_flake

☒ keyboards/bpiphany/frosty_flake/frosty_flake.h: LAYOUT_tkl_ansi: Nested layout macro detected. Matrix data not available!

* error log cleanup: bpiphany/pegasushoof/2013

☒ keyboards/bpiphany/pegasushoof/2013/2013.h: LAYOUT_tkl_ansi: Nested layout macro detected. Matrix data not available!

* error cleanup: bpiphany/pegasushoof/2015

☒ keyboards/bpiphany/pegasushoof/2015/2015.h: LAYOUT_tkl_ansi: Nested layout macro detected. Matrix data not available!
☒ keyboards/bpiphany/pegasushoof/2015/2015.h: LAYOUT_tkl_iso: Nested layout macro detected. Matrix data not available!

* error log cleanup: 40percentclub

☒ 40percentclub/25: Claims to support a community layout that does not exist: ortho_5x10
☒ 40percentclub/5x5: Claims to support a community layout that does not exist: ortho_5x10

* error cleanup: converter/usb_usb

☒ keyboards/converter/usb_usb/usb_usb.h: LAYOUT_ansi: Nested layout macro detected. Matrix data not available!
☒ keyboards/converter/usb_usb/usb_usb.h: LAYOUT_iso: Nested layout macro detected. Matrix data not available!
☒ keyboards/converter/usb_usb/usb_usb.h: LAYOUT_jis: Nested layout macro detected. Matrix data not available!
☒ keyboards/converter/usb_usb/usb_usb.h: LAYOUT_ansi: Nested layout macro detected. Matrix data not available!
☒ keyboards/converter/usb_usb/usb_usb.h: LAYOUT_iso: Nested layout macro detected. Matrix data not available!
☒ keyboards/converter/usb_usb/usb_usb.h: LAYOUT_jis: Nested layout macro detected. Matrix data not available!
☒ keyboards/converter/usb_usb/usb_usb.h: LAYOUT_ansi: Nested layout macro detected. Matrix data not available!
☒ keyboards/converter/usb_usb/usb_usb.h: LAYOUT_iso: Nested layout macro detected. Matrix data not available!
☒ keyboards/converter/usb_usb/usb_usb.h: LAYOUT_jis: Nested layout macro detected. Matrix data not available!

* error cleanup: ergo42

☒ ergo42/rev1: Claims to support a community layout that does not exist: ortho_4x14

* error cleanup: handwired/412_64

☒ handwired/412_64: Claims to support a community layout that does not exist: ortho_4x16

* error log cleanup: handwired/tritium_numpad
☒ handwired/tritium_numpad: Claims to support a community layout that does not exist: nontra_6x4

* error log cleanup: handwired/xealous/rev1
☒ handwired/xealous/rev1: Claims to support a community layout that does not exist: split60

* error log cleanup: kbdfans/kbd67/rev2

⚠ kbdfans/kbd67/rev2: info.json uses alias name LAYOUT_65_ansi_blocker_splitbs instead of LAYOUT_65_ansi_blocker_split_bs

* error cleanup: keebio/nyquist

☒ keyboards/keebio/nyquist/nyquist.h: LAYOUT_ortho_4x12: Nested layout macro detected. Matrix data not available!
☒ keyboards/keebio/nyquist/nyquist.h: LAYOUT_ortho_4x12: Nested layout macro detected. Matrix data not available!
☒ keyboards/keebio/nyquist/nyquist.h: LAYOUT_ortho_4x12: Nested layout macro detected. Matrix data not available!

* error cleanup: kindakeyboards/conone65

☒ kindakeyboards/conone65: Claims to support a community layout that does not exist: 65_iso_split_bs

* error cleanup: latinpadble

☒ latinpadble: Claims to support a community layout that does not exist: pad

* error cleanup: masterworks/classy_tkl/rev_a

☒ masterworks/classy_tkl/rev_a: Claims to support a community layout that does not exist: tkl_ansi_wkl

* error cleanup: meira

⚠ meira/featherble: info.json uses alias name LAYOUT_ortho_4x12 instead of LAYOUT
⚠ meira/promicro: info.json uses alias name LAYOUT_ortho_4x12 instead of LAYOUT

* error cleanup: nopunin10did/jabberwocky

⚠ nopunin10did/jabberwocky: MANUFACTURER in config.h is overwriting manufacturer in info.json

* error cleanup: ok60

☒ ok60: Claims to support a community layout that does not exist: 60_ansi_split_bksp_rshift

* error cleanup: ok60

☒ ok60: Claims to support a community layout that does not exist: 60_ansi_split_bksp_rshift

* error cleanup: planck

☒ keyboards/planck/ez/ez.h: LAYOUT_ortho_4x12: Nested layout macro detected. Matrix data not available!
☒ keyboards/planck/ez/ez.h: LAYOUT_ortho_4x12: Nested layout macro detected. Matrix data not available!
⚠ planck/thk: DEBOUNCE in config.h is overwriting debounce in info.json
⚠ planck/thk: DEVICE_VER in config.h is overwriting usb.device_ver in info.json
⚠ planck/thk: DIODE_DIRECTION in config.h is overwriting diode_direction in info.json
⚠ planck/thk: MANUFACTURER in config.h is overwriting manufacturer in info.json
⚠ planck/thk: PRODUCT_ID in config.h is overwriting usb.pid in info.json
⚠ planck/thk: VENDOR_ID in config.h is overwriting usb.vid in info.json
⚠ planck/thk: QMK_ESC_OUTPUT in config.h is overwriting qmk_lufa_bootloader.esc_output in info.json
⚠ planck/thk: QMK_ESC_INPUT in config.h is overwriting qmk_lufa_bootloader.esc_input in info.json
⚠ planck/thk: QMK_LED in config.h is overwriting qmk_lufa_bootloader.led in info.json
⚠ planck/thk: QMK_SPEAKER in config.h is overwriting qmk_lufa_bootloader.speaker in info.json
⚠ planck/thk: Matrix pins are specified in both info.json and config.h, the config.h values win.
⚠ planck/thk: LAYOUTS in rules.mk is overwriting community_layouts in info.json
⚠ planck/thk: Feature mousekey is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature extrakey is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature console is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature command is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature sleep_led is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature nkro is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature backlight is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature rgblight is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature bluetooth is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature audio is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature encoder is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature dip_switch is specified in both info.json and rules.mk, the rules.mk value wins.
⚠ planck/thk: Feature bootmagic_lite is specified in both info.json and rules.mk, the rules.mk value wins.

* error cleanup: primekb/prime_m

☒ primekb/prime_m: Claims to support a community layout that does not exist: ortho_5x6

* error cleanup: rgbkb/sol/rev2

⚠ rgbkb/sol/rev2: RGBLED_NUM->rgblight.led_count: invalid literal for int() with base 10: '(BACKLIGHT_LEDS + FULLHAND_LEDS)'

* error log cleanup: shk9

☒ shk9: Claims to support a community layout that does not exist: ortho_3x3

* error log cleanup: sowbug

⚠ sowbug/68keys: RGBLED_NUM->rgblight.led_count: invalid literal for int() with base 10: 'DRIVER_LED_TOTAL'
⚠ sowbug/ansi_tkl: RGBLED_NUM->rgblight.led_count: invalid literal for int() with base 10: '(DRIVER_LED_TOTAL)'

* error log cleanup: torn

☒ torn: Claims to support a community layout that does not exist: split_3x6_4

* error cleanup: ymdk/np24/u4rgb6

☒ ymdk/np24/u4rgb6: Claims to support a community layout that does not exist: ortho_4x6

* error cleanup: masterworks/classy_tkl/rev_a

☒ masterworks/classy_tkl/rev_a: Claims to support a community layout that does not exist: tkl_iso_wkl
2021-06-26 08:38:14 -07:00
QMK Bot
5489c47a27 Merge remote-tracking branch 'origin/master' into develop 2021-06-26 10:49:16 +00:00
QMK Bot
298b383126 Merge remote-tracking branch 'origin/master' into develop 2021-06-26 05:48:19 +00:00
Dasky
cd30861394 Fix CRC for AVR and enable again. (#13253) 2021-06-25 22:26:19 -07:00
XScorpion2
8b059088ba Keyboards/RGBKB/Mün (#13239) 2021-06-25 22:00:21 -07:00
QMK Bot
f8c01a8e5a Merge remote-tracking branch 'origin/master' into develop 2021-06-26 04:42:38 +00:00
QMK Bot
580999661f Merge remote-tracking branch 'origin/master' into develop 2021-06-26 04:28:08 +00:00
QMK Bot
363c11622e Merge remote-tracking branch 'origin/master' into develop 2021-06-26 04:13:03 +00:00
QMK Bot
c19a221719 Merge remote-tracking branch 'origin/master' into develop 2021-06-26 04:07:05 +00:00
QMK Bot
e64705d2f4 Merge remote-tracking branch 'origin/master' into develop 2021-06-26 03:58:15 +00:00
QMK Bot
d6592d8988 Merge remote-tracking branch 'origin/master' into develop 2021-06-26 03:57:18 +00:00
QMK Bot
259b8d355e Merge remote-tracking branch 'origin/master' into develop 2021-06-26 03:31:19 +00:00
QMK Bot
5adb288bb3 Merge remote-tracking branch 'origin/master' into develop 2021-06-26 03:25:18 +00:00
QMK Bot
5ba9f43590 Merge remote-tracking branch 'origin/master' into develop 2021-06-26 01:53:46 +00:00
QMK Bot
9337aab038 Merge remote-tracking branch 'origin/master' into develop 2021-06-26 01:39:01 +00:00
QMK Bot
0ef0c03a46 Merge remote-tracking branch 'origin/master' into develop 2021-06-25 03:52:10 +00:00
Zach White
b908275354 Optimize our jsonschema by using refs (#13271)
* fix some broken info.json files

* optimize our jsonschema using refs

* fix formatting after vscode broke it

* make flake8 happy

* cleanup

* make our schema validation more compact and flexible
2021-06-24 20:48:53 -07:00
QMK Bot
9d4412cb8b Merge remote-tracking branch 'origin/master' into develop 2021-06-25 03:32:21 +00:00
QMK Bot
0412c92b68 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 23:15:36 +00:00
QMK Bot
e8d1c0e300 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 14:59:59 +00:00
QMK Bot
ae5755d27a Merge remote-tracking branch 'origin/master' into develop 2021-06-24 12:55:22 +00:00
QMK Bot
3d7e062baa Merge remote-tracking branch 'origin/master' into develop 2021-06-24 12:54:22 +00:00
QMK Bot
6418c1fde9 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 04:34:20 +00:00
QMK Bot
8d87bfd46a Merge remote-tracking branch 'origin/master' into develop 2021-06-24 03:36:07 +00:00
QMK Bot
9b65154e58 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:55:14 +00:00
Michael Stapelberg
143ded332d kint36: set correct EEPROM size (#12946)
The Teensy 3.6 comes with 4096 bytes of EEPROM.

This is commit 1 of 2 to make the EEPROM work.
The next commit changes the core code to wire up the EEPROM.
2021-06-24 12:54:18 +10:00
QMK Bot
c6d5049fb1 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:54:06 +00:00
QMK Bot
08b62c5f5a Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:51:44 +00:00
QMK Bot
a7b54d288f Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:49:19 +00:00
QMK Bot
635f32b219 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:46:37 +00:00
QMK Bot
b351338558 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:33:18 +00:00
QMK Bot
8024f2683b Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:28:59 +00:00
QMK Bot
ba3c5ec84e Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:27:43 +00:00
QMK Bot
53ca79b922 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:27:20 +00:00
QMK Bot
7313fee181 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:26:58 +00:00
QMK Bot
054f1ccbdf Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:25:25 +00:00
QMK Bot
54abf60e04 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:24:38 +00:00
QMK Bot
303132fa8d Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:24:08 +00:00
QMK Bot
7e7e6d1a02 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:23:10 +00:00
QMK Bot
b69fa51ec3 Merge remote-tracking branch 'origin/master' into develop 2021-06-24 02:22:11 +00:00
Gigahawk
1ea01765e1 Allow settable SPI divisor for AW20216 driver, set default to 4 (#13309) 2021-06-23 19:57:46 +10:00
QMK Bot
531f34d2a0 Merge remote-tracking branch 'origin/master' into develop 2021-06-23 09:52:39 +00:00
QMK Bot
38d979189b Merge remote-tracking branch 'origin/master' into develop 2021-06-23 09:45:48 +00:00
QMK Bot
c742d0bde4 Merge remote-tracking branch 'origin/master' into develop 2021-06-23 03:31:18 +00:00
Ryan
4319aca91c Fix linker error when rgblight and RGB Matrix are both enabled (#13304) 2021-06-23 10:53:00 +10:00
QMK Bot
973a006c45 Merge remote-tracking branch 'origin/master' into develop 2021-06-23 00:45:47 +00:00
Ryan
791363a680 Remove rgblight stubs (#13302) 2021-06-23 10:16:41 +10:00
QMK Bot
540d95125c Merge remote-tracking branch 'origin/master' into develop 2021-06-22 23:34:48 +00:00
QMK Bot
010715877f Merge remote-tracking branch 'origin/master' into develop 2021-06-22 23:33:12 +00:00
Zach White
df794fa5cc Remove the redundant pin name validation (#13251)
* remove the redundant pin name validation

* fix submodules
2021-06-22 12:02:12 -07:00
Zach White
e87d231645 Refactor doctor.py into a directory (#13298) 2021-06-22 19:50:53 +01:00
Ryan
d61e5c0027 Move LED/RGB Matrix code into their own directories (#13257) 2021-06-22 18:26:23 +10:00
QMK Bot
c03cb4edd7 Merge remote-tracking branch 'origin/master' into develop 2021-06-22 02:42:29 +00:00
Purdea Andrei
dd16d3cc7e eeprom_i2c driver: added EXTERNAL_EEPROM_WP_PIN configuration option. (#12617) 2021-06-21 19:34:28 -07:00
Nick Brassel
0e3ae2cde0 Skip EEPROM writes once done. (#13293) 2021-06-22 09:37:28 +10:00
QMK Bot
a89eaceb59 Merge remote-tracking branch 'origin/master' into develop 2021-06-21 22:09:45 +00:00
QMK Bot
40e80455c9 Merge remote-tracking branch 'origin/master' into develop 2021-06-21 20:48:18 +00:00
QMK Bot
96ea3c1a03 Merge remote-tracking branch 'origin/master' into develop 2021-06-21 20:33:28 +00:00
QMK Bot
e28d7ab58c Merge remote-tracking branch 'origin/master' into develop 2021-06-21 20:00:32 +00:00
Drashna Jaelre
6901411bca Move optical sensor code to drivers folder (#13044) 2021-06-21 21:00:11 +01:00
QMK Bot
b491c7994a Merge remote-tracking branch 'origin/master' into develop 2021-06-21 16:25:33 +00:00
QMK Bot
26357ddca8 Merge remote-tracking branch 'origin/master' into develop 2021-06-21 16:23:38 +00:00
QMK Bot
c6fb96fb9f Merge remote-tracking branch 'origin/master' into develop 2021-06-21 16:04:56 +00:00
fauxpark
eaba4d327f Merge remote-tracking branch 'upstream/master' into develop 2021-06-21 21:17:26 +10:00
Ryan
e4a2cfd853 Remove dfu-util arguments from mcu_selection (#13150) 2021-06-21 19:56:55 +10:00
QMK Bot
8d30209260 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 18:37:17 +00:00
QMK Bot
40bf61118e Merge remote-tracking branch 'origin/master' into develop 2021-06-20 16:38:52 +00:00
QMK Bot
c234341cf6 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 15:30:49 +00:00
QMK Bot
291455098f Merge remote-tracking branch 'origin/master' into develop 2021-06-20 13:30:43 +00:00
QMK Bot
8f36af8409 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 08:01:01 +00:00
QMK Bot
25f1c242f8 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 07:50:19 +00:00
QMK Bot
f80ee5639e Merge remote-tracking branch 'origin/master' into develop 2021-06-20 07:37:50 +00:00
QMK Bot
085db5ec8d Merge remote-tracking branch 'origin/master' into develop 2021-06-20 07:17:15 +00:00
QMK Bot
8f1eccc59b Merge remote-tracking branch 'origin/master' into develop 2021-06-20 07:15:10 +00:00
QMK Bot
2cb4301656 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 07:14:00 +00:00
QMK Bot
f106f77692 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 03:09:08 +00:00
Roland Huber
e4c5b1bbbb Add Per Key exclusions for Haptic Feedback (#12386)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-06-19 19:28:54 -07:00
QMK Bot
f6ac5abd95 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 02:21:53 +00:00
QMK Bot
18f6ded5fa Merge remote-tracking branch 'origin/master' into develop 2021-06-20 02:21:20 +00:00
QMK Bot
67af692c97 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 02:19:07 +00:00
Joakim Tufvegren
8d9f527081 Add sync_timer support over serial_link (i.e. Ergodox Infinity) (#12845) 2021-06-19 19:18:00 -07:00
QMK Bot
fc749b40e6 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 02:14:49 +00:00
QMK Bot
76e856d052 Merge remote-tracking branch 'origin/master' into develop 2021-06-20 02:13:09 +00:00
fauxpark
e3030bff5e Merge remote-tracking branch 'upstream/master' into develop 2021-06-20 12:10:59 +10:00
XScorpion2
5b7cf9fdc8 RGB Matrix eeprom write limiting (#13238) 2021-06-19 19:03:06 -07:00
Joel Challis
3c790123ce Temporary disable of CRC (#13252) 2021-06-20 09:31:18 +10:00
Donald Kjer
1272ecd73c Fixing incorrect keymap build when switching between multiple keymap.jsons (#12632) 2021-06-19 15:30:23 -07:00
Michael Stapelberg
7c5ef4060e allow LINE_PINxx for Teensy 4.x pins (#13247)
fixes https://github.com/qmk/qmk_firmware/issues/13052
2021-06-19 15:21:56 -07:00
Jean-Sebastien Paquet
8dc036c2e4 Upgrades Vagrant box to Debian 10 to fix Docker build error on Debian 9. (#13236) 2021-06-19 13:52:34 +01:00
Ryan
37fba09021 ST7565 invert (#13237) 2021-06-19 18:51:35 +10:00
Ignaz Kevenaar
0311c8036d Add oled_invert (#13172)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-06-19 01:08:22 +10:00
Nick Brassel
172e6a7030 Extensible split data sync (#11930)
* Extensible split data sync capability through transactions.

- Split common transport has been split up between the transport layer
  and data layer.
- Split "transactions" model used, with convergence between I2C and
  serial data definitions.
- Slave matrix "generation count" is used to determine if the full slave
  matrix needs to be retrieved.
- Encoders get the same "generation count" treatment.
- All other blocks of data are synchronised when a change is detected.
- All transmissions have a globally-configurable deadline before a
  transmission is forced (`FORCED_SYNC_THROTTLE_MS`, default 100ms).
- Added atomicity for all core-synced data, preventing partial updates
- Added retries to AVR i2c_master's i2c_start, to minimise the number of
  failed transactions when interrupts are disabled on the slave due to
  atomicity checks.
- Some keyboards have had slight modifications made in order to ensure
  that they still build due to firmware size restrictions.

* Fixup LED_MATRIX compile.

* Parameterise ERROR_DISCONNECT_COUNT.
2021-06-18 09:10:06 +10:00
Stefan Kerkmann
ef92c9ee2c Add CRC8 calculation subsystem to quantum (#12641)
* Intended usage is data validation in split transport code.
* Default space efficient algorithm.
* Opt-in fast table based algorithmn with #define CRC8_USE_TABLE switch.
* Define switches for size and speed optimized versions, the default is size
  optimized by using uint_least8_t as datatype for calculations.
  * #define CRC8_OPTIMIZE_SPEED uses uint_fast8_t as datatype for
    calculations, this only affects 32-bit Archs like ARM and RISC-V.
* Placeholder crc_init() function for hardware backed crc calculation,
  not implemented yet.
2021-06-18 00:09:43 +01:00
Nick Brassel
67fa2568fe ChibiOS SVN mirror script. (#13070) 2021-06-18 00:04:17 +01:00
QMK Bot
658ab47908 Merge remote-tracking branch 'origin/master' into develop 2021-06-17 17:05:15 +00:00
fauxpark
d04f7bc160 Merge remote-tracking branch 'upstream/master' into develop 2021-06-17 17:22:01 +10:00
Michael Stapelberg
9956ff4e03 core: wire up flash make target for Teensy 4.x (#13077)
related to https://github.com/kinx-project/kint/issues/5
2021-06-17 04:15:45 +10:00
Jonathan Rascher
d59f8d1c02 Fix overrun in st7565_write_raw when not at (0, 0) (#13209) 2021-06-15 22:30:27 -07:00
QMK Bot
f8d0ea9206 Merge remote-tracking branch 'origin/master' into develop 2021-06-16 05:21:59 +00:00
QMK Bot
706c8bebca Merge remote-tracking branch 'origin/master' into develop 2021-06-16 05:21:26 +00:00
QMK Bot
25004123ce Merge remote-tracking branch 'origin/master' into develop 2021-06-16 05:19:41 +00:00
QMK Bot
d150595f29 Merge remote-tracking branch 'origin/master' into develop 2021-06-16 05:15:23 +00:00
QMK Bot
a61c38c7ec Merge remote-tracking branch 'origin/master' into develop 2021-06-16 05:07:37 +00:00
QMK Bot
03f7bec6c8 Merge remote-tracking branch 'origin/master' into develop 2021-06-16 04:55:03 +00:00
Michael Stapelberg
e2c5893405 core: make RESET key work with Teensy 4.x (#13076)
related to https://github.com/kinx-project/kint/issues/5
2021-06-15 21:53:27 -07:00
QMK Bot
d37900b906 Merge remote-tracking branch 'origin/master' into develop 2021-06-16 04:28:45 +00:00
QMK Bot
06971da0be Merge remote-tracking branch 'origin/master' into develop 2021-06-16 04:20:45 +00:00
QMK Bot
2d6fe6eed4 Merge remote-tracking branch 'origin/master' into develop 2021-06-16 04:20:30 +00:00
QMK Bot
346f4548db Merge remote-tracking branch 'origin/master' into develop 2021-06-16 04:18:48 +00:00
Albert Y
ff61df103e Limit saturation for RGB_MATRIX_JELLYBEAN_RAINDROPS (#12669)
* Set saturation limit to jellybean_raindrops_anim.h

* Use faster bit-shift maths and qadd8

* Remove extra parenthesis

* Single bitmask operation is sufficient.

Co-authored-by: filterpaper <filterpaper@localhost>
2021-06-16 14:04:21 +10:00
Simon Arlott
a0959f1b33 Add asym_eager_defer_pk debounce type (#12689) 2021-06-16 14:00:37 +10:00
QMK Bot
b151153211 Merge remote-tracking branch 'origin/master' into develop 2021-06-16 03:54:19 +00:00
QMK Bot
41ba616463 Merge remote-tracking branch 'origin/master' into develop 2021-06-16 03:39:48 +00:00
QMK Bot
d82e5055dd Merge remote-tracking branch 'origin/master' into develop 2021-06-16 03:36:03 +00:00
QMK Bot
3be3cdafa2 Merge remote-tracking branch 'origin/master' into develop 2021-06-16 03:34:34 +00:00
James
f5c2f7153d [Keyboard] Moved tokyo60/ into tokyokeyboard/tokyo60/. (#12023)
* Moved tokyo60/ into tokyokeyboard/tokyo60/.

* Updated make instruction, fixed broken image link

* Fixed still broken image link.
2021-06-15 20:21:13 -07:00
QMK Bot
640f0fc7c6 Merge remote-tracking branch 'origin/master' into develop 2021-06-15 21:43:53 +00:00
QMK Bot
d7ecfa8382 Merge remote-tracking branch 'origin/master' into develop 2021-06-15 03:07:31 +00:00
QMK Bot
a2a524afbb Merge remote-tracking branch 'origin/master' into develop 2021-06-14 23:52:31 +00:00
QMK Bot
8d0a610f6e Merge remote-tracking branch 'origin/master' into develop 2021-06-14 06:32:22 +00:00
QMK Bot
6dc94019e4 Merge remote-tracking branch 'origin/master' into develop 2021-06-14 03:20:48 +00:00
Gigahawk
fda4149cc3 Fix LED mapping for GMMK Pro (#13189) 2021-06-14 12:38:20 +10:00
QMK Bot
836b8f7d64 Merge remote-tracking branch 'origin/master' into develop 2021-06-14 00:53:06 +00:00
QMK Bot
52028ceea1 Merge remote-tracking branch 'origin/master' into develop 2021-06-12 19:15:34 +00:00
QMK Bot
f8acb1ee10 Merge remote-tracking branch 'origin/master' into develop 2021-06-12 19:12:28 +00:00
QMK Bot
dc17180f84 Merge remote-tracking branch 'origin/master' into develop 2021-06-12 19:10:49 +00:00
QMK Bot
421fd75541 Merge remote-tracking branch 'origin/master' into develop 2021-06-12 19:09:03 +00:00
QMK Bot
0f226a30be Merge remote-tracking branch 'origin/master' into develop 2021-06-11 10:35:43 +00:00
QMK Bot
641141c519 Merge remote-tracking branch 'origin/master' into develop 2021-06-10 21:50:54 +00:00
Joakim Tufvegren
6fe3943ad3 Migrate keyboards using uGFX to LED_MATRIX (#9657) 2021-06-10 17:46:09 +10:00
Ryan
b2fdd48744 Add ST7565 LCD driver (#13089)
Co-authored-by: Joakim Tufvegren <jocke@barbanet.com>
2021-06-10 17:16:09 +10:00
QMK Bot
cfc7ee61c5 Merge remote-tracking branch 'origin/master' into develop 2021-06-10 06:06:03 +00:00
Drashna Jaelre
7a6e630ffd Fix RGB/LED Suspend defines (#13146) 2021-06-09 22:59:19 -07:00
Gigahawk
32b2ac0a80 GMMK Pro RGB Support (#13147)
* Enable SPI1 for GMMK pro

* Setup initial boilerplate for new LED driver

* RGB matrix minimally functional

* Map full LED matrix

* Return keymap to default

* Fix printscreen LED mapping

* Reduce max brightness

* Default values for AW20216

* Add documentation for AW20216

* Disable console and warnings

* Run cformat

* Update drivers/awinic/aw20216.h

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

* make aw struct match issi struct

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

* add led location defines

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

* Use led pin definitions in keyboard.c

* Add driver indices to led map

* Fix elif typo

* Run cformat

* Update docs

* Fix typo in docs

* Document global brightness limits

Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-06-10 11:40:25 +10:00
QMK Bot
e21a039901 Merge remote-tracking branch 'origin/master' into develop 2021-06-09 17:48:11 +00:00
Carlos Martins
ca0070d11c Updated encoder_update_user on my keymap to follow the new signature on quantum (#13152) 2021-06-10 03:32:16 +10:00
QMK Bot
a47f482d24 Merge remote-tracking branch 'origin/master' into develop 2021-06-09 09:15:29 +00:00
QMK Bot
9177e22d2c Merge remote-tracking branch 'origin/master' into develop 2021-06-09 07:25:59 +00:00
Simon Arlott
b829a1d264 Avoid 8-bit timer overflows in debounce algorithms (#12240)
* Add fast_timer_t that is 16-bit or 32-bit based on architecture

A 16-bit timer will overflow sooner but be faster to compare on AVR.

* Avoid 8-bit timer overflows in debounce algorithms

Count down remaining elapsed time instead of trying to do 8-bit timer
comparisons.

Add a "none" implementation that is automatically used if DEBOUNCE is
0 otherwise it will break the _pk/_pr count down.

* Avoid unnecessary polling of the entire matrix in sym_eager_pk

The matrix only needs to be updated when a debounce timer expires.

* Avoid unnecessary polling of the entire matrix in sym_eager_pr

The matrix only needs to be updated when a debounce timer expires.

The use of the "needed_update" variable is trying to do what
"matrix_need_update" was added to fix but didn't work because it only
applied when all keys finished debouncing.

* Fix sym_defer_g timing inconsistency compared to other debounce algorithms

DEBOUNCE=5 should process the key after 5ms, not 6ms

* Add debounce tests
2021-06-09 17:23:21 +10:00
Nick Brassel
f287597c19 Use single memcmp to determine if matrix changed. (#13064)
* Use memcmp to determine if matrix changed.

* Firmware size issues.

* Add documentation for the lack of need of MATRIX_ROW_PINS/MATRIX_COL_PINS, when overriding low-level matrix functions.
2021-06-09 17:19:42 +10:00
QMK Bot
cbfa2dba25 Merge remote-tracking branch 'origin/master' into develop 2021-06-09 07:19:28 +00:00
QMK Bot
d9add95037 Merge remote-tracking branch 'origin/master' into develop 2021-06-08 19:07:33 +00:00
Ryan
17d0fad762 spi_master Kinetis support (#13098) 2021-06-08 19:54:33 +10:00
QMK Bot
13defb0bef Merge remote-tracking branch 'origin/master' into develop 2021-06-08 09:49:23 +00:00
QMK Bot
84e691717c Merge remote-tracking branch 'origin/master' into develop 2021-06-07 23:38:33 +00:00
QMK Bot
f3fb3849a2 Merge remote-tracking branch 'origin/master' into develop 2021-06-07 23:31:29 +00:00
QMK Bot
c508da8a8e Merge remote-tracking branch 'origin/master' into develop 2021-06-07 17:43:48 +00:00
QMK Bot
9399865b0d Merge remote-tracking branch 'origin/master' into develop 2021-06-07 17:42:07 +00:00
QMK Bot
827e742bd4 Merge remote-tracking branch 'origin/master' into develop 2021-06-07 17:40:30 +00:00
QMK Bot
5e3ec2faf0 Merge remote-tracking branch 'origin/master' into develop 2021-06-07 17:39:16 +00:00
QMK Bot
2f910e1b2a Merge remote-tracking branch 'origin/master' into develop 2021-06-07 17:37:20 +00:00
QMK Bot
f922133d30 Merge remote-tracking branch 'origin/master' into develop 2021-06-07 17:35:21 +00:00
QMK Bot
5686a00a9c Merge remote-tracking branch 'origin/master' into develop 2021-06-07 10:47:09 +00:00
Takeshi ISHII
b72f10c635 Add readPort() and some API to 'tmk_core/common/*/gpio.h' (#12754)
* add readPort() and some API to 'tmk_core/common/*/gpio.h'

The following macros have been added to gpio.h.

* readPort(port)
* setPortBitInput(port, bit)
* setPortBitInputHigh(port, bit)
* setPortBitOutput(port, bit)
* writePortBitLow(port, bit)
* writePortBitHigh(port, bit)

* add data type 'port_data_t' into gpio.h

* rename qmk_pin to pin
2021-06-07 18:23:21 +09:00
QMK Bot
59862d30d0 Merge remote-tracking branch 'origin/master' into develop 2021-06-07 06:53:52 +00:00
Sergey Vlasov
680cc1fab4 Fix firmware size check with avr-libc 1:2.0.0+Atmel3.6.2-1.1 (Debian bullseye) (#12951)
Debian bullseye (testing at the moment, but seems close to release) has
avr-libc 1:2.0.0+Atmel3.6.2-1.1 with some changes taken from the
Atmel-distributed toolchain.  In particular, the <avr/io.h> header for
ATmega32A (avr/iom32a.h) now defines the FLASHEND constant as `0x7FFFU`,
and that `U` suffix breaks the firmware size check code, because the
shell arithmetic expansion that is used to calculate `MAX_SIZE` does not
support those C-specific suffixes.

As a workaround, add `-D__ASSEMBLER__` to the C preprocessor invocation
that is used to expand those macros; in this case avr/iom32a.h defines
`FLASHEND` without the `U` suffix, and everything works as it did before
with older avr-libc versions.

The exact same code is present in two places; they are both changed,
even though the code in `tmk_core/avr.mk` is actually never used for
ATmega32A (and the header for ATmega32U4 does not add that `U` suffix to
`FLASHEND` for some reason).
2021-06-06 22:42:08 -07:00
Carlos Martins
2e68897a62 [Keymap] RGB Matrix working for Sofle RGB (#12861)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-06-06 22:30:48 -07:00
Stefan Kerkmann
49fd3c0760 [Core] ChibiOS fix O3 and LTO breakage of extra keys and joystick (#12819) 2021-06-06 22:16:55 -07:00
QMK Bot
415dd21206 Merge remote-tracking branch 'origin/master' into develop 2021-06-07 05:11:07 +00:00
QMK Bot
102442a841 Merge remote-tracking branch 'origin/master' into develop 2021-06-07 05:08:50 +00:00
QMK Bot
fff115c1a4 Merge remote-tracking branch 'origin/master' into develop 2021-06-07 04:55:22 +00:00
QMK Bot
c7277a1420 Merge remote-tracking branch 'origin/master' into develop 2021-06-07 03:38:32 +00:00
Michael Stapelberg
7e4f01f454 core: bump USB spec version in device descriptor to 2.0 (#13078)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-06-07 08:48:26 +10:00
QMK Bot
56ce0e4e33 Merge remote-tracking branch 'origin/master' into develop 2021-06-06 20:14:07 +00:00
QMK Bot
a1e575780d Merge remote-tracking branch 'origin/master' into develop 2021-06-05 22:27:07 +00:00
QMK Bot
3d3b9807ab Merge remote-tracking branch 'origin/master' into develop 2021-06-05 18:37:16 +00:00
QMK Bot
3e1e64ca19 Merge remote-tracking branch 'origin/master' into develop 2021-06-05 18:17:12 +00:00
QMK Bot
25fffb7da8 Merge remote-tracking branch 'origin/master' into develop 2021-06-05 15:09:04 +00:00
QMK Bot
c38332a5c7 Merge remote-tracking branch 'origin/master' into develop 2021-06-04 03:03:05 +00:00
QMK Bot
01cb2867db Merge remote-tracking branch 'origin/master' into develop 2021-06-04 00:30:59 +00:00
QMK Bot
17f51fa9df Merge remote-tracking branch 'origin/master' into develop 2021-06-03 18:40:18 +00:00
QMK Bot
a6f030fb42 Merge remote-tracking branch 'origin/master' into develop 2021-06-03 15:53:38 +00:00
QMK Bot
2344d06475 Merge remote-tracking branch 'origin/master' into develop 2021-06-03 06:27:15 +00:00
QMK Bot
eaa2e0cb24 Merge remote-tracking branch 'origin/master' into develop 2021-06-03 06:07:03 +00:00
QMK Bot
65fe74fde0 Merge remote-tracking branch 'origin/master' into develop 2021-06-02 23:48:58 +00:00
QMK Bot
b8711b9726 Merge remote-tracking branch 'origin/master' into develop 2021-06-02 21:00:26 +00:00
QMK Bot
9544b41640 Merge remote-tracking branch 'origin/master' into develop 2021-06-01 08:12:46 +00:00
Nick Brassel
e5d3e5a989 Add weak refs on reading rows/cols. (#13062) 2021-06-01 15:10:39 +10:00
QMK Bot
d64a853b55 Merge remote-tracking branch 'origin/master' into develop 2021-06-01 04:56:53 +00:00
Nick Brassel
554c36a055 Update ChibiOS, ChibiOS-Contrib. (#13056)
* Update ChibiOS, ChibiOS-Contrib.

* Add instructions.

* Wrong remote name

* Explicit version tag.

* Add link to procedure on the breaking changes page.
2021-06-01 08:11:50 +10:00
QMK Bot
5c6c37e3a9 Merge remote-tracking branch 'origin/master' into develop 2021-05-31 04:16:56 +00:00
QMK Bot
c22f4aeb8e Merge remote-tracking branch 'origin/master' into develop 2021-05-31 04:04:59 +00:00
QMK Bot
234d37ec16 Merge remote-tracking branch 'origin/master' into develop 2021-05-30 21:59:09 +00:00
QMK Bot
bc01ee2a6e Merge remote-tracking branch 'origin/master' into develop 2021-05-30 21:58:08 +00:00
QMK Bot
aa923b2034 Merge remote-tracking branch 'origin/master' into develop 2021-05-30 21:56:39 +00:00
QMK Bot
160f9144c2 Merge remote-tracking branch 'origin/master' into develop 2021-05-30 21:48:16 +00:00
QMK Bot
0d74ed3c35 Merge remote-tracking branch 'origin/master' into develop 2021-05-30 15:18:09 +00:00
QMK Bot
a72172a8fd Merge remote-tracking branch 'origin/master' into develop 2021-05-29 21:39:21 +00:00
James Young
7d1194de01 run: qmk cformat --core-only 2021-05-29 13:53:10 -07:00
James Young
e628051505 Restore standard readme 2021-05-29 12:58:42 -07:00
James Young
275996f4c1 Add changelog for 2021-05-29 Breaking Changes merge (#12939)
* Add ChangeLog for 2021-05-29 Breaking Changes Merge: initial version

* Add recent develop changes

* Sort recent develop changes

* Remove sections for ChibiOS changes per tzarc

No ChibiOS changes this round.

* Add and sort recent develop changes

* add notes about keyboard moves/deletions

* import changelog for PR 12172

Documents the change to BOOTMAGIC_ENABLE.

* update section headings

* re-sort changelog

* add additional note regarding Bootmagic changes

* remove changelog timestamp

* update dates in main Breaking Changes docs

* fix broken section anchors in previous changelogs

* add link to backlight/eeprom patch to changelog

* highlight some more changes

* link PRs from section headers

Co-authored-by: Zach White <skullydazed@gmail.com>
2021-05-29 12:30:31 -07:00
QMK Bot
3ea3f32dfe Merge remote-tracking branch 'origin/master' into develop 2021-05-29 19:06:14 +00:00
Ryan
d66090af19 backlight.c: include eeprom.h (#13024) 2021-05-28 09:04:13 -07:00
Drashna Jaelre
b963049305 Fix keyboards/keymaps for boolean encoder callback changes (#12985) 2021-05-27 21:30:47 -07:00
Albert Y
5386c4c7b2 [Keyboard] Remove redundant legacy and common headers for crkbd (#13023)
Was causing compiler errors on some systems.

Co-authored-by: filterpaper <filterpaper@localhost>
2021-05-27 21:27:16 -07:00
QMK Bot
c1a3060431 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 16:43:10 +00:00
Drashna Jaelre
b769b36202 Add dire message about LUFA mass storage bootloader (#13014) 2021-05-27 09:20:47 -07:00
QMK Bot
879185a214 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 15:46:56 +00:00
QMK Bot
726368ce67 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 05:31:07 +00:00
QMK Bot
995c9dff49 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 05:26:24 +00:00
QMK Bot
69604e1750 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 05:22:29 +00:00
Ryan
06aea834c4 Backlight: add defines for default level and breathing state (#12560) 2021-05-26 22:21:15 -07:00
QMK Bot
e128d45420 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 05:20:39 +00:00
QMK Bot
0717890353 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 05:17:47 +00:00
QMK Bot
cd78ab25a9 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 05:14:01 +00:00
QMK Bot
beaebdf8eb Merge remote-tracking branch 'origin/master' into develop 2021-05-27 05:12:06 +00:00
QMK Bot
a5c2a74b8c Merge remote-tracking branch 'origin/master' into develop 2021-05-27 05:11:33 +00:00
peepeetee
ebaba80287 Document LED_MATRIX_FRAMEBUFFER_EFFECTS (#12987) 2021-05-26 21:22:56 -07:00
QMK Bot
15e408a6a5 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 04:21:21 +00:00
QMK Bot
1593e78c97 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 04:20:40 +00:00
QMK Bot
452a5216e2 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 04:17:34 +00:00
QMK Bot
769396839b Merge remote-tracking branch 'origin/master' into develop 2021-05-27 04:07:29 +00:00
QMK Bot
17991629c1 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 04:03:42 +00:00
QMK Bot
513f5b0655 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 04:02:15 +00:00
QMK Bot
b158afee93 Merge remote-tracking branch 'origin/master' into develop 2021-05-27 04:00:46 +00:00
QMK Bot
57306fb61c Merge remote-tracking branch 'origin/master' into develop 2021-05-27 03:48:46 +00:00
Stefan Kerkmann
d9610120de Add Full-duplex serial driver for ARM boards (#9842) 2021-05-26 20:37:54 -07:00
QMK Bot
a78964c918 Merge remote-tracking branch 'origin/master' into develop 2021-05-26 18:50:04 +00:00
Drashna Jaelre
f461adbd1d [Keymap] Update to Drashna keymap and user code (based on develop) (#12936) 2021-05-25 09:24:01 -07:00
QMK Bot
cc815c4d83 Merge remote-tracking branch 'origin/master' into develop 2021-05-25 09:52:37 +00:00
Zach White
5cecfe8c9b Merge remote-tracking branch 'origin/master' into develop 2021-05-24 23:39:24 -07:00
Drashna Jaelre
57158cc3bc [Keyboard] Corne - Remove legacy revision support (#12226) 2021-05-24 23:23:20 -07:00
QMK Bot
8e22da67c1 Merge remote-tracking branch 'origin/master' into develop 2021-05-25 02:39:02 +00:00
Drashna Jaelre
330fe1d1cc Do not hard set config in CPTC files (#11864) 2021-05-22 19:43:54 -07:00
QMK Bot
f5820059e4 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 19:03:28 +00:00
QMK Bot
54c368d3aa Merge remote-tracking branch 'origin/master' into develop 2021-05-22 17:19:26 +00:00
Ryan
8f4767d966 [Keyboard] Fix Terrazzo build failure (#12977) 2021-05-21 23:56:17 -07:00
QMK Bot
9ce4bdfd6a Merge remote-tracking branch 'origin/master' into develop 2021-05-22 06:53:54 +00:00
Drashna Jaelre
a0fed0ea17 Convert Encoder callbacks to be boolean functions (#12805)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-05-21 23:17:32 -07:00
QMK Bot
76c23b15ab Merge remote-tracking branch 'origin/master' into develop 2021-05-22 06:13:13 +00:00
QMK Bot
4c1ea0a522 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 06:12:29 +00:00
QMK Bot
c01f873978 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 05:43:00 +00:00
QMK Bot
924c25e702 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 05:33:55 +00:00
QMK Bot
95d2f7c3c5 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 05:30:46 +00:00
QMK Bot
3d49563535 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 05:30:09 +00:00
QMK Bot
ca570947b0 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 05:29:17 +00:00
QMK Bot
31130b9031 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 04:44:51 +00:00
Donald Kjer
8e96c5a060 Add support for up to 4 IS31FL3733 drivers (#12342)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2021-05-21 21:42:39 -07:00
QMK Bot
81821f0a12 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 04:39:17 +00:00
QMK Bot
e1500ce493 Merge remote-tracking branch 'origin/master' into develop 2021-05-22 04:33:46 +00:00
Zach White
4c0d8ae8d7 ensure we do not conflict with existing keymap aliases (#12976) 2021-05-21 16:59:10 -07:00
QMK Bot
de8fada3a3 Merge remote-tracking branch 'origin/master' into develop 2021-05-20 11:47:42 +00:00
QMK Bot
aeaa209b9d Merge remote-tracking branch 'origin/master' into develop 2021-05-20 10:04:45 +00:00
Zach White
6955c5a002 Merge remote-tracking branch 'origin/master' into develop
Resolved Conflicts:
	lib/python/qmk/tests/test_cli_commands.py
	util/install/fedora.sh
2021-05-19 15:49:11 -07:00
Michael Stapelberg
82aa9ad4a5 matrix: wait for row signal to go HIGH for every row (#12945)
I noticed this discrepancy (last row of the matrix treated differently than the
others) when optimizing the input latency of my keyboard controller, see also
https://michael.stapelberg.ch/posts/2021-05-08-keyboard-input-latency-qmk-kinesis/

Before this commit, when tuning the delays I noticed ghost key presses when
pressing the F2 key, which is on the last row of the keyboard matrix: the
dead_grave key, which is on the first row of the keyboard matrix, would be
incorrectly detected as pressed.

After this commit, all keyboard matrix rows are interpreted correctly.

I suspect that my setup is more susceptible to this nuance than others because I
use GPIO_INPUT_PIN_DELAY=0 and hence don’t have another delay that might mask
the problem.
2021-05-20 06:43:36 +10:00
QMK Bot
068af97b7a Merge remote-tracking branch 'origin/master' into develop 2021-05-19 19:01:52 +00:00
QMK Bot
e756586f41 Merge remote-tracking branch 'origin/master' into develop 2021-05-18 19:26:46 +00:00
Nick Brassel
58142f0726 Fixup housekeeping from being invoked twice per loop. (#12933) 2021-05-18 17:02:28 +10:00
QMK Bot
6cdc996e0b Merge remote-tracking branch 'origin/master' into develop 2021-05-17 23:52:14 +00:00
QMK Bot
7e06393407 Merge remote-tracking branch 'origin/master' into develop 2021-05-17 22:54:15 +00:00
QMK Bot
b098757a7e Merge remote-tracking branch 'origin/master' into develop 2021-05-17 15:52:41 +00:00
QMK Bot
8508fc8b98 Merge remote-tracking branch 'origin/master' into develop 2021-05-17 08:56:10 +00:00
Matthes W
6c7450dad7 Add function to allow repeated blinking of one layer (#12237)
* Implement function rgblight_blink_layer_repeat to allow repeated blinking of one layer at a time

* Update doc

* Rework rgblight blinking according to requested change

* optimize storage
2021-05-16 20:59:02 -04:00
QMK Bot
c14fa1e28f Merge remote-tracking branch 'origin/master' into develop 2021-05-16 22:44:12 +00:00
QMK Bot
e6887f4260 Merge remote-tracking branch 'origin/master' into develop 2021-05-16 22:34:45 +00:00
QMK Bot
d8e38ef0b1 Merge remote-tracking branch 'origin/master' into develop 2021-05-16 22:34:14 +00:00
QMK Bot
39b2b2b010 Merge remote-tracking branch 'origin/master' into develop 2021-05-16 22:31:26 +00:00
QMK Bot
fef78c41cd Merge remote-tracking branch 'origin/master' into develop 2021-05-16 22:20:57 +00:00
Zach White
de5c30a9ba Use milc.subcommand.config instead of qmk.cli.config (#12915)
* Use milc.subcommand.config instead

* pyformat

* remove the config test
2021-05-16 11:06:57 -07:00
QMK Bot
8761e973ec Merge remote-tracking branch 'origin/master' into develop 2021-05-16 01:57:14 +00:00
QMK Bot
433834fb8b Merge remote-tracking branch 'origin/master' into develop 2021-05-16 00:35:33 +00:00
QMK Bot
86422f87c6 Merge remote-tracking branch 'origin/master' into develop 2021-05-16 00:29:33 +00:00
QMK Bot
388c151de7 Merge remote-tracking branch 'origin/master' into develop 2021-05-16 00:19:04 +00:00
QMK Bot
396abb0244 Merge remote-tracking branch 'origin/master' into develop 2021-05-16 00:15:19 +00:00
QMK Bot
7599cd4e50 Merge remote-tracking branch 'origin/master' into develop 2021-05-16 00:14:49 +00:00
QMK Bot
de2294413f Merge remote-tracking branch 'origin/master' into develop 2021-05-16 00:09:46 +00:00
QMK Bot
4e32465f06 Merge remote-tracking branch 'origin/master' into develop 2021-05-16 00:08:53 +00:00
QMK Bot
08ec7618a1 Merge remote-tracking branch 'origin/master' into develop 2021-05-16 00:05:11 +00:00
QMK Bot
2bc35205a7 Merge remote-tracking branch 'origin/master' into develop 2021-05-15 23:52:01 +00:00
QMK Bot
14c0f4e44b Merge remote-tracking branch 'origin/master' into develop 2021-05-15 18:52:47 +00:00
fauxpark
d6b707403e Merge remote-tracking branch 'upstream/master' into develop 2021-05-15 13:43:46 +10:00
QMK Bot
1dca3a8e3a Merge remote-tracking branch 'origin/master' into develop 2021-05-14 22:44:36 +00:00
Dave Vandyke
75da5e9742 [Keymap] Fix QWERTY/DVORAK status output for kzar keymap (#12895) 2021-05-14 08:30:21 -07:00
QMK Bot
36a2297deb Merge remote-tracking branch 'origin/master' into develop 2021-05-14 04:10:46 +00:00
QMK Bot
16014fe31c Merge remote-tracking branch 'origin/master' into develop 2021-05-14 03:54:43 +00:00
QMK Bot
188bcf7636 Merge remote-tracking branch 'origin/master' into develop 2021-05-14 03:21:19 +00:00
QMK Bot
4a5f575ef4 Merge remote-tracking branch 'origin/master' into develop 2021-05-14 03:12:06 +00:00
QMK Bot
8bf7a1452d Merge remote-tracking branch 'origin/master' into develop 2021-05-14 03:10:57 +00:00
QMK Bot
2fcf761f33 Merge remote-tracking branch 'origin/master' into develop 2021-05-14 02:48:33 +00:00
QMK Bot
70bbcdf084 Merge remote-tracking branch 'origin/master' into develop 2021-05-14 02:46:09 +00:00
QMK Bot
178fbdac16 Merge remote-tracking branch 'origin/master' into develop 2021-05-14 02:40:36 +00:00
QMK Bot
5f9906eccc Merge remote-tracking branch 'origin/master' into develop 2021-05-14 02:34:21 +00:00
QMK Bot
16c4590396 Merge remote-tracking branch 'origin/master' into develop 2021-05-14 02:22:22 +00:00
QMK Bot
8d85171f16 Merge remote-tracking branch 'origin/master' into develop 2021-05-14 02:21:08 +00:00
QMK Bot
eeb8ba4e62 Merge remote-tracking branch 'origin/master' into develop 2021-05-14 02:00:53 +00:00
QMK Bot
19810f4a8b Merge remote-tracking branch 'origin/master' into develop 2021-05-13 18:08:17 +00:00
QMK Bot
c48ce4c259 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 17:54:55 +00:00
QMK Bot
75ffb4b7e2 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 17:52:38 +00:00
QMK Bot
929d06a65f Merge remote-tracking branch 'origin/master' into develop 2021-05-13 17:46:41 +00:00
Joakim Tufvegren
cbdc3fb81b Fix spelling mistake regarding LED Matrix in split_common. (#12888) 2021-05-14 03:37:24 +10:00
Ryan
04ab5de73c Deprecate send_unicode_hex_string() (#12602) 2021-05-14 03:25:40 +10:00
QMK Bot
cae9eb4d8d Merge remote-tracking branch 'origin/master' into develop 2021-05-13 17:23:24 +00:00
QMK Bot
f70dc8435a Merge remote-tracking branch 'origin/master' into develop 2021-05-13 17:22:42 +00:00
QMK Bot
673c12fa3b Merge remote-tracking branch 'origin/master' into develop 2021-05-13 17:20:16 +00:00
QMK Bot
008d8a740e Merge remote-tracking branch 'origin/master' into develop 2021-05-13 17:13:20 +00:00
QMK Bot
b4039ec515 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 16:36:43 +00:00
QMK Bot
f8f0ca458d Merge remote-tracking branch 'origin/master' into develop 2021-05-13 16:29:39 +00:00
QMK Bot
40907fa98a Merge remote-tracking branch 'origin/master' into develop 2021-05-13 06:53:27 +00:00
QMK Bot
89a3ef7699 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 05:38:06 +00:00
QMK Bot
1dd6adffbe Merge remote-tracking branch 'origin/master' into develop 2021-05-13 04:15:42 +00:00
Ryan
7078d5a5bd LED Matrix: Documentation (#12685) 2021-05-13 12:57:57 +10:00
QMK Bot
dbfe2d7e9e Merge remote-tracking branch 'origin/master' into develop 2021-05-13 02:36:23 +00:00
QMK Bot
c24d29ef54 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 02:30:14 +00:00
QMK Bot
2d29ce5de1 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 01:54:43 +00:00
QMK Bot
54a8b5af01 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 01:32:21 +00:00
QMK Bot
bc9cd3e997 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 01:27:46 +00:00
Drashna Jaelre
da0c551692 Add missing LED Matrix suspend code to suspend.c (#12878)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-13 11:24:44 +10:00
noclew
d200e3de8e [Keyboard] updated a vendor name / fixed minor keymap issues (#12881) 2021-05-12 17:19:48 -07:00
QMK Bot
49bc835aa9 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 00:18:40 +00:00
QMK Bot
536df7c240 Merge remote-tracking branch 'origin/master' into develop 2021-05-13 00:02:42 +00:00
QMK Bot
9c80db1fdc Merge remote-tracking branch 'origin/master' into develop 2021-05-12 23:25:56 +00:00
QMK Bot
53075ccc5d Merge remote-tracking branch 'origin/master' into develop 2021-05-12 23:25:03 +00:00
Ryan
92fbadeb1b Rename point_t -> led_point_t (#12864) 2021-05-13 09:17:18 +10:00
QMK Bot
07800e82c9 Merge remote-tracking branch 'origin/master' into develop 2021-05-12 16:50:09 +00:00
Zach White
6da60d4a5d Add setup, clone, and env to the list of commands we allow even with broken modules (#12868) 2021-05-12 09:40:58 -07:00
QMK Bot
3a1ce81d29 Merge remote-tracking branch 'origin/master' into develop 2021-05-12 00:52:47 +00:00
QMK Bot
4bb00c6a0a Merge remote-tracking branch 'origin/master' into develop 2021-05-11 18:43:25 +00:00
Zach White
38d8d5445e Remove KEYMAP and LAYOUT_kc (#12160)
* alias KEYMAP to LAYOUT

* remove KEYMAP and LAYOUT_kc
2021-05-11 10:10:31 -07:00
Ryan
d84cbc3cec Fix syntax error when compiling for ARM (#12866) 2021-05-11 08:17:28 -07:00
Ryan
3edc43964d LED Matrix: Effects! (#12651) 2021-05-11 13:41:06 +10:00
Nick Brassel
f41fc6b70c Fixup build errors on develop branch. (#12723) 2021-05-11 11:01:58 +10:00
QMK Bot
0432bde962 Merge remote-tracking branch 'origin/master' into develop 2021-05-11 00:33:02 +00:00
QMK Bot
17586ea7c4 Merge remote-tracking branch 'origin/master' into develop 2021-05-10 22:43:41 +00:00
Lukas Reineke
069cfb61b8 [Keymap] Turn OLED off on suspend in soundmonster keymap (#10419) 2021-05-10 15:40:18 -07:00
QMK Bot
6bb9113e27 Merge remote-tracking branch 'origin/master' into develop 2021-05-10 22:38:06 +00:00
Zach White
0e7c66e891 Merge remote-tracking branch 'origin/master' into develop
Conflicts:
	bin/qmk
	lib/python/qmk/cli/__init__.py

Merge conflicts fixed by skullydazed.
2021-05-10 12:16:04 -07:00
QMK Bot
911b45ce3b Merge remote-tracking branch 'origin/master' into develop 2021-05-10 18:19:15 +00:00
QMK Bot
cfc6e4bfac Merge remote-tracking branch 'origin/master' into develop 2021-05-10 17:37:36 +00:00
Sergey Vlasov
ffe81cbec1 Fix another bin/qmk reference (#12856) 2021-05-10 09:21:13 -07:00
Drashna Jaelre
f0b30e0027 Make Swap Hands use PROGMEM (#12284)
This converts the array that the Swap Hands feature uses to use PROGMEM,
and to read from that array, as such. Since this array never changes at
runtime, there is no reason to keep it in memory. Especially for AVR
boards, as memory is a precious resource.
2021-05-09 23:21:09 -07:00
QMK Bot
40d1506527 Merge remote-tracking branch 'origin/master' into develop 2021-05-09 20:40:22 +00:00
QMK Bot
2549b4b082 Merge remote-tracking branch 'origin/master' into develop 2021-05-09 19:16:57 +00:00
QMK Bot
201dc6d024 Merge remote-tracking branch 'origin/master' into develop 2021-05-09 18:30:52 +00:00
QMK Bot
2f367bab98 Merge remote-tracking branch 'origin/master' into develop 2021-05-09 17:20:16 +00:00
QMK Bot
ad1244e2cf Merge remote-tracking branch 'origin/master' into develop 2021-05-09 17:15:32 +00:00
Ryan
62c3e3d11f Remove pointless SERIAL_LINK_ENABLE rules (#12846) 2021-05-10 02:53:21 +10:00
QMK Bot
12292ba264 Merge remote-tracking branch 'origin/master' into develop 2021-05-09 15:07:13 +00:00
QMK Bot
bfb052db1d Merge remote-tracking branch 'origin/master' into develop 2021-05-09 13:53:46 +00:00
QMK Bot
a0c95cb07e Merge remote-tracking branch 'origin/master' into develop 2021-05-09 10:58:43 +00:00
Zach White
7a25dcacff New command: qmk console (#12828)
* stash poc

* stash

* tidy up implementation

* Tidy up slightly for review

* Tidy up slightly for review

* Bodge environment to make tests pass

* Refactor away from asyncio due to windows issues

* Filter devices

* align vid/pid printing

* Add hidapi to the installers

* start preparing for multiple hid_listeners

* udev rules for hid_listen

* refactor to move closer to end state

* very basic implementation of the threaded model

* refactor how vid/pid/index are supplied and parsed

* windows improvements

* read the report directly when usage page isn't available

* add per-device colors, the choice to show names or numbers, and refactor

* add timestamps

* Add support for showing bootloaders

* tweak the color for bootloaders

* Align bootloader disconnect with connect color

* add support for showing all bootloaders

* fix the pyusb check

* tweaks

* fix exception

* hide a stack trace behind -v

* add --no-bootloaders option

* add documentation for qmk console

* Apply suggestions from code review

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

* pyformat

* clean up and flesh out KNOWN_BOOTLOADERS

Co-authored-by: zvecr <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-05-08 20:56:07 -07:00
QMK Bot
d0a3bca9ec Merge remote-tracking branch 'origin/master' into develop 2021-05-09 03:46:23 +00:00
QMK Bot
0e6359bce9 Merge remote-tracking branch 'origin/master' into develop 2021-05-09 03:00:40 +00:00
Zach White
767089384f Resolve a number of warnings in qmk generate-api (#12833) 2021-05-08 12:44:05 -07:00
Zach White
3e9f809988 fix some references to bin/qmk that slipped in (#12832) 2021-05-08 12:25:04 -07:00
QMK Bot
a871444743 Merge remote-tracking branch 'origin/master' into develop 2021-05-08 17:27:30 +00:00
QMK Bot
fd5da75bdd Merge remote-tracking branch 'origin/master' into develop 2021-05-08 16:35:59 +00:00
Barabas
fca7cc1747 Added OLED fade out support (#12086) 2021-05-08 12:27:13 +02:00
QMK Bot
992b146bc4 Merge remote-tracking branch 'origin/master' into develop 2021-05-07 17:22:41 +00:00
QMK Bot
5d7b026ce2 Merge remote-tracking branch 'origin/master' into develop 2021-05-07 09:52:46 +00:00
QMK Bot
8c2db395c4 Merge remote-tracking branch 'origin/master' into develop 2021-05-06 21:08:29 +00:00
QMK Bot
c820a5732c Merge remote-tracking branch 'origin/master' into develop 2021-05-06 18:17:55 +00:00
QMK Bot
447bd64013 Merge remote-tracking branch 'origin/master' into develop 2021-05-06 16:16:51 +00:00
QMK Bot
45f710f3ff Merge remote-tracking branch 'origin/master' into develop 2021-05-05 23:27:27 +00:00
QMK Bot
15f4ab6a3f Merge remote-tracking branch 'origin/master' into develop 2021-05-04 19:39:11 +00:00
QMK Bot
65ee9d1b09 Merge remote-tracking branch 'origin/master' into develop 2021-05-04 08:40:56 +00:00
QMK Bot
084d0ae96e Merge remote-tracking branch 'origin/master' into develop 2021-05-04 00:32:09 +00:00
Zach White
5d27c772fd Fix comment parsing (#12750)
Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2021-05-03 19:09:53 +02:00
QMK Bot
0ec438289d Merge remote-tracking branch 'origin/master' into develop 2021-05-02 15:59:41 +00:00
QMK Bot
79e86adfb6 Merge remote-tracking branch 'origin/master' into develop 2021-05-02 15:44:16 +00:00
github-actions[bot]
f5b6bef4b3 [CI] Format code according to conventions (#12772)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-05-02 05:15:50 +10:00
XScorpion2
3c2e69af79 Fixing transport's led/rgb matrix suspend state logic (#12770) 2021-05-01 12:14:17 -07:00
QMK Bot
e9b0e9286e Merge remote-tracking branch 'origin/master' into develop 2021-05-01 01:00:34 +00:00
QMK Bot
876352a030 Merge remote-tracking branch 'origin/master' into develop 2021-04-30 20:24:18 +00:00
QMK Bot
109b462789 Merge remote-tracking branch 'origin/master' into develop 2021-04-30 17:46:15 +00:00
QMK Bot
fc29068986 Merge remote-tracking branch 'origin/master' into develop 2021-04-29 18:26:09 +00:00
QMK Bot
c05fef752e Merge remote-tracking branch 'origin/master' into develop 2021-04-29 16:55:32 +00:00
QMK Bot
9d5cd52284 Merge remote-tracking branch 'origin/master' into develop 2021-04-29 16:49:03 +00:00
QMK Bot
b481f554a0 Merge remote-tracking branch 'origin/master' into develop 2021-04-29 10:39:51 +00:00
github-actions[bot]
39bc8163d0 [CI] Format code according to conventions (#12731)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-29 13:36:47 +10:00
Drashna Jaelre
d8167779cd Change RGB/LED Matrix to use a simple define for USB suspend (#12697) 2021-04-29 12:39:54 +10:00
QMK Bot
7409f03cbf Merge remote-tracking branch 'origin/master' into develop 2021-04-28 10:46:45 +00:00
Nick Brassel
0a8e37509b Fix bad PR merge for #6580. (#12721) 2021-04-28 11:42:53 +01:00
QMK Bot
cd6168ee64 Merge remote-tracking branch 'origin/master' into develop 2021-04-28 01:39:39 +00:00
QMK Bot
d89d341541 Merge remote-tracking branch 'origin/master' into develop 2021-04-27 20:55:11 +00:00
QMK Bot
e95c76aaed Merge remote-tracking branch 'origin/master' into develop 2021-04-27 19:37:23 +00:00
QMK Bot
eea33df1f9 Merge remote-tracking branch 'origin/master' into develop 2021-04-27 18:37:47 +00:00
QMK Bot
3e43a7f044 Merge remote-tracking branch 'origin/master' into develop 2021-04-27 17:42:03 +00:00
QMK Bot
f30637ee11 Merge remote-tracking branch 'origin/master' into develop 2021-04-27 17:24:11 +00:00
QMK Bot
86ab4fcb71 Merge remote-tracking branch 'origin/master' into develop 2021-04-27 06:45:17 +00:00
QMK Bot
a8c0954db5 Merge remote-tracking branch 'origin/master' into develop 2021-04-26 19:18:51 +00:00
QMK Bot
171f3e840b Merge remote-tracking branch 'origin/master' into develop 2021-04-26 17:24:58 +00:00
JTM
54c1548247 Updated Function96 with V2 files and removed chconf.h and halconf.h (#12613)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: JuanTapMan <68515848+JuanTapMan@users.noreply.github.com>
2021-04-26 10:38:13 +02:00
Xelus22
9cf82fae95 Add STM32L433 and L443 support (#12063)
* initial L433 commit

* change to XC

* fix L433

* disable all peripherals

* update system and peripheral clocks

* 433 change

* use its own board  files

* revert its own board files

* l433 specific change

* fix stm32l432xx define

* remove duplicate #define

* fix bootloader jump

* move to L443xx and add i2c2, spi2, usart3 to mcuconf.h

* move to L443

* move to L443

* fix sdmmc in mcuconf.h

* include STM32L443

* add L443

* Include L443 in compatible microcontrollers

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Include L443 in compatible microcontrollers

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Update config bootloader jump description

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Update ChibiOS define reasoning

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Update quantum/mcu_selection.mk

Co-authored-by: Nick Brassel <nick@tzarc.org>

* fix git conflict

Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-04-26 13:07:15 +10:00
QMK Bot
5168af9a9b Merge remote-tracking branch 'origin/master' into develop 2021-04-26 02:52:29 +00:00
QMK Bot
61a1915cce Merge remote-tracking branch 'origin/master' into develop 2021-04-25 20:46:54 +00:00
github-actions[bot]
03db48af75 Format code according to conventions (#12687)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-25 19:01:49 +10:00
github-actions[bot]
8c12fa2e59 Format code according to conventions (#12682)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-25 19:00:22 +10:00
Purdea Andrei
3f7350732c Add support for MCU = STM32F446 (#12619)
* Add support for MCU = STM32F446

* Update platforms/chibios/GENERIC_STM32_F446XE/configs/config.h

Co-authored-by: Nick Brassel <nick@tzarc.org>

* Restore mcuconf.h to the one used by RT-STM32F446RE-NUCLEO64

* stm32f446: update mcuconf.h and board.h for 16MHz operation, with USB enabled, and other peripherals disabled.

Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-04-25 18:59:25 +10:00
QMK Bot
5b1c3e360a Merge remote-tracking branch 'origin/master' into develop 2021-04-25 08:57:56 +00:00
Purdea Andrei
412e7a03e4 eeprom driver: Refactor where eeprom driver initialisation (and EEPROM emulation initialisation) occurs to make it non-target-specific. (#12671) 2021-04-25 18:57:49 +10:00
QMK Bot
23e70fa857 Merge remote-tracking branch 'origin/master' into develop 2021-04-25 04:03:14 +00:00
QMK Bot
ee26e3df60 Merge remote-tracking branch 'origin/master' into develop 2021-04-25 04:00:00 +00:00
QMK Bot
ab6d07b585 Merge remote-tracking branch 'origin/master' into develop 2021-04-25 03:42:04 +00:00
Nick Brassel
891d18d356 Add initial support for tinyuf2 bootloader (when hosted on F411 blackpill) (#12600)
* Add support for jumping to tinyuf2 bootloader. Adds blackpill UF2 example.

* Update flashing.md

* Update chconf.h

* Update config.h

* Update halconf.h

* Update mcuconf.h
2021-04-25 13:40:56 +10:00
QMK Bot
2a61a500de Merge remote-tracking branch 'origin/master' into develop 2021-04-25 03:16:16 +00:00
QMK Bot
64a9cf18e1 Merge remote-tracking branch 'origin/master' into develop 2021-04-25 03:12:09 +00:00
QMK Bot
19b3aa3a12 Merge remote-tracking branch 'origin/master' into develop 2021-04-25 01:48:16 +00:00
QMK Bot
7718b1598e Merge remote-tracking branch 'origin/master' into develop 2021-04-25 01:16:24 +00:00
Sergey Vlasov
65c9752762 Update ADC driver for STM32F1xx, STM32F3xx, STM32F4xx (#12403)
* Fix default ADC_RESOLUTION for ADCv3 (and ADCv4)

Recent ChibiOS update removed ADC_CFGR1_RES_10BIT from the ADCv3 headers
(that macro should not have been there, because ADCv3 has CFGR instead of
CFGR1).  Fix the default value for ADC_RESOLUTION to use ADC_CFGR_RES_10BITS
if it is defined (that name is used for ADCv3 and ADCv4).

* Update ADC docs to match the actually used resolution

ADC driver for ChibiOS actually uses the 10-bit resolution by default
(probably to match AVR); fix the documentation accordingly.  Also add
both ADC_CFGR_RES_10BITS and ADC_CFGR1_RES_10BIT constants (these names
differ according to the ADC implementation in the particular MCU).

* Fix pinToMux() for B12 and B13 on STM32F3xx

Testing on STM32F303CCT6 revealed that the ADC mux values for B12 and
B13 pins were wrong.

* Add support for all possible analog pins on STM32F1xx

Added ADC mux values for pins A0...A7, B0, B1, C0...C5 on STM32F1xx
(they are the same at least for STM32F103x8 and larger F103 devices, and
also F102, F105, F107 families).  Actually tested on STM32F103C8T6
(therefore pins C0...C5 were not tested).

Pins F6...F10, which are present on STM32F103x[C-G] in 144-pin packages,
cannot be supported at the moment, because those pins are connected only
to ADC3, but the ChibiOS ADC driver for STM32F1xx supports only ADC1.

* Add support for all possible analog pins on STM32F4xx

Added ADC mux values for pins A0...A7, B0, B1, C0...C5 and optionally
F3...F10 (if STM32_ADC_USE_ADC3 is enabled).  These mux values are
apparently the same for all F4xx devices, except some smaller devices may
not have ADC3.

Actually tested on STM32F401CCU6, STM32F401CEU6, STM32F411CEU6 (using
various WeAct “Blackpill” boards); only pins A0...A7, B0, B1 were tested.

Pins F3...F10 are inside `#if STM32_ADC_USE_ADC3` because some devices
which don't have ADC3 also don't have the GPIOF port, therefore the code
which refers to Fx pins does not compile.

* Fix STM32F3xx ADC mux table in documentation

The ADC driver documentation had some errors in the mux table for STM32F3xx.
Fix this table to match the datasheet and the actual code (mux settings for
B12 and B13 were also tested on a real STM32F303CCT6 chip).

* Add STM32F1xx ADC pins to the documentation

* Add STM32F4xx ADC pins to the documentation
2021-04-25 11:15:37 +10:00
QMK Bot
f12aea5dfb Merge remote-tracking branch 'origin/master' into develop 2021-04-25 01:14:55 +00:00
QMK Bot
7845cf1fac Merge remote-tracking branch 'origin/master' into develop 2021-04-25 01:05:05 +00:00
QMK Bot
33a5468a60 Merge remote-tracking branch 'origin/master' into develop 2021-04-25 01:02:27 +00:00
QMK Bot
34b63cecb1 Merge remote-tracking branch 'origin/master' into develop 2021-04-25 01:01:19 +00:00
QMK Bot
7748a093cb Merge remote-tracking branch 'origin/master' into develop 2021-04-25 01:00:39 +00:00
github-actions[bot]
d8f113bf98 Format code according to conventions (#12680)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-25 10:34:38 +10:00
Daniel Rodríguez Rivero
26b9b3aa23 feat: infinite timeout for leader key (#6580)
* feat: implement leader_no_timeout logic

* docs(leader_key): infinite leader timeout docs
2021-04-25 10:22:47 +10:00
QMK Bot
8f5cc8d762 Merge remote-tracking branch 'origin/master' into develop 2021-04-22 21:16:12 +00:00
QMK Bot
6be87836dc Merge remote-tracking branch 'origin/master' into develop 2021-04-22 17:14:44 +00:00
QMK Bot
417803d7ae Merge remote-tracking branch 'origin/master' into develop 2021-04-22 14:58:49 +00:00
github-actions[bot]
15ff1927db [CI] Format code according to conventions (#12650)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-22 19:26:17 +10:00
Ryan
d6ab908272 LED Matrix: Split (#12633) 2021-04-22 19:21:13 +10:00
QMK Bot
5d458c6c8a Merge remote-tracking branch 'origin/master' into develop 2021-04-21 23:51:07 +00:00
QMK Bot
fbc5a6c24b Merge remote-tracking branch 'origin/master' into develop 2021-04-20 19:02:29 +00:00
QMK Bot
15872bde61 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 18:13:34 +00:00
QMK Bot
b09d068bf6 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 17:52:32 +00:00
QMK Bot
f7f8f97e6a Merge remote-tracking branch 'origin/master' into develop 2021-04-20 17:50:40 +00:00
QMK Bot
2927af43e1 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 17:48:10 +00:00
QMK Bot
7795e167ab Merge remote-tracking branch 'origin/master' into develop 2021-04-20 17:46:58 +00:00
QMK Bot
b68ed9ebea Merge remote-tracking branch 'origin/master' into develop 2021-04-20 17:25:10 +00:00
QMK Bot
ed59337239 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 17:23:34 +00:00
QMK Bot
120b15458c Merge remote-tracking branch 'origin/master' into develop 2021-04-20 17:23:01 +00:00
QMK Bot
19887f2d35 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 17:22:13 +00:00
QMK Bot
a9e6dc3629 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 17:18:12 +00:00
Michael Stapelberg
c922fc2cf3 [Keyboard] kint2pp: reduce input latency by ≈10ms (#12625) 2021-04-20 10:08:29 -07:00
Michael Stapelberg
3d32cbb0dc [Keyboard] kint36: switch to sym_eager_pk debouncing (#12626) 2021-04-20 10:08:01 -07:00
QMK Bot
8da2c48650 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 16:59:38 +00:00
QMK Bot
5aa3fd5ac7 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 16:57:07 +00:00
QMK Bot
6620b6c515 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 16:32:55 +00:00
QMK Bot
e31f210b59 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 16:24:28 +00:00
QMK Bot
39e80a3f5c Merge remote-tracking branch 'origin/master' into develop 2021-04-20 16:15:59 +00:00
QMK Bot
bc66d71dae Merge remote-tracking branch 'origin/master' into develop 2021-04-20 16:12:25 +00:00
QMK Bot
427bff8504 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 15:18:18 +00:00
Ryan
cb19c0906e LED Matrix: Reactive effect buffers & advanced indicators (#12588) 2021-04-20 17:38:44 +10:00
QMK Bot
b1f48da5ee Merge remote-tracking branch 'origin/master' into develop 2021-04-20 04:13:18 +00:00
Drashna Jaelre
c02137a0d2 Add Per Key functionality for AutoShift (#11536)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-19 20:34:14 -07:00
QMK Bot
49efd6abb0 Merge remote-tracking branch 'origin/master' into develop 2021-04-20 02:40:47 +00:00
QMK Bot
663664e48f Merge remote-tracking branch 'origin/master' into develop 2021-04-19 18:04:50 +00:00
QMK Bot
c3d1456615 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 16:40:51 +00:00
Purdea Andrei
dcb8407ed6 Apply the "NO_LIMITED_CONTROLLER_CONNECT" fix to atmega16u2 (#12482)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-19 09:33:24 -07:00
github-actions[bot]
230f09ca17 [CI] Format code according to conventions (#12623)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-19 20:19:16 +10:00
QMK Bot
d562b4fdc5 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 10:15:56 +00:00
QMK Bot
46318f36ac Merge remote-tracking branch 'origin/master' into develop 2021-04-19 09:23:28 +00:00
QMK Bot
97e7defaae Merge remote-tracking branch 'origin/master' into develop 2021-04-19 09:22:54 +00:00
QMK Bot
56fff80e71 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 09:21:56 +00:00
QMK Bot
42808238c1 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 09:20:46 +00:00
QMK Bot
34df6743f6 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 08:21:39 +00:00
QMK Bot
2c0b3649fb Merge remote-tracking branch 'origin/master' into develop 2021-04-19 07:32:45 +00:00
QMK Bot
0235fc7ab2 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 06:43:21 +00:00
Drashna Jaelre
180a32ec59 Enhancement of WPM feature (#11727) 2021-04-18 23:26:37 -07:00
QMK Bot
f65a5d2fb5 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 06:18:08 +00:00
QMK Bot
6e5fd1a210 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 06:13:00 +00:00
QMK Bot
a66947b7d6 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 06:12:34 +00:00
QMK Bot
86ece8e98e Merge remote-tracking branch 'origin/master' into develop 2021-04-19 06:04:50 +00:00
QMK Bot
5632c5db31 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 06:00:42 +00:00
QMK Bot
ca9da27e16 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 05:44:51 +00:00
QMK Bot
54521bd04b Merge remote-tracking branch 'origin/master' into develop 2021-04-19 05:31:08 +00:00
QMK Bot
2e7fd319a1 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 05:25:03 +00:00
QMK Bot
21997e8894 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 05:05:55 +00:00
QMK Bot
ea29874099 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 04:54:01 +00:00
QMK Bot
ca11abc201 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 04:02:42 +00:00
QMK Bot
8ecdc66700 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 03:54:31 +00:00
QMK Bot
9484c46555 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 03:45:01 +00:00
QMK Bot
c2d7ebc3df Merge remote-tracking branch 'origin/master' into develop 2021-04-19 03:37:16 +00:00
QMK Bot
7728b0f966 Merge remote-tracking branch 'origin/master' into develop 2021-04-19 03:08:31 +00:00
QMK Bot
0a9e18fae1 Merge remote-tracking branch 'origin/master' into develop 2021-04-18 22:40:16 +00:00
QMK Bot
924b9fcf05 Merge remote-tracking branch 'origin/master' into develop 2021-04-18 22:23:25 +00:00
QMK Bot
884f8658ef Merge remote-tracking branch 'origin/master' into develop 2021-04-18 22:14:59 +00:00
QMK Bot
99ce84827a Merge remote-tracking branch 'origin/master' into develop 2021-04-18 15:52:15 +00:00
QMK Bot
7f809c013a Merge remote-tracking branch 'origin/master' into develop 2021-04-17 15:47:13 +00:00
QMK Bot
40365f8297 Merge remote-tracking branch 'origin/master' into develop 2021-04-16 14:26:52 +00:00
QMK Bot
1ac030b119 Merge remote-tracking branch 'origin/master' into develop 2021-04-16 14:24:18 +00:00
Joshua Diamond
e2289ffac0 Add missing RGB_MODE_TWINKLE / RGB_M_TW keycodes (#11935)
* Add missing RGB_MODE_TWINKLE / RGB_M_TW keycodes

* Better comment

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2021-04-15 19:32:17 -04:00
QMK Bot
1629c9b71a Merge remote-tracking branch 'origin/master' into develop 2021-04-15 17:20:12 +00:00
QMK Bot
42a57b37fb Merge remote-tracking branch 'origin/master' into develop 2021-04-15 17:05:00 +00:00
QMK Bot
be1b5c5a54 Merge remote-tracking branch 'origin/master' into develop 2021-04-15 17:01:54 +00:00
Ryan
53eb35b6cf LED Matrix: Task system (#12580) 2021-04-15 12:08:52 +10:00
QMK Bot
2c0aa27e6c Merge remote-tracking branch 'origin/master' into develop 2021-04-15 02:00:59 +00:00
QMK Bot
19b143688f Merge remote-tracking branch 'origin/master' into develop 2021-04-14 21:51:45 +00:00
QMK Bot
3c08d27abb Merge remote-tracking branch 'origin/master' into develop 2021-04-14 20:39:01 +00:00
QMK Bot
98dd9b6614 Merge remote-tracking branch 'origin/master' into develop 2021-04-14 03:09:16 +00:00
QMK Bot
4ed273699a Merge remote-tracking branch 'origin/master' into develop 2021-04-14 01:32:38 +00:00
github-actions[bot]
333cd4ec9b [CI] Format code according to conventions (#12570)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-13 19:58:34 +10:00
QMK Bot
30f38c4952 Merge remote-tracking branch 'origin/master' into develop 2021-04-13 09:52:45 +00:00
Ryan
a28fbcda23 Terrazzo: Fix wrong LED Matrix function names (#12561) 2021-04-13 19:51:31 +10:00
Ryan
ce99f98bb5 LED Matrix: suspend code (#12509) 2021-04-13 19:51:03 +10:00
Dave Vandyke
15f7cc3bde [Keymap] Add kzar keymap for Kinesis Advantage (#12444) 2021-04-13 11:39:39 +02:00
James Young
a8d64c8b89 Change BOOTMAGIC_ENABLE=yes to use Bootmagic Lite (#12172) 2021-04-12 21:18:52 +02:00
QMK Bot
f5aaecfdfc Merge remote-tracking branch 'origin/master' into develop 2021-04-12 18:41:12 +00:00
QMK Bot
ebdf750cdd Merge remote-tracking branch 'origin/master' into develop 2021-04-12 17:56:32 +00:00
QMK Bot
79bdfc1110 Merge remote-tracking branch 'origin/master' into develop 2021-04-11 10:51:12 +00:00
QMK Bot
90875997ac Merge remote-tracking branch 'origin/master' into develop 2021-04-11 10:49:39 +00:00
QMK Bot
f02af23973 Merge remote-tracking branch 'origin/master' into develop 2021-04-11 10:47:14 +00:00
QMK Bot
c9d7a4af45 Merge remote-tracking branch 'origin/master' into develop 2021-04-11 10:45:56 +00:00
QMK Bot
34323ecd8b Merge remote-tracking branch 'origin/master' into develop 2021-04-10 16:34:58 +00:00
QMK Bot
d5a8431af4 Merge remote-tracking branch 'origin/master' into develop 2021-04-10 15:04:12 +00:00
QMK Bot
2e2dd3113b Merge remote-tracking branch 'origin/master' into develop 2021-04-10 13:23:47 +00:00
QMK Bot
11e5bb2d8a Merge remote-tracking branch 'origin/master' into develop 2021-04-10 05:58:04 +00:00
QMK Bot
29d537ce7b Merge remote-tracking branch 'origin/master' into develop 2021-04-10 00:38:17 +00:00
QMK Bot
688fb1999b Merge remote-tracking branch 'origin/master' into develop 2021-04-09 21:36:55 +00:00
QMK Bot
bcfa3fb9f2 Merge remote-tracking branch 'origin/master' into develop 2021-04-09 21:32:31 +00:00
QMK Bot
58afb87288 Merge remote-tracking branch 'origin/master' into develop 2021-04-09 19:05:51 +00:00
QMK Bot
0a453194e8 Merge remote-tracking branch 'origin/master' into develop 2021-04-09 18:49:03 +00:00
QMK Bot
3190c2f98d Merge remote-tracking branch 'origin/master' into develop 2021-04-09 02:42:00 +00:00
QMK Bot
d4b3d00d88 Merge remote-tracking branch 'origin/master' into develop 2021-04-08 16:48:07 +00:00
QMK Bot
15674d0259 Merge remote-tracking branch 'origin/master' into develop 2021-04-08 04:16:47 +00:00
QMK Bot
52e8875eba Merge remote-tracking branch 'origin/master' into develop 2021-04-07 13:58:12 +00:00
Ryan
40c314fe5c LED Matrix: Implement CIE1931 curve (#12417) 2021-04-07 20:06:11 +10:00
QMK Bot
69bc465ace Merge remote-tracking branch 'origin/master' into develop 2021-04-07 10:04:21 +00:00
Nick Brassel
96acb499d2 Fix up builds that are now too big for develop branch. (#12495) 2021-04-06 16:39:31 +10:00
Nick Brassel
64a0f5a659 Add support for producing UF2-format binaries. (#12435)
* First stab at enabling builds of UF2-format binaries.

* Add description on producing a UF2 file.
2021-04-06 16:39:15 +10:00
QMK Bot
3ce8c9fc8f Merge remote-tracking branch 'origin/master' into develop 2021-04-04 09:10:07 +00:00
QMK Bot
8428cedc83 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 19:43:05 +00:00
QMK Bot
9bedc6300d Merge remote-tracking branch 'origin/master' into develop 2021-04-03 16:29:37 +00:00
QMK Bot
cc4066189a Merge remote-tracking branch 'origin/master' into develop 2021-04-03 16:16:12 +00:00
github-actions[bot]
733c861052 Format code according to conventions (#12467)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-04-03 08:35:26 -07:00
QMK Bot
dd7f18f65f Merge remote-tracking branch 'origin/master' into develop 2021-04-03 15:29:28 +00:00
QMK Bot
e90ec6a474 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 13:51:51 +00:00
fauxpark
638cc50727 Merge remote-tracking branch 'upstream/master' into develop 2021-04-03 20:15:54 +11:00
QMK Bot
1444ebb7f1 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 06:20:42 +00:00
QMK Bot
028a0dcd3d Merge remote-tracking branch 'origin/master' into develop 2021-04-03 05:12:49 +00:00
QMK Bot
655927ab15 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 05:06:28 +00:00
QMK Bot
051e23c782 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 04:45:06 +00:00
QMK Bot
887d0fca0e Merge remote-tracking branch 'origin/master' into develop 2021-04-03 04:21:01 +00:00
QMK Bot
358b040157 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 04:18:44 +00:00
QMK Bot
184c553cab Merge remote-tracking branch 'origin/master' into develop 2021-04-03 03:59:15 +00:00
QMK Bot
fc8495a744 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 03:57:51 +00:00
QMK Bot
428e9e7886 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 03:48:53 +00:00
QMK Bot
d475f04c78 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 03:44:40 +00:00
QMK Bot
39e1b5b962 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 02:04:56 +00:00
QMK Bot
c375ae3ec7 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 02:03:00 +00:00
QMK Bot
f561b857f2 Merge remote-tracking branch 'origin/master' into develop 2021-04-03 00:52:10 +00:00
Ryan
8880e89bcd Big quantum_keycodes cleanup (#12249) 2021-04-02 17:45:56 -07:00
QMK Bot
4c981953ac Merge remote-tracking branch 'origin/master' into develop 2021-04-03 00:26:01 +00:00
QMK Bot
41723340de Merge remote-tracking branch 'origin/master' into develop 2021-04-02 21:45:17 +00:00
QMK Bot
56560a859b Merge remote-tracking branch 'origin/master' into develop 2021-04-02 21:26:07 +00:00
QMK Bot
65fab0ef5b Merge remote-tracking branch 'origin/master' into develop 2021-04-02 21:24:42 +00:00
QMK Bot
6e531d0ccc Merge remote-tracking branch 'origin/master' into develop 2021-04-02 10:45:01 +00:00
QMK Bot
c1ea97e15d Merge remote-tracking branch 'origin/master' into develop 2021-04-01 01:59:03 +00:00
QMK Bot
da51302345 Merge remote-tracking branch 'origin/master' into develop 2021-03-31 13:09:34 +00:00
Michael Stapelberg
9d3b11d485 add kinesis/kint36 (#10171)
This moves the config_common.h into the files that include ../config.h,
so that the kint36/config.h does not include it (which would cause
compilation errors).
2021-03-31 10:41:41 +11:00
QMK Bot
a8889718aa Merge remote-tracking branch 'origin/master' into develop 2021-03-30 23:17:00 +00:00
QMK Bot
1704eb16cd Merge remote-tracking branch 'origin/master' into develop 2021-03-30 22:34:06 +00:00
Michael Stapelberg
e95a4f4f52 core: add pin_defs for MK66F18 (#12419)
This is in preparation for https://github.com/qmk/qmk_firmware/pull/10171
2021-03-30 21:11:40 +11:00
QMK Bot
c738d60cef Merge remote-tracking branch 'origin/master' into develop 2021-03-29 03:46:52 +00:00
Ryan
2ae38e9c43 LED Matrix: Config functions (#12361) 2021-03-28 17:59:44 +11:00
QMK Bot
0d1162f180 Merge remote-tracking branch 'origin/master' into develop 2021-03-27 15:56:21 +00:00
QMK Bot
ea472b46c9 Merge remote-tracking branch 'origin/master' into develop 2021-03-27 08:04:42 +00:00
QMK Bot
76f8e84edd Merge remote-tracking branch 'origin/master' into develop 2021-03-26 17:58:46 +00:00
QMK Bot
3d957a33fa Merge remote-tracking branch 'origin/master' into develop 2021-03-26 12:37:54 +00:00
QMK Bot
0eb36b5e9a Merge remote-tracking branch 'origin/master' into develop 2021-03-26 02:22:03 +00:00
github-actions[bot]
67252c246c Format code according to conventions (#12381)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-03-25 23:44:37 +11:00
Oleg Senchenko
b05565f368 Fix connection issue in split keyboards when slave and OLED display are connected via I2C, fix #9335 (#11487)
* In split keyboards fix connection issue when slave and OLED are connected via I2C. Fix #9335

* Revert "In split keyboards fix connection issue when slave and OLED are connected via I2C. Fix #9335"

This reverts commit 3ee639e1f3.

* In split keyboards fix connection issue when slave and OLED are connected via I2C. Fix #9335

* Update drivers/oled/oled_driver.c

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

Co-authored-by: osenchenko <osechenko@chiefmate.io>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2021-03-25 23:42:25 +11:00
QMK Bot
e2b652d95f Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:41:48 +00:00
QMK Bot
56dee4acc6 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:40:23 +00:00
QMK Bot
d0d77e8c60 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:39:14 +00:00
Liyang HU
3143846ba4 keyboards/xd60/readme.md: link to schematic on EasyEDA (#12018) 2021-03-25 23:38:54 +11:00
QMK Bot
25f1a3d759 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:20:42 +00:00
QMK Bot
5a0be4c6d8 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:14:17 +00:00
QMK Bot
2df1b124a7 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:11:36 +00:00
QMK Bot
f2729e8974 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:08:38 +00:00
QMK Bot
aa85b5ee1e Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:05:42 +00:00
QMK Bot
fd24546787 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:04:35 +00:00
QMK Bot
9294c5aa0a Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:03:24 +00:00
QMK Bot
712c9fc848 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:02:24 +00:00
QMK Bot
96a6214316 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 12:01:35 +00:00
QMK Bot
d2b405066d Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:55:36 +00:00
QMK Bot
ea1ed13bc8 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:53:33 +00:00
QMK Bot
6ad0b004fa Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:52:32 +00:00
QMK Bot
c3483458fe Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:51:33 +00:00
QMK Bot
ba5aacbb95 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:50:49 +00:00
QMK Bot
a2165b38a0 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:49:40 +00:00
QMK Bot
e86b7d0c13 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:47:36 +00:00
QMK Bot
5bc5921af4 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:46:26 +00:00
QMK Bot
76db2bb39b Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:44:56 +00:00
QMK Bot
a3760c0891 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:39:24 +00:00
QMK Bot
a747ef966b Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:38:44 +00:00
QMK Bot
87f6df0655 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:36:57 +00:00
QMK Bot
25b7a5d531 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:36:29 +00:00
QMK Bot
c7436e667d Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:35:49 +00:00
QMK Bot
183dde75de Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:35:06 +00:00
QMK Bot
8086837f69 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:34:28 +00:00
XScorpion2
ff41c22fdc Adding keyboard level weak function for slave matrix scan (#12317) 2021-03-25 22:33:18 +11:00
QMK Bot
2f6236d1ea Merge remote-tracking branch 'origin/master' into develop 2021-03-25 11:31:17 +00:00
QMK Bot
921f1ba4cf Merge remote-tracking branch 'origin/master' into develop 2021-03-25 07:06:41 +00:00
QMK Bot
1bb04ea598 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 05:29:33 +00:00
QMK Bot
600fc8be2b Merge remote-tracking branch 'origin/master' into develop 2021-03-25 03:34:00 +00:00
QMK Bot
c823160d94 Merge remote-tracking branch 'origin/master' into develop 2021-03-25 01:33:46 +00:00
QMK Bot
d6b18ebfe7 Merge remote-tracking branch 'origin/master' into develop 2021-03-24 19:47:14 +00:00
QMK Bot
b515651feb Merge remote-tracking branch 'origin/master' into develop 2021-03-24 19:39:16 +00:00
QMK Bot
0dc0516f0c Merge remote-tracking branch 'origin/master' into develop 2021-03-24 16:27:28 +00:00
QMK Bot
743d6c430b Merge remote-tracking branch 'origin/master' into develop 2021-03-24 10:13:37 +00:00
QMK Bot
87aa3282f0 Merge remote-tracking branch 'origin/master' into develop 2021-03-24 09:07:46 +00:00
QMK Bot
bbc48b0ef5 Merge remote-tracking branch 'origin/master' into develop 2021-03-24 04:25:05 +00:00
Ryan
bd18405cf0 LED Matrix: Fix up eeconfig code (#12327) 2021-03-24 13:09:56 +11:00
QMK Bot
dd5a732eac Merge remote-tracking branch 'origin/master' into develop 2021-03-24 02:04:16 +00:00
QMK Bot
862b01d4c0 Merge remote-tracking branch 'origin/master' into develop 2021-03-24 02:00:40 +00:00
QMK Bot
9afbbf21fd Merge remote-tracking branch 'origin/master' into develop 2021-03-23 18:19:00 +00:00
QMK Bot
b2cfb629e4 Merge remote-tracking branch 'origin/master' into develop 2021-03-23 15:11:57 +00:00
QMK Bot
34423580e0 Merge remote-tracking branch 'origin/master' into develop 2021-03-23 07:01:25 +00:00
QMK Bot
e6d83644e8 Merge remote-tracking branch 'origin/master' into develop 2021-03-23 01:59:02 +00:00
QMK Bot
fe58770df8 Merge remote-tracking branch 'origin/master' into develop 2021-03-21 02:43:41 +00:00
Donald Kjer
00a0c81f8e Durgod keyboard refactor in preparation for adding additional durgod keyboards (#11978)
* Durgod keyboard refactor in preparation for adding additional durgod keyboards

* Moving Durgod board configuration into a common location
* Reformatting layout macro whitespace
* Moving TGUI key functionality to the keyboard level
* Replacing default keymap.c with keymap.json
* Changing default and default_toggle_mac_windows keymaps to LAYOUT_all
* Increasing EEPROM size to support more VIA layers
* Fixing media keys; KC_MRWD/KC_MFFD => KC_MPRV/KC_NXT

* Move ISO Enter key to the correct row in Durgod K320

* Minor whitespace and readme cleanup for K320

* Changing durgod/k320 debounce back to default

* Simplifying DURGOD_STM32_F070's chconf.h

Co-authored-by: Simon Arlott <sa.me.uk>
Co-authored-by: Tyler Tidman <tyler.tidman@draak.ca>
2021-03-21 11:11:22 +11:00
QMK Bot
945b7a0613 Merge remote-tracking branch 'origin/master' into develop 2021-03-20 03:53:28 +00:00
Ryan
ed28795651 LED Matrix: Additional common_features.mk tweaks (#12187) 2021-03-20 14:52:33 +11:00
QMK Bot
9d547a8443 Merge remote-tracking branch 'origin/master' into develop 2021-03-20 00:13:10 +00:00
QMK Bot
c2dc3008b5 Merge remote-tracking branch 'origin/master' into develop 2021-03-19 19:37:22 +00:00
github-actions[bot]
32f0567ca5 Format code according to conventions (#12292)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-03-19 16:24:36 +00:00
Xelus22
6f7466b6dd ARM WS2812 SPI config (baudrate and circular buffer) (#12216)
* initial commit

* include circular buffer command

* add endif

* circular buffer mode

* remove untrue comment

* revamp and add documentation

* do not allow WS2812_SPI_SYNC & CIRCULAR_BUFFER
2021-03-19 19:29:18 +11:00
Zach White
f2715a0593 Consistently use bin/qmk when that script is called (#12286)
* Pass QMK_BIN down to build_keyboard.mk

* choose the correct qmk script
2021-03-18 16:10:40 -07:00
QMK Bot
90b1e271a8 Merge remote-tracking branch 'origin/master' into develop 2021-03-18 17:25:01 +00:00
QMK Bot
d97a9fb4ff Merge remote-tracking branch 'origin/master' into develop 2021-03-18 14:26:24 +00:00
QMK Bot
6d050b7282 Merge remote-tracking branch 'origin/master' into develop 2021-03-18 13:17:59 +00:00
QMK Bot
74c89de3e9 Merge remote-tracking branch 'origin/master' into develop 2021-03-18 03:38:43 +00:00
QMK Bot
af5c10ef0c Merge remote-tracking branch 'origin/master' into develop 2021-03-18 01:29:25 +00:00
QMK Bot
4aa57e9e46 Merge remote-tracking branch 'origin/master' into develop 2021-03-18 00:48:52 +00:00
QMK Bot
d0c2f3c403 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 22:33:49 +00:00
QMK Bot
31b657e8ea Merge remote-tracking branch 'origin/master' into develop 2021-03-17 17:08:39 +00:00
QMK Bot
3367705ac2 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 17:02:38 +00:00
QMK Bot
6671344602 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 16:44:59 +00:00
XScorpion2
60837c9d0f [Keyboard] Split RGB Matrix Zygomorph support (#11083) 2021-03-16 23:56:39 -07:00
QMK Bot
d4ac56226d Merge remote-tracking branch 'origin/master' into develop 2021-03-17 06:50:58 +00:00
QMK Bot
29589ce832 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 06:48:33 +00:00
QMK Bot
5e7a7c7e2f Merge remote-tracking branch 'origin/master' into develop 2021-03-17 06:47:59 +00:00
QMK Bot
71b38e0cee Merge remote-tracking branch 'origin/master' into develop 2021-03-17 06:32:31 +00:00
QMK Bot
8c00003466 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 06:23:19 +00:00
QMK Bot
33852d14af Merge remote-tracking branch 'origin/master' into develop 2021-03-17 06:18:20 +00:00
QMK Bot
6bc4528776 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 06:01:16 +00:00
QMK Bot
b4b3be4f05 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 04:58:19 +00:00
QMK Bot
6817771df7 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 04:57:18 +00:00
QMK Bot
ed8ffa4bb4 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 03:10:20 +00:00
QMK Bot
3c92142f12 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 03:06:02 +00:00
QMK Bot
c680c84a31 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 02:50:20 +00:00
QMK Bot
da752e5d7d Merge remote-tracking branch 'origin/master' into develop 2021-03-17 02:44:50 +00:00
QMK Bot
cefa23e4eb Merge remote-tracking branch 'origin/master' into develop 2021-03-17 02:24:08 +00:00
QMK Bot
07ea935533 Merge remote-tracking branch 'origin/master' into develop 2021-03-17 01:39:42 +00:00
Michael Stapelberg
1d341ffbb0 core: add support for MK66F18 (Teensy 3.6) micro controller (#12258)
This is in preparation for https://github.com/qmk/qmk_firmware/pull/10171
2021-03-17 06:45:21 +11:00
QMK Bot
319031154d Merge remote-tracking branch 'origin/master' into develop 2021-03-16 07:01:35 +00:00
QMK Bot
2defbde5ab Merge remote-tracking branch 'origin/master' into develop 2021-03-15 23:10:08 +00:00
QMK Bot
c12eae0c5e Merge remote-tracking branch 'origin/master' into develop 2021-03-15 23:03:53 +00:00
QMK Bot
56d193c5c8 Merge remote-tracking branch 'origin/master' into develop 2021-03-15 17:42:47 +00:00
QMK Bot
c3a2a7659e Merge remote-tracking branch 'origin/master' into develop 2021-03-15 08:25:35 +00:00
QMK Bot
8b9419aaf7 Merge remote-tracking branch 'origin/master' into develop 2021-03-15 08:07:38 +00:00
QMK Bot
2f59e1c1d9 Merge remote-tracking branch 'origin/master' into develop 2021-03-15 01:21:48 +00:00
QMK Bot
998c58e89b Merge remote-tracking branch 'origin/master' into develop 2021-03-15 01:19:36 +00:00
QMK Bot
35db567c9c Merge remote-tracking branch 'origin/master' into develop 2021-03-14 21:51:52 +00:00
QMK Bot
93929e8d01 Merge remote-tracking branch 'origin/master' into develop 2021-03-14 20:19:39 +00:00
QMK Bot
75867ff164 Merge remote-tracking branch 'origin/master' into develop 2021-03-14 20:17:43 +00:00
QMK Bot
78be537eff Merge remote-tracking branch 'origin/master' into develop 2021-03-14 19:56:33 +00:00
QMK Bot
d036ebeaf6 Merge remote-tracking branch 'origin/master' into develop 2021-03-14 19:24:07 +00:00
Ryan
f236395176 LED Matrix: Clean up includes (#12197) 2021-03-13 11:38:26 +11:00
QMK Bot
5590c40b5b Merge remote-tracking branch 'origin/master' into develop 2021-03-13 00:38:14 +00:00
QMK Bot
71bb07d10a Merge remote-tracking branch 'origin/master' into develop 2021-03-12 22:38:13 +00:00
QMK Bot
e83f4e0173 Merge remote-tracking branch 'origin/master' into develop 2021-03-12 21:58:40 +00:00
QMK Bot
0ee473afd1 Merge remote-tracking branch 'origin/master' into develop 2021-03-12 21:50:57 +00:00
QMK Bot
f279f4731b Merge remote-tracking branch 'origin/master' into develop 2021-03-12 21:48:20 +00:00
QMK Bot
d95df57297 Merge remote-tracking branch 'origin/master' into develop 2021-03-12 07:44:20 +00:00
QMK Bot
71f8f5048b Merge remote-tracking branch 'origin/master' into develop 2021-03-12 07:04:21 +00:00
QMK Bot
183c49f352 Merge remote-tracking branch 'origin/master' into develop 2021-03-12 06:34:50 +00:00
QMK Bot
97268662fe Merge remote-tracking branch 'origin/master' into develop 2021-03-11 18:02:34 +00:00
QMK Bot
b113772bb1 Merge remote-tracking branch 'origin/master' into develop 2021-03-10 22:48:53 +00:00
Joel Challis
40c7ecfdea Move gpio wait logic to wait.h (#12067) 2021-03-10 22:47:36 +00:00
Ryan
2e24cfadb7 Remove FUNC() (#12161) 2021-03-11 05:21:28 +11:00
QMK Bot
bb01ea3809 Merge remote-tracking branch 'origin/master' into develop 2021-03-10 05:18:14 +00:00
QMK Bot
25ec655162 Merge remote-tracking branch 'origin/master' into develop 2021-03-09 21:37:12 +00:00
QMK Bot
4496983233 Merge remote-tracking branch 'origin/master' into develop 2021-03-09 18:37:19 +00:00
QMK Bot
7b91af780a Merge remote-tracking branch 'origin/master' into develop 2021-03-09 16:07:25 +00:00
Ryan
9155b59e1a LED Matrix: decouple from Backlight (#12054) 2021-03-08 16:55:00 +11:00
Zach White
b0069c5c05 Begin the process of deprecating bin/qmk in favor of the global cli (#12109)
* Begin the process of deprecating bin/qmk in favor of the global cli

* Correctly set the qmk bin
2021-03-07 19:10:03 -08:00
QMK Bot
7d45b7f269 Merge remote-tracking branch 'origin/master' into develop 2021-03-07 23:34:13 +00:00
QMK Bot
43b47495e3 Merge remote-tracking branch 'origin/master' into develop 2021-03-07 20:20:33 +00:00
Zach White
b15288fb87 trivial change to trigger api update 2021-03-07 12:01:13 -08:00
QMK Bot
e6e572bf5c Merge remote-tracking branch 'origin/master' into develop 2021-03-07 16:15:38 +00:00
QMK Bot
37d1fa53e0 Merge remote-tracking branch 'origin/master' into develop 2021-03-07 06:40:08 +00:00
QMK Bot
f48d95b415 Merge remote-tracking branch 'origin/master' into develop 2021-03-07 05:26:50 +00:00
QMK Bot
5fb16e3442 Merge remote-tracking branch 'origin/master' into develop 2021-03-07 05:22:57 +00:00
QMK Bot
d170a1c0e2 Merge remote-tracking branch 'origin/master' into develop 2021-03-07 05:18:28 +00:00
QMK Bot
fbd6b28633 Merge remote-tracking branch 'origin/master' into develop 2021-03-06 23:57:11 +00:00
QMK Bot
56d5131715 Merge remote-tracking branch 'origin/master' into develop 2021-03-06 23:13:57 +00:00
QMK Bot
bee226b3ee Merge remote-tracking branch 'origin/master' into develop 2021-03-06 21:04:21 +00:00
QMK Bot
6e19dbc923 Merge remote-tracking branch 'origin/master' into develop 2021-03-06 18:57:16 +00:00
QMK Bot
cde4165097 Merge remote-tracking branch 'origin/master' into develop 2021-03-06 08:50:30 +00:00
QMK Bot
c375a8d75b Merge remote-tracking branch 'origin/master' into develop 2021-03-06 06:45:23 +00:00
Drashna Jaelre
b7f2f40ae5 Set default OLED Update Interval for Split Keyboards (#12107)
Because the matrix scanning is slower for splits, in general,
the frequent updating of the OLEDs can slow down the matrix scanning.
To help prevent that, set the update interval for the OLEDs to not
update as frequently.
2021-03-05 16:26:57 -08:00
QMK Bot
6e938f1f24 Merge remote-tracking branch 'origin/master' into develop 2021-03-05 22:23:19 +00:00
QMK Bot
e1ce619bf7 Merge remote-tracking branch 'origin/master' into develop 2021-03-05 20:26:58 +00:00
QMK Bot
3acb3a09fc Merge remote-tracking branch 'origin/master' into develop 2021-03-05 18:43:45 +00:00
QMK Bot
7ca9604422 Merge remote-tracking branch 'origin/master' into develop 2021-03-05 18:30:41 +00:00
QMK Bot
ebfd555ad1 Merge remote-tracking branch 'origin/master' into develop 2021-03-05 18:26:10 +00:00
QMK Bot
f8f2cf7500 Merge remote-tracking branch 'origin/master' into develop 2021-03-05 18:04:50 +00:00
QMK Bot
cc6cd394e5 Merge remote-tracking branch 'origin/master' into develop 2021-03-05 05:16:14 +00:00
QMK Bot
7e051e0619 Merge remote-tracking branch 'origin/master' into develop 2021-03-05 04:25:54 +00:00
QMK Bot
a71fb6057d Merge remote-tracking branch 'origin/master' into develop 2021-03-04 23:04:36 +00:00
QMK Bot
474cffbc0f Merge remote-tracking branch 'origin/master' into develop 2021-03-04 23:00:06 +00:00
QMK Bot
4fcc709f4e Merge remote-tracking branch 'origin/master' into develop 2021-03-04 19:08:37 +00:00
QMK Bot
01c5ee6f7d Merge remote-tracking branch 'origin/master' into develop 2021-03-04 18:16:03 +00:00
QMK Bot
8f54152fab Merge remote-tracking branch 'origin/master' into develop 2021-03-04 15:20:45 +00:00
QMK Bot
54f6ff3bd5 Merge remote-tracking branch 'origin/master' into develop 2021-03-04 04:10:10 +00:00
QMK Bot
d3092ced99 Merge remote-tracking branch 'origin/master' into develop 2021-03-04 01:02:37 +00:00
Nick Brassel
6c3af2670e Fixup line endings. 2021-03-04 10:35:02 +11:00
QMK Bot
6a4960889e Merge remote-tracking branch 'origin/master' into develop 2021-03-03 21:33:06 +00:00
QMK Bot
064265166c Merge remote-tracking branch 'origin/master' into develop 2021-03-03 21:32:18 +00:00
QMK Bot
9f6ce448bd Merge remote-tracking branch 'origin/master' into develop 2021-03-03 21:15:31 +00:00
QMK Bot
c26344fc93 Merge remote-tracking branch 'origin/master' into develop 2021-03-03 20:38:58 +00:00
QMK Bot
4235160dcf Merge remote-tracking branch 'origin/master' into develop 2021-03-03 20:37:52 +00:00
QMK Bot
73120947cf Merge remote-tracking branch 'origin/master' into develop 2021-03-03 20:28:54 +00:00
QMK Bot
5762bc4a5f Merge remote-tracking branch 'origin/master' into develop 2021-03-03 18:52:36 +00:00
Drashna Jaelre
41933efbf0 [Keyboard] Enable RGB Matrix for Corne (#12091) 2021-03-03 10:38:21 -08:00
Sergey Vlasov
18a333ec6b Add support for complementary outputs to the WS2812 PWM driver (#11988) 2021-03-02 20:26:06 -08:00
QMK Bot
8f5d2e546e Merge remote-tracking branch 'origin/master' into develop 2021-03-03 04:07:13 +00:00
QMK Bot
4132dd87a4 Merge remote-tracking branch 'origin/master' into develop 2021-03-03 02:59:37 +00:00
github-actions[bot]
d950b97115 Format code according to conventions (#12088)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-03-03 07:54:11 +11:00
XScorpion2
cde2859a65 Split RGB Matrix (#11055)
* Split RGB Matrix

* Suspend State sync for rgb matrix
2021-03-03 07:32:15 +11:00
QMK Bot
967d7c47dc Merge remote-tracking branch 'origin/master' into develop 2021-03-02 14:33:32 +00:00
QMK Bot
4c04c848b5 Merge remote-tracking branch 'origin/master' into develop 2021-03-02 14:32:29 +00:00
QMK Bot
27d2fb88ca Merge remote-tracking branch 'origin/master' into develop 2021-03-02 05:29:53 +00:00
QMK Bot
de585e3109 Merge remote-tracking branch 'origin/master' into develop 2021-03-02 04:34:43 +00:00
QMK Bot
e662de94f6 Merge remote-tracking branch 'origin/master' into develop 2021-03-02 03:10:19 +00:00
QMK Bot
4fedf6efbd Merge remote-tracking branch 'origin/master' into develop 2021-03-02 01:18:42 +00:00
QMK Bot
1beb6b686a Merge remote-tracking branch 'origin/master' into develop 2021-03-01 19:57:19 +00:00
github-actions[bot]
50290c78b6 Format code according to conventions (#12076)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-03-01 18:08:18 +00:00
Drashna Jaelre
0e984b6e7e Add ability to toggle One Shot functionality (#4198)
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-03-01 08:57:02 -08:00
QMK Bot
86f6f68274 Merge remote-tracking branch 'origin/master' into develop 2021-03-01 05:04:27 +00:00
QMK Bot
93a1d4f156 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 21:25:41 +00:00
QMK Bot
80e8e20a89 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 20:19:42 +00:00
QMK Bot
0efafdd408 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 20:12:15 +00:00
QMK Bot
3718f5149a Merge remote-tracking branch 'origin/master' into develop 2021-02-28 16:16:16 +00:00
QMK Bot
3b8ca5f343 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 16:01:51 +00:00
github-actions[bot]
b2f5bd7c60 Format code according to conventions (#12056)
Co-authored-by: QMK Bot <hello@qmk.fm>
2021-02-28 15:53:54 +00:00
Joel Challis
5ba4391cf2 Refactor of USB code within split_common (#11890)
* Initial refactor of usb code within split_common

* Add headers

* Correct disable condition

* Format

* Align func name
2021-02-28 15:52:58 +00:00
Joel Challis
415a8bc249 ARM - Refactor SLEEP_LED to support more platforms (#8403)
* Initial refactor of ARM SLEEP_LED to enable more platforms

* fix build issues

* Disable SLEEP_LED for boards with no caps lock code

* Enable GPT14 for boards with caps lock code and SLEEP_LED enabled

* Enable GPT for boards with caps lock code and SLEEP_LED enabled
2021-02-28 15:52:43 +00:00
Joel Challis
a3cbc8a004 Overhaul bootmagic logic to have single entrypoint (#8532)
* Relocate bootmagic logic to have single entrypoint

* Align init of layer state
2021-02-28 15:50:15 +00:00
QMK Bot
02dc3b6722 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:16:09 +00:00
QMK Bot
0f084751b4 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:13:59 +00:00
QMK Bot
d57b44153e Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:13:24 +00:00
QMK Bot
fcf1ec132f Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:12:24 +00:00
QMK Bot
4a31d0a9c9 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:11:35 +00:00
QMK Bot
656c39909a Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:10:56 +00:00
QMK Bot
70bdf25284 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:10:13 +00:00
QMK Bot
15af423d86 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:08:29 +00:00
QMK Bot
8428dee47e Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:07:06 +00:00
QMK Bot
cf8097138e Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:05:14 +00:00
QMK Bot
c4c3e774cd Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:04:19 +00:00
QMK Bot
a19363ab25 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:03:04 +00:00
QMK Bot
b6a39f61e5 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 06:02:30 +00:00
QMK Bot
13d44a2281 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:57:31 +00:00
QMK Bot
fad596a159 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:51:25 +00:00
QMK Bot
55d85b89c0 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:50:33 +00:00
QMK Bot
43bd843f37 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:44:26 +00:00
QMK Bot
85dd0556d7 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:42:46 +00:00
QMK Bot
e86e7c351d Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:39:17 +00:00
QMK Bot
c2f446f40e Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:38:43 +00:00
QMK Bot
d9d03d5af8 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:36:34 +00:00
QMK Bot
b64fd093ad Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:32:12 +00:00
QMK Bot
bd4b7f8b25 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:30:56 +00:00
QMK Bot
93d3cf52ab Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:04:17 +00:00
QMK Bot
33c7d6eb93 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 05:00:12 +00:00
QMK Bot
9525d5b5ae Merge remote-tracking branch 'origin/master' into develop 2021-02-28 04:54:08 +00:00
QMK Bot
00cb9029f5 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 04:48:45 +00:00
QMK Bot
72abf86870 Merge remote-tracking branch 'origin/master' into develop 2021-02-28 00:17:42 +00:00
QMK Bot
605fd0eda8 Merge remote-tracking branch 'origin/master' into develop 2021-02-27 23:26:10 +00:00
QMK Bot
4db695f932 Merge remote-tracking branch 'origin/master' into develop 2021-02-27 22:36:14 +00:00
QMK Bot
89936c66b0 Merge remote-tracking branch 'origin/master' into develop 2021-02-27 22:34:01 +00:00
QMK Bot
37690f2651 Merge remote-tracking branch 'origin/master' into develop 2021-02-27 22:21:12 +00:00
QMK Bot
6ae72f3980 Merge remote-tracking branch 'origin/master' into develop 2021-02-27 22:08:25 +00:00
QMK Bot
06071dc76d Merge remote-tracking branch 'origin/master' into develop 2021-02-27 22:02:34 +00:00
James Young
c7a7982e23 Branch point for 2021 May 29 Breaking Change 2021-02-27 12:54:23 -08:00
5790 changed files with 63824 additions and 37544 deletions

1
.github/labeler.yml vendored
View File

@@ -22,7 +22,6 @@ keymap:
via:
- keyboards/**/keymaps/via/*
cli:
- bin/qmk
- requirements.txt
- lib/python/**/*
python:

View File

@@ -12,7 +12,7 @@ on:
jobs:
api_data:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'

View File

@@ -8,7 +8,6 @@ on:
pull_request:
paths:
- 'lib/python/**'
- 'bin/qmk'
- 'requirements.txt'
- '.github/workflows/cli.yml'
@@ -16,7 +15,7 @@ jobs:
test:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2
@@ -25,4 +24,4 @@ jobs:
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests
run: bin/qmk pytest
run: qmk pytest

View File

@@ -12,7 +12,7 @@ on:
jobs:
api_data:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
# protect against those who work in their fork on develop
if: github.repository == 'qmk/qmk_firmware'

View File

@@ -14,7 +14,7 @@ on:
jobs:
generate:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
# protect against those who develop with their fork on master
if: github.repository == 'qmk/qmk_firmware'

View File

@@ -16,7 +16,7 @@ jobs:
lint:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
steps:
- uses: rlespinasse/github-slug-action@v3.x
@@ -31,12 +31,12 @@ jobs:
output: ' '
fileOutput: ' '
- name: Run qmk cformat and qmk pyformat
- name: Run qmk format-c and qmk format-python
shell: 'bash {0}'
run: |
qmk cformat --core-only -n $(< ~/files.txt)
cformat_exit=$?
qmk pyformat -n
pyformat_exit=$?
qmk format-c --core-only -n $(< ~/files.txt)
format_c_exit=$?
qmk format-python -n
format_python_exit=$?
exit $((cformat_exit + pyformat_exit))
exit $((format_c_exit + format_python_exit))

View File

@@ -9,7 +9,7 @@ jobs:
lint:
runs-on: ubuntu-latest
container: qmkfm/base_container
container: qmkfm/qmk_cli
steps:
- uses: actions/checkout@v2

1
.gitignore vendored
View File

@@ -20,7 +20,6 @@
api_data/v1
doxygen/
quantum/version.h
!quantum/tools/eeprom_reset.hex
*.bin
*.eep
*.hex

View File

@@ -1,24 +0,0 @@
# Code Of Conduct
QMK strives to be an inclusive, tolerant, and welcoming community. We encourage participation from anyone regardless of age, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, political belief, race, religion, or sexual identity and orientation.
> “A gentle word turns away wrath, but a harsh word stirs up anger."
Our users, contributors, and collaborators are expected to treat each other with kindness and respect, to assume good intentions, and to gently correct, where possible, rather than react with escalation. While our goal is to be as accurate as possible, kindness and understanding are more valuable than correctness. Some examples of behavior we will not tolerate include, but is not limited to:
* The use of sexualized language or imagery
* Unwelcome advances, sexual or otherwise
* Deliberate intimidation, stalking, or following
* Insults or derogatory comments, or personal or political attacks
* Publishing others private information without explicit permission
* Sustained disruption of talks or other events
* Other conduct which could reasonably be considered inappropriate in a professional setting
* Advocating for, or encouraging, any of the above behaviour
# Reporting
If someone is violating this Code of Conduct, please email hello@qmk.fm or reach out to one of the Collaborators to bring it to our attention. All complaints will be reviewed and investigated.
QMK will seek to use the least punitive means available to resolve an issue. If the circumstances require asking an offender to leave, we will do that.
Reports will be taken and kept in strict confidence. You will not be required to confront an offender directly.

View File

@@ -1,7 +1,6 @@
FROM qmkfm/base_container
FROM qmkfm/qmk_cli
VOLUME /qmk_firmware
WORKDIR /qmk_firmware
COPY . .
CMD make all:default
CMD qmk compile -kb all -km default

View File

@@ -30,11 +30,7 @@ endif
endif
# Determine which qmk cli to use
ifeq (,$(shell which qmk))
QMK_BIN = bin/qmk
else
QMK_BIN = qmk
endif
QMK_BIN := qmk
# avoid 'Entering|Leaving directory' messages
MAKEFLAGS += --no-print-directory
@@ -557,29 +553,14 @@ git-submodule:
git submodule sync --recursive
git submodule update --init --recursive --progress
# Generate the version.h file
ifdef SKIP_GIT
VERSION_H_FLAGS := --skip-git
endif
ifdef SKIP_VERSION
VERSION_H_FLAGS := --skip-all
SKIP_GIT := yes
endif
# Generate the version.h file
ifndef SKIP_GIT
GIT_VERSION := $(shell git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
CHIBIOS_VERSION := $(shell cd lib/chibios && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
CHIBIOS_CONTRIB_VERSION := $(shell cd lib/chibios-contrib && git describe --abbrev=6 --dirty --always --tags 2>/dev/null || date +"%Y-%m-%d-%H:%M:%S")
else
GIT_VERSION := NA
CHIBIOS_VERSION := NA
CHIBIOS_CONTRIB_VERSION := NA
endif
ifndef SKIP_VERSION
BUILD_DATE := $(shell date +"%Y-%m-%d-%H:%M:%S")
else
BUILD_DATE := 2020-01-01-00:00:00
endif
$(shell echo '#define QMK_VERSION "$(GIT_VERSION)"' > $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define QMK_BUILDDATE "$(BUILD_DATE)"' >> $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define CHIBIOS_VERSION "$(CHIBIOS_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
$(shell echo '#define CHIBIOS_CONTRIB_VERSION "$(CHIBIOS_CONTRIB_VERSION)"' >> $(ROOT_DIR)/quantum/version.h)
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o quantum/version.h)
include $(ROOT_DIR)/testlist.mk

6
Vagrantfile vendored
View File

@@ -6,7 +6,7 @@ Vagrant.configure(2) do |config|
config.vm.define "qmk_firmware"
# VMware/Virtualbox ( and also Hyperv/Parallels) 64 bit
config.vm.box = "generic/debian9"
config.vm.box = "generic/debian10"
config.vm.synced_folder '.', '/vagrant'
@@ -68,13 +68,13 @@ Vagrant.configure(2) do |config|
["virtualbox", "vmware_workstation", "vmware_fusion"].each do |type|
config.vm.provider type do |virt, override|
override.vm.provision "docker" do |d|
d.run "qmkfm/base_container",
d.run "qmkfm/qmk_cli",
cmd: "tail -f /dev/null",
args: "--privileged -v /dev:/dev -v '/vagrant:/vagrant'"
end
override.vm.provision "shell", inline: <<-SHELL
echo 'docker restart qmkfm-base_container && exec docker exec -it qmkfm-base_container /bin/bash -l' >> ~vagrant/.bashrc
echo 'docker restart qmkfm-qmk_cli && exec docker exec -it qmkfm-qmk_cli /bin/bash -l' >> ~vagrant/.bashrc
SHELL
end
end

58
bin/qmk
View File

@@ -1,58 +0,0 @@
#!/usr/bin/env python3
"""CLI wrapper for running QMK commands.
"""
import os
import sys
from pathlib import Path
# Add the QMK python libs to our path
script_dir = Path(os.path.realpath(__file__)).parent
qmk_dir = script_dir.parent
python_lib_dir = Path(qmk_dir / 'lib' / 'python').resolve()
sys.path.append(str(python_lib_dir))
# Setup the CLI
import milc # noqa
milc.EMOJI_LOGLEVELS['INFO'] = '{fg_blue}Ψ{style_reset_all}'
@milc.cli.entrypoint('QMK Helper Script')
def qmk_main(cli):
"""The function that gets run when no subcommand is provided.
"""
cli.print_help()
def main():
"""Setup our environment and then call the CLI entrypoint.
"""
# Change to the root of our checkout
os.environ['ORIG_CWD'] = os.getcwd()
os.environ['DEPRECATED_BIN_QMK'] = '1'
os.chdir(qmk_dir)
print('Warning: The bin/qmk script is being deprecated. Please install the QMK CLI: python3 -m pip install qmk', file=sys.stderr)
# Import the subcommands
import milc.subcommand.config # noqa
import qmk.cli # noqa
# Execute
return_code = milc.cli()
if return_code is False:
exit(1)
elif return_code is not True and isinstance(return_code, int):
if return_code < 0 or return_code > 255:
milc.cli.log.error('Invalid return_code: %d', return_code)
exit(255)
exit(return_code)
exit(0)
if __name__ == '__main__':
main()

View File

@@ -26,6 +26,7 @@
# atmel-dfu Atmel factory DFU
# lufa-dfu LUFA DFU
# qmk-dfu QMK DFU (LUFA + blinkenlight)
# qmk-hid QMK HID (LUFA + blinkenlight)
# bootloadHID HIDBootFlash compatible (ATmega32A)
# USBasp USBaspLoader (ATmega328P)
# ARM:
@@ -67,6 +68,11 @@ ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
BOOTLOADER_SIZE = 8192
endif
endif
ifeq ($(strip $(BOOTLOADER)), qmk-hid)
OPT_DEFS += -DBOOTLOADER_QMK_HID
OPT_DEFS += -DBOOTLOADER_HID
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
ifeq ($(strip $(MCU)), atmega32u4)

View File

@@ -1,31 +1,17 @@
# Look for a json keymap file
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_5)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_5)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_4)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_4)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_4)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_3)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_3)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_3)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_2)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_2)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_2)
else ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_1)/keymap.json)","")
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $(MAIN_KEYMAP_PATH_1)/keymap.json
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
endif
# Load the keymap-level rules.mk if exists
ifneq ("$(wildcard $(KEYMAP_PATH))", "")
-include $(KEYMAP_PATH)/rules.mk
endif
# Generate the keymap.c
$(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)
$(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON)

View File

@@ -23,6 +23,15 @@ KEYBOARD_OUTPUT := $(BUILD_DIR)/obj_$(KEYBOARD_FILESAFE)
# Force expansion
TARGET := $(TARGET)
ifneq ($(FORCE_LAYOUT),)
TARGET := $(TARGET)_$(FORCE_LAYOUT)
endif
# Object files and generated keymap directory
# To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro!
KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
# For split boards we need to set a master half.
MASTER ?= left
ifdef master
@@ -100,12 +109,13 @@ MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
# Pull in rules from info.json
INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk)
INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_rules.mk)
include $(INFO_RULES_MK)
# Check for keymap.json first, so we can regenerate keymap.c
include build_json.mk
# Pull in keymap level rules.mk
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
# Look through the possible keymap folders until we find a matching keymap.c
ifneq ("$(wildcard $(MAIN_KEYMAP_PATH_5)/keymap.c)","")
@@ -137,16 +147,35 @@ ifeq ("$(wildcard $(KEYMAP_PATH))", "")
endif
endif
# Have we found a keymap.json?
ifneq ("$(wildcard $(KEYMAP_JSON))", "")
KEYMAP_C := $(KEYMAP_OUTPUT)/src/keymap.c
KEYMAP_H := $(KEYMAP_OUTPUT)/src/config.h
# Load the keymap-level rules.mk if exists
-include $(KEYMAP_PATH)/rules.mk
# Load any rules.mk content from keymap.json
INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard $(KEYBOARD) --keymap $(KEYMAP) --output $(KEYMAP_OUTPUT)/src/rules.mk)
include $(INFO_RULES_MK)
# Add rules to generate the keymap files - indentation here is important
$(KEYMAP_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)
$(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON)
$(KEYMAP_OUTPUT)/src/config.h: $(KEYMAP_JSON)
$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --keymap $(KEYMAP) --output $(KEYMAP_H)
generated-files: $(KEYMAP_OUTPUT)/src/config.h $(KEYMAP_OUTPUT)/src/keymap.c
endif
ifeq ($(strip $(CTPC)), yes)
CONVERT_TO_PROTON_C=yes
endif
ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
include platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk
endif
ifneq ($(FORCE_LAYOUT),)
TARGET := $(TARGET)_$(FORCE_LAYOUT)
include platforms/chibios/boards/QMK_PROTON_C/convert_to_proton_c.mk
endif
include quantum/mcu_selection.mk
@@ -232,6 +261,7 @@ ifdef MCU_FAMILY
PLATFORM=CHIBIOS
PLATFORM_KEY=chibios
FIRMWARE_FORMAT?=bin
OPT_DEFS += -DMCU_$(MCU_FAMILY)
else ifdef ARM_ATSAM
PLATFORM=ARM_ATSAM
PLATFORM_KEY=arm_atsam
@@ -316,6 +346,7 @@ ifeq ("$(USER_NAME)","")
endif
USER_PATH := users/$(USER_NAME)
# Pull in user level rules.mk
-include $(USER_PATH)/rules.mk
ifneq ("$(wildcard $(USER_PATH)/config.h)","")
CONFIG_H += $(USER_PATH)/config.h
@@ -327,19 +358,36 @@ endif
# Disable features that a keyboard doesn't support
-include disable_features.mk
# Object files directory
# To put object files in current directory, use a dot (.), do NOT make
# this an empty or blank macro!
KEYMAP_OUTPUT := $(BUILD_DIR)/obj_$(TARGET)
# Pull in post_rules.mk files from all our subfolders
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/post_rules.mk)","")
include $(KEYBOARD_PATH_1)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/post_rules.mk)","")
include $(KEYBOARD_PATH_2)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/post_rules.mk)","")
include $(KEYBOARD_PATH_3)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/post_rules.mk)","")
include $(KEYBOARD_PATH_4)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/post_rules.mk)","")
include $(KEYBOARD_PATH_5)/post_rules.mk
endif
ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H += $(KEYMAP_PATH)/config.h
endif
ifneq ("$(KEYMAP_H)","")
CONFIG_H += $(KEYMAP_H)
endif
# project specific files
SRC += $(KEYBOARD_SRC) \
SRC += \
$(KEYBOARD_SRC) \
$(KEYMAP_C) \
$(QUANTUM_SRC)
$(QUANTUM_SRC) \
$(QUANTUM_DIR)/main.c \
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
@@ -374,6 +422,7 @@ ifneq ($(strip $(PROTOCOL)),)
else
include $(TMK_PATH)/protocol/$(PLATFORM_KEY).mk
endif
-include $(TOP_DIR)/platforms/$(PLATFORM_KEY)/flash.mk
# TODO: remove this bodge?
PROJECT_DEFS := $(OPT_DEFS)

View File

@@ -7,7 +7,6 @@ define SEARCH_LAYOUTS_REPO
LAYOUT_KEYMAP_C := $$(LAYOUT_KEYMAP_PATH)/keymap.c
ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_JSON))","")
-include $$(LAYOUT_KEYMAP_PATH)/rules.mk
KEYMAP_C := $(KEYBOARD_OUTPUT)/src/keymap.c
KEYMAP_JSON := $$(LAYOUT_KEYMAP_JSON)
KEYMAP_PATH := $$(LAYOUT_KEYMAP_PATH)
else ifneq ("$$(wildcard $$(LAYOUT_KEYMAP_C))","")
@@ -31,6 +30,3 @@ ifneq ($(FORCE_LAYOUT),)
endif
$(foreach LAYOUT,$(LAYOUTS),$(eval $(call SEARCH_LAYOUTS)))
# Use rule from build_json.mk, but update prerequisite in case KEYMAP_JSON was updated
$(KEYBOARD_OUTPUT)/src/keymap.c: $(KEYMAP_JSON)

View File

@@ -53,8 +53,10 @@ endif
include common_features.mk
include $(TMK_PATH)/common.mk
include $(QUANTUM_PATH)/debounce/tests/rules.mk
include $(QUANTUM_PATH)/sequencer/tests/rules.mk
include $(QUANTUM_PATH)/serial_link/tests/rules.mk
include $(TMK_PATH)/common/test/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include build_full_test.mk
endif
@@ -62,7 +64,7 @@ endif
$(TEST)_SRC += \
tests/test_common/main.c \
$(LIB_PATH)/printf/printf.c \
$(COMMON_DIR)/printf.c
$(QUANTUM_PATH)/logging/print.c
$(TEST_OBJ)/$(TEST)_SRC := $($(TEST)_SRC)
$(TEST_OBJ)/$(TEST)_INC := $($(TEST)_INC) $(VPATH) $(GTEST_INC)

View File

@@ -12,6 +12,9 @@ QUANTUM_PATH = $(QUANTUM_DIR)
DRIVER_DIR = drivers
DRIVER_PATH = $(DRIVER_DIR)
PLATFORM_DIR = platforms
PLATFORM_PATH = $(PLATFORM_DIR)
BUILD_DIR := .build
COMMON_VPATH := $(TOP_DIR)

View File

@@ -20,8 +20,23 @@ QUANTUM_SRC += \
$(QUANTUM_DIR)/send_string.c \
$(QUANTUM_DIR)/bitwise.c \
$(QUANTUM_DIR)/led.c \
$(QUANTUM_DIR)/action.c \
$(QUANTUM_DIR)/action_layer.c \
$(QUANTUM_DIR)/action_macro.c \
$(QUANTUM_DIR)/action_tapping.c \
$(QUANTUM_DIR)/action_util.c \
$(QUANTUM_DIR)/eeconfig.c \
$(QUANTUM_DIR)/keyboard.c \
$(QUANTUM_DIR)/keymap_common.c \
$(QUANTUM_DIR)/keycode_config.c
$(QUANTUM_DIR)/keycode_config.c \
$(QUANTUM_DIR)/logging/debug.c \
$(QUANTUM_DIR)/logging/sendchar.c \
VPATH += $(QUANTUM_DIR)/logging
# Fall back to lib/printf if there is no platform provided print
ifeq ("$(wildcard $(TMK_PATH)/common/$(PLATFORM_KEY)/printf.mk)","")
include $(QUANTUM_PATH)/logging/print.mk
endif
ifeq ($(strip $(DEBUG_MATRIX_SCAN_RATE_ENABLE)), yes)
OPT_DEFS += -DDEBUG_MATRIX_SCAN_RATE
@@ -102,13 +117,13 @@ endif
ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
OPT_DEFS += -DMOUSEKEY_ENABLE
OPT_DEFS += -DMOUSE_ENABLE
MOUSE_ENABLE := yes
SRC += $(QUANTUM_DIR)/mousekey.c
endif
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
OPT_DEFS += -DPOINTING_DEVICE_ENABLE
OPT_DEFS += -DMOUSE_ENABLE
MOUSE_ENABLE := yes
SRC += $(QUANTUM_DIR)/pointing_device.c
endif
@@ -170,6 +185,7 @@ else
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
OPT_DEFS += -DEEPROM_DRIVER
COMMON_VPATH += $(DRIVER_PATH)/eeprom
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
SRC += eeprom_driver.c eeprom_stm32_L0_L1.c
else
# This will effectively work the same as "transient" if not supported by the chip
@@ -196,10 +212,11 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
ifeq ($(filter $(RGBLIGHT_DRIVER),$(VALID_RGBLIGHT_TYPES)),)
$(error RGBLIGHT_DRIVER="$(RGBLIGHT_DRIVER)" is not a valid RGB type)
else
POST_CONFIG_H += $(QUANTUM_DIR)/rgblight_post_config.h
COMMON_VPATH += $(QUANTUM_DIR)/rgblight
POST_CONFIG_H += $(QUANTUM_DIR)/rgblight/rgblight_post_config.h
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight.c
SRC += $(QUANTUM_DIR)/rgblight/rgblight.c
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
endif
@@ -230,21 +247,25 @@ ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
# ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
OPT_DEFS += -DLIB8_ATTINY
endif
COMMON_VPATH += $(QUANTUM_DIR)/led_matrix
COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations
COMMON_VPATH += $(QUANTUM_DIR)/led_matrix/animations/runners
SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
SRC += $(QUANTUM_DIR)/led_matrix.c
SRC += $(QUANTUM_DIR)/led_matrix_drivers.c
SRC += $(QUANTUM_DIR)/led_matrix/led_matrix.c
SRC += $(QUANTUM_DIR)/led_matrix/led_matrix_drivers.c
SRC += $(LIB_PATH)/lib8tion/lib8tion.c
CIE1931_CURVE := yes
ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3731)
OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3731-simple.c
QUANTUM_LIB_SRC += i2c_master.c
endif
endif
RGB_MATRIX_ENABLE ?= no
VALID_RGB_MATRIX_TYPES := IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 WS2812 custom
VALID_RGB_MATRIX_TYPES := AW20216 IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 WS2812 custom
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),)
@@ -255,36 +276,47 @@ ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
# ATmegaxxU2 does not have hardware MUL instruction - lib8tion must be told to use software multiplication routines
OPT_DEFS += -DLIB8_ATTINY
endif
COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix
COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations
COMMON_VPATH += $(QUANTUM_DIR)/rgb_matrix/animations/runners
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgb_matrix.c
SRC += $(QUANTUM_DIR)/rgb_matrix_drivers.c
SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix.c
SRC += $(QUANTUM_DIR)/rgb_matrix/rgb_matrix_drivers.c
SRC += $(LIB_PATH)/lib8tion/lib8tion.c
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
ifeq ($(strip $(RGB_MATRIX_DRIVER)), AW20216)
OPT_DEFS += -DAW20216 -DSTM32_SPI -DHAL_USE_SPI=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += aw20216.c
QUANTUM_LIB_SRC += spi_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3731)
OPT_DEFS += -DIS31FL3731 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3731.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3733)
OPT_DEFS += -DIS31FL3733 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3733.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3737)
OPT_DEFS += -DIS31FL3737 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3737.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3741)
OPT_DEFS += -DIS31FL3741 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/issi
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3741.c
QUANTUM_LIB_SRC += i2c_master.c
endif
@@ -342,11 +374,6 @@ ifeq ($(strip $(LCD_ENABLE)), yes)
CIE1931_CURVE := yes
endif
# backward compat
ifeq ($(strip $(BACKLIGHT_CUSTOM_DRIVER)), yes)
BACKLIGHT_DRIVER := custom
endif
VALID_BACKLIGHT_TYPES := pwm timer software custom
BACKLIGHT_ENABLE ?= no
@@ -406,7 +433,7 @@ ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
endif
ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes)
COMMON_VPATH += $(DRIVER_PATH)/apa102
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += apa102.c
endif
@@ -462,18 +489,15 @@ ifeq ($(strip $(DIP_SWITCH_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/dip_switch.c
endif
VALID_MAGIC_TYPES := yes full lite
VALID_MAGIC_TYPES := yes lite
BOOTMAGIC_ENABLE ?= no
ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
ifeq ($(filter $(BOOTMAGIC_ENABLE),$(VALID_MAGIC_TYPES)),)
$(error BOOTMAGIC_ENABLE="$(BOOTMAGIC_ENABLE)" is not a valid type of magic)
endif
ifneq ($(strip $(BOOTMAGIC_ENABLE)), full)
ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
OPT_DEFS += -DBOOTMAGIC_LITE
QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_lite.c
else
OPT_DEFS += -DBOOTMAGIC_ENABLE
QUANTUM_SRC += $(QUANTUM_DIR)/bootmagic/bootmagic_full.c
endif
endif
COMMON_VPATH += $(QUANTUM_DIR)/bootmagic
@@ -494,42 +518,31 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes)
# if 'lite' then skip the actual matrix implementation
ifneq ($(strip $(CUSTOM_MATRIX)), lite)
# Include the standard or split matrix code if needed
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/matrix.c
else
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
endif
QUANTUM_SRC += $(QUANTUM_DIR)/matrix.c
endif
endif
# Support for translating old names to new names:
ifeq ($(strip $(DEBOUNCE_TYPE)),sym_g)
DEBOUNCE_TYPE:=sym_defer_g
else ifeq ($(strip $(DEBOUNCE_TYPE)),eager_pk)
DEBOUNCE_TYPE:=sym_eager_pk
else ifeq ($(strip $(DEBOUNCE_TYPE)),sym_pk)
DEBOUNCE_TYPE:=sym_defer_pk
else ifeq ($(strip $(DEBOUNCE_TYPE)),eager_pr)
DEBOUNCE_TYPE:=sym_eager_pr
endif
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
# Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually.
DEBOUNCE_TYPE?= sym_defer_g
DEBOUNCE_TYPE ?= sym_defer_g
ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
QUANTUM_SRC += $(QUANTUM_DIR)/debounce/$(strip $(DEBOUNCE_TYPE)).c
endif
ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
POST_CONFIG_H += $(QUANTUM_DIR)/split_common/post_config.h
OPT_DEFS += -DSPLIT_KEYBOARD
CRC_ENABLE := yes
# Include files used by all split keyboards
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/split_util.c
# Determine which (if any) transport files are required
ifneq ($(strip $(SPLIT_TRANSPORT)), custom)
QUANTUM_LIB_SRC += $(QUANTUM_DIR)/split_common/transport.c
QUANTUM_SRC += $(QUANTUM_DIR)/split_common/transport.c \
$(QUANTUM_DIR)/split_common/transactions.c
OPT_DEFS += -DSPLIT_COMMON_TRANSACTIONS
# Functions added via QUANTUM_LIB_SRC are only included in the final binary if they're called.
# Unused functions are pruned away, which is why we can add multiple drivers here without bloat.
ifeq ($(PLATFORM),AVR)
@@ -550,11 +563,17 @@ ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
COMMON_VPATH += $(QUANTUM_PATH)/split_common
endif
ifeq ($(strip $(CRC_ENABLE)), yes)
OPT_DEFS += -DCRC_ENABLE
SRC += crc.c
endif
HAPTIC_ENABLE ?= no
ifneq ($(strip $(HAPTIC_ENABLE)),no)
COMMON_VPATH += $(DRIVER_PATH)/haptic
SRC += haptic.c
OPT_DEFS += -DHAPTIC_ENABLE
SRC += $(QUANTUM_DIR)/haptic.c
SRC += $(QUANTUM_DIR)/process_keycode/process_haptic.c
endif
ifneq ($(filter DRV2605L, $(HAPTIC_ENABLE)), )
@@ -569,15 +588,33 @@ ifneq ($(filter SOLENOID, $(HAPTIC_ENABLE)), )
endif
ifeq ($(strip $(HD44780_ENABLE)), yes)
SRC += drivers/avr/hd44780.c
SRC += platforms/avr/drivers/hd44780.c
OPT_DEFS += -DHD44780_ENABLE
endif
ifeq ($(strip $(OLED_DRIVER_ENABLE)), yes)
OPT_DEFS += -DOLED_DRIVER_ENABLE
COMMON_VPATH += $(DRIVER_PATH)/oled
QUANTUM_LIB_SRC += i2c_master.c
SRC += oled_driver.c
VALID_OLED_DRIVER_TYPES := SSD1306 custom
OLED_DRIVER ?= SSD1306
ifeq ($(strip $(OLED_ENABLE)), yes)
ifeq ($(filter $(OLED_DRIVER),$(VALID_OLED_DRIVER_TYPES)),)
$(error OLED_DRIVER="$(OLED_DRIVER)" is not a valid OLED driver)
else
OPT_DEFS += -DOLED_ENABLE
COMMON_VPATH += $(DRIVER_PATH)/oled
OPT_DEFS += -DOLED_DRIVER_$(strip $(shell echo $(OLED_DRIVER) | tr '[:lower:]' '[:upper:]'))
ifeq ($(strip $(OLED_DRIVER)), SSD1306)
SRC += ssd1306_sh1106.c
QUANTUM_LIB_SRC += i2c_master.c
endif
endif
endif
ifeq ($(strip $(ST7565_ENABLE)), yes)
OPT_DEFS += -DST7565_ENABLE
COMMON_VPATH += $(DRIVER_PATH)/oled # For glcdfont.h
COMMON_VPATH += $(DRIVER_PATH)/lcd
QUANTUM_LIB_SRC += spi_master.c
SRC += st7565.c
endif
include $(DRIVER_PATH)/qwiic/qwiic.mk
@@ -632,6 +669,11 @@ ifeq ($(strip $(COMBO_ENABLE)), yes)
OPT_DEFS += -DCOMBO_ENABLE
endif
ifeq ($(strip $(KEY_OVERRIDE_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_key_override.c
OPT_DEFS += -DKEY_OVERRIDE_ENABLE
endif
ifeq ($(strip $(TAP_DANCE_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/process_keycode/process_tap_dance.c
OPT_DEFS += -DTAP_DANCE_ENABLE
@@ -671,6 +713,11 @@ ifeq ($(strip $(JOYSTICK_ENABLE)), digital)
OPT_DEFS += -DDIGITAL_JOYSTICK_ENABLE
endif
DIGITIZER_ENABLE ?= no
ifneq ($(strip $(DIGITIZER_ENABLE)), no)
SRC += $(QUANTUM_DIR)/digitizer.c
endif
USBPD_ENABLE ?= no
VALID_USBPD_DRIVER_TYPES = custom vendor
USBPD_DRIVER ?= vendor

View File

@@ -1,21 +1,49 @@
# This file maps keys between `config.h` and `info.json`. It is used by QMK
# This file maps keys between `config.h` and `info.json`. It is used by QMK
# to correctly and consistently map back and forth between the two systems.
{
# Format:
# <config.h key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
# value_type: one of "array", "array.int", "int", "hex", "list", "mapping"
# value_type: one of "array", "array.int", "bool", "int", "hex", "list", "mapping"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from config.h
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
"DEBOUNCE": {"info_key": "debounce", "value_type": "int"}
"AUDIO_PIN_ALT_AS_NEGATIVE": {"info_key": "audio.alt_as_negative", "value_type": "bool"},
"AUDIO_VOICES": {"info_key": "audio.voices", "value_type": "bool"},
"BACKLIGHT_BREATHING": {"info_key": "backlight.breathing", "value_type": "bool"},
"BREATHING_PERIOD": {"info_key": "backlight.breathing_period", "value_type": "int"},
"BACKLIGHT_PIN": {"info_key": "backlight.pin"},
"COMBO_COUNT": {"info_key": "combo.count", "value_type": "int"},
"COMBO_TERM": {"info_key": "combo.term", "value_type": "int"},
"DEBOUNCE": {"info_key": "debounce", "value_type": "int"},
"DEVICE_VER": {"info_key": "usb.device_ver", "value_type": "hex"},
"DESCRIPTION": {"info_key": "keyboard_folder", "to_json": false},
"DIODE_DIRECTION": {"info_key": "diode_direction"},
"FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "bool"},
"DYNAMIC_KEYMAP_EEPROM_MAX_ADDR": {"info_key": "dynamic_keymap.eeprom_max_addr", "value_type": "int"},
"DYNAMIC_KEYMAP_LAYER_COUNT": {"info_key": "dynamic_keymap.layer_count", "value_type": "int"},
"IGNORE_MOD_TAP_INTERRUPT": {"info_key": "tapping.ignore_mod_tap_interrupt", "value_type": "bool"},
"IGNORE_MOD_TAP_INTERRUPT_PER_KEY": {"info_key": "tapping.ignore_mod_tap_interrupt_per_key", "value_type": "bool"},
"LAYOUTS": {"info_key": "layout_aliases", "value_type": "mapping"},
"LEADER_PER_KEY_TIMING": {"info_key": "leader_key.timing", "value_type": "bool"},
"LEADER_KEY_STRICT_KEY_PROCESSING": {"info_key": "leader_key.strict_processing", "value_type": "bool"},
"LEADER_TIMEOUT": {"info_key": "leader_key.timeout", "value_type": "int"},
"LED_CAPS_LOCK_PIN": {"info_key": "indicators.caps_lock"},
"LED_NUM_LOCK_PIN": {"info_key": "indicators.num_lock"},
"LED_SCROLL_LOCK_PIN": {"info_key": "indicators.scroll_lock"},
"MANUFACTURER": {"info_key": "manufacturer"},
"MATRIX_HAS_GHOST": {"info_key": "matrix_pins.ghost", "value_type": "bool"},
"MATRIX_IO_DELAY": {"info_key": "matrix_pins.io_delay", "value_type": "int"},
"MOUSEKEY_DELAY": {"info_key": "mousekey.delay", "value_type": "int"},
"MOUSEKEY_INTERVAL": {"info_key": "mousekey.interval", "value_type": "int"},
"MOUSEKEY_MAX_SPEED": {"info_key": "mousekey.max_speed", "value_type": "int"},
"MOUSEKEY_TIME_TO_MAX": {"info_key": "mousekey.time_to_max", "value_type": "int"},
"MOUSEKEY_WHEEL_DELAY": {"info_key": "mousekey.wheel_delay", "value_type": "int"},
"ONESHOT_TIMEOUT": {"info_key": "oneshot.timeout", "value_type": "int"},
"ONESHOT_TAP_TOGGLE": {"info_key": "oneshot.tap_toggle", "value_type": "int"},
"PERMISSIVE_HOLD": {"info_key": "tapping.permissive_hold", "value_type": "bool"},
"PERMISSIVE_HOLD_PER_KEY": {"info_key": "tapping.permissive_hold_per_key", "value_type": "bool"},
"RETRO_TAPPING": {"info_key": "tapping.retro", "value_type": "bool"},
"RETRO_TAPPING_PER_KEY": {"info_key": "tapping.retro_per_key", "value_type": "bool"},
"RGB_DI_PIN": {"info_key": "rgblight.pin"},
"RGBLED_NUM": {"info_key": "rgblight.led_count", "value_type": "int"},
"RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"},
@@ -30,17 +58,40 @@
"RGBLIGHT_EFFECT_SNAKE": {"info_key": "rgblight.animations.snake", "value_type": "bool"},
"RGBLIGHT_EFFECT_STATIC_GRADIENT": {"info_key": "rgblight.animations.static_gradient", "value_type": "bool"},
"RGBLIGHT_EFFECT_TWINKLE": {"info_key": "rgblight.animations.twinkle"},
"RGBLIGHT_LAYER_BLINK": {"info_key": "rgblight.layers.blink", "value_type": "bool"},
"RGBLIGHT_LAYERS": {"info_key": "rgblight.layers.enabled", "value_type": "bool"},
"RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF": {"info_key": "rgblight.layers.override_rgb", "value_type": "bool"},
"RGBLIGHT_LIMIT_VAL": {"info_key": "rgblight.max_brightness", "value_type": "int"},
"RGBLIGHT_MAX_LAYERS": {"info_key": "rgblight.layers.max", "value_type": "int"},
"RGBLIGHT_HUE_STEP": {"info_key": "rgblight.hue_steps", "value_type": "int"},
"RGBLIGHT_SAT_STEP": {"info_key": "rgblight.saturation_steps", "value_type": "int"},
"RGBLIGHT_VAL_STEP": {"info_key": "rgblight.brightness_steps", "value_type": "int"},
"RGBLIGHT_SLEEP": {"info_key": "rgblight.sleep", "value_type": "bool"},
"RGBLIGHT_SPLIT": {"info_key": "rgblight.split", "value_type": "bool"},
"RGBW": {"info_key": "rgblight.rgbw", "value_type": "bool"},
"PRODUCT": {"info_key": "keyboard_folder", "to_json": false},
"PRODUCT_ID": {"info_key": "usb.pid", "value_type": "hex"},
"VENDOR_ID": {"info_key": "usb.vid", "value_type": "hex"},
"QMK_ESC_OUTPUT": {"info_key": "qmk_lufa_bootloader.esc_output"},
"QMK_ESC_INPUT": {"info_key": "qmk_lufa_bootloader.esc_input"},
"QMK_KEYS_PER_SCAN": {"info_key": "qmk.keys_per_scan", "value_type": "int"},
"QMK_LED": {"info_key": "qmk_lufa_bootloader.led"},
"QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"}
"QMK_SPEAKER": {"info_key": "qmk_lufa_bootloader.speaker"},
"SPLIT_MODS_ENABLE": {"info_key": "split.transport.sync_modifiers", "value_type": "bool"},
"SPLIT_TRANSPORT_MIRROR": {"info_key": "split.transport.sync_matrix_state", "value_type": "bool"},
"SPLIT_USB_DETECT": {"info_key": "split.usb_detect.enabled", "value_type": "bool"},
"SPLIT_USB_TIMEOUT": {"info_key": "split.usb_detect.timeout", "value_type": "int"},
"SPLIT_USB_TIMEOUT_POLL": {"info_key": "split.usb_detect.polling_interval", "value_type": "int"},
"SOFT_SERIAL_PIN": {"info_key": "split.soft_serial_pin"},
"SOFT_SERIAL_SPEED": {"info_key": "split.soft_serial_speed"},
"TAP_CODE_DELAY": {"info_key": "qmk.tap_keycode_delay", "value_type": "int"},
"TAP_HOLD_CAPS_DELAY": {"info_key": "qmk.tap_capslock_delay", "value_type": "int"},
"TAPPING_FORCE_HOLD": {"info_key": "tapping.force_hold", "value_type": "bool"},
"TAPPING_FORCE_HOLD_PER_KEY": {"info_key": "tapping.force_hold_per_key", "value_type": "bool"},
"TAPPING_TERM": {"info_key": "tapping.term", "value_type": "int"},
"TAPPING_TERM_PER_KEY": {"info_key": "tapping.term_per_key", "value_type": "bool"},
"TAPPING_TOGGLE": {"info_key": "tapping.toggle", "value_type": "int"},
"USB_MAX_POWER_CONSUMPTION": {"info_key": "usb.max_power", "value_type": "int"},
"USB_POLLING_INTERVAL_MS": {"info_key": "usb.polling_interval", "value_type": "int"},
"USB_SUSPEND_WAKEUP_DELAY": {"info_key": "usb.suspend_wakeup_delay", "value_type": "int"},
}

View File

@@ -1,15 +1,25 @@
# This file maps keys between `rules.mk` and `info.json`. It is used by QMK
# This file maps keys between `rules.mk` and `info.json`. It is used by QMK
# to correctly and consistently map back and forth between the two systems.
{
# Format:
# <rules.mk key>: {"info_key": <info.json key>, ["value_type": <value_type>], ["to_json": <true/false>], ["to_c": <true/false>]}
# value_type: one of "array", "array.int", "int", "list", "hex", "mapping"
# value_type: one of "array", "array.int", "bool", "int", "list", "hex", "mapping"
# to_json: Default `true`. Set to `false` to exclude this mapping from info.json
# to_c: Default `true`. Set to `false` to exclude this mapping from rules.mk
# warn_duplicate: Default `true`. Set to `false` to turn off warning when a value exists in both places
"BOARD": {"info_key": "board"},
"BOOTLOADER": {"info_key": "bootloader", "warn_duplicate": false},
"BLUETOOTH": {"info_key": "bluetooth.driver"},
"FIRMWARE_FORMAT": {"info_key": "build.firmware_format"},
"KEYBOARD_SHARED_EP": {"info_key": "usb.shared_endpoint.keyboard", "value_type": "bool"},
"MOUSE_SHARED_EP": {"info_key": "usb.shared_endpoint.mouse", "value_type": "bool"},
"LAYOUTS": {"info_key": "community_layouts", "value_type": "list"},
"LED_MATRIX_DRIVER": {"info_key": "led_matrix.driver"},
"LTO_ENABLE": {"info_key": "build.lto", "value_type": "bool"},
"MCU": {"info_key": "processor", "warn_duplicate": false},
"MOUSEKEY_ENABLE": {"info_key": "mouse_key.enabled", "value_type": "bool"},
"NO_USB_STARTUP_CHECK": {"info_key": "usb.no_startup_check", "value_type": "bool"},
"SPLIT_KEYBOARD": {"info_key": "split.enabled", "value_type": "bool"},
"SPLIT_TRANSPORT": {"info_key": "split.transport.protocol", "value_type": "str", "to_c": false},
"WAIT_FOR_USB": {"info_key": "usb.wait_for", "value_type": "bool"}
}

View File

@@ -11,6 +11,9 @@
'2_milk': {
target: 'spaceman/2_milk'
},
'aeboards/constellation': {
target: 'aeboards/constellation/rev1'
},
'aeboards/ext65': {
target: 'aeboards/ext65/rev1'
},
@@ -38,9 +41,36 @@
'atom47/rev3': {
target: 'maartenwut/atom47/rev3'
},
bakeneko65: {
target: 'bakeneko65/rev2'
},
bear_face: {
target: 'bear_face/v1'
},
bm16a: {
target: 'kprepublic/bm16a'
},
bm16s: {
target: 'kprepublic/bm16s'
},
bm40hsrgb: {
target: 'kprepublic/bm40hsrgb'
},
bm43a: {
target: 'kprepublic/bm43a'
},
bm60poker: {
target: 'kprepublic/bm60poker'
},
bm60rgb: {
target: 'kprepublic/bm60rgb'
},
bm60rgb_iso: {
target: 'kprepublic/bm60rgb_iso'
},
bm68rgb: {
target: 'kprepublic/bm68rgb'
},
'bpiphany/pegasushoof': {
target: 'bpiphany/pegasushoof/2013'
},
@@ -56,15 +86,27 @@
canoe: {
target: 'percent/canoe'
},
'clawsome/gamebuddy': {
target: 'clawsome/gamebuddy/v1_0'
},
'cmm_studio/saka68': {
target: 'cmm_studio/saka68/solder'
},
'cospad': {
target: 'kprepublic/cospad'
},
'crkbd/rev1/legacy': {
target: 'crkbd/rev1'
},
'crkbd/rev1/common': {
target: 'crkbd/rev1'
},
'custommk/genesis': {
target: 'custommk/genesis/rev1'
},
'daisy': {
target: 'ktec/daisy'
},
'doro67/multi': {
layouts: {
LAYOUT_ansi: 'LAYOUT_65_ansi_blocker'
@@ -83,6 +125,9 @@
drakon: {
target: 'jagdpietr/drakon'
},
'durgod/k320': {
target: 'durgod/k3x0/k320'
},
'dztech/dz60rgb': {
target: 'dztech/dz60rgb/v1'
},
@@ -95,9 +140,15 @@
'dztech/dz65rgb': {
target: 'dztech/dz65rgb/v1'
},
'dztech/volcano660': {
target: 'ilumkb/volcano660'
},
eek: {
target: 'eek/silk_down'
},
'ergodone': {
target: 'ktec/ergodone'
},
ergoinu: {
target: 'dm9records/ergoinu'
},
@@ -107,9 +158,15 @@
gh60: {
target: 'gh60/revc'
},
'gmmk/pro': {
target: 'gmmk/pro/ansi'
},
'handwired/ferris': {
target: 'ferris/0_1'
},
'handwired/p1800fl': {
target: 'team0110/p1800fl'
},
'helix/pico/sc/back': {
target: 'helix/pico/sc'
},
@@ -158,6 +215,15 @@
LAYOUT: 'LAYOUT_all'
}
},
'jj40': {
target: 'kprepublic/jj40'
},
'jj4x4': {
target: 'kprepublic/jj4x4'
},
'jj50': {
target: 'kprepublic/jj50'
},
jones: {
target: 'jones/v03_1'
},
@@ -182,6 +248,12 @@
kudox: {
target: 'kudox/rev1'
},
'kyria': {
target: 'splitkb/kyria'
},
'lazydesigners/the60': {
target: 'lazydesigners/the60/rev1'
},
'lfkeyboards/lfk78': {
target: 'lfkeyboards/lfk78/revj'
},
@@ -251,6 +323,9 @@
'maartenwut/wonderland': {
target: 'evyd13/wonderland'
},
'matrix/m12og': {
target: 'matrix/m12og/rev1'
},
'mechlovin/hannah910': {
target: 'mechlovin/hannah910/rev1'
},
@@ -266,6 +341,9 @@
'mechlovin/hannah60rgb': {
target: 'mechlovin/hannah60rgb/rev1'
},
'mechlovin/hannah65/mechlovin9': {
target: 'mechlovin/mechlovin9/rev1'
},
'melgeek/z70ultra': {
target: 'melgeek/z70ultra/rev1'
},
@@ -304,6 +382,9 @@
'pancake/promicro': {
target: 'spaceman/pancake/promicro'
},
'peiorisboards/ixora': {
target: 'coarse/ixora'
},
'percent/canoe': {
layouts: {
LAYOUT_iso: 'LAYOUT_65_iso_blocker'
@@ -366,6 +447,9 @@
'ramonimbao/herringbone': {
target: 'ramonimbao/herringbone/v1'
},
'ramonimbao/mona': {
target: 'ramonimbao/mona/v1'
},
'rgbkb/pan': {
target: 'rgbkb/pan/rev1/32a'
},
@@ -387,6 +471,9 @@
speedo: {
target: 'cozykeys/speedo/v2'
},
'staryu': {
target: 'ktec/staryu'
},
stoutgat: {
target: 'tkw/stoutgat/v1'
},
@@ -405,10 +492,14 @@
'tkw/stoutgat/v2': {
target: 'tkw/stoutgat/v2/f411'
},
'tokyo60': {
target: 'tokyokeyboard/tokyo60'
},
underscore33: {
target: 'underscore33/rev1'
},
vinta: {
target: 'coarse/vinta',
layouts: {
LAYOUT_67_ansi: 'LAYOUT_65_ansi_blocker'
}
@@ -422,6 +513,33 @@
'whale/sk': {
target: 'whale/sk/v3'
},
'xd002': {
target: 'xiudi/xd002'
},
'xd004': {
target: 'xiudi/xd004'
},
'xd60': {
target: 'xiudi/xd60'
},
'xd68': {
target: 'xiudi/xd68'
},
'xd75': {
target: 'xiudi/xd75'
},
'xd84': {
target: 'xiudi/xd84'
},
'xd84pro': {
target: 'xiudi/xd84pro'
},
'xd87': {
target: 'xiudi/xd87'
},
'xd96': {
target: 'xiudi/xd96'
},
'xelus/dawn60': {
target: 'xelus/dawn60/rev1'
},

View File

@@ -1,34 +1,22 @@
{
"$id": "qmk.api.keyboard.v1",
"allOf": [
{ "$ref": "qmk.keyboard.v1" },
{"$ref": "qmk.keyboard.v1"},
{
"$id": "qmk.api.keyboard.v1",
"keymaps": {
"type": "string"
},
"parse_errors": {
"type": "array",
"items": {
"type": "string"
}
},
"parse_warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"processor_type": {
"type": "string"
},
"protocol": {
"type": "string"
},
"keyboard_folder": {
"type": "string"
},
"platform": {
"type": "string"
"properties": {
"keymaps": {
"type": "object",
"properties": {
"url": {"type": "string"}
}
},
"parse_errors": {"$ref": "qmk.definitions.v1#/string_array"},
"parse_warnings": {"$ref": "qmk.definitions.v1#/string_array"},
"processor_type": {"type": "string"},
"protocol": {"type": "string"},
"keyboard_folder": {"type": "string"},
"platform": {"type": "string"}
}
}
]

View File

@@ -0,0 +1,107 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "qmk.definitions.v1",
"title": "Common definitions used across QMK's jsonschemas.",
"type": "object",
"boolean_array": {
"type": "object",
"additionalProperties": {"type": "boolean"}
},
"filename": {
"type": "string",
"minLength": 1,
"pattern": "^[0-9a-z_]*$"
},
"hex_number_2d": {
"type": "string",
"pattern": "^0x[0-9A-F]{2}$"
},
"hex_number_4d": {
"type": "string",
"pattern": "^0x[0-9A-F]{4}$"
},
"text_identifier": {
"type": "string",
"minLength": 1,
"maxLength": 250
},
"layout_macro": {
"oneOf": [
{
"type": "string",
"enum": ["LAYOUT", "LAYOUT_planck_1x2uC"]
},
{
"type": "string",
"pattern": "^LAYOUT_[0-9a-z_]*$"
}
]
},
"key_unit": {
"type": "number",
"min": 0.25
},
"mcu_pin_array": {
"type": "array",
"items": {"$ref": "#/mcu_pin"}
},
"mcu_pin": {
"oneOf": [
{
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
{
"type": "string",
"pattern": "^LINE_PIN\\d{1,2}$"
},
{
"type": "number",
"multipleOf": 1
},
{
"type": "null"
}
]
},
"signed_decimal": {
"type": "number"
},
"signed_int": {
"type": "number",
"multipleOf": 1
}
"signed_int_8": {
"type": "number",
"min": -127,
"max": 127,
"multipleOf": 1
}
"string_array": {
"type": "array",
"items": {
"type": "string"
}
},
"string_object": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"unsigned_decimal": {
"type": "number",
"min": 0
},
"unsigned_int": {
"type": "number",
"min": 0,
"multipleOf": 1
}
"unsigned_int_8": {
"type": "number",
"min": 0,
"max": 255,
"multipleOf": 1
}
}

View File

@@ -1,31 +1,121 @@
{
"$schema": "http://json-schema.org/schema#",
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "qmk.keyboard.v1",
"title": "Keyboard Information",
"type": "object",
"properties": {
"keyboard_name": {
"type": "string",
"minLength": 2,
"maxLength": 250
},
"maintainer": {
"type": "string",
"minLength": 2,
"maxLength": 250
},
"manufacturer": {
"type": "string",
"minLength": 2,
"maxLength": 250
},
"keyboard_name": {"$ref": "qmk.definitions.v1#/text_identifier"},
"maintainer": {"$ref": "qmk.definitions.v1#/text_identifier"},
"manufacturer": {"$ref": "qmk.definitions.v1#/text_identifier"},
"url": {
"type": "string",
"format": "uri"
},
"processor": {
"type": "string",
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66F18", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L433", "STM32L443", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66F18", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L433", "STM32L443", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
},
"audio": {
"type": "object",
"additionalProperties": false,
"properties": {
"alt_as_negative": {"type": "boolean"},
"clicky": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {"type": "boolean"},
"frequency": {
"type": "object",
"additionalProperties": false,
"properties": {
"default": {"$ref": "qmk.definitions.v1#/signed_decimal"},
"factor": {"$ref": "qmk.definitions.v1#/signed_decimal"},
"max": {"$ref": "qmk.definitions.v1#/signed_decimal"},
"min": {"$ref": "qmk.definitions.v1#/signed_decimal"},
"randomness": {"$ref": "qmk.definitions.v1#/signed_decimal"}
}
},
"delay": {"$ref": "qmk.definitions.v1#/signed_int"}
}
},
"dac": {
"type": "object",
"additionalProperties": false,
"properties": {
"sample_waveform": {
"default": "sine",
"type": "string",
"enum": ["sine", "square", "trapezoid", "triangle"]
},
"channel": {"$ref": "qmk.definitions.v1#/unsigned_int"},
}
},
"driver": {
"type": "string",
"enum": ["dac_basic", "dac_additive", "pwm_hardware", "pwm_software"],
},
"init_delay": {"type": "boolean"},
"music_mode": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {"type": "boolean"},
"pitch_standard": {"$ref": "qmk.definitions.v1#/signed_decimal"}
}
},
"pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"pwm": {
"type": "object",
"additionalProperties": false,
"properties": {
"channel": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"driver": {
"default": "PWMD1",
"type": "string",
"enum": ["PWMD1", "PWMD2", "PWMD3", "PWMD4", "PWMD5"]
},
"pal_mode": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
}
},
"sendstring_bell": {"type": "boolean"},
"tempo": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"tone_multiplexing": {
"type": "object",
"additionalProperties": false,
"properties": {
"default_rate": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"enabled": {"type": "boolean"}
}
},
"voices": {"type": "boolean"}
}
},
"backlight": {
"type": "object",
"additionalProperties": false,
"properties": {
"breathing": {"type": "boolean"},
"breathing_period": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"levels": {
"type": "number",
"min": 1,
"max": 31,
"multipleOf": 1
},
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"}
}
},
"bluetooth": {
"type": "object",
"additionalProperties": false,
"properties": {
"driver": {
"type": "string",
"enum": ["AdafruitBLE", "RN42"]
},
"lto": {"type": "boolean"},
}
},
"board": {
"type": "string",
@@ -34,68 +124,55 @@
},
"bootloader": {
"type": "string",
"enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "stm32-dfu", "stm32duino", "unknown", "USBasp", "tinyuf2"]
"enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "unknown", "USBasp", "tinyuf2"],
},
"bootloader_instructions": {
"type": "string",
"description": "Instructions for putting the keyboard into a mode that allows for firmware flashing."
},
"build": {
"type": "object",
"additionalProperties": false,
"properties": {
"debounce_type": {
"type": "string",
"enum": ["custom", "eager_pk", "eager_pr", "sym_defer_pk", "sym_eager_pk"]
},
"firmware_format": {
"type": "string",
"enum": ["bin", "hex", "uf2"]
},
"lto": {"type": "boolean"},
}
},
"diode_direction": {
"type": "string",
"enum": ["COL2ROW", "ROW2COL"]
},
"debounce": {
"type": "number",
"min": 0,
"multipleOf": 1
},
"height": {
"type": "number",
"min": 0.25
},
"width": {
"type": "number",
"min": 0.25
"debounce": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"combo": {
"type": "object",
"properties": {
"count": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"term": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"community_layouts": {
"type": "array",
"items": {
"type": "string",
"minLength": 2,
"pattern": "^[0-9a-z_]*$"
}
},
"features": {
"type": "object",
"additionalProperties": {"type": "boolean"}
"items": {"$ref": "qmk.definitions.v1#/filename"}
},
"features": {"$ref": "qmk.definitions.v1#/boolean_array"},
"indicators": {
"type": "object",
"properties": {
"caps_lock": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
"num_lock": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
"scroll_lock": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
}
"caps_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"num_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"scroll_lock": {"$ref": "qmk.definitions.v1#/mcu_pin"}
}
},
"layout_aliases": {
"type": "object",
"additionalProperties": {
"oneOf": [
{
"type": "string",
"enum": ["LAYOUT", "LAYOUT_planck_1x2uC"]
},
{
"type": "string",
"pattern": "^LAYOUT_[0-9a-z_]*$"
}
]
}
"additionalProperties": {"$ref": "qmk.definitions.v1#/layout_macro"}
},
"layouts": {
"type": "object",
@@ -109,11 +186,7 @@
"c_macro": {
"type": "boolean"
},
"key_count": {
"type": "number",
"min": 0,
"multipleOf": 1
},
"key_count": {"$ref": "qmk.definitions.v1#/key_unit"},
"layout": {
"type": "array",
"items": {
@@ -131,101 +204,61 @@
"multipleOf": 1
}
},
"h": {
"type": "number",
"min": 0.25
},
"r": {
"type": "number",
"min": 0
},
"rx": {
"type": "number",
"min": 0
},
"ry": {
"type": "number",
"min": 0
},
"w": {
"type": "number",
"min": 0.25
},
"x": {
"type": "number",
"min": 0
},
"y": {
"type": "number",
"min": 0
}
"key_count": {"$ref": "qmk.definitions.v1#/key_unit"},
"r": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"rx": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"ry": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},
"h": {"$ref": "qmk.definitions.v1#/key_unit"},
"w": {"$ref": "qmk.definitions.v1#/key_unit"},
"x": {"$ref": "qmk.definitions.v1#/key_unit"},
"y": {"$ref": "qmk.definitions.v1#/key_unit"}
}
}
}
}
}
},
"leader_key": {
"type": "object",
"properties": {
"timing": {"type": "boolean"},
"strict_processing": {"type": "boolean"},
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"matrix_pins": {
"type": "object",
"additionalProperties": false,
"properties": {
"custom": {"type": "boolean"},
"custom_lite": {"type": "boolean"},
"ghost": {"type": "boolean"},
"io_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"direct": {
"type": "array",
"items": {
"type": "array",
"items": {
"oneOf": [
{
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
{
"type": "number",
"multipleOf": 1
},
{
"type": "null"
}
]
}
}
"items": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
},
"cols": {
"type": "array",
"items": {
"oneOf": [
{
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
{
"type": "number",
"multipleOf": 1
},
{
"type": "null"
}
]
}
},
"rows": {
"type": "array",
"items": {
"oneOf": [
{
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
{
"type": "number",
"multipleOf": 1
},
{
"type": "null"
}
]
}
}
"cols": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"rows": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"unused": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
}
},
"mouse_key": {
"type": "object",
"properties": {
"enabled": {"type": "boolean"},
"delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"max_speed": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"time_to_max": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
"wheel_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}
}
},
"oneshot": {
"type": "object",
"properties": {
"tap_toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
},
"rgblight": {
@@ -238,88 +271,160 @@
"type": "boolean"
}
},
"brightness_steps": {
"type": "number",
"min": 0,
"multipleOf": 1
},
"hue_steps": {
"type": "number",
"min": 0,
"multipleOf": 1
},
"led_count": {
"type": "number",
"min": 0,
"multipleOf": 1
},
"max_brightness": {
"type": "number",
"min": 0,
"max": 255,
"multipleOf": 1
},
"pin": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
"saturation_steps": {
"type": "number",
"min": 0,
"multipleOf": 1
"brightness_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"hue_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"layers": {
"type": "object",
"additionalProperties": false,
"properties": {
"blink": {"type": "boolean"},
"enabled": {"type": "boolean"},
"max": {
"type": "number",
"min": 1,
"max": 32,
"multipleOf": 1
},
"override_rgb": {"type": "boolean"}
}
},
"led_count": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"max_brightness": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"rgbw": {"type": "boolean"},
"saturation_steps": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"sleep": {"type": "boolean"},
"split": {"type": "boolean"},
"split_count": {
"type": "array",
"minLength": 2,
"maxLength": 2,
"items": {
"type": "number",
"min": 0,
"multipleOf": 1
"items": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
}
},
"split": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {"type": "boolean"},
"matrix_grid": {
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/mcu_pin"}
},
"matrix_pins": {
"type": "object",
"additionalProperties": false,
"properties": {
"right": {
"type": "object",
"additionalProperties": false,
"properties": {
"direct": {
"type": "array",
"items": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
},
"cols": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"rows": {"$ref": "qmk.definitions.v1#/mcu_pin_array"},
"unused": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
}
}
}
},
"main": {
"type": "string",
"enum": ["eeprom", "left", "matrix_grid", "pin", "right"]
},
"soft_serial_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"soft_serial_speed": {
"type": "number",
"min": 0,
"max": 5,
"multipleOf": 1
},
"transport": {
"type": "object",
"additionalProperties": false,
"properties": {
"protocol": {
"type": "string",
"enum": ["custom", "i2c", "serial", "serial_usart"]
},
"sync_matrix_state": {"type": "boolean"},
"sync_modifiers": {"type": "boolean"}
}
},
"usb_detect": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {"type": "boolean"},
"polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"timeout": {"$ref": "qmk.definitions.v1#/unsigned_int"}
}
}
}
},
"tags": {
"type": "array",
"items": {"type": "string"}
},
"tapping": {
"type": "object",
"properties": {
"force_hold": {"type": "boolean"},
"force_hold_per_key": {"type": "boolean"},
"ignore_mod_tap_interrupt": {"type": "boolean"},
"ignore_mod_tap_interrupt_per_key": {"type": "boolean"},
"permissive_hold": {"type": "boolean"},
"permissive_hold_per_key": {"type": "boolean"},
"retro": {"type": "boolean"},
"retro_per_key": {"type": "boolean"},
"term": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"term_per_key": {"type": "boolean"},
"toggle": {"$ref": "qmk.definitions.v1#/unsigned_int"},
}
},
"usb": {
"type": "object",
"additionalProperties": false,
"properties": {
"device_ver": {
"type": "string",
"pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
"device_ver": {"$ref": "qmk.definitions.v1#/hex_number_4d"},
"force_nkro": {"type": "boolean"},
"pid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},
"vid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},
"max_power": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"no_startup_check": {"type": "boolean"},
"polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"shared_endpoint": {
"type": "object",
"additionalProperties": false,
"properties": {
"keyboard": {"type": "boolean"},
"mouse": {"type": "boolean"}
}
},
"pid": {
"type": "string",
"pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
},
"vid": {
"type": "string",
"pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
}
"suspend_wakeup_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"wait_for": {"type": "boolean"},
}
},
"qmk": {
"type": "object",
"additionalProperties": false,
"properties": {
"keys_per_scan": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"tap_keycode_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
"tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},
}
},
"qmk_lufa_bootloader": {
"type": "object",
"additionalProperties": false,
"properties": {
"esc_output": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
"esc_input": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
"led": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
},
"speaker": {
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
}
"esc_output": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"esc_input": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"led": {"$ref": "qmk.definitions.v1#/mcu_pin"},
"speaker": {"$ref": "qmk.definitions.v1#/mcu_pin"}
}
}
}

View File

@@ -0,0 +1,24 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "qmk.keymap.v1",
"title": "Keymap Information",
"type": "object",
"properties": {
"author": {"type": "string"},
"keyboard": {"$ref": "qmk.definitions.v1#/text_identifier"},
"keymap": {"$ref": "qmk.definitions.v1#/text_identifier"},
"layout": {"$ref": "qmk.definitions.v1#/layout_macro"},
"layers": {
"type": "array",
"items": {
"type": "array",
"items": {"type": "string"}
}
},
"config": {"$ref": "qmk.keyboard.v1"},
"notes": {
"type": "string",
"description": "asdf"
}
}
}

View File

@@ -0,0 +1,22 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
# 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

View File

@@ -7,7 +7,7 @@ BOOTLOADER = bootloadHID
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug

557
docs/ChangeLog/20210828.md Normal file
View File

@@ -0,0 +1,557 @@
# QMK Breaking Changes - 2021 August 28 Changelog
## Notable Features :id=notable-features
### Combo processing improvements ([#8591](https://github.com/qmk/qmk_firmware/pull/8591)) :id=combo-processing-improvements
Combo processing has been reordered with respect to keypress handling, allowing for much better compatibility with mod taps.
It is also now possible to define combos that have keys overlapping with other combos, triggering only one. For example, a combo of `A`, `B` can coexist with a longer combo of `A`, `B`, `C` -- previous functionality would trigger both combos if all three keys were pressed.
### Key Overrides ([#11422](https://github.com/qmk/qmk_firmware/pull/11422)) :id=key-overrides
QMK now has a new feature: [key overrides](https://docs.qmk.fm/#/feature_key_overrides). This feature allows for overriding the output of key combinations involving modifiers. As an example, pressing <kbd>Shift+2</kbd> normally results in an <kbd>@</kbd> on US-ANSI keyboard layouts -- the new key overrides allow for adding similar functionality, but for any <kbd>modifier + key</kbd> press.
To illustrate, it's now possible to use the key overrides feature to translate <kbd>Shift + Backspace</kbd> into <kbd>Delete</kbd> -- an often-requested example of where this functionality comes in handy.
There's far more to describe that what lives in this changelog, so head over to the [key overrides documentation](https://docs.qmk.fm/#/feature_key_overrides) for more examples and info.
### Digitizer support ([#12851](https://github.com/qmk/qmk_firmware/pull/12851))
QMK gained the ability to pretend to be a digitizer device -- much like a tablet device. A mouse uses delta-coordinates -- move up, move right -- but a digitizer works with absolute coordinates -- top left, bottom right.
## Changes Requiring User Action :id=changes-requiring-user-action
### Updated Keyboard Codebases :id=updated-keyboard-codebases
The following keyboards have had their source moved within QMK:
Old Keyboard Name | New Keyboard Name
------------------------------|---------------------------------------------------------
aeboards/constellation | aeboards/constellation/rev1, aeboards/constellation/rev2
bakeneko65 | bakeneko65/rev2, bakeneko65/rev3
bm16a | kprepublic/bm16a
bm16s | kprepublic/bm16s
bm40hsrgb | kprepublic/bm40hsrgb
bm43a | kprepublic/bm43a
bm60poker | kprepublic/bm60poker
bm60rgb | kprepublic/bm60rgb
bm60rgb_iso | kprepublic/bm60rgb_iso
bm68rgb | kprepublic/bm68rgb
clawsome/gamebuddy | clawsome/gamebuddy/v1_0, clawsome/gamebuddy/v1_m
cospad | kprepublic/cospad
custommk/genesis | custommk/genesis/rev1, custommk/genesis/rev2
daisy | ktec/daisy
durgod/k320 | durgod/k3x0/k320
dztech/volcano660 | ilumkb/volcano660
ergodone | ktec/ergodone
gmmk/pro | gmmk/pro/ansi, gmmk/pro/iso
handwired/p1800fl | team0110/p1800fl
jj40 | kprepublic/jj40
jj4x4 | kprepublic/jj4x4
jj50 | kprepublic/jj50
kyria | splitkb/kyria
lazydesigners/the60 | lazydesigners/the60/rev1, lazydesigners/the60/rev2
matrix/m12og | matrix/m12og/rev1, matrix/m12og/rev2
mechlovin/hannah65/mechlovin9 | mechlovin/mechlovin9/rev1, mechlovin/mechlovin9/rev2
peiorisboards/ixora | coarse/ixora
ramonimbao/mona | ramonimbao/mona/v1, ramonimbao/mona/v1_1
staryu | ktec/staryu
tokyo60 | tokyokeyboard/tokyo60
vinta | coarse/vinta
xd002 | xiudi/xd002
xd004 | xiudi/xd004
xd60 | xiudi/xd60
xd68 | xiudi/xd68
xd75 | xiudi/xd75
xd84 | xiudi/xd84
xd84pro | xiudi/xd84pro
xd87 | xiudi/xd87
xd96 | xiudi/xd96
### Bootmagic Full Removal ([#13846](https://github.com/qmk/qmk_firmware/pull/13846)) :id=bootmagic-full-removal
As noted during last breaking changes cycle, QMK has decided to deprecate the full Bootmagic feature and leave Bootmagic Lite as the only remaining option.
This pull request changes the behavior of `BOOTMAGIC_ENABLE` such that specifying `full` results in an error, allowing only `no`, `yes`, or `lite`.
Currently `lite` is the equivalent of `yes` in `rules.mk`. Next cycle the use of the `lite` keyword will be prevented in favour of `yes` -- any new submissions should now be using `yes` or `no` to minimise disruption.
#### Bootmagic Full Deprecation Schedule
This is the current roadmap for the behavior of `BOOTMAGIC_ENABLE`:
- (done) From 2021 May 29, setting `BOOTMAGIC_ENABLE = yes` will enable Bootmagic Lite instead of full Bootmagic.
- (now) From 2021 Aug 28, `BOOTMAGIC_ENABLE` must be either `yes`, `lite`, or `no` setting `BOOTMAGIC_ENABLE = full` will cause compilation to fail.
- (next) From 2021 Nov 27, `BOOTMAGIC_ENABLE` must be either `yes` or `no` setting `BOOTMAGIC_ENABLE = lite` will cause compilation to fail.
### DIP switch callbacks are now boolean ([#13399](https://github.com/qmk/qmk_firmware/pull/13399)) :id=dip-switch-boolean
To match the encoder change last breaking changes cycle, DIP switch callbacks now return `bool`, too.
Example code before change:
```c
void dip_switch_update_kb(uint8_t index, bool active) {
dip_switch_update_user(index, active);
}
void dip_switch_update_user(uint8_t index, bool active) {
switch (index) {
case 0:
if(active) { audio_on(); } else { audio_off(); }
break;
}
}
void dip_switch_update_mask_kb(uint32_t state) {
dip_switch_update_mask_user(state);
}
void dip_switch_update_mask_user(uint32_t state) {
if (state & (1UL<<0) && state & (1UL<<1)) {
layer_on(_ADJUST); // C on esc
} else {
layer_off(_ADJUST);
}
}
```
Example code after change:
```c
bool dip_switch_update_kb(uint8_t index, bool active) {
if !(dip_switch_update_user(index, active)) { return false; }
return true;
}
bool dip_switch_update_user(uint8_t index, bool active) {
switch (index) {
case 0:
if(active) { audio_on(); } else { audio_off(); }
break;
}
return true; // Returning true allows keyboard code to execute, false will tell the keyboard code "I've already handled it".
}
bool dip_switch_update_mask_kb(uint32_t state) {
if (!dip_switch_update_mask_user(state)) { return false; }
return true;
}
bool dip_switch_update_mask_user(uint32_t state) {
if (state & (1UL<<0) && state & (1UL<<1)) {
layer_on(_ADJUST); // C on esc
} else {
layer_off(_ADJUST);
}
return true; // Returning true allows keyboard code to execute, false will tell the keyboard code "I've already handled it".
}
```
## Notable core changes :id=notable-core
### Split transport improvements :id=split-transport-improvements
Split keyboards gained a significant amount of improvements during this breaking changes cycle, specifically:
* Extensible split data sync ([#11930](https://github.com/qmk/qmk_firmware/pull/11930)) -- rewritten data sharing between sides, allowing for data transfer only when required, as well as enabling keyboards and keymaps to define their own shared data.
* Full-duplex ARM USART split ([#13081](https://github.com/qmk/qmk_firmware/pull/13081)) -- adds to the previous half-duplex driver and now allows for full-duplex support on ARM.
* Make solo half of split keyboards (more) usable. ([#13523](https://github.com/qmk/qmk_firmware/pull/13523)) -- allows the slave to be disconnected, enabling one-handed use.
* Switch split_common to CRC subsystem ([#13418](https://github.com/qmk/qmk_firmware/pull/13418))
!> If you're updating your split keyboard, you will need to flash both sides of the split with the your firmware.
### Teensy 4.x support ([#13056](https://github.com/qmk/qmk_firmware/pull/13056), [#13076](https://github.com/qmk/qmk_firmware/pull/13076), [#13077](https://github.com/qmk/qmk_firmware/pull/13077)) :id=teensy-4-x-support
Updated ChibiOS and ChibiOS-Contrib, which brought in support for Teensy 4.x dev boards, running NXP i.MX1062.
### Data Driven Improvements ([#13366](https://github.com/qmk/qmk_firmware/pull/13366))
QMK's pursuit of data-driven keyboards has progressed, allowing substantially more configurable options to be specified in `info.json`.
#### Tags
Tags will let you categorize your keyboard, and will be used in the future to allow browsing and sorting through keyboards in QMK. Tags are free-form text identifiers that identify attributes about your keyboard. To add tags you simply add a `tags` key to your `info.json`:
"tags": ["tkl", "backlight", "encoder"]
#### Dot Notation
With this release we are moving towards using JSON dot notation in more places. For example, when using `qmk info -f text`:
```
$ qmk info -f text -kb clueboard/card
bootloader: atmel-dfu
debounce: 20
diode_direction: ROW2COL
features.audio: True
features.backlight: True
features.bluetooth: False
features.bootmagic: False
features.command: True
features.console: True
features.extrakey: True
features.lto: True
features.midi: False
features.mousekey: True
features.nkro: False
features.rgblight: True
features.unicode: False
height: 8
keyboard_folder: clueboard/card
keyboard_name: Cluecard
layout_aliases.LAYOUT: LAYOUT_all
layouts: LAYOUT_all
maintainer: skullydazed
manufacturer: Clueboard
matrix_pins.cols: F1, F6, F7
matrix_pins.rows: B4, F0, F4, F5
platform: unknown
processor: atmega32u4
processor_type: avr
protocol: LUFA
rgblight.brightness_steps: 17
rgblight.hue_steps: 10
rgblight.led_count: 4
rgblight.pin: E6
rgblight.saturation_steps: 17
split.transport.protocol: serial
usb.device_ver: 0x0001
usb.pid: 0x2330
usb.vid: 0xC1ED
width: 10
```
#### New configuration keys
We've added dozens of new keys to `info.json` so that you can configure more than ever without writing a single line of code. A quick overview of the new items you can configure:
* `audio.pins`, `audio.voices`
* `backlight.breathing`, `backlight.breathing_period`, `backlight.levels`, `backlight.pin`,
* `bluetooth.driver`, `bluetooth.lto`
* `bootloader_instructions`
* `build.debounce_type`, `build.firmware_format`, `build.lto`
* `combo.count`, `combo.term`
* `leader_key.timing`, `leader_key.strict_processing`, `leader_key.timeout`
* `matrix.custom`, `matrix.custom_lite`, `matrix.ghost`, `matrix.io_delay`
* `mouse_key.enabled`, `mouse_key.delay`, `mouse_key.interval`, `mouse_key.max_speed`, `mouse_key.time_to_max`, `mouse_key.wheel_delay`
* `oneshot.tap_toggle`, `oneshot.timeout`
* `rgblight.layers.blink`, `rgblight.layers.enabled`, `rgblight.layers.max`, `rgblight.layers.override_rgb`, `rgblight.rgbw`
* `split.enabled`, `split.matrix_grid`, `split.matrix_pins`, `split.main`, `split.soft_serial_pin`, `split.soft_serial_speed`, `split.transport.protocol`, `split.transport.sync_matrix_state`, `split.transport.sync_modifiers`, `split.usb_detect`
* `tapping.force_hold`, `tapping.force_hold_per_key`, `tapping.ignore_mod_tap_interrupt`, `tapping.ignore_mod_tap_interrupt_per_key`, `tapping.permissive_hold`, `tapping.permissive_hold_per_key`, `tapping.retro`, `tapping.retro_per_key`, `tapping.term`, `tapping.term_per_key`, `tapping.toggle`
* `usb.force_nkro`, `usb.max_power`, `usb.no_startup_check`, `usb.polling_interval`, `usb.shared_endpoint.keyboard`, `usb.shared_endpoint.mouse`, `usb.suspend_wakeup_delay`, `usb.wait_for`
* `qmk.keys_per_scan`, `qmk.tap_keycode_delay`, `qmk.tap_capslock_delay`
### Codebase restructure and cleanup :id=codebase-restructure
QMK was originally based on TMK, and has grown in size considerably since its first inception. To keep moving things forward, restructure of some of the core areas of the code is needed to support new concepts and new hardware, and progress is happening along those lines:
* Move RGBLight code into its own folder ([#13312](https://github.com/qmk/qmk_firmware/pull/13312))
* Migrate platform independent code from tmk_core -> quantum ([#13673](https://github.com/qmk/qmk_firmware/pull/13673))
* matrix_scan_x -> x_task ([#13748](https://github.com/qmk/qmk_firmware/pull/13748))
* Move some led drivers to common folder ([#13749](https://github.com/qmk/qmk_firmware/pull/13749))
* Move chibios board files to allow tmk_core platform migration ([#13777](https://github.com/qmk/qmk_firmware/pull/13777))
* Begin to carve out platform/protocol API - Single main loop ([#13843](https://github.com/qmk/qmk_firmware/pull/13843))
* Relocate platform specific drivers ([#13894](https://github.com/qmk/qmk_firmware/pull/13894))
* Move all the flash logic from tmk_core ([#13927](https://github.com/qmk/qmk_firmware/pull/13927))
* Move USB Host Shield and Arduino core to `lib/` ([#13973](https://github.com/qmk/qmk_firmware/pull/13973))
* Unify behaviour of wait on AVR ([#14025](https://github.com/qmk/qmk_firmware/pull/14025))
* Move nix folder alongside vagrant ([#14132](https://github.com/qmk/qmk_firmware/pull/14132))
* Align some quantum sub-directories ([#14134](https://github.com/qmk/qmk_firmware/pull/14134))
---
## Full changelist
Core:
* Arm ps2 mouse interrupt ([#6490](https://github.com/qmk/qmk_firmware/pull/6490))
* Process combos earlier & overlapping combos ([#8591](https://github.com/qmk/qmk_firmware/pull/8591))
* Swap buttons on PS2 Mouse/Trackball ([#9205](https://github.com/qmk/qmk_firmware/pull/9205))
* Add HOLD_ON_OTHER_KEY_PRESS option for dual-role keys ([#9404](https://github.com/qmk/qmk_firmware/pull/9404))
* add yaml_build_options target ([#10533](https://github.com/qmk/qmk_firmware/pull/10533))
* Warn when building a board that uses arm_atsam ([#10904](https://github.com/qmk/qmk_firmware/pull/10904))
* Key Overrides ([#11422](https://github.com/qmk/qmk_firmware/pull/11422))
* Refactor `quantum/command.{c,h}` for code size & {read,maintain}ability ([#11842](https://github.com/qmk/qmk_firmware/pull/11842))
* Extensible split data sync ([#11930](https://github.com/qmk/qmk_firmware/pull/11930))
* Move print/debug files to quantum ([#12069](https://github.com/qmk/qmk_firmware/pull/12069))
* Unconditionally call led_init_ports ([#12116](https://github.com/qmk/qmk_firmware/pull/12116))
* Support using a timer for wait_us() on ChibiOS-based boards ([#12211](https://github.com/qmk/qmk_firmware/pull/12211))
* Add support for NO_PIN to all matrix types ([#12238](https://github.com/qmk/qmk_firmware/pull/12238))
* Avoid 8-bit timer overflows in debounce algorithms ([#12240](https://github.com/qmk/qmk_firmware/pull/12240))
* Add Per Key exclusions for Haptic Feedback ([#12386](https://github.com/qmk/qmk_firmware/pull/12386))
* Steno combinedkeys ([#12538](https://github.com/qmk/qmk_firmware/pull/12538))
* eeprom_stm32: implement high density wear leveling ([#12567](https://github.com/qmk/qmk_firmware/pull/12567))
* eeprom_i2c driver: added EXTERNAL_EEPROM_WP_PIN configuration option. ([#12617](https://github.com/qmk/qmk_firmware/pull/12617))
* Add CRC8 calculation subsystem to quantum ([#12641](https://github.com/qmk/qmk_firmware/pull/12641))
* Limit saturation for RGB_MATRIX_JELLYBEAN_RAINDROPS ([#12669](https://github.com/qmk/qmk_firmware/pull/12669))
* Add asym_eager_defer_pk debounce type ([#12689](https://github.com/qmk/qmk_firmware/pull/12689))
* Include lib8tion.c into RGB/LED matrix build list ([#12699](https://github.com/qmk/qmk_firmware/pull/12699))
* Add readPort() and some API to 'tmk_core/common/*/gpio.h' ([#12754](https://github.com/qmk/qmk_firmware/pull/12754))
* add wait_cpuclock() macro for AVR and CPU_CLOCK macro ([#12755](https://github.com/qmk/qmk_firmware/pull/12755))
* Trigger a wakeup after USB Reset on ChibiOS. ([#12831](https://github.com/qmk/qmk_firmware/pull/12831))
* Add sync_timer support over serial_link (i.e. Ergodox Infinity) ([#12845](https://github.com/qmk/qmk_firmware/pull/12845))
* Digitizer HID interface : absolute coordinates for mouse cursor ([#12851](https://github.com/qmk/qmk_firmware/pull/12851))
* Add config.h and rules.mk support for data driven keymaps ([#12859](https://github.com/qmk/qmk_firmware/pull/12859))
* Add alternate ldscript for STM32duino (F103xB) ([#12914](https://github.com/qmk/qmk_firmware/pull/12914))
* `keymap_extras`: Remove deprecated defines ([#12949](https://github.com/qmk/qmk_firmware/pull/12949))
* Retain brightness with lighting layers ([#13025](https://github.com/qmk/qmk_firmware/pull/13025))
* Move optical sensor code to drivers folder ([#13044](https://github.com/qmk/qmk_firmware/pull/13044))
* Change the prototype of matrix_output_unselect_delay() ([#13045](https://github.com/qmk/qmk_firmware/pull/13045))
* Add weak refs on reading rows/cols. ([#13062](https://github.com/qmk/qmk_firmware/pull/13062))
* Use single memcmp to determine if matrix changed. ([#13064](https://github.com/qmk/qmk_firmware/pull/13064))
* Improve layer mask handling ([#13065](https://github.com/qmk/qmk_firmware/pull/13065))
* mousekey: expose current report to users ([#13069](https://github.com/qmk/qmk_firmware/pull/13069))
* ChibiOS SVN mirror script. ([#13070](https://github.com/qmk/qmk_firmware/pull/13070))
* Added right vs left specific pin assignments for dip switch ([#13074](https://github.com/qmk/qmk_firmware/pull/13074))
* make RESET key work with Teensy 4.x ([#13076](https://github.com/qmk/qmk_firmware/pull/13076))
* wire up flash make target for Teensy 4.x ([#13077](https://github.com/qmk/qmk_firmware/pull/13077))
* bump USB spec version in device descriptor to 2.0 ([#13078](https://github.com/qmk/qmk_firmware/pull/13078))
* Unite half-duplex and full-duplex serial drivers ([#13081](https://github.com/qmk/qmk_firmware/pull/13081))
* Add ST7565 LCD driver ([#13089](https://github.com/qmk/qmk_firmware/pull/13089))
* `spi_master` Kinetis support ([#13098](https://github.com/qmk/qmk_firmware/pull/13098))
* GMMK Pro RGB Support ([#13147](https://github.com/qmk/qmk_firmware/pull/13147))
* Remove dfu-util arguments from mcu_selection ([#13150](https://github.com/qmk/qmk_firmware/pull/13150))
* Add subcommand to generate version.h ([#13151](https://github.com/qmk/qmk_firmware/pull/13151))
* Add oled_invert ([#13172](https://github.com/qmk/qmk_firmware/pull/13172))
* ST7565 invert ([#13237](https://github.com/qmk/qmk_firmware/pull/13237))
* RGB Matrix eeprom write limiting ([#13238](https://github.com/qmk/qmk_firmware/pull/13238))
* Temporary disable of CRC ([#13252](https://github.com/qmk/qmk_firmware/pull/13252))
* Move LED/RGB Matrix code into their own directories ([#13257](https://github.com/qmk/qmk_firmware/pull/13257))
* Skip EEPROM writes once done. ([#13293](https://github.com/qmk/qmk_firmware/pull/13293))
* Remove rgblight stubs ([#13302](https://github.com/qmk/qmk_firmware/pull/13302))
* Allow settable SPI divisor for AW20216 driver, set default to 4 ([#13309](https://github.com/qmk/qmk_firmware/pull/13309))
* Move RGBLight code into its own folder ([#13312](https://github.com/qmk/qmk_firmware/pull/13312))
* Unify matrix for split common and regular matrix ([#13330](https://github.com/qmk/qmk_firmware/pull/13330))
* Relocate RGB/HSV color defs to a more fitting place ([#13377](https://github.com/qmk/qmk_firmware/pull/13377))
* Adds support for STM32L412xB, STM32L422xB. ([#13383](https://github.com/qmk/qmk_firmware/pull/13383))
* Convert Dip Switch callbacks to boolean functions ([#13399](https://github.com/qmk/qmk_firmware/pull/13399))
* Use string literals for `SERIAL_NUMBER` ([#13403](https://github.com/qmk/qmk_firmware/pull/13403))
* Switch split_common to CRC subsystem ([#13418](https://github.com/qmk/qmk_firmware/pull/13418))
* Improve 'show_build_options' target ([#13425](https://github.com/qmk/qmk_firmware/pull/13425))
* AW20216 use register increment for framebuffer flushes ([#13430](https://github.com/qmk/qmk_firmware/pull/13430))
* Allow invert of SPLIT_HAND_PIN logic ([#13433](https://github.com/qmk/qmk_firmware/pull/13433))
* chibios: bootloader: use integer pointers as volatile ([#13450](https://github.com/qmk/qmk_firmware/pull/13450))
* Refactor OLED to allow easy addition of other types ([#13454](https://github.com/qmk/qmk_firmware/pull/13454))
* Dual RGB Matrix IS31FL3737 driver support to address #13442 ([#13457](https://github.com/qmk/qmk_firmware/pull/13457))
* Enable g_is31_leds PROGMEM for RGB Matrix IS31FL3737 driver ([#13480](https://github.com/qmk/qmk_firmware/pull/13480))
* Switch Ergodox Infinity over to split_common ([#13481](https://github.com/qmk/qmk_firmware/pull/13481))
* Make solo half of split keyboards (more) usable. ([#13523](https://github.com/qmk/qmk_firmware/pull/13523))
* Enable sync of OLED/ST7565 display on/off state on Splits ([#13542](https://github.com/qmk/qmk_firmware/pull/13542))
* Revert "Add rgblight to RGB Matrix VPATH" ([#13559](https://github.com/qmk/qmk_firmware/pull/13559))
* Move `SENDSTRING_BELL` code to `send_string.h` ([#13566](https://github.com/qmk/qmk_firmware/pull/13566))
* Migrate platform independent code from tmk_core -> quantum ([#13673](https://github.com/qmk/qmk_firmware/pull/13673))
* Avoid LTO conficts on arm_atsam ([#13676](https://github.com/qmk/qmk_firmware/pull/13676))
* Allow for removal of hysteresis on 4x encoders ([#13698](https://github.com/qmk/qmk_firmware/pull/13698))
* Port new_keyboard.sh to CLI ([#13706](https://github.com/qmk/qmk_firmware/pull/13706))
* Align AW20216 driver ([#13712](https://github.com/qmk/qmk_firmware/pull/13712))
* Haptic: driver-> feature ([#13713](https://github.com/qmk/qmk_firmware/pull/13713))
* Add support for STM32F407x MCUs. ([#13718](https://github.com/qmk/qmk_firmware/pull/13718))
* Remove legacy BACKLIGHT_CUSTOM_DRIVER option ([#13731](https://github.com/qmk/qmk_firmware/pull/13731))
* Minor tidy up of key overrides ([#13747](https://github.com/qmk/qmk_firmware/pull/13747))
* matrix_scan_x -> x_task ([#13748](https://github.com/qmk/qmk_firmware/pull/13748))
* Move some led drivers to common folder ([#13749](https://github.com/qmk/qmk_firmware/pull/13749))
* Allow for higher USB Polling rate on ATSAM boards ([#13755](https://github.com/qmk/qmk_firmware/pull/13755))
* Rgb matrix/enable modes explicitly ([#13758](https://github.com/qmk/qmk_firmware/pull/13758))
* Move chibios board files to allow tmk_core platform migration ([#13777](https://github.com/qmk/qmk_firmware/pull/13777))
* __flash? ([#13799](https://github.com/qmk/qmk_firmware/pull/13799))
* `--parallel` improvements ([#13800](https://github.com/qmk/qmk_firmware/pull/13800))
* Speed up pimoroni trackball driver ([#13823](https://github.com/qmk/qmk_firmware/pull/13823))
* Add a toggle key for GUI On/Off in Magic feature ([#13830](https://github.com/qmk/qmk_firmware/pull/13830))
* Begin to carve out platform/protocol API - Single main loop ([#13843](https://github.com/qmk/qmk_firmware/pull/13843))
* Remove Full Bootmagic ([#13846](https://github.com/qmk/qmk_firmware/pull/13846))
* Remove backwards compatibility of debounce names ([#13877](https://github.com/qmk/qmk_firmware/pull/13877))
* Relocate platform specific drivers ([#13894](https://github.com/qmk/qmk_firmware/pull/13894))
* Remove ONEHAND_ENABLE ([#13920](https://github.com/qmk/qmk_firmware/pull/13920))
* Move all the flash logic from tmk_core ([#13927](https://github.com/qmk/qmk_firmware/pull/13927))
* adding uf2 flash support for blackpill 401 ([#13968](https://github.com/qmk/qmk_firmware/pull/13968))
* Unify behaviour of wait on AVR ([#14025](https://github.com/qmk/qmk_firmware/pull/14025))
* Add qmk-hid bootloader detection support to `qmk console` ([#14038](https://github.com/qmk/qmk_firmware/pull/14038))
* Align DIP_SWITCH_PINS_RIGHT implementation with encoders ([#14079](https://github.com/qmk/qmk_firmware/pull/14079))
* Tidy up quantum.c now some of tmk_core has been merged ([#14083](https://github.com/qmk/qmk_firmware/pull/14083))
* Improve pmw3360 sensor and make it more hardware agnostic ([#14097](https://github.com/qmk/qmk_firmware/pull/14097))
* Move nix folder alongside vagrant ([#14132](https://github.com/qmk/qmk_firmware/pull/14132))
* Align some quantum sub-directories ([#14134](https://github.com/qmk/qmk_firmware/pull/14134))
* Revert 14083 && 14144 ([#14150](https://github.com/qmk/qmk_firmware/pull/14150))
CLI:
* allow LINE_PINxx for Teensy 4.x pins ([#13247](https://github.com/qmk/qmk_firmware/pull/13247))
* Remove the redundant pin name validation ([#13251](https://github.com/qmk/qmk_firmware/pull/13251))
* Move all our CLI file formatters to the format dir ([#13296](https://github.com/qmk/qmk_firmware/pull/13296))
* Refactor doctor.py into a directory ([#13298](https://github.com/qmk/qmk_firmware/pull/13298))
* Add git and venv info to doctor's output ([#13405](https://github.com/qmk/qmk_firmware/pull/13405))
* Matrix consistency check ([#13470](https://github.com/qmk/qmk_firmware/pull/13470))
* Remove references to info.json `width` and `height` in CLI ([#13728](https://github.com/qmk/qmk_firmware/pull/13728))
* Make `qmk doctor` more lenient about system config ([#13804](https://github.com/qmk/qmk_firmware/pull/13804))
* Defer the expensive search for layout macros until info.json has been processed ([#14007](https://github.com/qmk/qmk_firmware/pull/14007))
Submodule updates:
* Update ChibiOS, ChibiOS-Contrib. ([#13056](https://github.com/qmk/qmk_firmware/pull/13056))
* Update LUFA (18-07-2021) and add QMK-HID Bootloader support ([#13588](https://github.com/qmk/qmk_firmware/pull/13588))
* Update LUFA Submodule (2021-07-30) ([#13819](https://github.com/qmk/qmk_firmware/pull/13819))
* Bump gtest ([#13885](https://github.com/qmk/qmk_firmware/pull/13885))
* Update ChibiOS-Contrib, mirroring script. ([#13896](https://github.com/qmk/qmk_firmware/pull/13896))
* Move USB Host Shield and Arduino core to `lib/` ([#13973](https://github.com/qmk/qmk_firmware/pull/13973))
Keyboards:
* Migrate keyboards using uGFX to LED_MATRIX ([#9657](https://github.com/qmk/qmk_firmware/pull/9657))
* Remove MIDI Configuration boilerplate ([#11151](https://github.com/qmk/qmk_firmware/pull/11151))
* manyboard macro ([#11896](https://github.com/qmk/qmk_firmware/pull/11896))
* Moved tokyo60/ into tokyokeyboard/tokyo60/. ([#12023](https://github.com/qmk/qmk_firmware/pull/12023))
* Organize KPrepublic, K.T.E.C, xiudi boards into directories ([#12159](https://github.com/qmk/qmk_firmware/pull/12159))
* Add Durgod Taurus K310 keyboard ([#12314](https://github.com/qmk/qmk_firmware/pull/12314))
* add support for m65 and simple 5x13 ortholinear ([#12315](https://github.com/qmk/qmk_firmware/pull/12315))
* Relocalize and Update p1800fl ([#12425](https://github.com/qmk/qmk_firmware/pull/12425))
* GameBuddy v1.M ([#12637](https://github.com/qmk/qmk_firmware/pull/12637))
* Add mechlovin9 rev2 PCB ([#12767](https://github.com/qmk/qmk_firmware/pull/12767))
* Add RGB matrix support for Kyria ([#12789](https://github.com/qmk/qmk_firmware/pull/12789))
* RGB Matrix working for Sofle RGB ([#12861](https://github.com/qmk/qmk_firmware/pull/12861))
* Add Durgod Hades, Galaxy and Venus Keyboards ([#12893](https://github.com/qmk/qmk_firmware/pull/12893))
* kint36: set correct EEPROM size ([#12946](https://github.com/qmk/qmk_firmware/pull/12946))
* Updated encoder_update_user on my keymap to follow the new signature on quantum ([#13152](https://github.com/qmk/qmk_firmware/pull/13152))
* Add Creator Pro by SergioPoverony ([#13154](https://github.com/qmk/qmk_firmware/pull/13154))
* Use the new ST7565 driver on Ergodox Infinity ([#13165](https://github.com/qmk/qmk_firmware/pull/13165))
* Refactor atom47 and add rev4 and rev5 ([#13201](https://github.com/qmk/qmk_firmware/pull/13201))
* Add Bakeneko65 V3 and revision folders ([#13228](https://github.com/qmk/qmk_firmware/pull/13228))
* Keyboards/RGBKB/Mün ([#13239](https://github.com/qmk/qmk_firmware/pull/13239))
* Optimize our jsonschema by using refs ([#13271](https://github.com/qmk/qmk_firmware/pull/13271))
* Handwired/Stream_Cheap/2x4: Add via support ([#13297](https://github.com/qmk/qmk_firmware/pull/13297))
* ez_maker/directpins for easy one-offs in qmk_configurator ([#13321](https://github.com/qmk/qmk_firmware/pull/13321))
* add kinT kinesis keyboard controller (kint41 variant) ([#13333](https://github.com/qmk/qmk_firmware/pull/13333))
* Error log cleanup ([#13349](https://github.com/qmk/qmk_firmware/pull/13349))
* Drashna's split updates ([#13350](https://github.com/qmk/qmk_firmware/pull/13350))
* Migrate SHIFT_ESC and RGB `fn_actions` to Grave Escape and RGB keycodes ([#13360](https://github.com/qmk/qmk_firmware/pull/13360))
* Add a lot more data to info.json ([#13366](https://github.com/qmk/qmk_firmware/pull/13366))
* Remove `API_SYSEX_ENABLE`s from rules.mk ([#13389](https://github.com/qmk/qmk_firmware/pull/13389))
* gmmk/pro/mike1808 keymap ([#13398](https://github.com/qmk/qmk_firmware/pull/13398))
* Remove deprecated callbacks for encoders and dip switches ([#13404](https://github.com/qmk/qmk_firmware/pull/13404))
* first pass: matrix consistency improvements ([#13471](https://github.com/qmk/qmk_firmware/pull/13471))
* Migrate more `fn_actions` stuff ([#13502](https://github.com/qmk/qmk_firmware/pull/13502))
* add simple gmmk pro macos keymap with rgb ([#13504](https://github.com/qmk/qmk_firmware/pull/13504))
* move volcano660 to ilumkb folder ([#13550](https://github.com/qmk/qmk_firmware/pull/13550))
* Valor Rev 2 ([#13551](https://github.com/qmk/qmk_firmware/pull/13551))
* Split GMMK Pro PCBs into separate revisions ([#13570](https://github.com/qmk/qmk_firmware/pull/13570))
* Remove the vision_division keyboard ([#13571](https://github.com/qmk/qmk_firmware/pull/13571))
* Develop - Change uint32_t to layer_state_t ([#13596](https://github.com/qmk/qmk_firmware/pull/13596))
* Develop - DC01 left ([#13597](https://github.com/qmk/qmk_firmware/pull/13597))
* Created "paddlegame" keymap ([#13629](https://github.com/qmk/qmk_firmware/pull/13629))
* Add timer_avr to includes for broken builds ([#13641](https://github.com/qmk/qmk_firmware/pull/13641))
* Disable console by default on all Keebio boards ([#13649](https://github.com/qmk/qmk_firmware/pull/13649))
* Enable LTO by default on BastardKB Scylla ([#13664](https://github.com/qmk/qmk_firmware/pull/13664))
* Reduce compile size for dz60rgb v2.1 ([#13680](https://github.com/qmk/qmk_firmware/pull/13680))
* Clean up remaining RGB_DISABLE_WHEN_USB_SUSPENDED defines ([#13689](https://github.com/qmk/qmk_firmware/pull/13689))
* Remove some legacy files ([#13715](https://github.com/qmk/qmk_firmware/pull/13715))
* [Keyboard Update] Change to L422 ([#13717](https://github.com/qmk/qmk_firmware/pull/13717))
* Update kyria make path example ([#13720](https://github.com/qmk/qmk_firmware/pull/13720))
* Drashna's Defaults cleanup ([#13722](https://github.com/qmk/qmk_firmware/pull/13722))
* Reduce firmware size in prep for #12670 ([#13724](https://github.com/qmk/qmk_firmware/pull/13724))
* Tidy up rgbkb/mun ([#13801](https://github.com/qmk/qmk_firmware/pull/13801))
* Make default keymap for GMMK Pro reflect stock ([#13850](https://github.com/qmk/qmk_firmware/pull/13850))
* Rework as per 9824 ([#13898](https://github.com/qmk/qmk_firmware/pull/13898))
* Remove console from keebio via keyboards ([#13901](https://github.com/qmk/qmk_firmware/pull/13901))
* Drashna split transport improvement ([#13905](https://github.com/qmk/qmk_firmware/pull/13905))
* Copy GMMK Pro screw specs to ISO readme ([#13908](https://github.com/qmk/qmk_firmware/pull/13908))
* Clean up remaining RGB_DISABLE_WHEN_USB_SUSPENDED defines Part 2 ([#13912](https://github.com/qmk/qmk_firmware/pull/13912))
* Add andrebrait layout for GMMK Pro ([#13932](https://github.com/qmk/qmk_firmware/pull/13932))
* Updated RGB Matrix suspend define part 3 ([#13954](https://github.com/qmk/qmk_firmware/pull/13954))
* Improve andrebrait keymap ([#13985](https://github.com/qmk/qmk_firmware/pull/13985))
* Drashna's Improve OLEDs and custom Split code ([#14063](https://github.com/qmk/qmk_firmware/pull/14063))
* Kyria default reformat ([#14080](https://github.com/qmk/qmk_firmware/pull/14080))
* Feature rich keymap for GMMK Pro (ANSI) ([#14120](https://github.com/qmk/qmk_firmware/pull/14120))
Keyboard fixes:
* Fix LED mapping for GMMK Pro ([#13189](https://github.com/qmk/qmk_firmware/pull/13189))
* Fix up SplitKB keyboards ([#13511](https://github.com/qmk/qmk_firmware/pull/13511))
* Keyboards/sol rev2 fix ([#13533](https://github.com/qmk/qmk_firmware/pull/13533))
* Fix MATRIX_COLS for aeboards/constellation/rev2 ([#13633](https://github.com/qmk/qmk_firmware/pull/13633))
* Fix errors with matrix_output_unselect_delay function calls ([#13645](https://github.com/qmk/qmk_firmware/pull/13645))
* Fix default keymap for 0xCB 1337 keyboard ([#13646](https://github.com/qmk/qmk_firmware/pull/13646))
* Fix Matrix Row number for ggkeyboards/genisis ([#13647](https://github.com/qmk/qmk_firmware/pull/13647))
* Fix matrix issues with Promethium ([#13648](https://github.com/qmk/qmk_firmware/pull/13648))
* Fix dc01/left so that it doesn't throw a warning ([#13653](https://github.com/qmk/qmk_firmware/pull/13653))
* Remove broken, unmaintained converter/ibm_5291 ([#13658](https://github.com/qmk/qmk_firmware/pull/13658))
* Quick hack to fix Astro65 board ([#13665](https://github.com/qmk/qmk_firmware/pull/13665))
* Fix symmetric70_proto build break on develop branch ([#13667](https://github.com/qmk/qmk_firmware/pull/13667))
* Fix matrix delay on Drop boards ([#13671](https://github.com/qmk/qmk_firmware/pull/13671))
* Fix split matrix for sekigon grs 70ec ([#13672](https://github.com/qmk/qmk_firmware/pull/13672))
* Fix type on pandora via keymap ([#13681](https://github.com/qmk/qmk_firmware/pull/13681))
* Fix & clean up tronguylabs/m122_3270 ([#13684](https://github.com/qmk/qmk_firmware/pull/13684))
* Fix up xd002 rgb keymaps ([#13685](https://github.com/qmk/qmk_firmware/pull/13685))
* Dactyl Manuform cleanup ([#13686](https://github.com/qmk/qmk_firmware/pull/13686))
* Fix Q1 change dip switch to bool ([#13687](https://github.com/qmk/qmk_firmware/pull/13687))
* Fix compile size for the Merge UM70 via keymap ([#13690](https://github.com/qmk/qmk_firmware/pull/13690))
* Fix compile size for the Lets Split Sockets via keymap ([#13691](https://github.com/qmk/qmk_firmware/pull/13691))
* Fix Compile size on ungodly Launch Pad ([#13692](https://github.com/qmk/qmk_firmware/pull/13692))
* dirty fix ([#13695](https://github.com/qmk/qmk_firmware/pull/13695))
* Fix compile size for the Vitamins Included via keymap ([#13696](https://github.com/qmk/qmk_firmware/pull/13696))
* Fix typo in Dactyl Manuform ([#13740](https://github.com/qmk/qmk_firmware/pull/13740))
* Fix compile issues due to LED changes ([#13821](https://github.com/qmk/qmk_firmware/pull/13821))
* Fix SRC include for matrix/m20add issi driver ([#13826](https://github.com/qmk/qmk_firmware/pull/13826))
* fix develop branch move file ([#13832](https://github.com/qmk/qmk_firmware/pull/13832))
* Fix knops keymaps ([#13872](https://github.com/qmk/qmk_firmware/pull/13872))
* Switch Draculad to using WPM char hack ([#13886](https://github.com/qmk/qmk_firmware/pull/13886))
* Fix up builds after #8591 ([#13900](https://github.com/qmk/qmk_firmware/pull/13900))
* Fix matrix_output_unselect_delay for handwired/xealousbrown ([#13913](https://github.com/qmk/qmk_firmware/pull/13913))
* Fixup rgb matrix config for KBD67 mkII boards ([#13931](https://github.com/qmk/qmk_firmware/pull/13931))
* Fix compliation for ferris 0.2 bling ([#13937](https://github.com/qmk/qmk_firmware/pull/13937))
* Fix some additional bootmagic settings ([#13979](https://github.com/qmk/qmk_firmware/pull/13979))
* Fix default keymap for GMMK Pro Iso ([#13980](https://github.com/qmk/qmk_firmware/pull/13980))
* Fixup Ungodly Launch Pad config ([#13992](https://github.com/qmk/qmk_firmware/pull/13992))
* Fix errors that have cropped up in develop ([#14005](https://github.com/qmk/qmk_firmware/pull/14005))
* Fix wait_us overflow in matrix for dactyl based boards ([#14039](https://github.com/qmk/qmk_firmware/pull/14039))
* Fixup Neson Design N6 ISSI includes ([#14045](https://github.com/qmk/qmk_firmware/pull/14045))
* Fixup `massdrop/alt`, `cest73/tkm`. ([#14048](https://github.com/qmk/qmk_firmware/pull/14048))
* fix helix:fraanrosi compile error caused by #13677. ([#14061](https://github.com/qmk/qmk_firmware/pull/14061))
* Fix compile issues for Tractyl Manuform ([#14105](https://github.com/qmk/qmk_firmware/pull/14105))
* Disable Console on Keebio Quefrency ([#14108](https://github.com/qmk/qmk_firmware/pull/14108))
* Fixed GMMK Pro -> stickandgum keymap readme.md ([#14123](https://github.com/qmk/qmk_firmware/pull/14123))
* Drashna keymap fixups ([#14140](https://github.com/qmk/qmk_firmware/pull/14140))
* fix ([#14142](https://github.com/qmk/qmk_firmware/pull/14142))
* Fix merge artifacts ([#14146](https://github.com/qmk/qmk_firmware/pull/14146))
* Update readme files ([#14172](https://github.com/qmk/qmk_firmware/pull/14172))
Others:
* Add examples to RGB Matrix Indicators docs ([#12797](https://github.com/qmk/qmk_firmware/pull/12797))
Bugs:
* Fix Indicator LED issues ([#12097](https://github.com/qmk/qmk_firmware/pull/12097))
* Fixing incorrect keymap build when switching between multiple keymap.jsons ([#12632](https://github.com/qmk/qmk_firmware/pull/12632))
* Fix LED Hit Counter for LED/RGB Matrix ([#12674](https://github.com/qmk/qmk_firmware/pull/12674))
* ChibiOS fix O3 and LTO breakage of extra keys and joystick ([#12819](https://github.com/qmk/qmk_firmware/pull/12819))
* Remove the #10088 hotfix for Teensy 3.1-like Input:Club keyboards ([#12870](https://github.com/qmk/qmk_firmware/pull/12870))
* Fix firmware size check with avr-libc 1:2.0.0+Atmel3.6.2-1.1 (Debian bullseye) ([#12951](https://github.com/qmk/qmk_firmware/pull/12951))
* Fix RGB/LED Suspend defines ([#13146](https://github.com/qmk/qmk_firmware/pull/13146))
* Fix overrun in st7565_write_raw when not at (0, 0) ([#13209](https://github.com/qmk/qmk_firmware/pull/13209))
* Upgrades Vagrant box to Debian 10 to fix Docker build error on Debian 9. ([#13236](https://github.com/qmk/qmk_firmware/pull/13236))
* Fix issues with VIA EEPROM init and bring in line with eeconfig functionality ([#13243](https://github.com/qmk/qmk_firmware/pull/13243))
* Fix CRC for AVR and enable again. ([#13253](https://github.com/qmk/qmk_firmware/pull/13253))
* Fix linker error when rgblight and RGB Matrix are both enabled ([#13304](https://github.com/qmk/qmk_firmware/pull/13304))
* Fix building layouts from JSON ([#13310](https://github.com/qmk/qmk_firmware/pull/13310))
* Add rgblight to RGB Matrix VPATH ([#13371](https://github.com/qmk/qmk_firmware/pull/13371))
* Fix two out of bounds accesses from #13330. ([#13525](https://github.com/qmk/qmk_firmware/pull/13525))
* Fixes for clang not being able to run unit tests ([#13546](https://github.com/qmk/qmk_firmware/pull/13546))
* Fixup Audio startup and add to documents ([#13606](https://github.com/qmk/qmk_firmware/pull/13606))
* CLI/Docs: Fix the format commands' name ([#13668](https://github.com/qmk/qmk_firmware/pull/13668))
* Disables rgblight twinkle by default. ([#13677](https://github.com/qmk/qmk_firmware/pull/13677))
* Fix typo in dip switch example ([#13688](https://github.com/qmk/qmk_firmware/pull/13688))
* docs/cli_commands: fix typo ([#13697](https://github.com/qmk/qmk_firmware/pull/13697))
* Include gpio.h in solenoid driver for GPIO Control functions ([#13716](https://github.com/qmk/qmk_firmware/pull/13716))
* Fix pimoroni trackball read address ([#13810](https://github.com/qmk/qmk_firmware/pull/13810))
* Fix Key Override includes ([#13831](https://github.com/qmk/qmk_firmware/pull/13831))
* Fix alignment of USB out report buffer 2 -> 4 ([#13838](https://github.com/qmk/qmk_firmware/pull/13838))
* Fix compilation issue. ([#13926](https://github.com/qmk/qmk_firmware/pull/13926))
* Fix `combo_disable` ([#13988](https://github.com/qmk/qmk_firmware/pull/13988))
* Fix pmw3360 code to only output debug info if mouse debugging is enabled ([#13993](https://github.com/qmk/qmk_firmware/pull/13993))
* Fix ifdefs for OLED split sync code ([#14017](https://github.com/qmk/qmk_firmware/pull/14017))
* Various fixes from reorg of files ([#14051](https://github.com/qmk/qmk_firmware/pull/14051))
* Fixup atsam builds. ([#14052](https://github.com/qmk/qmk_firmware/pull/14052))
* Fix RGB/LED Matrix Suspend code ([#14084](https://github.com/qmk/qmk_firmware/pull/14084))
* Fix issues with recent keymap.json changes ([#14089](https://github.com/qmk/qmk_firmware/pull/14089))
* Fix LED Matrix suspend code ([#14090](https://github.com/qmk/qmk_firmware/pull/14090))
* Fix up compilation issues. ([#14095](https://github.com/qmk/qmk_firmware/pull/14095))
* Fix copypasta issue with pmw3360 sensor config ([#14106](https://github.com/qmk/qmk_firmware/pull/14106))
* Fix typo ([#14118](https://github.com/qmk/qmk_firmware/pull/14118))
* Fix bootloadHID comments breaking :flash ([#14133](https://github.com/qmk/qmk_firmware/pull/14133))
* Fix Mouse Shared EP functionality ([#14136](https://github.com/qmk/qmk_firmware/pull/14136))
* Short term bodge for firmware size bloat ([#14144](https://github.com/qmk/qmk_firmware/pull/14144))
* Move to correct location ([#14171](https://github.com/qmk/qmk_firmware/pull/14171))

View File

@@ -36,6 +36,7 @@
* Guides
* [Customizing Functionality](custom_quantum_functions.md)
* [Driver Installation with Zadig](driver_installation_zadig.md)
* [Easy Maker for One Offs](easy_maker.md)
* [Keymap Overview](keymap.md)
* Development Environments
* [Docker Guide](getting_started_docker.md)
@@ -61,6 +62,7 @@
* [Language-Specific Keycodes](reference_keymap_extras.md)
* [Modifier Keys](feature_advanced_keycodes.md)
* [Quantum Keycodes](quantum_keycodes.md)
* [Magic Keycodes](keycodes_magic.md)
* Advanced Keycodes
* [Command](feature_command.md)
@@ -78,6 +80,7 @@
* [Combos](feature_combo.md)
* [Debounce API](feature_debounce_type.md)
* [Key Lock](feature_key_lock.md)
* [Key Overrides](feature_key_overrides.md)
* [Layers](feature_layers.md)
* [One Shot Keys](one_shot_keys.md)
* [Pointing Device](feature_pointing_device.md)
@@ -94,6 +97,7 @@
* Hardware Features
* Displays
* [HD44780 LCD Controller](feature_hd44780.md)
* [ST7565 LCD Driver](feature_st7565.md)
* [OLED Driver](feature_oled_driver.md)
* Lighting
* [Backlight](feature_backlight.md)
@@ -102,8 +106,9 @@
* [RGB Matrix](feature_rgb_matrix.md)
* [Audio](feature_audio.md)
* [Bluetooth](feature_bluetooth.md)
* [Bootmagic](feature_bootmagic.md)
* [Bootmagic Lite](feature_bootmagic.md)
* [Custom Matrix](custom_matrix.md)
* [Digitizer](feature_digitizer.md)
* [DIP Switch](feature_dip_switch.md)
* [Encoders](feature_encoders.md)
* [Haptic Feedback](feature_haptic_feedback.md)

View File

@@ -6,6 +6,7 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## What has been included in past Breaking Changes?
* [2021 Aug 28](ChangeLog/20210828.md)
* [2021 May 29](ChangeLog/20210529.md)
* [2021 Feb 27](ChangeLog/20210227.md)
* [2020 Nov 28](ChangeLog/20201128.md)
@@ -20,12 +21,12 @@ The next Breaking Change is scheduled for August 28, 2021.
### Important Dates
* [x] 2021 May 29 - `develop` is created. Each push to `master` is subsequently merged to `develop`
* [ ] 2021 Jul 31 - `develop` closed to new PR's.
* [ ] 2021 Jul 31 - Call for testers.
* [ ] 2021 Aug 26 - `master` is locked, no PR's merged.
* [ ] 2021 Aug 28 - Merge `develop` to `master`.
* [ ] 2021 Aug 28 - `master` is unlocked. PR's can be merged again.
* [x] 2021 Aug 29 - `develop` is created. Each push to `master` is subsequently merged to `develop`
* [ ] 2021 Oct 31 - `develop` closed to new PR's.
* [ ] 2021 Oct 31 - Call for testers.
* [ ] 2021 Nov 26 - `master` is locked, no PR's merged.
* [ ] 2021 Nov 28 - Merge `develop` to `master`.
* [ ] 2021 Nov 28 - `master` is unlocked. PR's can be merged again.
## What changes will be included?
@@ -99,3 +100,7 @@ This happens immediately after the previous `develop` branch is merged.
* [ ] `git pull --ff-only`
* [ ] `git merge --no-ff develop`
* [ ] `git push upstream master`
## Post-merge operations
* (Optional) [update ChibiOS + ChibiOS-Contrib on `develop`](chibios_upgrade_instructions.md)

View File

@@ -2,6 +2,7 @@
This page links to all previous changelogs from the QMK Breaking Changes process.
* [2021 Aug 28](ChangeLog/20210828.md) - version 0.14.0
* [2021 May 29](ChangeLog/20210529.md) - version 0.13.0
* [2021 Feb 27](ChangeLog/20210227.md) - version 0.12.0
* [2020 Nov 28](ChangeLog/20201128.md) - version 0.11.0

View File

@@ -0,0 +1,56 @@
# ChibiOS Upgrade Procedure
ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a branch tied to the ChibiOS version in use and should not be mixed with different versions.
## Getting ChibiOS
* `svn` Initialisation:
* Only needed to be done once
* You might need to separately install `git-svn` package in your OS's package manager
* `git svn init --stdlayout --prefix='svn/' http://svn.osdn.net/svnroot/chibios/`
* `git remote add qmk git@github.com:qmk/ChibiOS.git`
* Updating:
* `git svn fetch`
* First time around this will take several hours
* Subsequent updates will be incremental only
* Tagging example (work out which version first!):
* `git tag -a ver20.3.3 -m ver20.3.3 svn/tags/ver20.3.3`
* `git push qmk ver20.3.3`
* `git tag -a breaking_YYYY_qN -m breaking_YYYY_qN svn/tags/ver20.3.3`
* `git push qmk breaking_YYYY_qN`
## Getting ChibiOS-Contrib
* `git` Initialisation:
* `git clone git@github.com:qmk/ChibiOS-Contrib`
* `git remote add upstream https://github.com/ChibiOS/ChibiOS-Contrib`
* `git checkout -b chibios-20.3.x upstream/chibios-20.3.x`
* Updating:
* `git fetch --all --tags --prune`
* `git checkout chibios-20.3.x`
* `git pull --ff-only`
* `git push origin chibios-20.3.x`
* `git tag -a breaking_YYYY_qN -m breaking_YYYY_qN chibios-20.3.x`
* `git push origin breaking_YYYY_qN`
## Updating submodules
* Update the submodules
* `cd $QMK_FIRMWARE`
* `git checkout develop`
* `git pull --ff-only`
* `git checkout -b chibios-version-bump`
* `cd lib/chibios`
* `git fetch --all --tags --prune`
* `git checkout breaking_YYYY_qN`
* `cd ../chibios-contrib`
* `git fetch --all --tags --prune`
* `git checkout breaking_YYYY_qN`
* Build everything
* `cd $QMK_FIRMWARE`
* `qmk multibuild -j4`
* Make sure there are no errors
* Push to the repo
* `git commit -am 'Update ChibiOS to XXXXXXXXX'`
* `git push --set-upstream origin chibios-version-bump`
* Make a PR to qmk_firmware with the new branch

View File

@@ -17,7 +17,7 @@ qmk compile [-c] <configuratorExport.json>
**Usage for Keymaps**:
```
qmk compile [-c] [-e <var>=<value>] -kb <keyboard_name> -km <keymap_name>
qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] -kb <keyboard_name> -km <keymap_name>
```
**Usage in Keyboard Directory**:
@@ -73,6 +73,17 @@ $ qmk compile -kb dz60
...
```
**Parallel Compilation**:
It is possible to speed up compilation by adding the `-j`/`--parallel` flag.
```
qmk compile -j <num_jobs> -kb <keyboard_name>
```
The `num_jobs` argument determines the maximum number of jobs that can be used. Setting it to zero will enable parallel compilation without limiting the maximum number of jobs.
```
qmk compile -j 0 -kb <keyboard_name>
```
## `qmk flash`
This command is similar to `qmk compile`, but can also target a bootloader. The bootloader is optional, and is set to `:flash` by default. To specify a different bootloader, use `-bl <bootloader>`. Visit the [Flashing Firmware](flashing.md) guide for more details of the available bootloaders.
@@ -82,13 +93,13 @@ This command is directory aware. It will automatically fill in KEYBOARD and/or K
**Usage for Configurator Exports**:
```
qmk flash [-bl <bootloader>] [-c] [-e <var>=<value>] <configuratorExport.json>
qmk flash [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>] <configuratorExport.json>
```
**Usage for Keymaps**:
```
qmk flash -kb <keyboard_name> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>]
qmk flash -kb <keyboard_name> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]
```
**Listing the Bootloaders**
@@ -107,54 +118,6 @@ This command lets you configure the behavior of QMK. For the full `qmk config` d
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
## `qmk console`
This command lets you connect to keyboard consoles to get debugging messages. It only works if your keyboard firmware has been compiled with `CONSOLE_ENABLED=yes`.
**Usage**:
```
qmk console [-d <pid>:<vid>[:<index>]] [-l] [-n] [-t] [-w <seconds>]
```
**Examples**:
Connect to all available keyboards and show their console messages:
```
qmk console
```
List all devices:
```
qmk console -l
```
Show only messages from clueboard/66/rev3 keyboards:
```
qmk console -d C1ED:2370
```
Show only messages from the second clueboard/66/rev3:
```
qmk console -d C1ED:2370:2
```
Show timestamps and VID:PID instead of names:
```
qmk console -n -t
```
Disable bootloader messages:
```
qmk console --no-bootloaders
```
## `qmk doctor`
This command examines your environment and alerts you to potential build or flash problems. It can fix many of them if you want it to.
@@ -280,12 +243,12 @@ qmk list-keymaps -kb planck/ez
This command creates a new keyboard based on available templates.
This command will prompt for input to guide you though the generation process.
Any arguments that are not provided will prompt for input. If `-u` is not passed and `user.name` is set in .gitconfig, it will be used as the default username in the prompt.
**Usage**:
```
qmk new-keyboard
qmk new-keyboard [-kb KEYBOARD] [-t {avr,ps2avrgb}] -u USERNAME
```
## `qmk new-keymap`
@@ -314,7 +277,18 @@ qmk clean [-a]
# Developer Commands
## `qmk cformat`
## `qmk format-text`
This command formats text files to have proper line endings.
Every text file in the repository needs to have Unix (LF) line ending.
If you are working on **Windows**, you must ensure that line endings are corrected in order to get your PRs merged.
```
qmk format-text
```
## `qmk format-c`
This command formats C code using clang-format.
@@ -325,25 +299,25 @@ Run it with `-a` to format all core code, or pass filenames on the command line
**Usage for specified files**:
```
qmk cformat [file1] [file2] [...] [fileN]
qmk format-c [file1] [file2] [...] [fileN]
```
**Usage for all core files**:
```
qmk cformat -a
qmk format-c -a
```
**Usage for only changed files against origin/master**:
```
qmk cformat
qmk format-c
```
**Usage for only changed files against branch_name**:
```
qmk cformat -b branch_name
qmk format-c -b branch_name
```
## `qmk docs`
@@ -369,7 +343,7 @@ qmk generate-docs
## `qmk generate-rgb-breathe-table`
This command generates a lookup table (LUT) header file for the [RGB Lighting](feature_rgblight.md) feature's breathing animation. Place this file in your keyboard or keymap directory as `rgblight_breathe_table.h` to override the default LUT in `quantum/`.
This command generates a lookup table (LUT) header file for the [RGB Lighting](feature_rgblight.md) feature's breathing animation. Place this file in your keyboard or keymap directory as `rgblight_breathe_table.h` to override the default LUT in `quantum/rgblight/`.
**Usage**:
@@ -399,14 +373,14 @@ $ qmk kle2json -f kle.txt -f
Ψ Wrote out to info.json
```
## `qmk pyformat`
## `qmk format-python`
This command formats python code in `qmk_firmware`.
**Usage**:
```
qmk pyformat
qmk format-python
```
## `qmk pytest`

View File

@@ -188,7 +188,7 @@ cli.log.info('Reading from %s and writing to %s', cli.args.filename, cli.args.ou
# Testing, and Linting, and Formatting (oh my!)
We use nose2, flake8, and yapf to test, lint, and format code. You can use the `pytest` and `pyformat` subcommands to run these tests:
We use nose2, flake8, and yapf to test, lint, and format code. You can use the `pytest` and `format-py` subcommands to run these tests:
### Testing and Linting
@@ -196,7 +196,7 @@ We use nose2, flake8, and yapf to test, lint, and format code. You can use the `
### Formatting
qmk pyformat
qmk format-py
## Formatting Details

View File

@@ -27,10 +27,13 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
* [STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html)
* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
* [STM32F446](https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html)
* [STM32G431](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x1.html)
* [STM32G474](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x4.html)
* [STM32L412](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
* [STM32L422](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
* [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
* [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)

View File

@@ -51,8 +51,10 @@ This is a C header file that is one of the first things included, and will persi
* the number of columns in your keyboard's matrix
* `#define MATRIX_ROW_PINS { D0, D5, B5, B6 }`
* pins of the rows, from top to bottom
* may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See [low-level matrix overrides](custom_quantum_functions.md?id=low-level-matrix-overrides) for more information.
* `#define MATRIX_COL_PINS { F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }`
* pins of the columns, from left to right
* may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See [low-level matrix overrides](custom_quantum_functions.md?id=low-level-matrix-overrides) for more information.
* `#define MATRIX_IO_DELAY 30`
* the delay in microseconds when between changing matrix pin state and reading values
* `#define UNUSED_PINS { D1, D2, D3, B1, B2, B3 }`
@@ -186,13 +188,27 @@ If you define these options you will enable the associated feature, which may in
few ms of delay from this. But if you're doing chording on something with 3-4ms
scan times? You probably want this.
* `#define COMBO_COUNT 2`
* Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature.
* Set this to the number of combos that you're using in the [Combo](feature_combo.md) feature. Or leave it undefined and programmatically set the count.
* `#define COMBO_TERM 200`
* how long for the Combo keys to be detected. Defaults to `TAPPING_TERM` if not defined.
* `#define COMBO_MUST_HOLD_MODS`
* Flag for enabling extending timeout on Combos containing modifers
* `#define COMBO_MOD_TERM 200`
* Allows for extending COMBO_TERM for mod keys while mid-combo.
* `#define COMBO_MUST_HOLD_PER_COMBO`
* Flag to enable per-combo COMBO_TERM extension and `get_combo_must_hold()` function
* `#define COMBO_TERM_PER_COMBO`
* Flag to enable per-combo COMBO_TERM extension and `get_combo_term()` function
* `#define COMBO_STRICT_TIMER`
* Only start the combo timer on the first key press instead of on all key presses.
* `#define COMBO_NO_TIMER`
* Disable the combo timer completely for relaxed combos.
* `#define TAP_CODE_DELAY 100`
* Sets the delay between `register_code` and `unregister_code`, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
* `#define TAP_HOLD_CAPS_DELAY 80`
* Sets the delay for Tap Hold keys (`LT`, `MT`) when using `KC_CAPSLOCK` keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
* `#define KEY_OVERRIDE_REPEAT_DELAY 500`
* Sets the key repeat interval for [key overrides](feature_key_overrides.md).
## RGB Light Configuration
@@ -272,7 +288,7 @@ There are a few different ways to set handedness for split keyboards (listed in
### Other Options
* `#define USE_I2C`
* For using I2C instead of Serial (defaults to serial)
* For using I2C instead of Serial (default is serial; serial transport is supported on ARM -- I2C is AVR-only)
* `#define SOFT_SERIAL_PIN D0`
* When using serial, define this. `D0` or `D1`,`D2`,`D3`,`E6`.
@@ -280,6 +296,7 @@ There are a few different ways to set handedness for split keyboards (listed in
* `#define MATRIX_ROW_PINS_RIGHT { <row pins> }`
* `#define MATRIX_COL_PINS_RIGHT { <col pins> }`
* If you want to specify a different pinout for the right half than the left half, you can define `MATRIX_ROW_PINS_RIGHT`/`MATRIX_COL_PINS_RIGHT`. Currently, the size of `MATRIX_ROW_PINS` must be the same as `MATRIX_ROW_PINS_RIGHT` and likewise for the definition of columns.
* may be omitted by the keyboard designer if matrix reads are handled in an alternate manner. See [low-level matrix overrides](custom_quantum_functions.md?id=low-level-matrix-overrides) for more information.
* `#define DIRECT_PINS_RIGHT { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }`
* If you want to specify a different direct pinout for the right half than the left half, you can define `DIRECT_PINS_RIGHT`. Currently, the size of `DIRECT_PINS` must be the same as `DIRECT_PINS_RIGHT`.
@@ -300,7 +317,7 @@ There are a few different ways to set handedness for split keyboards (listed in
* `#define SPLIT_USB_DETECT`
* Detect (with timeout) USB connection when delegating master/slave
* Default behavior for ARM
* Required for AVR Teensy
* Required for AVR Teensy (without hardware mods)
* `#define SPLIT_USB_TIMEOUT 2000`
* Maximum timeout when detecting master/slave when using `SPLIT_USB_DETECT`
@@ -308,6 +325,34 @@ There are a few different ways to set handedness for split keyboards (listed in
* `#define SPLIT_USB_TIMEOUT_POLL 10`
* Poll frequency when detecting master/slave when using `SPLIT_USB_DETECT`
* `#define FORCED_SYNC_THROTTLE_MS 100`
* Deadline for synchronizing data from master to slave when using the QMK-provided split transport.
* `#define SPLIT_TRANSPORT_MIRROR`
* Mirrors the master-side matrix on the slave when using the QMK-provided split transport.
* `#define SPLIT_LAYER_STATE_ENABLE`
* Ensures the current layer state is available on the slave when using the QMK-provided split transport.
* `#define SPLIT_LED_STATE_ENABLE`
* Ensures the current host indicator state (caps/num/scroll) is available on the slave when using the QMK-provided split transport.
* `#define SPLIT_MODS_ENABLE`
* Ensures the current modifier state (normal, weak, and oneshot) is available on the slave when using the QMK-provided split transport.
* `#define SPLIT_WPM_ENABLE`
* Ensures the current WPM is available on the slave when using the QMK-provided split transport.
* `#define SPLIT_OLED_ENABLE`
* Syncs the on/off state of the OLED between the halves.
* `#define SPLIT_ST7565_ENABLE`
* Syncs the on/off state of the ST7565 screen between the halves.
* `#define SPLIT_TRANSACTION_IDS_KB .....`
* `#define SPLIT_TRANSACTION_IDS_USER .....`
* Allows for custom data sync with the slave when using the QMK-provided split transport. See [custom data sync between sides](feature_split_keyboard.md#custom-data-sync) for more information.
# The `rules.mk` File
This is a [make](https://www.gnu.org/software/make/manual/make.html) file that is included by the top-level `Makefile`. It is used to set some information about the MCU that we will be compiling for as well as enabling and disabling certain features.
@@ -375,6 +420,8 @@ Use these to enable or disable building certain features. The more you have enab
* USB N-Key Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
* `AUDIO_ENABLE`
* Enable the audio subsystem.
* `KEY_OVERRIDE_ENABLE`
* Enable the key override feature
* `RGBLIGHT_ENABLE`
* Enable keyboard underlight functionality
* `LEADER_ENABLE`

View File

@@ -105,7 +105,7 @@ enum my_keycodes {
Before opening a pull request, you can preview your changes if you have set up the development environment by running this command from the `qmk_firmware/` folder:
./bin/qmk docs
qmk docs
or if you only have Python 3 installed:

View File

@@ -144,6 +144,14 @@ This is useful for setting up stuff that you may need elsewhere, but isn't hardw
* Keyboard/Revision: `void matrix_init_kb(void)`
* Keymap: `void matrix_init_user(void)`
### Low-level Matrix Overrides Function Documentation :id=low-level-matrix-overrides
* GPIO pin initialisation: `void matrix_init_pins(void)`
* This needs to perform the low-level initialisation of all row and column pins. By default this will initialise the input/output state of each of the GPIO pins listed in `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no initialisation of pin state will occur within QMK itself, instead deferring to the keyboard's override.
* `COL2ROW`-based row reads: `void matrix_read_rows_on_col(matrix_row_t current_matrix[], uint8_t current_col)`
* `ROW2COL`-based column reads: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)`
* `DIRECT_PINS`-based reads: `void matrix_read_cols_on_row(matrix_row_t current_matrix[], uint8_t current_row)`
* These three functions need to perform the low-level retrieval of matrix state of relevant input pins, based on the matrix type. Only one of the functions should be implemented, if needed. By default this will iterate through `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`, configuring the inputs and outputs based on whether or not the keyboard is set up for `ROW2COL`, `COL2ROW`, or `DIRECT_PINS`. Should the keyboard designer override this function, no manipulation of matrix GPIO pin state will occur within QMK itself, instead deferring to the keyboard's override.
## Keyboard Post Initialization code
@@ -374,7 +382,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
}
}
```
And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EEP_RST` keycode or [Bootmagic](feature_bootmagic.md) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued.
And lastly, you want to add the `eeconfig_init_user` function, so that when the EEPROM is reset, you can specify default values, and even custom actions. To force an EEPROM reset, use the `EEP_RST` keycode or [Bootmagic Lite](feature_bootmagic.md) functionallity. For example, if you want to set rgb layer indication by default, and save the default valued.
```c
void eeconfig_init_user(void) { // EEPROM is getting reset!

View File

@@ -51,25 +51,6 @@ Wir suchen nach Freiwilligen, die ein `qmk`-Package für weitere Betriebssysteme
* Installiere mit einem [virtualenv](https://virtualenv.pypa.io/en/latest/).
* Weise den User an, die Umgebungs-Variable `QMK_HOME` zu setzen, um die Firmware-Quelle anders einzustellen als `~/qmk_firmware`.
# Lokale CLI
Wenn Du die globale CLI nicht verwenden möchtest, beinhaltet `qmk_firmware` auch eine lokale CLI. Du kannst sie hier finden: `qmk_firmware/bin/qmk`. Du kannst den `qmk`-Befehl aus irgendeinem Datei-Verzeichnis ausführen und es wird immer auf dieser Kopie von `qmk_firmware` arbeiten.
**Beispiel**:
```
$ ~/qmk_firmware/bin/qmk hello
Ψ Hello, World!
```
## Einschränkungen der lokalen CLI
Hier ein Vergleich mit der globalen CLI:
* Die lokale CLI unterstützt kein `qmk setup` oder `qmk clone`.
* Die lokale CLI arbeitet immer innerhalb der selben `qmk_firmware`-Verzeichnisstruktur, auch wenn Du mehrere Repositories geklont hast.
* Die lokale CLI läuft nicht in einer virtualenv. Daher ist es möglich, dass Abhängigkeiten (dependencies) miteinander in Konflikt kommen/stehen.
# CLI-Befehle
## `qmk compile`
@@ -88,14 +69,14 @@ qmk compile <configuratorExport.json>
qmk compile -kb <keyboard_name> -km <keymap_name>
```
## `qmk cformat`
## `qmk format-c`
Dieser Befehl formatiert C-Code im clang-Format. Benutze ihn ohne Argumente, um den core-Code zu formatieren, oder benutze Namen von Dateien in der CLI, um den Befehl auf bestimmte Dateien anzuwenden.
**Anwendung**:
```
qmk cformat [file1] [file2] [...] [fileN]
qmk format-c [file1] [file2] [...] [fileN]
```
## `qmk config`
@@ -148,14 +129,14 @@ Dieser Befehl erstellt eine neue Keymap basierend auf einer existierenden Standa
qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
```
## `qmk pyformat`
## `qmk format-py`
Dieser Befehl formatiert Python-Code in `qmk_firmware`.
**Anwendung**:
```
qmk pyformat
qmk format-py
```
## `qmk pytest`

View File

@@ -8,8 +8,8 @@ We recommend the use of the [Zadig](https://zadig.akeo.ie/) utility. If you have
## Installation
Put your keyboard into bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic](feature_bootmagic.md) docs for more details). Some boards use [Command](feature_command.md) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in.
Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure.
Put your keyboard into bootloader mode, either by hitting the `RESET` keycode (which may be on a different layer), or by pressing the reset switch that's usually located on the underside of the board. If your keyboard has neither, try holding Escape or Space+`B` as you plug it in (see the [Bootmagic Lite](feature_bootmagic.md) docs for more details). Some boards use [Command](feature_command.md) instead of Bootmagic; in this case, you can enter bootloader mode by hitting Left Shift+Right Shift+`B` or Left Shift+Right Shift+Escape at any point while the keyboard is plugged in.
Some keyboards may have specific instructions for entering the bootloader. For example, the [Bootmagic Lite](feature_bootmagic.md) key (default: Escape) might be on a different key, e.g. Left Control; or the magic combination for Command (default: Left Shift+Right Shift) might require you to hold something else, e.g. Left Control+Right Control. Refer to the board's README file if you are unsure.
To put a device in bootloader mode with USBaspLoader, tap the `RESET` button while holding down the `BOOT` button.
Alternatively, hold `BOOT` while inserting the USB cable.
@@ -95,3 +95,4 @@ The device name here is the name that appears in Zadig, and may not be what the
|`stm32-dfu` |STM32 BOOTLOADER |`0483:DF11` |WinUSB |
|`kiibohd` |Kiibohd DFU Bootloader |`1C11:B007` |WinUSB |
|`stm32duino` |Maple 003 |`1EAF:0003` |WinUSB |
|`qmk-hid` |(keyboard name) Bootloader |`03EB:2067` |HidUsb |

31
docs/easy_maker.md Normal file
View File

@@ -0,0 +1,31 @@
# Easy Maker - Build One-Off Projects In Configurator
Have you ever needed an easy way to program a controller, such as a Proton C or Teensy 2.0, for a one-off project you're building? QMK has you covered with the Easy Maker. Now you can create a firmware in minutes using QMK Configurator.
There are different styles of Easy Maker available depending on your needs:
* [Direct Pin](https://config.qmk.fm/#/?filter=ez_maker/direct) - Connect a single switch to a single pin
* Direct Pin + Backlight (Coming Soon) - Like Direct Pin but dedicates a single pin to [Backlight](feature_backlight.md) control
* Direct Pin + Numlock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED
* Direct Pin + Capslock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED
* Direct Pin + Encoder (Coming Soon) - Like Direct Pin but uses 2 pins to add a single rotary encoder
## Quickstart
The easiest way to get started is with the Direct Pin boards. This will assign a single key to each pin and you can short that pin to ground to activate it. Select your MCU from the Keyboard dropdown here:
* <https://config.qmk.fm/#/?filter=ez_maker/direct>
For more details see the [Direct Pin](#direct-pin) section.
# Direct Pin
As its name implies Direct Pin works by connecting one switch per pin. The other side of the switch should be connected to ground (VSS or GND.) You don't need any other components, your MCU has internal pull-up resistors so that the switch sensing can work.
Here is a schematic showing how we connect a single button to pin A3 on a ProMicro:
![Schematic diagram showing a ProMicro with a wire coming out of A3, connecting to the left side of a switch. Another wire comes out of the right side of the switch to connect to the Ground Plane.](https://i.imgur.com/JcDhZll.png)
Once you have wired your switches you can assign keycodes to each pin and build a firmware by selecting the MCU you are using from the Keyboard dropdown. Use this link to show only Easy Maker Direct Pin:
* <https://config.qmk.fm/#/?filter=ez_maker/direct>

View File

@@ -31,6 +31,9 @@ Currently QMK supports 24xx-series chips over I2C. As such, requires a working i
`#define EXTERNAL_EEPROM_PAGE_SIZE` | Page size of the EEPROM in bytes, as specified in the datasheet | 32
`#define EXTERNAL_EEPROM_ADDRESS_SIZE` | The number of bytes to transmit for the memory location within the EEPROM | 2
`#define EXTERNAL_EEPROM_WRITE_TIME` | Write cycle time of the EEPROM, as specified in the datasheet | 5
`#define EXTERNAL_EEPROM_WP_PIN` | If defined the WP pin will be toggled appropriately when writing to the EEPROM. | _none_
Some I2C EEPROM manufacturers explicitly recommend against hardcoding the WP pin to ground. This is in order to protect the eeprom memory content during power-up/power-down/brown-out conditions at low voltage where the eeprom is still operational, but the i2c master output might be unpredictable. If a WP pin is configured, then having an external pull-up on the WP pin is recommended.
Default values and extended descriptions can be found in `drivers/eeprom/eeprom_i2c.h`.

View File

@@ -6,26 +6,28 @@ Si aún no lo has hecho, debes leer las [Pautas de teclados](hardware_keyboard_g
## Añadir tu Teclado AVR a QMK
QMK tiene varias características para simplificar el trabajo con teclados AVR. Para la mayoría de los teclados no tienes que escribir ni una sola línea de código. Para empezar, ejecuta el archivo `util/new_keyboard.sh`:
QMK tiene varias características para simplificar el trabajo con teclados AVR. Para la mayoría de los teclados no tienes que escribir ni una sola línea de código. Para empezar, ejecuta `qmk new-keyboard`:
```
$ ./util/new_keyboard.sh
Generating a new QMK keyboard directory
$ qmk new-keyboard
Ψ Generating a new QMK keyboard directory
Keyboard Name: mycoolkb
Keyboard Type [avr]:
Your Name [John Smith]:
Keyboard Name: mycoolkeeb
Keyboard Type:
1. avr
2. ps2avrgb
Please enter your choice: [1]
Your Name: [John Smith]
Ψ Copying base template files...
Ψ Copying avr template files...
Ψ Renaming keyboard.[ch] to mycoolkeeb.[ch]...
Ψ Replacing %YEAR% with 2021...
Ψ Replacing %KEYBOARD% with mycoolkeeb...
Ψ Replacing %YOUR_NAME% with John Smith...
Copying base template files... done
Copying avr template files... done
Renaming keyboard files... done
Replacing %KEYBOARD% with mycoolkb... done
Replacing %YOUR_NAME% with John Smith... done
Created a new keyboard called mycoolkb.
To start working on things, cd into keyboards/mycoolkb,
or open the directory in your favourite text editor.
Ψ Created a new keyboard called mycoolkeeb.
Ψ To start working on things, `cd` into keyboards/mycoolkeeb,
Ψ or open the directory in your preferred text editor.
```
Esto creará todos los archivos necesarios para tu nuevo teclado, y rellenará la configuración con valores predeterminados. Ahora sólo tienes que personalizarlo para tu teclado.

View File

@@ -5,7 +5,7 @@ This page covers questions people often have about keymaps. If you haven't you s
## What Keycodes Can I Use?
See [Keycodes](keycodes.md) for an index of keycodes available to you. These link to more extensive documentation when available.
Keycodes are actually defined in [common/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/tmk_core/common/keycode.h).
Keycodes are actually defined in [quantum/keycode.h](https://github.com/qmk/qmk_firmware/blob/master/quantum/keycode.h).
## What Are the Default Keycodes?
@@ -31,7 +31,7 @@ QMK has two features, Bootmagic and Command, which allow you to change the behav
As a quick fix try holding down `Space`+`Backspace` while you plug in your keyboard. This will reset the stored settings on your keyboard, returning those keys to normal operation. If that doesn't work look here:
* [Bootmagic](feature_bootmagic.md)
* [Bootmagic Lite](feature_bootmagic.md)
* [Command](feature_command.md)
## The Menu Key Isn't Working

View File

@@ -167,6 +167,32 @@ The available keycodes for audio are:
!> These keycodes turn all of the audio functionality on and off. Turning it off means that audio feedback, audio clicky, music mode, etc. are disabled, completely.
## Audio Config
| Settings | Default | Description |
|---------------------------------|----------------------|-------------------------------------------------------------------------------|
|`AUDIO_PIN` | *Not defined* |Configures the pin that the speaker is connected to. |
|`AUDIO_PIN_ALT` | *Not defined* |Configures the pin for a second speaker or second pin connected to one speaker.|
|`AUDIO_PIN_ALT_AS_NEGATIVE` | *Not defined* |Enables support for one speaker connected to two pins. |
|`AUDIO_INIT_DELAY` | *Not defined* |Enables delay during startup song to accomidate for USB startup issues. |
|`AUDIO_ENABLE_TONE_MULTIPLEXING` | *Not defined* |Enables time splicing/multiplexing to create multiple tones simutaneously. |
|`STARTUP_SONG` | `STARTUP_SOUND` |Plays when the keyboard starts up (audio.c) |
|`GOODBYE_SONG` | `GOODBYE_SOUND` |Plays when you press the RESET key (quantum.c) |
|`AG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press AG_NORM (process_magic.c) |
|`AG_SWAP_SONG` | `AG_SWAP_SOUND` |Plays when you press AG_SWAP (process_magic.c) |
|`CG_NORM_SONG` | `AG_NORM_SOUND` |Plays when you press CG_NORM (process_magic.c) |
|`CG_SWAP_SONG` | `AG_SWAP_SOUND` |Plays when you press CG_SWAP (process_magic.c) |
|`MUSIC_ON_SONG` | `MUSIC_ON_SOUND` |Plays when music mode is activated (process_music.c) |
|`MUSIC_OFF_SONG` | `MUSIC_OFF_SOUND` |Plays when music mode is deactivated (process_music.c) |
|`MIDI_ON_SONG` | `MUSIC_ON_SOUND` |Plays when midi mode is activated (process_music.c) |
|`MIDI_OFF_SONG` | `MUSIC_OFF_SOUND` |Plays when midi mode is deactivated (process_music.c) |
|`CHROMATIC_SONG` | `CHROMATIC_SOUND` |Plays when the chromatic music mode is selected (process_music.c) |
|`GUITAR_SONG` | `GUITAR_SOUND` |Plays when the guitar music mode is selected (process_music.c) |
|`VIOLIN_SONG` | `VIOLIN_SOUND` |Plays when the violin music mode is selected (process_music.c) |
|`MAJOR_SONG` | `MAJOR_SOUND` |Plays when the major music mode is selected (process_music.c) |
|`DEFAULT_LAYER_SONGS` | *Not defined* |Plays song when switched default layers with [`set_single_persistent_default_layer(layer)`](ref_functions.md#setting-the-persistent-default-layer)(quantum.c) |
|`SENDSTRING_BELL` | *Not defined* |Plays chime when the "enter" ("\a") character is sent (send_string.c) |
## Tempo
the 'speed' at which SONGs are played is dictated by the set Tempo, which is measured in beats-per-minute. Note lengths are defined relative to that.
The initial/default tempo is set to 120 bpm, but can be configured by setting `TEMPO_DEFAULT` in `config.c`.

View File

@@ -1,136 +1,15 @@
# Bootmagic
There are three separate but related features that allow you to change the behavior of your keyboard without reflashing. While each of them have similar functionality, it is accessed in different ways depending on how your keyboard is configured.
**Bootmagic** is a system for configuring your keyboard while it initializes. To trigger a Bootmagic command, hold down the Bootmagic key and one or more command keys.
**Bootmagic Keycodes** are prefixed with `MAGIC_`, and allow you to access the Bootmagic functionality *after* your keyboard has initialized. To use the keycodes, assign them to your keymap as you would any other keycode.
**Command**, formerly known as **Magic**, is another feature that allows you to control different aspects of your keyboard. While it shares some functionality with Bootmagic, it also allows you to do things that Bootmagic does not, such as printing version information to the console. For more information, see [Command](feature_command.md).
On some keyboards Bootmagic is disabled by default. If this is the case, it must be explicitly enabled in your `rules.mk` with:
```make
BOOTMAGIC_ENABLE = full
```
?> You may see `yes` being used in place of `full`, and this is okay. However, `yes` is deprecated, and ideally `full` (or `lite`) should be used instead.
Additionally, you can use [Bootmagic Lite](#bootmagic-lite) (a scaled down, very basic version of Bootmagic) by adding the following to your `rules.mk` file:
```make
BOOTMAGIC_ENABLE = lite
```
## Hotkeys
Hold down the Bootmagic key (Space by default) and the desired hotkey while plugging in your keyboard. For example, holding Space+`B` should cause it to enter the bootloader.
|Hotkey |Description |
|------------------|---------------------------------------------|
|Escape |Ignore Bootmagic configuration in EEPROM |
|`B` |Enter the bootloader |
|`D` |Toggle debugging over serial |
|`X` |Toggle key matrix debugging |
|`K` |Toggle keyboard debugging |
|`M` |Toggle mouse debugging |
|`L` |Set "Left Hand" for EE_HANDS handedness |
|`R` |Set "Right Hand" for EE_HANDS handedness |
|Backspace |Clear the EEPROM |
|Caps Lock |Toggle treating Caps Lock as Left Control |
|Left Control |Toggle swapping Caps Lock and Left Control |
|Left Alt |Toggle swapping Left Alt and Left GUI |
|Right Alt |Toggle swapping Right Alt and Right GUI |
|Left GUI |Toggle the GUI keys (useful when gaming) |
|<code>&#96;</code>|Toggle swapping <code>&#96;</code> and Escape|
|`\` |Toggle swapping `\` and Backspace |
|`N` |Toggle N-Key Rollover (NKRO) |
|`0` |Make layer 0 the default layer |
|`1` |Make layer 1 the default layer |
|`2` |Make layer 2 the default layer |
|`3` |Make layer 3 the default layer |
|`4` |Make layer 4 the default layer |
|`5` |Make layer 5 the default layer |
|`6` |Make layer 6 the default layer |
|`7` |Make layer 7 the default layer |
## Keycodes :id=keycodes
|Key |Aliases |Description |
|----------------------------------|---------|--------------------------------------------------------------------------|
|`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control |
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control |
|`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI |
|`MAGIC_UNSWAP_LCTL_LGUI` |`LCG_NRM`|Unswap Left Control and GUI |
|`MAGIC_SWAP_RCTL_RGUI` |`RCG_SWP`|Swap Right Control and GUI |
|`MAGIC_UNSWAP_RCTL_RGUI` |`RCG_NRM`|Unswap Right Control and GUI |
|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Control and GUI on both sides |
|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Control and GUI on both sides |
|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Control and GUI swap on both sides |
|`MAGIC_SWAP_LALT_LGUI` |`LAG_SWP`|Swap Left Alt and GUI |
|`MAGIC_UNSWAP_LALT_LGUI` |`LAG_NRM`|Unswap Left Alt and GUI |
|`MAGIC_SWAP_RALT_RGUI` |`RAG_SWP`|Swap Right Alt and GUI |
|`MAGIC_UNSWAP_RALT_RGUI` |`RAG_NRM`|Unswap Right Alt and GUI |
|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides |
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
|`MAGIC_NO_GUI` |`GUI_OFF`|Disable the GUI keys |
|`MAGIC_UNNO_GUI` |`GUI_ON` |Enable the GUI keys |
|`MAGIC_SWAP_GRAVE_ESC` |`GE_SWAP`|Swap <code>&#96;</code> and Escape |
|`MAGIC_UNSWAP_GRAVE_ESC` |`GE_NORM`|Unswap <code>&#96;</code> and Escape |
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` |`BS_SWAP`|Swap `\` and Backspace |
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|`BS_NORM`|Unswap `\` and Backspace |
|`MAGIC_HOST_NKRO` |`NK_ON` |Enable N-key rollover |
|`MAGIC_UNHOST_NKRO` |`NK_OFF` |Disable N-key rollover |
|`MAGIC_TOGGLE_NKRO` |`NK_TOGG`|Toggle N-key rollover |
|`MAGIC_EE_HANDS_LEFT` |`EH_LEFT`|Set the master half of a split keyboard as the left hand (for `EE_HANDS`) |
|`MAGIC_EE_HANDS_RIGHT` |`EH_RGHT`|Set the master half of a split keyboard as the right hand (for `EE_HANDS`)|
## Configuration
If you would like to change the hotkey assignments for Bootmagic, `#define` these in your `config.h` at either the keyboard or keymap level.
|Define |Default |Description |
|----------------------------------------|-------------|---------------------------------------------------|
|`BOOTMAGIC_KEY_SALT` |`KC_SPACE` |The Bootmagic key |
|`BOOTMAGIC_KEY_SKIP` |`KC_ESC` |Ignore Bootmagic configuration in EEPROM |
|`BOOTMAGIC_KEY_EEPROM_CLEAR` |`KC_BSPACE` |Clear the EEPROM configuration |
|`BOOTMAGIC_KEY_BOOTLOADER` |`KC_B` |Enter the bootloader |
|`BOOTMAGIC_KEY_DEBUG_ENABLE` |`KC_D` |Toggle debugging over serial |
|`BOOTMAGIC_KEY_DEBUG_MATRIX` |`KC_X` |Toggle matrix debugging |
|`BOOTMAGIC_KEY_DEBUG_KEYBOARD` |`KC_K` |Toggle keyboard debugging |
|`BOOTMAGIC_KEY_DEBUG_MOUSE` |`KC_M` |Toggle mouse debugging |
|`BOOTMAGIC_KEY_EE_HANDS_LEFT` |`KC_L` |Set "Left Hand" for EE_HANDS handedness |
|`BOOTMAGIC_KEY_EE_HANDS_RIGHT` |`KC_R` |Set "Right Hand" for EE_HANDS handedness |
|`BOOTMAGIC_KEY_SWAP_CONTROL_CAPSLOCK` |`KC_LCTRL` |Swap Left Control and Caps Lock |
|`BOOTMAGIC_KEY_CAPSLOCK_TO_CONTROL` |`KC_CAPSLOCK`|Toggle treating Caps Lock as Left Control |
|`BOOTMAGIC_KEY_SWAP_LALT_LGUI` |`KC_LALT` |Toggle swapping Left Alt and Left GUI (for macOS) |
|`BOOTMAGIC_KEY_SWAP_RALT_RGUI` |`KC_RALT` |Toggle swapping Right Alt and Right GUI (for macOS)|
|`BOOTMAGIC_KEY_NO_GUI` |`KC_LGUI` |Toggle the GUI keys (useful when gaming) |
|`BOOTMAGIC_KEY_SWAP_GRAVE_ESC` |`KC_GRAVE` |Toggle swapping <code>&#96;</code> and Escape |
|`BOOTMAGIC_KEY_SWAP_BACKSLASH_BACKSPACE`|`KC_BSLASH` |Toggle swapping `\` and Backspace |
|`BOOTMAGIC_HOST_NKRO` |`KC_N` |Toggle N-Key Rollover (NKRO) |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_0` |`KC_0` |Make layer 0 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_1` |`KC_1` |Make layer 1 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_2` |`KC_2` |Make layer 2 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_3` |`KC_3` |Make layer 3 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_4` |`KC_4` |Make layer 4 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_5` |`KC_5` |Make layer 5 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_6` |`KC_6` |Make layer 6 the default layer |
|`BOOTMAGIC_KEY_DEFAULT_LAYER_7` |`KC_7` |Make layer 7 the default layer |
# Bootmagic Lite :id=bootmagic-lite
In addition to the full blown Bootmagic feature, is the Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button but you need a way to jump into the bootloader, and don't want to deal with the headache that Bootmagic can cause.
The Bootmagic Lite feature that only handles jumping into the bootloader. This is great for boards that don't have a physical reset button, giving you a way to jump into the bootloader
To enable this version of Bootmagic, you need to enable it in your `rules.mk` with:
On some keyboards Bootmagic Lite is disabled by default. If this is the case, it must be explicitly enabled in your `rules.mk` with:
```make
BOOTMAGIC_ENABLE = lite
BOOTMAGIC_ENABLE = yes
```
?> You may see `lite` being used in place of `yes`.
Additionally, you may want to specify which key to use. This is especially useful for keyboards that have unusual matrices. To do so, you need to specify the row and column of the key that you want to use. Add these entries to your `config.h` file:
```c
@@ -142,7 +21,7 @@ By default, these are set to 0 and 0, which is usually the "ESC" key on a majori
And to trigger the bootloader, you hold this key down when plugging the keyboard in. Just the single key.
!> Using bootmagic lite will **always reset** the EEPROM, so you will lose any settings that have been saved.
!> Using Bootmagic Lite will **always reset** the EEPROM, so you will lose any settings that have been saved.
## Split Keyboards
@@ -174,4 +53,10 @@ void bootmagic_lite(void) {
}
```
You can additional feature here. For instance, resetting the eeprom or requiring additional keys to be pressed to trigger bootmagic. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware.
You can additional feature here. For instance, resetting the EEPROM or requiring additional keys to be pressed to trigger Bootmagic Lite. Keep in mind that `bootmagic_lite` is called before a majority of features are initialized in the firmware.
## Addenda
To manipulate settings that were formerly configured through the now-deprecated full Bootmagic feature, see [Magic Keycodes](keycodes_magic.md).
The Command feature, formerly known as Magic, also allows you to control different aspects of your keyboard. While it shares some functionality with Magic Keycodes, it also allows you to do things that Magic Keycodes cannot, such as printing version information to the console. For more information, see [Command](feature_command.md).

View File

@@ -1,24 +1,39 @@
# Combos
The Combo feature is a chording type solution for adding custom actions. It lets you hit multiple keys at once and produce a different effect. For instance, hitting `A` and `S` within the tapping term would hit `ESC` instead, or have it perform even more complex tasks.
The Combo feature is a chording type solution for adding custom actions. It lets you hit multiple keys at once and produce a different effect. For instance, hitting `A` and `S` within the combo term would hit `ESC` instead, or have it perform even more complex tasks.
To enable this feature, you need to add `COMBO_ENABLE = yes` to your `rules.mk`.
Additionally, in your `config.h`, you'll need to specify the number of combos that you'll be using, by adding `#define COMBO_COUNT 1` (replacing 1 with the number that you're using).
<!-- At this time, this is necessary -->
Additionally, in your `config.h`, you'll need to specify the number of combos that you'll be using, by adding `#define COMBO_COUNT 1` (replacing 1 with the number that you're using). It is also possible to not define this and instead set the variable `COMBO_LEN` yourself. There's a trick where we don't need to think about this variable at all. More on this later.
Also, by default, the tapping term for the Combos is set to the same value as `TAPPING_TERM` (200 by default on most boards). But you can specify a different value by defining it in your `config.h`. For instance: `#define COMBO_TERM 300` would set the time out period for combos to 300ms.
Then, your `keymap.c` file, you'll need to define a sequence of keys, terminated with `COMBO_END`, and a structure to list the combination of keys, and it's resulting action.
Then, in your `keymap.c` file, you'll need to define a sequence of keys, terminated with `COMBO_END`, and a structure to list the combination of keys, and its resulting action.
```c
const uint16_t PROGMEM test_combo[] = {KC_A, KC_B, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {COMBO(test_combo, KC_ESC)};
const uint16_t PROGMEM test_combo1[] = {KC_A, KC_B, COMBO_END};
const uint16_t PROGMEM test_combo2[] = {KC_C, KC_D, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
COMBO(test_combo1, KC_ESC),
COMBO(test_combo2, LCTL(KC_Z)), // keycodes with modifiers are possible too!
};
```
This will send "Escape" if you hit the A and B keys.
This will send "Escape" if you hit the A and B keys, and Ctrl+Z when you hit the C and D keys.
!> This method only supports [basic keycodes](keycodes_basic.md). See the examples for more control.
As of [PR#8591](https://github.com/qmk/qmk_firmware/pull/8591/), it is possible to fire combos from ModTap keys and LayerTap keys. So in the above example you could have keys `LSFT_T(KC_A)` and `LT(_LAYER, KC_B)` and it would work. So Home Row Mods and Home Row Combos at same time is now a thing!
It is also now possible to overlap combos. Before, with the example below both combos would activate when all three keys were pressed. Now only the three key combo will activate.
```c
const uint16_t PROGMEM test_combo1[] = {LSFT_T(KC_A), LT(_LAYER, KC_B), COMBO_END};
const uint16_t PROGMEM test_combo2[] = {LSFT_T(KC_A), LT(_LAYER, KC_B), KC_C, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
COMBO(test_combo1, KC_ESC)
COMBO(test_combo2, KC_TAB)
};
```
Executing more complex keycodes like ModTaps and LayerTaps is now also possible.
## Examples
@@ -27,63 +42,68 @@ If you want to add a list, then you'd use something like this:
```c
enum combos {
AB_ESC,
JK_TAB
JK_TAB,
QW_SFT,
SD_LAYER,
};
const uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END};
const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END};
const uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END};
const uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
[AB_ESC] = COMBO(ab_combo, KC_ESC),
[JK_TAB] = COMBO(jk_combo, KC_TAB)
[JK_TAB] = COMBO(jk_combo, KC_TAB),
[QW_SFT] = COMBO(qw_combo, KC_LSFT)
[SD_LAYER] = COMBO(layer_combo, MO(_LAYER)),
};
```
For a more complicated implementation, you can use the `process_combo_event` function to add custom handling.
Additionally, this example shows how you can leave `COMBO_COUNT` undefined.
```c
enum combo_events {
ZC_COPY,
XV_PASTE
EM_EMAIL,
BSPC_LSFT_CLEAR,
COMBO_LENGTH
};
uint16_t COMBO_LEN = COMBO_LENGTH; // remove the COMBO_COUNT define and use this instead!
const uint16_t PROGMEM copy_combo[] = {KC_Z, KC_C, COMBO_END};
const uint16_t PROGMEM paste_combo[] = {KC_X, KC_V, COMBO_END};
const uint16_t PROGMEM email_combo[] = {KC_E, KC_M, COMBO_END};
const uint16_t PROGMEM clear_line_combo[] = {KC_BSPC, KC_LSFT, COMBO_END};
combo_t key_combos[COMBO_COUNT] = {
[ZC_COPY] = COMBO_ACTION(copy_combo),
[XV_PASTE] = COMBO_ACTION(paste_combo),
combo_t key_combos[] = {
[EM_EMAIL] = COMBO_ACTION(email_combo),
[BSPC_LSFT_CLEAR] = COMBO_ACTION(clear_line_combo),
};
/* COMBO_ACTION(x) is same as COMBO(x, KC_NO) */
void process_combo_event(uint16_t combo_index, bool pressed) {
switch(combo_index) {
case ZC_COPY:
case EM_EMAIL:
if (pressed) {
tap_code16(LCTL(KC_C));
SEND_STRING("john.doe@example.com");
}
break;
case XV_PASTE:
case BSPC_LSFT_CLEAR:
if (pressed) {
tap_code16(LCTL(KC_V));
tap_code16(KC_END);
tap_code16(S(KC_HOME));
tap_code16(KC_BSPC);
}
break;
}
}
```
This will send Ctrl+C if you hit Z and C, and Ctrl+V if you hit X and V. But you could change this to do stuff like change layers, play sounds, or change settings.
This will send "john.doe@example.com" if you chord E and M together, and clear the current line with Backspace and Left-Shift. You could change this to do stuff like play sounds or change settings.
## Additional Configuration
It is worth noting that `COMBO_ACTION`s are not needed anymore. As of [PR#8591](https://github.com/qmk/qmk_firmware/pull/8591/), it is possible to run your own custom keycodes from combos. Just define the custom keycode, program its functionality in `process_record_user`, and define a combo with `COMBO(<key_array>, <your_custom_keycode>)`.
If you're using long combos, or even longer combos, you may run into issues with this, as the structure may not be large enough to accommodate what you're doing.
In this case, you can add either `#define EXTRA_LONG_COMBOS` or `#define EXTRA_EXTRA_LONG_COMBOS` in your `config.h` file.
You may also be able to enable action keys by defining `COMBO_ALLOW_ACTION_KEYS`.
## Keycodes
You can enable, disable and toggle the Combo feature on the fly. This is useful if you need to disable them temporarily, such as for a game.
## Keycodes
You can enable, disable and toggle the Combo feature on the fly. This is useful if you need to disable them temporarily, such as for a game. The following keycodes are available for use in your `keymap.c`
|Keycode |Description |
|----------|---------------------------------|
@@ -91,6 +111,187 @@ You can enable, disable and toggle the Combo feature on the fly. This is useful
|`CMB_OFF` |Turns off Combo feature |
|`CMB_TOG` |Toggles Combo feature on and off |
# Advanced Configuration
These configuration settings can be set in your `config.h` file.
## Combo Term
By default, the timeout for the Combos to be recognized is set to 50ms. This can be changed if accidental combo misfires are happening or if you're having difficulties pressing keys at the same time. For instance, `#define COMBO_TERM 40` would set the timeout period for combos to 40ms.
## Buffer and state sizes
If you're using long combos, or you have a lot of overlapping combos, you may run into issues with this, as the buffers may not be large enough to accommodate what you're doing. In this case, you can configure the sizes of the buffers used. Be aware, larger combo sizes and larger buffers will increase memory usage!
To configure the amount of keys a combo can be composed of, change the following:
| Keys | Define to be set |
|------|-----------------------------------|
| 6 | `#define EXTRA_SHORT_COMBOS` |
| 8 | QMK Default |
| 16 | `#define EXTRA_LONG_COMBOS` |
| 32 | `#define EXTRA_EXTRA_LONG_COMBOS` |
Defining `EXTRA_SHORT_COMBOS` combines a combo's internal state into just one byte. This can, in some cases, save some memory. If it doesn't, no point using it. If you do, you also have to make sure you don't define combos with more than 6 keys.
Processing combos has two buffers, one for the key presses, another for the combos being activated. Use the following options to configure the sizes of these buffers:
| Define | Default |
|-------------------------------------|------------------------------------------------------|
| `#define COMBO_KEY_BUFFER_LENGTH 8` | 8 (the key amount `(EXTRA_)EXTRA_LONG_COMBOS` gives) |
| `#define COMBO_BUFFER_LENGTH 4` | 4 |
## Modifier Combos
If a combo resolves to a Modifier, the window for processing the combo can be extended independently from normal combos. By default, this is disabled but can be enabled with `#define COMBO_MUST_HOLD_MODS`, and the time window can be configured with `#define COMBO_HOLD_TERM 150` (default: `TAPPING_TERM`). With `COMBO_MUST_HOLD_MODS`, you cannot tap the combo any more which makes the combo less prone to misfires.
## Per Combo Timing, Holding and Tapping
For each combo, it is possible to configure the time window it has to pressed in, if it needs to be held down, or if it needs to be tapped.
For example, tap-only combos are useful if any (or all) of the underlying keys is a Mod-Tap or a Layer-Tap key. When you tap the combo, you get the combo result. When you press the combo and hold it down, the combo doesn't actually activate. Instead the keys are processed separately as if the combo wasn't even there.
In order to use these features, the following configuration options and functions need to be defined. Coming up with useful timings and configuration is left as an exercise for the reader.
| Config Flag | Function | Description |
|-----------------------------|-----------------------------------------------------------|--------------------------------------------------------------------------------------------------------|
| `COMBO_TERM_PER_COMBO` | uint16_t get_combo_term(uint16_t index, combo_t \*combo) | Optional per-combo timeout window. (default: `COMBO_TERM`) |
| `COMBO_MUST_HOLD_PER_COMBO` | bool get_combo_must_hold(uint16_t index, combo_t \*combo) | Controls if a given combo should fire immediately on tap or if it needs to be held. (default: `false`) |
| `COMBO_MUST_TAP_PER_COMBO` | bool get_combo_must_tap(uint16_t index, combo_t \*combo) | Controls if a given combo should fire only if tapped within `COMBO_HOLD_TERM`. (default: `false`) |
Examples:
```c
uint16_t get_combo_term(uint16_t index, combo_t *combo) {
// decide by combo->keycode
switch (combo->keycode) {
case KC_X:
return 50;
}
// or with combo index, i.e. its name from enum.
switch (index) {
case COMBO_NAME_HERE:
return 9001;
}
// And if you're feeling adventurous, you can even decide by the keys in the chord,
// i.e. the exact array of keys you defined for the combo.
// This can be useful if your combos have a common key and you want to apply the
// same combo term for all of them.
if (combo->keys[0] == KC_ENTER) { // if first key in the array is KC_ENTER
return 150;
}
return COMBO_TERM;
}
bool get_combo_must_hold(uint16_t index, combo_t *combo) {
// Same as above, decide by keycode, the combo index, or by the keys in the chord.
if (KEYCODE_IS_MOD(combo->keycode) ||
(combo->keycode >= QK_MOMENTARY && combo->keycode <= QK_MOMENTARY_MAX) // MO(kc) keycodes
) {
return true;
}
switch (index) {
case COMBO_NAME_HERE:
return true;
}
return false;
}
bool get_combo_must_tap(uint16_t index, combo_t *combo) {
// If you want all combos to be tap-only, just uncomment the next line
// return true
// If you want *all* combos, that have Mod-Tap/Layer-Tap/Momentary keys in its chord, to be tap-only, this is for you:
uint16_t key;
uint8_t idx = 0;
while ((key = pgm_read_word(&combo->keys[idx])) != COMBO_END) {
switch (key) {
case QK_MOD_TAP...QK_MOD_TAP_MAX:
case QK_LAYER_TAP...QK_LAYER_TAP_MAX:
case QK_MOMENTARY...QK_MOMENTARY_MAX:
return true;
}
idx += 1;
}
return false;
}
```
## Variable Length Combos
If you leave `COMBO_COUNT` undefined in `config.h`, it allows you to programmatically declare the size of the Combo data structure and avoid updating `COMBO_COUNT`. Instead a variable called `COMBO_LEN` has to be set. It can be set with something similar to the following in `keymap.c`: `uint16_t COMBO_LEN = sizeof(key_combos) / sizeof(key_combos[0]);` or by adding `COMBO_LENGTH` as the *last* entry in the combo enum and then `uint16_t COMBO_LEN = COMBO_LENGTH;` as such:
```c
enum myCombos {
...,
COMBO_LENGTH
};
uint16_t COMBO_LEN = COMBO_LENGTH;
```
Regardless of the method used to declare `COMBO_LEN`, this also requires to convert the `combo_t key_combos[COMBO_COUNT] = {...};` line to `combo_t key_combos[] = {...};`.
## Combo timer
Normally, the timer is started on the first key press and then reset on every subsequent key press within the `COMBO_TERM`.
Inputting combos is relaxed like this, but also slightly more prone to accidental misfires.
The next two options alter the behaviour of the timer.
### `#define COMBO_STRICT_TIMER`
With `COMBO_STRICT_TIMER`, the timer is started only on the first key press.
Inputting combos is now less relaxed; you need to make sure the full chord is pressed within the `COMBO_TERM`.
Misfires are less common but if you type multiple combos fast, there is a
chance that the latter ones might not activate properly.
### `#define COMBO_NO_TIMER`
By defining `COMBO_NO_TIMER`, the timer is disabled completely and combos are activated on the first key release.
This also disables the "must hold" functionalities as they just wouldn't work at all.
## Customizable key releases
By defining `COMBO_PROCESS_KEY_RELEASE` and implementing the function `bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode)`, you can run your custom code on each key release after a combo was activated. For example you could change the RGB colors, activate haptics, or alter the modifiers.
You can also release a combo early by returning `true` from the function.
Here's an example where a combo resolves to two modifiers, and on key releases the modifiers are unregistered one by one, depending on which key was released.
```c
enum combos {
AB_MODS,
COMBO_LENGTH
};
uint16_t COMBO_LEN = COMBO_LENGTH;
const uint16_t PROGMEM ab_combo[] = {KC_A, KC_B, COMBO_END};
combo_t key_combos[] = {
[AB_MODS] = COMBO(ab_combo, LCTL(KC_LSFT)),
};
bool process_combo_key_release(uint16_t combo_index, combo_t *combo, uint8_t key_index, uint16_t keycode) {
switch (combo_index) {
case AB_MODS:
switch(keycode) {
case KC_A:
unregister_mods(MOD_MASK_CTRL);
break;
case KC_B:
unregister_mods(MOD_MASK_SHIFT);
break;
}
return false; // do not release combo
}
return false;
}
```
## Layer independent combos
If you, for example, use multiple base layers for different key layouts, one for QWERTY, and another one for Colemak, you might want your combos to work from the same key positions on all layers. Defining the same combos again for another layout is redundant and takes more memory. The solution is to just check the keycodes from one layer.
With `#define COMBO_ONLY_FROM_LAYER _LAYER_A` the combos' keys are always checked from layer `_LAYER_A` even though the active layer would be `_LAYER_B`.
## User callbacks
In addition to the keycodes, there are a few functions that you can use to set the status, or check it:
@@ -101,3 +302,28 @@ In addition to the keycodes, there are a few functions that you can use to set t
| `combo_disable()` | Disables the combo feature, and clears the combo buffer |
| `combo_toggle()` | Toggles the state of the combo feature |
| `is_combo_enabled()` | Returns the status of the combo feature state (true or false) |
# Dictionary Management
Having 3 places to update when adding new combos or altering old ones does become cumbersome when you have a lot of combos. We can alleviate this with some magic! ... If you consider C macros magic.
First, you need to add `VPATH += keyboards/gboards` to your `rules.mk`. Next, include the file `g/keymap_combo.h` in your `keymap.c`.
!> This functionality uses the same `process_combo_event` function as `COMBO_ACTION` macros do, so you cannot use the function yourself in your keymap. Instead, you have to define the `case`s of the `switch` statement by themselves within `inject.h`, which `g/keymap_combo.h` will then include into the function.
Then, write your combos in `combos.def` file in the following manner:
```c
// name result chord keys
COMB(AB_ESC, KC_ESC, KC_A, KC_B)
COMB(JK_TAB, KC_TAB, KC_J, KC_K)
COMB(JKL_SPC, KC_SPC, KC_J, KC_K, KC_L)
COMB(BSSL_CLR, KC_NO, KC_BSPC, KC_LSFT) // using KC_NO as the resulting keycode is the same as COMBO_ACTION before.
COMB(QW_UNDO, C(KC_Z), KC_Q, KC_W)
SUBS(TH_THE, "the", KC_T, KC_H) // SUBS uses SEND_STRING to output the given string.
...
```
Now, you can update only one place to add or alter combos. You don't even need to remember to update the `COMBO_COUNT` or the `COMBO_LEN` variables at all. Everything is taken care of. Magic!
For small to huge ready made dictionaries of combos, you can check out http://combos.gboards.ca/.

View File

@@ -1,6 +1,6 @@
# Command
Command, formerly known as Magic, is a way to change your keyboard's behavior without having to flash or unplug it to use [Bootmagic](feature_bootmagic.md). There is a lot of overlap between this functionality and the [Bootmagic Keycodes](feature_bootmagic.md#keycodes). Wherever possible we encourage you to use that feature instead of Command.
Command, formerly known as Magic, is a way to change your keyboard's behavior without having to flash or unplug it to use [Bootmagic Lite](feature_bootmagic.md). There is a lot of overlap between this functionality and the [Magic Keycodes](keycodes_magic.md). Wherever possible we encourage you to use that feature instead of Command.
On some keyboards Command is disabled by default. If this is the case, it must be explicitly enabled in your `rules.mk`:

View File

@@ -92,15 +92,6 @@ susceptible to noise, you must choose a debounce method that will also mitigate
## Debounce algorithms supported by QMK
QMK supports multiple debounce algorithms through its debounce API.
The logic for which debounce method called is below. It checks various defines that you have set in ```rules.mk```
```
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
DEBOUNCE_TYPE?= sym_defer_g
ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
endif
```
### Debounce selection
@@ -121,16 +112,16 @@ DEBOUNCE_TYPE = <name of algorithm>
Where name of algorithm is one of:
* ```sym_defer_g``` - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE``` milliseconds of no changes has occurred, all input changes are pushed.
* This is the current default algorithm. This is the highest performance algorithm with lowest memory usage, and it's also noise-resistant.
* ```sym_eager_pr``` - debouncing per row. On any state change, response is immediate, followed by locking the row ```DEBOUNCE``` milliseconds of no further input for that row.
* ```sym_eager_pr``` - debouncing per row. On any state change, response is immediate, followed by locking the row ```DEBOUNCE``` milliseconds of no further input for that row.
For use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive / low scan rate, and fingers usually only hit one row at a time. This could be
appropriate for the ErgoDox models; the matrix is rotated 90°, and hence its "rows" are really columns, and each finger only hits a single "row" at a time in normal use.
* ```sym_eager_pk``` - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key
* ```sym_defer_pk``` - debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key status change is pushed.
* ```asym_eager_defer_pk``` - debouncing per key. On a key-down state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key-up status change is pushed.
### A couple algorithms that could be implemented in the future:
* ```sym_defer_pr```
* ```sym_eager_g```
* ```asym_eager_defer_pk```
### Use your own debouncing code
You have the option to implement you own debouncing algorithm. To do this:
@@ -140,11 +131,3 @@ You have the option to implement you own debouncing algorithm. To do this:
* Debouncing occurs after every raw matrix scan.
* Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly.
* If the algorithm might be applicable to other keyboards, please consider adding it to ```quantum/debounce```
### Old names
The following old names for existing algorithms will continue to be supported, however it is recommended to use the new names instead.
* sym_g - old name for sym_defer_g
* eager_pk - old name for sym_eager_pk
* sym_pk - old name for sym_defer_pk
* eager_pr - old name for sym_eager_pr

35
docs/feature_digitizer.md Normal file
View File

@@ -0,0 +1,35 @@
## Digitizer
The digitizer HID interface allows setting the mouse cursor position at absolute coordinates, unlike the Pointing Device feature that applies relative displacements.
To enable the digitizer interface, add the following line to your rules.mk:
```makefile
DIGITIZER_ENABLE = yes
```
In order to change the mouse cursor position from your keymap.c file, include the digitizer header :
```c
#include "digitizer.h"
```
This gives you access to the `digitizer` structure which members allow you to change the cursor position.
The coordinates are normalized, meaning there value must be set between 0 and 1. For the `x` coordinate, the value `0` is the leftmost position, whereas the value `1` is the rightmost position.
For the `y` coordinate, `0` is at the top and `1` at the bottom.
Here is an example setting the cursor in the middle of the screen:
```c
digitizer_t digitizer;
digitizer.x = 0.5;
digitizer.y = 0.5;
digitizer.tipswitch = 0;
digitizer.inrange = 1;
digitizer_set_report(digitizer);
```
The `tipswitch` member triggers what equates to a click when set to `1`. The `inrange` member is required for the change in coordinates to be taken. It can then be set to `0` in a new report to signal the end of the digitizer interaction, but it is not strictly required.
Once all members are set to the desired value, the `status` member needs its bitmask `DZ_UPDATED` to be set so the report is sent during the next main loop iteration.

View File

@@ -9,6 +9,8 @@ and this to your `config.h`:
```c
// Connects each switch in the dip switch to the GPIO pin of the MCU
#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
// For split keyboards, you can separately define the right side pins
#define DIP_SWITCH_PINS_RIGHT { ... }
```
or
@@ -23,8 +25,9 @@ or
The callback functions can be inserted into your `<keyboard>.c`:
```c
void dip_switch_update_kb(uint8_t index, bool active) {
dip_switch_update_user(index, active);
bool dip_switch_update_kb(uint8_t index, bool active) {
if (!dip_switch_update_user(index, active)) { return false; }
return true;
}
```
@@ -32,7 +35,7 @@ void dip_switch_update_kb(uint8_t index, bool active) {
or `keymap.c`:
```c
void dip_switch_update_user(uint8_t index, bool active) {
bool dip_switch_update_user(uint8_t index, bool active) {
switch (index) {
case 0:
if(active) { audio_on(); } else { audio_off(); }
@@ -57,6 +60,7 @@ void dip_switch_update_user(uint8_t index, bool active) {
}
break;
}
return true;
}
```
@@ -64,8 +68,9 @@ Additionally, we support bit mask functions which allow for more complex handlin
```c
void dip_switch_update_mask_kb(uint32_t state) {
dip_switch_update_mask_user(state);
bool dip_switch_update_mask_kb(uint32_t state) {
if (!dip_switch_update_mask_user(state)) { return false; }
return true;
}
```
@@ -73,7 +78,7 @@ void dip_switch_update_mask_kb(uint32_t state) {
or `keymap.c`:
```c
void dip_switch_update_mask_user(uint32_t state) {
bool dip_switch_update_mask_user(uint32_t state) {
if (state & (1UL<<0) && state & (1UL<<1)) {
layer_on(_ADJUST); // C on esc
} else {
@@ -89,10 +94,10 @@ void dip_switch_update_mask_user(uint32_t state) {
} else {
layer_off(_TEST_B);
}
return true;
}
```
## Hardware
### Connects each switch in the dip switch to the GPIO pin of the MCU

View File

@@ -38,6 +38,12 @@ It can also be defined per-encoder, by instead defining:
#define ENCODER_RESOLUTIONS { 4, 2 }
```
For 4× encoders you also can assign default position if encoder skips pulses when it changes direction. For example, if your encoder send high level on both pins by default, define this:
```c
#define ENCODER_DEFAULT_POS 0x3
```
## Split Keyboards
If you are using different pinouts for the encoders on each half of a split keyboard, you can define the pinout (and optionally, resolutions) for the right half like this:

View File

@@ -162,4 +162,28 @@ This will set what sequence HPT_RST will set as the active mode. If not defined,
### DRV2605L Continuous Haptic Mode
This mode sets continuous haptic feedback with the option to increase or decrease strength.
This mode sets continuous haptic feedback with the option to increase or decrease strength.
## Haptic Key Exclusion
The Haptic Exclusion is implemented as `__attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record)` in haptic.c. This allows a re-definition at the required level with the specific requirement / exclusion.
### NO_HAPTIC_MOD
With the entry of `#define NO_HAPTIC_MOD` in config.h, modifiers from Left Control to Right GUI will not trigger a feedback. This also includes modifiers in a Mod Tap configuration.
### NO_HAPTIC_FN
With the entry of `#define NO_HAPTIC_FN` in config.h, layer keys will not rigger a feedback.
### NO_HAPTIC_ALPHA
With the entry of `#define NO_HAPTIC_ALPHA` in config.h, none of the alpha keys (A ... Z) will trigger a feedback.
### NO_HAPTIC_PUNCTUATION
With the entry of `#define NO_HAPTIC_PUNCTUATION` in config.h, none of the following keys will trigger a feedback: Enter, ESC, Backspace, Space, Minus, Equal, Left Bracket, Right Bracket, Backslash, Non-US Hash, Semicolon, Quote, Grave, Comma, Slash, Dot, Non-US Backslash.
### NO_HAPTIC_LOCKKEYS
With the entry of `#define NO_HAPTIC_LOCKKEYS` in config.h, none of the following keys will trigger a feedback: Caps Lock, Scroll Lock, Num Lock.
### NO_HAPTIC_NAV
With the entry of `#define NO_HAPTIC_NAV` in config.h, none of the following keys will trigger a feedback: Print Screen, Pause, Insert, Delete, Page Down, Page Up, Left Arrow, Up Arrow, Right Arrow, Down Arrow, End, Home.
### NO_HAPTIC_NUMERIC
With the entry of `#define NO_HAPTIC_NUMERIC` in config.h, none of the following keys between 0 and 9 (KC_1 ... KC_0) will trigger a feedback.

View File

@@ -0,0 +1,229 @@
# Key Overrides
Key overrides allow you to override modifier-key combinations to send a different modifier-key combination or perform completely custom actions. Don't want `shift` + `1` to type `!` on your computer? Use a key override to make your keyboard type something different when you press `shift` + `1`. The general behavior is like this: If `modifiers w` + `key x` are pressed, replace these keys with `modifiers y` + `key z` in the keyboard report.
You can use key overrides in a similar way to momentary layer/fn keys to activate custom keycodes/shortcuts, with a number of benefits: You completely keep the original use of the modifier keys, while being able to save space by removing fn keys from your keyboard. You can also easily configure _combinations of modifiers_ to trigger different actions than individual modifiers, and much more. The possibilities are quite vast and this documentation contains a few examples for inspiration throughout.
##### A few more examples to get started: You could use key overrides to...
- Send `brightness up/down` when pressing `ctrl` + `volume up/down`.
- Send `delete` when pressing `shift` + `backspace`.
- Create custom shortcuts or change existing ones: E.g. Send `ctrl`+`shift`+`z` when `ctrl`+`y` is pressed.
- Run custom code when `ctrl` + `alt` + `esc` is pressed.
## Setup
To enable this feature, you need to add `KEY_OVERRIDE_ENABLE = yes` to your `rules.mk`.
Then, in your `keymap.c` file, you'll need to define the array `key_overrides`, which defines all key overrides to be used. Each override is a value of type `key_override_t`. The array `key_overrides` is `NULL`-terminated and contains pointers to `key_override_t` values (`const key_override_t **`).
## Creating Key Overrides
The `key_override_t` struct has many options that allow you to precisely tune your overrides. The full reference is shown below. Instead of manually creating a `key_override_t` value, it is recommended to use these dedicated initializers:
#### `ko_make_basic(modifiers, key, replacement)`
Returns a `key_override_t`, which sends `replacement` (can be a key-modifer combination), when `key` and `modifiers` are all pressed down. This override still activates if any additional modifiers not specified in `modifiers` are also pressed down. See `ko_make_with_layers_and_negmods` to customize this behavior.
#### `ko_make_with_layers(modifiers, key, replacement, layers)`
Additionally takes a bitmask `layers` that defines on which layers the override is used.
#### `ko_make_with_layers_and_negmods(modifiers, key, replacement, layers, negative_mods)`
Additionally takes a bitmask `negative_mods` that defines which modifiers may not be pressed for this override to activate.
#### `ko_make_with_layers_negmods_and_options(modifiers, key, replacement, layers, negative_mods, options)`
Additionally takes a bitmask `options` that specifies additional options. See `ko_option_t` for available options.
For more customization possibilities, you may directly create a `key_override_t`, which allows you to customize even more behavior. Read further below for details and examples.
## Simple Example
This shows how the mentioned example of sending `delete` when `shift` + `backspace` are pressed is realized:
```c
const key_override_t delete_key_override = ko_make_basic(MOD_MASK_SHIFT, KC_BSPACE, KC_DELETE);
// This globally defines all key overrides to be used
const key_override_t **key_overrides = (const key_override_t *[]){
&delete_key_override,
NULL // Null terminate the array of overrides!
};
```
## Intermediate Difficulty Examples
### Media Controls & Screen Brightness
In this example a single key is configured to control media, volume and screen brightness by using key overrides.
- The key is set to send `play/pause` in the keymap.
The following key overrides will be configured:
- `Ctrl` + `play/pause` will send `next track`.
- `Ctrl` + `Shift` + `play/pause` will send `previous track`.
- `Alt` + `play/pause` will send `volume up`.
- `Alt` + `Shift` + `play/pause` will send `volume down`.
- `Ctrl` + `Alt` + `play/pause` will send `brightness up`.
- `Ctrl` + `Alt` + `Shift` + `play/pause` will send `brightness down`.
```c
const key_override_t next_track_override =
ko_make_with_layers_negmods_and_options(
MOD_MASK_CTRL, // Trigger modifiers: ctrl
KC_MPLY, // Trigger key: play/pause
KC_MNXT, // Replacement key
~0, // Activate on all layers
MOD_MASK_SA, // Do not activate when shift or alt are pressed
ko_option_no_reregister_trigger); // Specifies that the play key is not registered again after lifting ctrl
const key_override_t prev_track_override = ko_make_with_layers_negmods_and_options(MOD_MASK_CS, KC_MPLY,
KC_MPRV, ~0, MOD_MASK_ALT, ko_option_no_reregister_trigger);
const key_override_t vol_up_override = ko_make_with_layers_negmods_and_options(MOD_MASK_ALT, KC_MPLY,
KC_VOLU, ~0, MOD_MASK_CS, ko_option_no_reregister_trigger);
const key_override_t vol_down_override = ko_make_with_layers_negmods_and_options(MOD_MASK_SA, KC_MPLY,
KC_VOLD, ~0, MOD_MASK_CTRL, ko_option_no_reregister_trigger);
const key_override_t brightness_up_override = ko_make_with_layers_negmods_and_options(MOD_MASK_CA, KC_MPLY,
KC_BRIU, ~0, MOD_MASK_SHIFT, ko_option_no_reregister_trigger);
const key_override_t brightness_down_override = ko_make_basic(MOD_MASK_CSA, KC_MPLY, KC_BRID);
// This globally defines all key overrides to be used
const key_override_t **key_overrides = (const key_override_t *[]){
&next_track_override,
&prev_track_override,
&vol_up_override,
&vol_down_override,
&brightness_up_override,
&brightness_down_override,
NULL
};
```
### Flexible macOS-friendly Grave Escape
The [Grave Escape feature](feature_grave_esc.md) is limited in its configurability and has [bugs when used on macOS](feature_grave_esc.md#caveats). Key overrides can be used to achieve a similar functionality as Grave Escape, but with more customization and without bugs on macOS.
```c
// Shift + esc = ~
const key_override_t tilde_esc_override = ko_make_basic(MOD_MASK_SHIFT, KC_ESC, S(KC_GRAVE));
// GUI + esc = `
const key_override_t grave_esc_override = ko_make_basic(MOD_MASK_GUI, KC_ESC, KC_GRAVE);
const key_override_t **key_overrides = (const key_override_t *[]){
&tilde_esc_override,
&grave_esc_override,
NULL
};
```
In addition to not encountering unexpected bugs on macOS, you can also change the behavior as you wish. Instead setting `GUI` + `ESC` = `` ` `` you may change it to an arbitrary other modifier, for example `Ctrl` + `ESC` = `` ` ``.
## Advanced Examples
### Modifiers as Layer Keys
Do you really need a dedicated key to toggle your fn layer? With key overrides, perhaps not. This example shows how you can configure to use `rGUI` + `rAlt` (right GUI and right alt) to access a momentary layer like an fn layer. With this you completely eliminate the need to use a dedicated layer key. Of course the choice of modifier keys can be changed as needed, `rGUI` + `rAlt` is just an example here.
```c
// This is called when the override activates and deactivates. Enable the fn layer on activation and disable on deactivation
bool momentary_layer(bool key_down, void *layer) {
if (key_down) {
layer_on((uint8_t)(uintptr_t)layer);
} else {
layer_off((uint8_t)(uintptr_t)layer);
}
return false;
}
const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //
.layers = ~(1 << LAYER_FN), //
.suppressed_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //
.options = ko_option_no_unregister_on_other_key_down, //
.negative_mod_mask = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL)), //
.custom_action = momentary_layer, //
.context = (void *)LAYER_FN, //
.trigger = KC_NO, //
.replacement = KC_NO, //
.enabled = NULL};
```
## Keycodes
You can enable, disable and toggle all key overrides on the fly.
|Keycode |Description |Function Equivalent|
|----------|---------------------------------|--------|
|`KEY_OVERRIDE_ON` |Turns on Key Override feature | `key_override_on(void)`|
|`KEY_OVERRIDE_OFF` |Turns off Key Override feature |`key_override_off(void)`|
|`KEY_OVERRIDE_TOGGLE` |Toggles Key Override feature on and off |`key_override_toggle(void)`|
## Reference for `key_override_t`
Advanced users may need more customization than what is offered by the simple `ko_make` initializers. For this, directly create a `key_override_t` value and set all members. Below is a reference for all members of `key_override_t`.
| Member | Description |
|--------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `uint16_t trigger` | The non-modifier keycode that triggers the override. This keycode, and the necessary modifiers (`trigger_mods`) must be pressed to activate this override. Set this to the keycode of the key that should activate the override. Set to `KC_NO` to require only the necessary modifiers to be pressed and no non-modifier. |
| `uint8_t trigger_mods` | Which mods need to be down for activation. If both sides of a modifier are set (e.g. left ctrl and right ctrl) then only one is required to be pressed (e.g. left ctrl suffices). Use the `MOD_MASK_XXX` and `MOD_BIT()` macros for this. |
| `layer_state_t layers` | This is a BITMASK (!), defining which layers this override applies to. To use this override on layer i set the ith bit `(1 << i)`. |
| `uint8_t negative_mod_mask` | Which modifiers cannot be down. It must hold that `(active_modifiers & negative_mod_mask) == 0`, otherwise the key override will not be activated. An active override will be deactivated once this is no longer true. |
| `uint8_t suppressed_mods` | Modifiers to 'suppress' while the override is active. To suppress a modifier means that even though the modifier key is held down, the host OS sees the modifier as not pressed. Can be used to suppress the trigger modifiers, as a trivial example. |
| `uint16_t replacement` | The complex keycode to send as replacement when this override is triggered. This can be a simple keycode, a key-modifier combination (e.g. `C(KC_A)`), or `KC_NO` (to register no replacement keycode). Use in combination with suppressed_mods to get the correct modifiers to be sent. |
| `ko_option_t options` | Options controlling the behavior of the override, such as what actions are allowed to activate the override. |
| `bool (*custom_action)(bool activated, void *context)` | If not NULL, this function will be called right before the replacement key is registered, along with the provided context and a flag indicating whether the override was activated or deactivated. This function allows you to run some custom actions for specific key overrides. If you return `false`, the replacement key is not registered/unregistered as it would normally. Return `true` to register and unregister the override normally. |
| `void *context` | A context that will be passed to the custom action function. |
| `bool *enabled` | If this points to false this override will not be used. Set to NULL to always have this override enabled. |
### Reference for `ko_option_t`
Bitfield with various options controlling the behavior of a key override.
| Value | Description |
|------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `ko_option_activation_trigger_down` | Allow activating when the trigger key is pressed down. |
| `ko_option_activation_required_mod_down` | Allow activating when a necessary modifier is pressed down. |
| `ko_option_activation_negative_mod_up` | Allow activating when a negative modifier is released. |
| `ko_option_one_mod` | If set, any of the modifiers in `trigger_mods` will be enough to activate the override (logical OR of modifiers). If not set, all the modifiers in `trigger_mods` have to be pressed (logical AND of modifiers). |
| `ko_option_no_unregister_on_other_key_down` | If set, the override will not deactivate when another key is pressed down. Use only if you really know you need this. |
| `ko_option_no_reregister_trigger` | If set, the trigger key will never be registered again after the override is deactivated. |
| `ko_options_default` | The default options used by the `ko_make_xxx` functions |
## For Advanced Users: Inner Workings
This section explains how a key override works in detail, explaining where each member of `key_override_t` comes into play. Understanding this is essential to be able to take full advantage of all the options offered by key overrides.
#### Activation
When the necessary keys are pressed (`trigger_mods` + `trigger`), the override is 'activated' and the replacement key is registered in the keyboard report (`replacement`), while the `trigger` key is removed from the keyboard report. The trigger modifiers may also be removed from the keyboard report upon activation of an override (`suppressed_mods`). The override will not activate if any of the `negative_modifiers` are pressed.
Overrides can activate in three different cases:
1. The trigger key is pressed down and necessary modifiers are already down.
2. A necessary modifier is pressed down, while the trigger key and other necessary modifiers are already down.
3. A negative modifier is released, while all necessary modifiers and the trigger key are already down.
Use the `option` member to customize which of these events are allowed to activate your overrides (default: all three).
In any case, a key override can only activate if the `trigger` key is the _last_ non-modifier key that was pressed down. This emulates the behavior of how standard OSes (macOS, Windows, Linux) handle normal key input (to understand: Hold down `a`, then also hold down `b`, then hold down `shift`; `B` will be typed but not `A`).
#### Deactivation
An override is 'deactivated' when one of the trigger keys (`trigger_mods`, `trigger`) is lifted, another non-modifier key is pressed down, or one of the `negative_modifiers` is pressed down. When an override deactivates, the `replacement` key is removed from the keyboard report, while the `suppressed_mods` that are still held down are re-added to the keyboard report. By default, the `trigger` key is re-added to the keyboard report if it is still held down and no other non-modifier key has been pressed since. This again emulates the behavior of how standard OSes handle normal key input (To understand: hold down `a`, then also hold down `b`, then also `shift`, then release `b`; `A` will not be typed even though you are holding the `a` and `shift` keys). Use the `option` field `ko_option_no_reregister_trigger` to prevent re-registering the trigger key in all cases.
#### Key Repeat Delay
A third way in which standard OS-handling of modifier-key input is emulated in key overrides is with a ['key repeat delay'](https://www.dummies.com/computers/pcs/set-your-keyboards-repeat-delay-and-repeat-rate/). To explain what this is, let's look at how normal keyboard input is handled by mainstream OSes again: If you hold down `a`, followed by `shift`, you will see the letter `a` is first typed, then for a short moment nothing is typed and then repeating `A`s are typed. Take note that, although shift is pressed down just after `a` is pressed, it takes a moment until `A` is typed. This is caused by the aforementioned key repeat delay, and it is a feature that prevents unwanted repeated characters from being typed.
This applies equally to releasing a modifier: When you hold `shift`, then press `a`, the letter `A` is typed. Now if you release `shift` first, followed by `a` shortly after, you will not see the letter `a` being typed, even though for a short moment of time you were just holding down the key `a`. This is because no modified characters are typed until the key repeat delay has passed.
This exact behavior is implemented in key overrides as well: If a key override for `shift` + `a` = `b` exists, and `a` is pressed and held, followed by `shift`, you will not immediately see the letter `b` being typed. Instead, this event is deferred for a short moment, until the key repeat delay has passed, measured from the moment when the trigger key (`a`) was pressed down.
The duration of the key repeat delay is controlled with the `KEY_OVERRIDE_REPEAT_DELAY` macro. Define this value in your `config.h` file to change it. It is 500ms by default.
## Difference to Combos
Note that key overrides are very different from [combos](https://docs.qmk.fm/#/feature_combo). Combos require that you press down several keys almost _at the same time_ and can work with any combination of non-modifier keys. Key overrides work like keyboard shortcuts (e.g. `ctrl` + `z`): They take combinations of _multiple_ modifiers and _one_ non-modifier key to then perform some custom action. Key overrides are implemented with much care to behave just like normal keyboard shortcuts would in regards to the order of pressed keys, timing, and interacton with other pressed keys. There are a number of optional settings that can be used to really fine-tune the behavior of each key override as well. Using key overrides also does not delay key input for regular key presses, which inherently happens in combos and may be undesirable.

View File

@@ -52,7 +52,7 @@ Here is an example using 2 drivers.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
@@ -63,7 +63,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
}
```
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/issi/is31fl3731-simple.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` ).
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/led/issi/is31fl3731-simple.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` ).
---
@@ -164,26 +164,26 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|Define |Description |
|-------------------------------------------------------|-----------------------------------------------|
|`#define DISABLE_LED_MATRIX_ALPHAS_MODS` |Disables `LED_MATRIX_ALPHAS_MODS` |
|`#define DISABLE_LED_MATRIX_BREATHING` |Disables `LED_MATRIX_BREATHING` |
|`#define DISABLE_LED_MATRIX_BAND` |Disables `LED_MATRIX_BAND` |
|`#define DISABLE_LED_MATRIX_BAND_PINWHEEL` |Disables `LED_MATRIX_BAND_PINWHEEL` |
|`#define DISABLE_LED_MATRIX_BAND_SPIRAL` |Disables `LED_MATRIX_BAND_SPIRAL` |
|`#define DISABLE_LED_MATRIX_CYCLE_LEFT_RIGHT` |Disables `LED_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define DISABLE_LED_MATRIX_CYCLE_UP_DOWN` |Disables `LED_MATRIX_CYCLE_UP_DOWN` |
|`#define DISABLE_LED_MATRIX_CYCLE_OUT_IN` |Disables `LED_MATRIX_CYCLE_OUT_IN` |
|`#define DISABLE_LED_MATRIX_DUAL_BEACON` |Disables `LED_MATRIX_DUAL_BEACON` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_CROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_CROSS` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTICROSS`|
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_NEXUS` |
|`#define DISABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Disables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define DISABLE_LED_MATRIX_SOLID_SPLASH` |Disables `LED_MATRIX_SOLID_SPLASH` |
|`#define DISABLE_LED_MATRIX_SOLID_MULTISPLASH` |Disables `LED_MATRIX_SOLID_MULTISPLASH` |
|`#define DISABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Disables `LED_MATRIX_WAVE_LEFT_RIGHT` |
|`#define DISABLE_LED_MATRIX_WAVE_UP_DOWN` |Disables `LED_MATRIX_WAVE_UP_DOWN` |
|`#define ENABLE_LED_MATRIX_ALPHAS_MODS` |Enables `LED_MATRIX_ALPHAS_MODS` |
|`#define ENABLE_LED_MATRIX_BREATHING` |Enables `LED_MATRIX_BREATHING` |
|`#define ENABLE_LED_MATRIX_BAND` |Enables `LED_MATRIX_BAND` |
|`#define ENABLE_LED_MATRIX_BAND_PINWHEEL` |Enables `LED_MATRIX_BAND_PINWHEEL` |
|`#define ENABLE_LED_MATRIX_BAND_SPIRAL` |Enables `LED_MATRIX_BAND_SPIRAL` |
|`#define ENABLE_LED_MATRIX_CYCLE_LEFT_RIGHT` |Enables `LED_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define ENABLE_LED_MATRIX_CYCLE_UP_DOWN` |Enables `LED_MATRIX_CYCLE_UP_DOWN` |
|`#define ENABLE_LED_MATRIX_CYCLE_OUT_IN` |Enables `LED_MATRIX_CYCLE_OUT_IN` |
|`#define ENABLE_LED_MATRIX_DUAL_BEACON` |Enables `LED_MATRIX_DUAL_BEACON` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_SIMPLE` |Enables `LED_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_WIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_CROSS` |Enables `LED_MATRIX_SOLID_REACTIVE_CROSS` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTICROSS` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTICROSS`|
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_NEXUS` |Enables `LED_MATRIX_SOLID_REACTIVE_NEXUS` |
|`#define ENABLE_LED_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Enables `LED_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define ENABLE_LED_MATRIX_SOLID_SPLASH` |Enables `LED_MATRIX_SOLID_SPLASH` |
|`#define ENABLE_LED_MATRIX_SOLID_MULTISPLASH` |Enables `LED_MATRIX_SOLID_MULTISPLASH` |
|`#define ENABLE_LED_MATRIX_WAVE_LEFT_RIGHT` |Enables `LED_MATRIX_WAVE_LEFT_RIGHT` |
|`#define ENABLE_LED_MATRIX_WAVE_UP_DOWN` |Enables `LED_MATRIX_WAVE_UP_DOWN` |
## Custom LED Matrix Effects :id=custom-led-matrix-effects
@@ -262,7 +262,7 @@ For inspiration and examples, check out the built-in effects under `quantum/led_
#define LED_MATRIX_FRAMEBUFFER_EFFECTS // enable framebuffer effects
#define LED_DISABLE_TIMEOUT 0 // number of milliseconds to wait until led automatically turns off
#define LED_DISABLE_AFTER_TIMEOUT 0 // OBSOLETE: number of ticks to wait until disabling effects
#define LED_DISABLE_WHEN_USB_SUSPENDED false // turn off effects when suspended
#define LED_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#define LED_MATRIX_LED_PROCESS_LIMIT (DRIVER_LED_TOTAL + 4) / 5 // limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness)
#define LED_MATRIX_LED_FLUSH_LIMIT 16 // limits in milliseconds how frequently an animation will update the LEDs. 16 (16ms) is equivalent to limiting to 60fps (increases keyboard responsiveness)
#define LED_MATRIX_MAXIMUM_BRIGHTNESS 255 // limits maximum brightness of LEDs
@@ -350,30 +350,3 @@ void led_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
LED_MATRIX_INDICATOR_SET_VALUE(index, value);
}
```
## Suspended State :id=suspended-state
To use the suspend feature, make sure that `#define LED_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file.
Additionally add this to your `<keyboard>.c`:
```c
void suspend_power_down_kb(void) {
led_matrix_set_suspend_state(true);
suspend_power_down_user();
}
void suspend_wakeup_init_kb(void) {
led_matrix_set_suspend_state(false);
suspend_wakeup_init_user();
}
```
or add this to your `keymap.c`:
```c
void suspend_power_down_user(void) {
led_matrix_set_suspend_state(true);
}
void suspend_wakeup_init_user(void) {
led_matrix_set_suspend_state(false);
}
```

View File

@@ -21,13 +21,23 @@ Hardware configurations using Arm-based microcontrollers or different sizes of O
To enable the OLED feature, there are three steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`:
```make
OLED_DRIVER_ENABLE = yes
OLED_ENABLE = yes
```
## OLED type
|OLED Driver |Supported Device |
|-------------------|---------------------------|
|SSD1306 (default) |For both SSD1306 and SH1106|
e.g.
```make
OLED_DRIVER = SSD1306
```
Then in your `keymap.c` file, implement the OLED task call. This example assumes your keymap has three layers named `_QWERTY`, `_FN` and `_ADJ`:
```c
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
void oled_task_user(void) {
// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
@@ -114,7 +124,7 @@ static void fade_display(void) {
In split keyboards, it is very common to have two OLED displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from `is_keyboard_master()` or `is_keyboard_left()` found in `split_util.h`, e.g:
```c
#ifdef OLED_DRIVER_ENABLE
#ifdef OLED_ENABLE
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
if (!is_keyboard_master()) {
return OLED_ROTATION_180; // flips the display 180 degrees if offhand
@@ -346,6 +356,10 @@ bool oled_scroll_left(void);
// Returns true if the screen was not scrolling or stops scrolling
bool oled_scroll_off(void);
// Inverts the display
// Returns true if the screen was or is inverted
bool oled_invert(bool invert);
// Returns the maximum number of characters that will fit on a line
uint8_t oled_max_chars(void);

View File

@@ -50,7 +50,7 @@ In your keyboard config.h:
#endif
```
## Interrupt Version :id=interrupt-version
### Interrupt Version (AVR/ATMega32u4) :id=interrupt-version-avr
The following example uses D2 for clock and D5 for data. You can use any INT or PCINT pin for clock, and any pin for data.
@@ -88,7 +88,31 @@ In your keyboard config.h:
#endif
```
## USART Version :id=usart-version
### Interrupt Version (ARM chibios) :id=interrupt-version-chibios
Pretty much any two pins can be used for the (software) interrupt variant on ARM cores. The example below uses A8 for clock, and A9 for data.
In rules.mk:
```
PS2_MOUSE_ENABLE = yes
PS2_USE_INT = yes
```
In your keyboard config.h:
```c
#define PS2_CLOCK A8
#define PS2_DATA A9
```
And in the chibios specifig halconf.h:
```c
#define PAL_USE_CALLBACKS TRUE
```
### USART Version :id=usart-version
To use USART on the ATMega32u4, you have to use PD5 for clock and PD2 for data. If one of those are unavailable, you need to use interrupt version.
@@ -246,6 +270,16 @@ Fine control over the scrolling is supported with the following defines:
#define PS2_MOUSE_SCROLL_DIVISOR_V 2
```
### Invert Mouse buttons :id=invert-buttons
To invert the left & right buttons you can put:
```c
#define PS2_MOUSE_INVERT_BUTTONS
```
into config.h.
### Invert Mouse and Scroll Axes :id=invert-mouse-and-scroll-axes
To invert the X and Y axes you can put:

View File

@@ -52,7 +52,7 @@ Here is an example using 2 drivers.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -64,7 +64,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
}
```
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/issi/is31fl3731.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3`).
Where `Cx_y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3731.pdf) and the header file `drivers/led/issi/is31fl3731.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3`).
---
### IS31FL3733 :id=is31fl3733
@@ -122,7 +122,7 @@ Currently only 4 drivers are supported, but it would be trivial to support all 8
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -134,7 +134,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
}
```
Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3733.pdf) and the header file `drivers/issi/is31fl3733.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` for now).
Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3733.pdf) and the header file `drivers/led/issi/is31fl3733.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` for now).
---
### IS31FL3737 :id=is31fl3737
@@ -145,9 +145,22 @@ There is basic support for addressable RGB matrix lighting with the I2C IS31FL37
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3737
```
You can use between 1 and 2 IS31FL3737 IC's. Do not specify `DRIVER_ADDR_2` define for second IC if not present on your keyboard.
Configure the hardware via your `config.h`:
| Variable | Description | Default |
|----------|-------------|---------|
| `ISSI_TIMEOUT` | (Optional) How long to wait for i2c messages, in milliseconds | 100 |
| `ISSI_PERSISTENCE` | (Optional) Retry failed messages this many times | 0 |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `DRIVER_ADDR_1` | (Required) Address for the first RGB driver | |
| `DRIVER_ADDR_2` | (Optional) Address for the second RGB driver | |
Here is an example using 2 drivers.
```c
// This is a 7-bit address, that gets left-shifted and bit 0
// set to 0 for write, 1 for read (as per I2C protocol)
@@ -159,19 +172,21 @@ Configure the hardware via your `config.h`:
// ADDR represents A3:A0 of the 7-bit address.
// The result is: 0b101(ADDR)
#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1010000 // this is here for compliancy reasons.
#define DRIVER_ADDR_2 0b1010001
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 64
#define DRIVER_LED_TOTAL DRIVER_1_LED_TOTAL
#define DRIVER_1_LED_TOTAL 30
#define DRIVER_2_LED_TOTAL 36
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
```
!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`.
Currently only a single drivers is supported, but it would be trivial to support all 4 combinations. For now define `DRIVER_ADDR_2` as `DRIVER_ADDR_1`
Currently only 2 drivers are supported, but it would be trivial to support all 4 combinations.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
@@ -183,7 +198,7 @@ const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
}
```
Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3737.pdf) and the header file `drivers/issi/is31fl3737.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0` right now).
Where `X_Y` is the location of the LED in the matrix defined by [the datasheet](https://www.issi.com/WW/pdf/31FL3737.pdf) and the header file `drivers/led/issi/is31fl3737.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0`, `1` for now).
---
@@ -227,6 +242,75 @@ Configure the hardware via your `config.h`:
#define DRIVER_LED_TOTAL 70
```
---
### AW20216 :id=aw20216
There is basic support for addressable RGB matrix lighting with the SPI AW20216 RGB controller. To enable it, add this to your `rules.mk`:
```makefile
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = AW20216
```
You can use up to 2 AW20216 IC's. Do not specify `DRIVER_<N>_xxx` defines for IC's that are not present on your keyboard. You can define the following items in `config.h`:
| Variable | Description | Default |
|----------|-------------|---------|
| `DRIVER_1_CS` | (Required) MCU pin connected to first RGB driver chip select line | B13 |
| `DRIVER_2_CS` | (Optional) MCU pin connected to second RGB driver chip select line | |
| `DRIVER_1_EN` | (Required) MCU pin connected to first RGB driver hardware enable line | C13 |
| `DRIVER_2_EN` | (Optional) MCU pin connected to second RGB driver hardware enable line | |
| `DRIVER_1_LED_TOTAL` | (Required) How many RGB lights are connected to first RGB driver | |
| `DRIVER_2_LED_TOTAL` | (Optional) How many RGB lights are connected to second RGB driver | |
| `DRIVER_COUNT` | (Required) How many RGB driver IC's are present | |
| `DRIVER_LED_TOTAL` | (Required) How many RGB lights are present across all drivers | |
| `AW_SCALING_MAX` | (Optional) LED current scaling value (0-255, higher values mean LED is brighter at full PWM) | 150 |
| `AW_GLOBAL_CURRENT_MAX` | (Optional) Driver global current limit (0-255, higher values means the driver may consume more power) | 150 |
| `AW_SPI_DIVISOR` | (Optional) Clock divisor for SPI communication (powers of 2, smaller numbers means faster communication, should not be less than 4) | 4 |
Here is an example using 2 drivers.
```c
#define DRIVER_1_CS B13
#define DRIVER_2_CS B14
// Hardware enable lines may be connected to the same pin
#define DRIVER_1_EN C13
#define DRIVER_2_EN C13
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 66
#define DRIVER_2_LED_TOTAL 32
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
```
!> Note the parentheses, this is so when `DRIVER_LED_TOTAL` is used in code and expanded, the values are added together before any additional math is applied to them. As an example, `rand() % (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)` will give very different results than `rand() % DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL`.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
const aw_led __flash g_aw_leds[DRIVER_LED_TOTAL] = {
/* Each AW20216 channel is controlled by a register at some offset between 0x00
* and 0xD7 inclusive.
* See drivers/awinic/aw20216.h for the mapping between register offsets and
* driver pin locations.
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{ 0, CS1_SW1, CS2_SW1, CS3_SW1 },
{ 0, CS4_SW1, CS5_SW1, CS6_SW1 },
{ 0, CS7_SW1, CS8_SW1, CS9_SW1 },
{ 0, CS10_SW1, CS11_SW1, CS12_SW1 },
{ 0, CS13_SW1, CS14_SW1, CS15_SW1 },
...
{ 1, CS1_SW1, CS2_SW1, CS3_SW1 },
{ 1, CS13_SW1, CS14_SW1, CS15_SW1 },
{ 1, CS16_SW1, CS17_SW1, CS18_SW1 },
{ 1, CS4_SW2, CS5_SW2, CS6_SW2 },
...
};
```
---
## Common Configuration :id=common-configuration
@@ -364,46 +448,46 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
|Define |Description |
|-------------------------------------------------------|-----------------------------------------------|
|`#define DISABLE_RGB_MATRIX_ALPHAS_MODS` |Disables `RGB_MATRIX_ALPHAS_MODS` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Disables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Disables `MATRIX_GRADIENT_LEFT_RIGHT` |
|`#define DISABLE_RGB_MATRIX_BREATHING` |Disables `RGB_MATRIX_BREATHING` |
|`#define DISABLE_RGB_MATRIX_BAND_SAT` |Disables `RGB_MATRIX_BAND_SAT` |
|`#define DISABLE_RGB_MATRIX_BAND_VAL` |Disables `RGB_MATRIX_BAND_VAL` |
|`#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_SAT` |Disables `RGB_MATRIX_BAND_PINWHEEL_SAT` |
|`#define DISABLE_RGB_MATRIX_BAND_PINWHEEL_VAL` |Disables `RGB_MATRIX_BAND_PINWHEEL_VAL` |
|`#define DISABLE_RGB_MATRIX_BAND_SPIRAL_SAT` |Disables `RGB_MATRIX_BAND_SPIRAL_SAT` |
|`#define DISABLE_RGB_MATRIX_BAND_SPIRAL_VAL` |Disables `RGB_MATRIX_BAND_SPIRAL_VAL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_ALL` |Disables `RGB_MATRIX_CYCLE_ALL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Disables `RGB_MATRIX_CYCLE_UP_DOWN` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN` |Disables `RGB_MATRIX_CYCLE_OUT_IN` |
|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Disables `RGB_MATRIX_CYCLE_PINWHEEL` |
|`#define DISABLE_RGB_MATRIX_CYCLE_SPIRAL` |Disables `RGB_MATRIX_CYCLE_SPIRAL` |
|`#define DISABLE_RGB_MATRIX_DUAL_BEACON` |Disables `RGB_MATRIX_DUAL_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON` |Disables `RGB_MATRIX_RAINBOW_BEACON` |
|`#define DISABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Disables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|`#define DISABLE_RGB_MATRIX_RAINDROPS` |Disables `RGB_MATRIX_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Disables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|`#define DISABLE_RGB_MATRIX_HUE_BREATHING` |Disables `RGB_MATRIX_HUE_BREATHING` |
|`#define DISABLE_RGB_MATRIX_HUE_PENDULUM` |Disables `RGB_MATRIX_HUE_PENDULUM` |
|`#define DISABLE_RGB_MATRIX_HUE_WAVE ` |Disables `RGB_MATRIX_HUE_WAVE ` |
|`#define DISABLE_RGB_MATRIX_TYPING_HEATMAP` |Disables `RGB_MATRIX_TYPING_HEATMAP` |
|`#define DISABLE_RGB_MATRIX_DIGITAL_RAIN` |Disables `RGB_MATRIX_DIGITAL_RAIN` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Disables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE` |Disables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTICROSS`|
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` |Disables `RGB_MATRIX_SOLID_REACTIVE_NEXUS` |
|`#define DISABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Disables `RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define DISABLE_RGB_MATRIX_SPLASH` |Disables `RGB_MATRIX_SPLASH` |
|`#define DISABLE_RGB_MATRIX_MULTISPLASH` |Disables `RGB_MATRIX_MULTISPLASH` |
|`#define DISABLE_RGB_MATRIX_SOLID_SPLASH` |Disables `RGB_MATRIX_SOLID_SPLASH` |
|`#define DISABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Disables `RGB_MATRIX_SOLID_MULTISPLASH` |
|`#define ENABLE_RGB_MATRIX_ALPHAS_MODS` |Enables `RGB_MATRIX_ALPHAS_MODS` |
|`#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN` |Enables `RGB_MATRIX_GRADIENT_UP_DOWN` |
|`#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT` |Enables `MATRIX_GRADIENT_LEFT_RIGHT` |
|`#define ENABLE_RGB_MATRIX_BREATHING` |Enables `RGB_MATRIX_BREATHING` |
|`#define ENABLE_RGB_MATRIX_BAND_SAT` |Enables `RGB_MATRIX_BAND_SAT` |
|`#define ENABLE_RGB_MATRIX_BAND_VAL` |Enables `RGB_MATRIX_BAND_VAL` |
|`#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT` |Enables `RGB_MATRIX_BAND_PINWHEEL_SAT` |
|`#define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL` |Enables `RGB_MATRIX_BAND_PINWHEEL_VAL` |
|`#define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT` |Enables `RGB_MATRIX_BAND_SPIRAL_SAT` |
|`#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL` |Enables `RGB_MATRIX_BAND_SPIRAL_VAL` |
|`#define ENABLE_RGB_MATRIX_CYCLE_ALL` |Enables `RGB_MATRIX_CYCLE_ALL` |
|`#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT` |Enables `RGB_MATRIX_CYCLE_LEFT_RIGHT` |
|`#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN` |Enables `RGB_MATRIX_CYCLE_UP_DOWN` |
|`#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |Enables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON` |
|`#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN` |Enables `RGB_MATRIX_CYCLE_OUT_IN` |
|`#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL` |Enables `RGB_MATRIX_CYCLE_OUT_IN_DUAL` |
|`#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL` |Enables `RGB_MATRIX_CYCLE_PINWHEEL` |
|`#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL` |Enables `RGB_MATRIX_CYCLE_SPIRAL` |
|`#define ENABLE_RGB_MATRIX_DUAL_BEACON` |Enables `RGB_MATRIX_DUAL_BEACON` |
|`#define ENABLE_RGB_MATRIX_RAINBOW_BEACON` |Enables `RGB_MATRIX_RAINBOW_BEACON` |
|`#define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS` |Enables `RGB_MATRIX_RAINBOW_PINWHEELS` |
|`#define ENABLE_RGB_MATRIX_RAINDROPS` |Enables `RGB_MATRIX_RAINDROPS` |
|`#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS` |Enables `RGB_MATRIX_JELLYBEAN_RAINDROPS` |
|`#define ENABLE_RGB_MATRIX_HUE_BREATHING` |Enables `RGB_MATRIX_HUE_BREATHING` |
|`#define ENABLE_RGB_MATRIX_HUE_PENDULUM` |Enables `RGB_MATRIX_HUE_PENDULUM` |
|`#define ENABLE_RGB_MATRIX_HUE_WAVE ` |Enables `RGB_MATRIX_HUE_WAVE ` |
|`#define ENABLE_RGB_MATRIX_TYPING_HEATMAP` |Enables `RGB_MATRIX_TYPING_HEATMAP` |
|`#define ENABLE_RGB_MATRIX_DIGITAL_RAIN` |Enables `RGB_MATRIX_DIGITAL_RAIN` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |Enables `RGB_MATRIX_SOLID_REACTIVE_SIMPLE` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE` |Enables `RGB_MATRIX_SOLID_REACTIVE` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE` |Enables `RGB_MATRIX_SOLID_REACTIVE_WIDE` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS` |Enables `RGB_MATRIX_SOLID_REACTIVE_CROSS` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTICROSS`|
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS` |Enables `RGB_MATRIX_SOLID_REACTIVE_NEXUS` |
|`#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS` |Enables `RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS`|
|`#define ENABLE_RGB_MATRIX_SPLASH` |Enables `RGB_MATRIX_SPLASH` |
|`#define ENABLE_RGB_MATRIX_MULTISPLASH` |Enables `RGB_MATRIX_MULTISPLASH` |
|`#define ENABLE_RGB_MATRIX_SOLID_SPLASH` |Enables `RGB_MATRIX_SOLID_SPLASH` |
|`#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH` |Enables `RGB_MATRIX_SOLID_MULTISPLASH` |
### RGB Matrix Effect Typing Heatmap :id=rgb-matrix-effect-typing-heatmap
@@ -485,28 +569,29 @@ For inspiration and examples, check out the built-in effects under `quantum/rgb_
These are shorthands to popular colors. The `RGB` ones can be passed to the `setrgb` functions, while the `HSV` ones to the `sethsv` functions.
|RGB |HSV |
|-------------------|-------------------|
|`RGB_WHITE` |`HSV_WHITE` |
|`RGB_RED` |`HSV_RED` |
|`RGB_CORAL` |`HSV_CORAL` |
|`RGB_ORANGE` |`HSV_ORANGE` |
|`RGB_GOLDENROD` |`HSV_GOLDENROD` |
|`RGB_GOLD` |`HSV_GOLD` |
|`RGB_YELLOW` |`HSV_YELLOW` |
|`RGB_CHARTREUSE` |`HSV_CHARTREUSE` |
|`RGB_GREEN` |`HSV_GREEN` |
|`RGB_SPRINGGREEN` |`HSV_SPRINGGREEN` |
|`RGB_TURQUOISE` |`HSV_TURQUOISE` |
|`RGB_TEAL` |`HSV_TEAL` |
|`RGB_CYAN` |`HSV_CYAN` |
|`RGB_AZURE` |`HSV_AZURE` |
|`RGB_BLUE` |`HSV_BLUE` |
|`RGB_PURPLE` |`HSV_PURPLE` |
|`RGB_MAGENTA` |`HSV_MAGENTA` |
|`RGB_PINK` |`HSV_PINK` |
|RGB |HSV |
|---------------------|---------------------|
|`RGB_AZURE` |`HSV_AZURE` |
|`RGB_BLACK`/`RGB_OFF`|`HSV_BLACK`/`HSV_OFF`|
|`RGB_BLUE` |`HSV_BLUE` |
|`RGB_CHARTREUSE` |`HSV_CHARTREUSE` |
|`RGB_CORAL` |`HSV_CORAL` |
|`RGB_CYAN` |`HSV_CYAN` |
|`RGB_GOLD` |`HSV_GOLD` |
|`RGB_GOLDENROD` |`HSV_GOLDENROD` |
|`RGB_GREEN` |`HSV_GREEN` |
|`RGB_MAGENTA` |`HSV_MAGENTA` |
|`RGB_ORANGE` |`HSV_ORANGE` |
|`RGB_PINK` |`HSV_PINK` |
|`RGB_PURPLE` |`HSV_PURPLE` |
|`RGB_RED` |`HSV_RED` |
|`RGB_SPRINGGREEN` |`HSV_SPRINGGREEN` |
|`RGB_TEAL` |`HSV_TEAL` |
|`RGB_TURQUOISE` |`HSV_TURQUOISE` |
|`RGB_WHITE` |`HSV_WHITE` |
|`RGB_YELLOW` |`HSV_YELLOW` |
These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h). Feel free to add to this list!
These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/color.h). Feel free to add to this list!
## Additional `config.h` Options :id=additional-configh-options
@@ -657,29 +742,41 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
### Suspended state :id=suspended-state
To use the suspend feature, make sure that `#define RGB_DISABLE_WHEN_USB_SUSPENDED true` is added to the `config.h` file.
#### Examples :id=indicator-examples
Additionally add this to your `<keyboard>.c`:
This example sets the modifiers to be a specific color based on the layer state. You can use a switch case here, instead, if you would like. This uses HSV and then converts to RGB, because this allows the brightness to be limited (important when using the WS2812 driver).
```c
void suspend_power_down_kb(void) {
rgb_matrix_set_suspend_state(true);
suspend_power_down_user();
}
void suspend_wakeup_init_kb(void) {
rgb_matrix_set_suspend_state(false);
suspend_wakeup_init_user();
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
HSV hsv = {0, 255, 255};
if (layer_state_is(layer_state, 2)) {
hsv = {130, 255, 255};
} else {
hsv = {30, 255, 255};
}
if (hsv.v > rgb_matrix_get_val()) {
hsv.v = rgb_matrix_get_val();
}
RGB rgb = hsv_to_rgb(hsv);
for (uint8_t i = led_min; i <= led_max; i++) {
if (HAS_FLAGS(g_led_config.flags[i], 0x01)) { // 0x01 == LED_FLAG_MODIFIER
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
}
}
}
```
or add this to your `keymap.c`:
If you want to indicate a Host LED status (caps lock, num lock, etc), you can use something like this to light up the caps lock key:
```c
void suspend_power_down_user(void) {
rgb_matrix_set_suspend_state(true);
}
void suspend_wakeup_init_user(void) {
rgb_matrix_set_suspend_state(false);
void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
if (host_keyboard_led_state().caps_lock) {
RGB_MATRIX_INDICATOR_SET_COLOR(5, 255, 255, 255); // assuming caps lock is at led #5
} else {
RGB_MATRIX_INDICATOR_SET_COLOR(5, 0, 0, 0);
}
}
```

View File

@@ -119,7 +119,7 @@ if `RGBLIGHT_EFFECT_xxxx` or `RGBLIGHT_ANIMATIONS` is defined, you also have a n
Check out [this video](https://youtube.com/watch?v=VKrpPAHlisY) for a demonstration.
Note: For versions older than 0.6.117, The mode numbers were written directly. In `quantum/rgblight.h` there is a contrast table between the old mode number and the current symbol.
Note: For versions older than 0.6.117, The mode numbers were written directly. In `quantum/rgblight/rgblight.h` there is a contrast table between the old mode number and the current symbol.
### Effect and Animation Toggles
@@ -326,9 +326,13 @@ would turn the layer 0 (or 1) on and off again three times when `DEBUG` is press
Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with `RGB_TOG` keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF` to your `config.h`.
### Retain brightness
Usually lighting layers apply their configured brightness once activated. If you would like lighting layers to retain the currently used brightness (as returned by `rgblight_get_val()`), add `#define RGBLIGHT_LAYERS_RETAIN_VAL` to your `config.h`.
## Functions
If you need to change your RGB lighting in code, for example in a macro to change the color whenever you switch layers, QMK provides a set of functions to assist you. See [`rgblight.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight.h) for the full list, but the most commonly used functions include:
If you need to change your RGB lighting in code, for example in a macro to change the color whenever you switch layers, QMK provides a set of functions to assist you. See [`rgblight.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight/rgblight.h) for the full list, but the most commonly used functions include:
### Utility Functions
|Function |Description |
@@ -449,26 +453,27 @@ rgblight_sethsv_at(HSV_GREEN, 2); // led 2
These are shorthands to popular colors. The `RGB` ones can be passed to the `setrgb` functions, while the `HSV` ones to the `sethsv` functions.
|RGB |HSV |
|-------------------|-------------------|
|`RGB_WHITE` |`HSV_WHITE` |
|`RGB_RED` |`HSV_RED` |
|`RGB_CORAL` |`HSV_CORAL` |
|`RGB_ORANGE` |`HSV_ORANGE` |
|`RGB_GOLDENROD` |`HSV_GOLDENROD` |
|`RGB_GOLD` |`HSV_GOLD` |
|`RGB_YELLOW` |`HSV_YELLOW` |
|`RGB_CHARTREUSE` |`HSV_CHARTREUSE` |
|`RGB_GREEN` |`HSV_GREEN` |
|`RGB_SPRINGGREEN` |`HSV_SPRINGGREEN` |
|`RGB_TURQUOISE` |`HSV_TURQUOISE` |
|`RGB_TEAL` |`HSV_TEAL` |
|`RGB_CYAN` |`HSV_CYAN` |
|`RGB_AZURE` |`HSV_AZURE` |
|`RGB_BLUE` |`HSV_BLUE` |
|`RGB_PURPLE` |`HSV_PURPLE` |
|`RGB_MAGENTA` |`HSV_MAGENTA` |
|`RGB_PINK` |`HSV_PINK` |
|RGB |HSV |
|---------------------|---------------------|
|`RGB_AZURE` |`HSV_AZURE` |
|`RGB_BLACK`/`RGB_OFF`|`HSV_BLACK`/`HSV_OFF`|
|`RGB_BLUE` |`HSV_BLUE` |
|`RGB_CHARTREUSE` |`HSV_CHARTREUSE` |
|`RGB_CORAL` |`HSV_CORAL` |
|`RGB_CYAN` |`HSV_CYAN` |
|`RGB_GOLD` |`HSV_GOLD` |
|`RGB_GOLDENROD` |`HSV_GOLDENROD` |
|`RGB_GREEN` |`HSV_GREEN` |
|`RGB_MAGENTA` |`HSV_MAGENTA` |
|`RGB_ORANGE` |`HSV_ORANGE` |
|`RGB_PINK` |`HSV_PINK` |
|`RGB_PURPLE` |`HSV_PURPLE` |
|`RGB_RED` |`HSV_RED` |
|`RGB_SPRINGGREEN` |`HSV_SPRINGGREEN` |
|`RGB_TEAL` |`HSV_TEAL` |
|`RGB_TURQUOISE` |`HSV_TURQUOISE` |
|`RGB_WHITE` |`HSV_WHITE` |
|`RGB_YELLOW` |`HSV_YELLOW` |
```c
rgblight_setrgb(RGB_ORANGE);
@@ -477,7 +482,7 @@ rgblight_setrgb_at(RGB_GOLD, 3);
rgblight_sethsv_range(HSV_WHITE, 0, 6);
```
These are defined in [`rgblight_list.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/rgblight_list.h). Feel free to add to this list!
These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master/quantum/color.h). Feel free to add to this list!
## Changing the order of the LEDs

View File

@@ -8,8 +8,7 @@ QMK Firmware has a generic implementation that is usable by any board, as well a
For this, we will mostly be talking about the generic implementation used by the Let's Split and other keyboards.
!> ARM is not yet fully supported for Split Keyboards and has many limitations. Progress is being made, but we have not yet reached 100% feature parity.
!> ARM split supports most QMK subsystems when using the 'serial' and 'serial_usart' drivers. I2C slave is currently unsupported.
## Compatibility Overview
@@ -90,7 +89,13 @@ You can configure the firmware to read a pin on the controller to determine hand
#define SPLIT_HAND_PIN B7
```
This will read the specified pin. If it's high, then the controller assumes it is the left hand, and if it's low, it's assumed to be the right side.
This will read the specified pin. By default, if it's high, then the controller assumes it is the left hand, and if it's low, it's assumed to be the right side.
This behaviour can be flipped by adding this to you `config.h` file:
```c
#define SPLIT_HAND_PIN_LOW_IS_LEFT
```
#### Handedness by Matrix Pin
@@ -169,7 +174,7 @@ Because not every split keyboard is identical, there are a number of additional
#define USE_I2C
```
This enables I<sup>2</sup>C support for split keyboards. This isn't strictly for communication, but can be used for OLED or other I<sup>2</sup>C-based devices.
This configures the use of I<sup>2</sup>C support for split keyboard transport (AVR only).
```c
#define SOFT_SERIAL_PIN D0
@@ -193,20 +198,143 @@ If you're having issues with serial communication, you can change this value, as
* **`5`**: about 20kbps
```c
#define SPLIT_MODS_ENABLE
#define FORCED_SYNC_THROTTLE_MS 100
```
This enables transmitting modifier state (normal, weak and oneshot) to the non
primary side of the split keyboard. This adds a few bytes of data to the split
communication protocol and may impact the matrix scan speed when enabled.
The purpose of this feature is to support cosmetic use of modifer state (e.g.
displaying status on an OLED screen).
This sets the maximum number of milliseconds before forcing a synchronization of data from master to slave. Under normal circumstances this sync occurs whenever the data _changes_, for safety a data transfer occurs after this number of milliseconds if no change has been detected since the last sync.
```c
#define SPLIT_MAX_CONNECTION_ERRORS 10
```
This sets the maximum number of failed communication attempts (one per scan cycle) from the master part before it assumes that no slave part is connected. This makes it possible to use a master part without the slave part connected.
Set to 0 to disable the disconnection check altogether.
```c
#define SPLIT_CONNECTION_CHECK_TIMEOUT 500
```
How long (in milliseconds) the master part should block all connection attempts to the slave after the communication has been flagged as disconnected (see `SPLIT_MAX_CONNECTION_ERRORS` above).
One communication attempt will be allowed everytime this amount of time has passed since the last attempt. If that attempt succeeds, the communication is seen as working again.
Set to 0 to disable this throttling of communications while disconnected. This can save you a couple of bytes of firmware size.
```c
#define SPLIT_TRANSPORT_MIRROR
```
This mirrors the master side matrix to the slave side for features that react or require knowledge of master side key presses on the slave side. This adds a few bytes of data to the split communication protocol and may impact the matrix scan speed when enabled. The purpose of this feature is to support cosmetic use of key events (e.g. RGB reacting to Keypresses).
This mirrors the master side matrix to the slave side for features that react or require knowledge of master side key presses on the slave side. The purpose of this feature is to support cosmetic use of key events (e.g. RGB reacting to keypresses). This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
```c
#define SPLIT_LAYER_STATE_ENABLE
```
This enables syncing of the layer state between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the currently active layer. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
```c
#define SPLIT_LED_STATE_ENABLE
```
This enables syncing of the Host LED status (caps lock, num lock, etc) between both halves of the split keyboard. The main purpose of this feature is to enable support for use of things like OLED display of the Host LED status. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
```c
#define SPLIT_MODS_ENABLE
```
This enables transmitting modifier state (normal, weak and oneshot) to the non primary side of the split keyboard. The purpose of this feature is to support cosmetic use of modifer state (e.g. displaying status on an OLED screen). This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
```c
#define SPLIT_WPM_ENABLE
```
This enables transmitting the current WPM to the slave side of the split keyboard. The purpose of this feature is to support cosmetic use of WPM (e.g. displaying the current value on an OLED screen). This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
```c
#define SPLIT_OLED_ENABLE
```
This enables transmitting the current OLED on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
```c
#define SPLIT_ST7565_ENABLE
```
This enables transmitting the current ST7565 on/off status to the slave side of the split keyboard. The purpose of this feature is to support state (on/off state only) syncing. This adds overhead to the split communication protocol and may negatively impact the matrix scan speed when enabled.
### Custom data sync between sides :id=custom-data-sync
QMK's split transport allows for arbitrary data transactions at both the keyboard and user levels. This is modelled on a remote procedure call, with the master invoking a function on the slave side, with the ability to send data from master to slave, process it slave side, and send data back from slave to master.
To leverage this, a keyboard or user/keymap can define a comma-separated list of _transaction IDs_:
```c
// for keyboard-level data sync:
#define SPLIT_TRANSACTION_IDS_KB KEYBOARD_SYNC_A, KEYBOARD_SYNC_B
// or, for user:
#define SPLIT_TRANSACTION_IDS_USER USER_SYNC_A, USER_SYNC_B, USER_SYNC_C
```
These _transaction IDs_ then need a slave-side handler function to be registered with the split transport, for example:
```c
typedef struct _master_to_slave_t {
int m2s_data;
} master_to_slave_t;
typedef struct _slave_to_master_t {
int s2m_data;
} slave_to_master_t;
void user_sync_a_slave_handler(uint8_t in_buflen, const void* in_data, uint8_t out_buflen, void* out_data) {
const master_to_slave_t *m2s = (const master_to_slave_t*)in_data;
slave_to_master_t *s2m = (slave_to_master_t*)out_data;
s2m->s2m_data = m2s->m2s_data + 5; // whatever comes in, add 5 so it can be sent back
}
void keyboard_post_init_user(void) {
transaction_register_rpc(USER_SYNC_A, user_sync_a_slave_handler);
}
```
The master side can then invoke the slave-side handler - for normal keyboard functionality to be minimally affected, any keyboard- or user-level code attempting to sync data should be throttled:
```c
void housekeeping_task_user(void) {
if (is_keyboard_master()) {
// Interact with slave every 500ms
static uint32_t last_sync = 0;
if (timer_elapsed32(last_sync) > 500) {
master_to_slave_t m2s = {6};
slave_to_master_t s2m = {0};
if(transaction_rpc_exec(USER_SYNC_A, sizeof(m2s), &m2s, sizeof(s2m), &s2m)) {
last_sync = timer_read32();
dprintf("Slave value: %d\n", s2m.s2m_data); // this will now be 11, as the slave adds 5
} else {
dprint("Slave sync failed!\n");
}
}
}
}
```
!> It is recommended that any data sync between halves happens during the master side's _housekeeping task_. This ensures timely retries should failures occur.
If only one-way data transfer is needed, helper methods are provided:
```c
bool transaction_rpc_exec(int8_t transaction_id, uint8_t initiator2target_buffer_size, const void *initiator2target_buffer, uint8_t target2initiator_buffer_size, void *target2initiator_buffer);
bool transaction_rpc_send(int8_t transaction_id, uint8_t initiator2target_buffer_size, const void *initiator2target_buffer);
bool transaction_rpc_recv(int8_t transaction_id, uint8_t target2initiator_buffer_size, void *target2initiator_buffer);
```
By default, the inbound and outbound data is limited to a maximum of 32 bytes each. The sizes can be altered if required:
```c
// Master to slave:
#define RPC_M2S_BUFFER_SIZE 48
// Slave to master:
#define RPC_S2M_BUFFER_SIZE 48
```
### Hardware Configuration Options

274
docs/feature_st7565.md Normal file
View File

@@ -0,0 +1,274 @@
# ST7565 LCD Driver
## Supported Hardware
LCD modules using ST7565 driver IC, communicating over SPI.
|Module |IC |Size |Notes |
|------------------------------|-------|------|----------------------------------------------------------|
|Newhaven Display NHD-C12832A1Z|ST7565R|128x32|Used by Ergodox Infinity; primary consumer of this feature|
|Zolentech ZLE12864B |ST7565P|128x64|Requires contrast adjustment |
## Usage
To enable the feature, there are three steps. First, when compiling your keyboard, you'll need to add the following to your `rules.mk`:
```make
ST7565_ENABLE = yes
```
Then in your `keymap.c` file, implement the ST7565 task call. This example assumes your keymap has three layers named `_QWERTY`, `_FN` and `_ADJ`:
```c
#ifdef ST7565_ENABLE
void st7565_task_user(void) {
// Host Keyboard Layer Status
st7565_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case _QWERTY:
st7565_write_P(PSTR("Default\n"), false);
break;
case _FN:
st7565_write_P(PSTR("FN\n"), false);
break;
case _ADJ:
st7565_write_P(PSTR("ADJ\n"), false);
break;
default:
// Or use the write_ln shortcut over adding '\n' to the end of your string
st7565_write_ln_P(PSTR("Undefined"), false);
}
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
st7565_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
st7565_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
st7565_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
}
#endif
```
## Logo Example
In the default font, certain ranges of characters are reserved for a QMK logo. To render this logo to the screen, use the following code example:
```c
static void render_logo(void) {
static const char PROGMEM qmk_logo[] = {
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
};
st7565_write_P(qmk_logo, false);
}
```
## Buffer Read Example
For some purposes, you may need to read the current state of the display buffer. The `st7565_read_raw` function can be used to safely read bytes from the buffer.
In this example, calling `fade_display` in the `st7565_task_user` function will slowly fade away whatever is on the screen by turning random pixels off over time.
```c
//Setup some mask which can be or'd with bytes to turn off pixels
const uint8_t single_bit_masks[8] = {127, 191, 223, 239, 247, 251, 253, 254};
static void fade_display(void) {
//Define the reader structure
display_buffer_reader_t reader;
uint8_t buff_char;
if (random() % 30 == 0) {
srand(timer_read());
// Fetch a pointer for the buffer byte at index 0. The return structure
// will have the pointer and the number of bytes remaining from this
// index position if we want to perform a sequential read by
// incrementing the buffer pointer
reader = st7565_read_raw(0);
//Loop over the remaining buffer and erase pixels as we go
for (uint16_t i = 0; i < reader.remaining_element_count; i++) {
//Get the actual byte in the buffer by dereferencing the pointer
buff_char = *reader.current_element;
if (buff_char != 0) {
st7565_write_raw_byte(buff_char & single_bit_masks[rand() % 8], i);
}
//increment the pointer to fetch a new byte during the next loop
reader.current_element++;
}
}
}
```
## Other Examples
In split keyboards, it is very common to have two displays that each render different content and are oriented or flipped differently. You can do this by switching which content to render by using the return value from `is_keyboard_master()` or `is_keyboard_left()` found in `split_util.h`, e.g:
```c
#ifdef ST7565_ENABLE
display_rotation_t st7565_init_user(display_rotation_t rotation) {
if (!is_keyboard_master()) {
return DISPLAY_ROTATION_180; // flips the display 180 degrees if offhand
}
return rotation;
}
void st7565_task_user(void) {
if (is_keyboard_master()) {
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_logo(); // Renders a static logo
}
}
#endif
```
## Basic Configuration
|Define |Default |Description |
|------------------------|--------------|-----------------------------------------------------------------------------------------------------|
|`ST7565_A0_PIN` |*Not defined* |(Required) The GPIO connected to the display's A0 (data/command) pin |
|`ST7565_RST_PIN` |*Not defined* |(Required) The GPIO connected to the display's reset pin |
|`ST7565_SS_PIN` |*Not defined* |(Required) The GPIO connected to the display's slave select pin |
|`ST7565_SPI_CLK_DIVISOR`|`4` |The SPI clock divisor to use |
|`ST7565_FONT_H` |`"glcdfont.c"`|The font code file to use for custom fonts |
|`ST7565_FONT_START` |`0` |The starting character index for custom fonts |
|`ST7565_FONT_END` |`223` |The ending character index for custom fonts |
|`ST7565_FONT_WIDTH` |`6` |The font width |
|`ST7565_FONT_HEIGHT` |`8` |The font height (untested) |
|`ST7565_TIMEOUT` |`60000` |Turns off the screen after 60000ms of keyboard inactivity. Helps reduce burn-in. Set to 0 to disable.|
|`ST7565_COLUMN_OFFSET` |`0` |Shift output to the right this many pixels. |
|`ST7565_CONTRAST` |`32` |The default contrast level of the display, from 0 to 255. |
|`ST7565_UPDATE_INTERVAL`|`0` |Set the time interval for updating the display in ms. This will improve the matrix scan rate. |
## Custom sized displays
The default display size for this feature is 128x32 and all necessary defines are precalculated with that in mind.
|Define |Default |Description |
|-----------------------|----------|-----------------------------------------------------------------------------------------------------------|
|`ST7565_DISPLAY_WIDTH` |`128` |The width of the display. |
|`ST7565_DISPLAY_HEIGHT`|`32` |The height of the display. |
|`ST7565_MATRIX_SIZE` |`512` |The local buffer size to allocate.<br>`(ST7565_DISPLAY_HEIGHT / 8 * ST7565_DISPLAY_WIDTH)`. |
|`ST7565_BLOCK_TYPE` |`uint16_t`|The unsigned integer type to use for dirty rendering. |
|`ST7565_BLOCK_COUNT` |`16` |The number of blocks the display is divided into for dirty rendering.<br>`(sizeof(ST7565_BLOCK_TYPE) * 8)`.|
|`ST7565_BLOCK_SIZE` |`32` |The size of each block for dirty rendering<br>`(ST7565_MATRIX_SIZE / ST7565_BLOCK_COUNT)`. |
## API
```c
// Rotation enum values are flags
typedef enum {
DISPLAY_ROTATION_0,
DISPLAY_ROTATION_180
} display_rotation_t;
// Initialize the display, rotating the rendered output based on the define passed in.
// Returns true if the was initialized successfully
bool st7565_init(display_rotation_t rotation);
// Called at the start of st7565_init, weak function overridable by the user
// rotation - the value passed into st7565_init
// Return new display_rotation_t if you want to override default rotation
display_rotation_t st7565_init_user(display_rotation_t rotation);
// Clears the display buffer, resets cursor position to 0, and sets the buffer to dirty for rendering
void st7565_clear(void);
// Renders the dirty chunks of the buffer to display
void st7565_render(void);
// Moves cursor to character position indicated by column and line, wraps if out of bounds
// Max column denoted by 'st7565_max_chars()' and max lines by 'st7565_max_lines()' functions
void st7565_set_cursor(uint8_t col, uint8_t line);
// Advances the cursor to the next page, writing ' ' if true
// Wraps to the begining when out of bounds
void st7565_advance_page(bool clearPageRemainder);
// Moves the cursor forward 1 character length
// Advance page if there is not enough room for the next character
// Wraps to the begining when out of bounds
void st7565_advance_char(void);
// Writes a single character to the buffer at current cursor position
// Advances the cursor while writing, inverts the pixels if true
// Main handler that writes character data to the display buffer
void st7565_write_char(const char data, bool invert);
// Writes a string to the buffer at current cursor position
// Advances the cursor while writing, inverts the pixels if true
void st7565_write(const char *data, bool invert);
// Writes a string to the buffer at current cursor position
// Advances the cursor while writing, inverts the pixels if true
// Advances the cursor to the next page, wiring ' ' to the remainder of the current page
void st7565_write_ln(const char *data, bool invert);
// Pans the buffer to the right (or left by passing true) by moving contents of the buffer
// Useful for moving the screen in preparation for new drawing
void st7565_pan(bool left);
// Returns a pointer to the requested start index in the buffer plus remaining
// buffer length as struct
display_buffer_reader_t st7565_read_raw(uint16_t start_index);
// Writes a string to the buffer at current cursor position
void st7565_write_raw(const char *data, uint16_t size);
// Writes a single byte into the buffer at the specified index
void st7565_write_raw_byte(const char data, uint16_t index);
// Sets a specific pixel on or off
// Coordinates start at top-left and go right and down for positive x and y
void st7565_write_pixel(uint8_t x, uint8_t y, bool on);
// Writes a PROGMEM string to the buffer at current cursor position
// Advances the cursor while writing, inverts the pixels if true
// Remapped to call 'void st7565_write(const char *data, bool invert);' on ARM
void st7565_write_P(const char *data, bool invert);
// Writes a PROGMEM string to the buffer at current cursor position
// Advances the cursor while writing, inverts the pixels if true
// Advances the cursor to the next page, wiring ' ' to the remainder of the current page
// Remapped to call 'void st7565_write_ln(const char *data, bool invert);' on ARM
void st7565_write_ln_P(const char *data, bool invert);
// Writes a PROGMEM string to the buffer at current cursor position
void st7565_write_raw_P(const char *data, uint16_t size);
// Can be used to manually turn on the screen if it is off
// Returns true if the screen was on or turns on
bool st7565_on(void);
// Called when st7565_on() turns on the screen, weak function overridable by the user
// Not called if the screen is already on
void st7565_on_user(void);
// Can be used to manually turn off the screen if it is on
// Returns true if the screen was off or turns off
bool st7565_off(void);
// Called when st7565_off() turns off the screen, weak function overridable by the user
// Not called if the screen is already off
void st7565_off_user(void);
// Returns true if the screen is currently on, false if it is
// not
bool st7565_is_on(void);
// Basically it's st7565_render, but with timeout management and st7565_task_user calling!
void st7565_task(void);
// Called at the start of st7565_task, weak function overridable by the user
void st7565_task_user(void);
// Inverts the display
// Returns true if the screen was or is inverted
bool st7565_invert(bool invert);
// Returns the maximum number of characters that will fit on a line
uint8_t st7565_max_chars(void);
// Returns the maximum number of lines that will fit on the display
uint8_t st7565_max_lines(void);
```

View File

@@ -128,3 +128,18 @@ As defined in `keymap_steno.h`.
|`STN_RES1`||(GeminiPR only)|
|`STN_RES2`||(GeminiPR only)|
|`STN_PWR`||(GeminiPR only)|
If you do not want to hit two keys with one finger combined keycodes can be used. These are also defined in `keymap_steno.h`, and causes both keys to be reported as pressed or released. To use these keycodes define `STENO_COMBINEDMAP` in your `config.h` file
|Combined key | Key1 | Key 2 |
|---------------|--------|----------|
|STN_S3 | STN_S1 | STN_S2 |
|STN_TKL | STN_TL | STN_KL |
|STN_PWL | STN_PL | STN_WL |
|STN_HRL | STN_HL | STN_RL |
|STN_FRR | STN_FR | STN_RR |
|STN_PBR | STN_PR | STN_BR |
|STN_LGR | STN_LR | STN_GR |
|STN_TSR | STN_TR | STN_SR |
|STN_DZR | STN_DR | STN_ZR |
|STN_AO | STN_A | STN_O |
|STN_EU | STN_E | STN_U |

View File

@@ -50,7 +50,7 @@ The main entry point is `process_tap_dance()`, called from `process_record_quant
This means that you have `TAPPING_TERM` time to tap the key again; you do not have to input all the taps within a single `TAPPING_TERM` timeframe. This allows for longer tap counts, with minimal impact on responsiveness.
Our next stop is `matrix_scan_tap_dance()`. This handles the timeout of tap-dance keys.
Our next stop is `tap_dance_task()`. This handles the timeout of tap-dance keys.
For the sake of flexibility, tap-dance actions can be either a pair of keycodes, or a user function. The latter allows one to handle higher tap counts, or do extra things, like blink the LEDs, fiddle with the backlighting, and so on. This is accomplished by using an union, and some clever macros.

View File

@@ -48,7 +48,7 @@ QMK maintains [a fork of the LUFA DFU bootloader](https://github.com/qmk/lufa/tr
//#define QMK_LED E6
//#define QMK_SPEAKER C6
```
Currently we do not recommend making `QMK_ESC` the same key as the one designated for [Bootmagic Lite](feature_bootmagic.md#bootmagic-lite), as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader.
Currently we do not recommend making `QMK_ESC` the same key as the one designated for [Bootmagic Lite](feature_bootmagic.md), as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader.
The manufacturer and product strings are automatically pulled from `config.h`, with " Bootloader" appended to the product string.
@@ -171,6 +171,52 @@ Flashing sequence:
3. Flash a .hex file
4. Reset the device into application mode (may be done automatically)
### QMK HID
QMK maintains [a fork of the LUFA HID bootloader](https://github.com/qmk/lufa/tree/master/Bootloaders/HID), which uses a USB HID Endpoint for flashing in the way that the PJRC's Teensy Loader flasher and HalfKay bootloader work. Additionally, it performs a simple matrix scan for exiting the bootloader and returning to the application, as well as flashing an LED/making a ticking noise with a speaker when things are happening.
To ensure compatibility with the QMK HID bootloader, make sure this block is present in your `rules.mk`:
```make
# Bootloader selection
BOOTLOADER = qmk-hid
```
To enable the additional features, add the following defines to your `config.h`:
```c
#define QMK_ESC_OUTPUT F1 // COL pin if COL2ROW
#define QMK_ESC_INPUT D5 // ROW pin if COL2ROW
// Optional:
//#define QMK_LED E6
//#define QMK_SPEAKER C6
```
Currently we do not recommend making `QMK_ESC` the same key as the one designated for [Bootmagic Lite](feature_bootmagic.md), as holding it down will cause the MCU to loop back and forth between entering and exiting the bootloader.
The manufacturer and product strings are automatically pulled from `config.h`, with " Bootloader" appended to the product string.
To generate this bootloader, use the `bootloader` target, eg. `make planck/rev4:default:bootloader`. To generate a production-ready .hex file (combining QMK and the bootloader), use the `production` target, eg. `make planck/rev4:default:production`.
Compatible flashers:
* TBD
* Currently, you need to either use the [Python script](https://github.com/qmk/lufa/tree/master/Bootloaders/HID/HostLoaderApp_python), or compile [`hid_bootloader_cli`](https://github.com/qmk/lufa/tree/master/Bootloaders/HID/HostLoaderApp), from the LUFA repo. Homebrew may (will) have support for this directly (via `brew install qmk/qmk/hid_bootloader_cli`).
Flashing sequence:
1. Enter the bootloader using any of the following methods:
* Press the `RESET` keycode
* Press the `RESET` button on the PCB if available
* short RST to GND quickly
2. Wait for the OS to detect the device
3. Flash a .hex file
4. Reset the device into application mode (may be done automatically)
### `make` Targets
* `:qmk-hid`: Checks every 5 seconds until a DFU device is available, and then flashes the firmware.
## STM32/APM32 DFU
All STM32 and APM32 MCUs, except for F103 (see the [STM32duino section](#stm32duino)) come preloaded with a factory bootloader that cannot be modified nor deleted.
@@ -252,7 +298,7 @@ Flashing sequence:
## tinyuf2
Keyboards may opt into supporting the tinyuf2 bootloader. This is currently only supported on the F411 blackpill.
Keyboards may opt into supporting the tinyuf2 bootloader. This is currently only supported on the F401/F411 blackpill.
The `rules.mk` setting for this bootloader is `tinyuf2`, and can be specified at the keymap or user level.

View File

@@ -48,25 +48,6 @@ Nous recherchons des gens pour créer et maintenir un paquet `qmk` pour plus de
* Installez en utilisant un virtualenv
* Expliquez à l'utilisateur de définir la variable d'environnement `QMK_Home` pour "check out" les sources du firmware à un autre endroit que `~/qmk_firmware`.
# CLI locale
Si vous ne voulez pas utiliser la CLI globale, il y a une CLI locale empaquetée avec `qmk_firmware`. Vous pouvez le trouver dans `qmk_firmware/bin/qmk`. Vous pouvez lancer la commande `qmk` depuis n'importe quel répertoire et elle fonctionnera toujours sur cette copie de `qmk_firmware`.
**Exemple**:
```
$ ~/qmk_firmware/bin/qmk hello
Ψ Hello, World!
```
## Limitations de la CLI locale
Il y a quelques limitations à la CLI locale comparé à la globale:
* La CLI locale ne supporte pas `qmk setup` ou `qmk clone`
* La CLI locale n'opère pas sur le même arbre `qmk_firmware`, même si vous avez plusieurs dépôts clonés.
* La CLI locale ne s'exécute pas dans un virtualenv, donc il y a des risques que des dépendances seront en conflit
# Les commandes CLI
## `qmk compile`
@@ -85,14 +66,14 @@ qmk compile <configuratorExport.json>
qmk compile -kb <keyboard_name> -km <keymap_name>
```
## `qmk cformat`
## `qmk format-c`
Cette commande formatte le code C en utilisant clang-format. Lancez-la sans arguments pour formatter tout le code core, ou passez les noms de fichiers à la ligne de commande pour la lancer sur des fichiers spécifiques.
**Utilisation**:
```
qmk cformat [file1] [file2] [...] [fileN]
qmk format-c [file1] [file2] [...] [fileN]
```
## `qmk config`
@@ -125,14 +106,14 @@ Cette commande crée une nouvelle keymap basée sur une keymap par défaut d'un
qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
```
## `qmk pyformat`
## `qmk format-py`
Cette commande formate le code python dans `qmk_firmware`.
**Utilisation**:
```
qmk pyformat
qmk format-py
```
## `qmk pytest`

View File

@@ -24,7 +24,7 @@ The "easy" way to flash the firmware is using a tool from your host OS:
If you want to program via the command line you can uncomment the ['modifyvm'] lines in the Vagrantfile to enable the USB passthrough into Linux and then program using the command line tools like dfu-util/dfu-programmer or you can install the Teensy CLI version.
## Vagrantfile Overview
The development environment is configured to run the QMK Docker image, `qmkfm/base_container`. This not only ensures predictability between systems, it also mirrors the CI environment.
The development environment is configured to run the QMK Docker image, `qmkfm/qmk_cli`. This not only ensures predictability between systems, it also mirrors the CI environment.
## FAQ

View File

@@ -6,26 +6,28 @@ If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_
## Adding Your AVR Keyboard to QMK
QMK has a number of features to simplify working with AVR keyboards. For most keyboards you don't have to write a single line of code. To get started, run the `util/new_keyboard.sh` script:
QMK has a number of features to simplify working with AVR keyboards. For most keyboards you don't have to write a single line of code. To get started, run `qmk new-keyboard`:
```
$ ./util/new_keyboard.sh
Generating a new QMK keyboard directory
$ qmk new-keyboard
Ψ Generating a new QMK keyboard directory
Keyboard Name: mycoolkb
Keyboard Type [avr]:
Your Name [John Smith]:
Keyboard Name: mycoolkeeb
Keyboard Type:
1. avr
2. ps2avrgb
Please enter your choice: [1]
Your Name: [John Smith]
Ψ Copying base template files...
Ψ Copying avr template files...
Ψ Renaming keyboard.[ch] to mycoolkeeb.[ch]...
Ψ Replacing %YEAR% with 2021...
Ψ Replacing %KEYBOARD% with mycoolkeeb...
Ψ Replacing %YOUR_NAME% with John Smith...
Copying base template files... done
Copying avr template files... done
Renaming keyboard files... done
Replacing %KEYBOARD% with mycoolkb... done
Replacing %YOUR_NAME% with John Smith... done
Created a new keyboard called mycoolkb.
To start working on things, cd into keyboards/mycoolkb,
or open the directory in your favourite text editor.
Ψ Created a new keyboard called mycoolkeeb.
Ψ To start working on things, `cd` into keyboards/mycoolkeeb,
Ψ or open the directory in your preferred text editor.
```
This will create all the files needed to support your new keyboard, and populate the settings with default values. Now you just need to customize it for your keyboard.

View File

@@ -144,10 +144,38 @@ The `rules.mk` file can also be placed in a sub-folder, and its reading order is
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/rules.mk`
* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
* `users/a_user_folder/rules.mk`
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/post_rules.mk`
* `keyboards/top_folder/sub_1/sub_2/sub_3/post_rules.mk`
* `keyboards/top_folder/sub_1/sub_2/post_rules.mk`
* `keyboards/top_folder/sub_1/post_rules.mk`
* `keyboards/top_folder/post_rules.mk`
* `common_features.mk`
Many of the settings written in the `rules.mk` file are interpreted by `common_features.mk`, which sets the necessary source files and compiler options.
The `post_rules.mk` file can interpret `features` of a keyboard-level before `common_features.mk`. For example, when your designed keyboard has the option to implement backlighting or underglow using rgblight.c, writing the following in the `post_rules.mk` makes it easier for the user to configure the `rules.mk`.
* `keyboards/top_folder/keymaps/a_keymap/rules.mk`
```makefile
# Please set the following according to the selection of the hardware implementation option.
RGBLED_OPTION_TYPE = backlight ## none, backlight or underglow
```
* `keyboards/top_folder/post_rules.mk`
```makefile
ifeq ($(filter $(strip $(RGBLED_OPTION_TYPE))x, nonex backlightx underglowx x),)
$(error unknown RGBLED_OPTION_TYPE value "$(RGBLED_OPTION_TYPE)")
endif
ifeq ($(strip $(RGBLED_OPTION_TYPE)),backlight)
RGBLIGHT_ENABLE = yes
OPT_DEFS += -DRGBLED_NUM=30
endif
ifeq ($(strip $(RGBLED_OPTION_TYPE)),underglow)
RGBLIGHT_ENABLE = yes
OPT_DEFS += -DRGBLED_NUM=6
endif
```
?> See `build_keyboard.mk` and `common_features.mk` for more details.
### `<keyboard_name.c>`
@@ -189,9 +217,9 @@ Hardware files (such as plates, cases, pcb) can be contributed to the [qmk.fm re
Given the amount of functionality that QMK exposes it's very easy to confuse new users. When putting together the default firmware for your keyboard we recommend limiting your enabled features and options to the minimal set needed to support your hardware. Recommendations for specific features follow.
### Bootmagic and Command
### Magic Keycodes and Command
[Bootmagic](feature_bootmagic.md) and [Command](feature_command.md) are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board.
[Magic Keycodes](keycodes_magic.md) and [Command](feature_command.md) are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board.
By far the most common problem new users encounter is accidentally triggering Bootmagic while they're plugging in their keyboard. They're holding the keyboard by the bottom, unknowingly pressing in alt and spacebar, and then they find that these keys have been swapped on them. We recommend leaving this feature disabled by default, but if you do turn it on consider setting `BOOTMAGIC_KEY_SALT` to a key that is hard to press while plugging your keyboard in.

View File

@@ -211,7 +211,7 @@ qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
# 開発者用コマンド
## `qmk cformat`
## `qmk format-c`
このコマンドは clang-format を使って C コードを整形します。
@@ -222,25 +222,25 @@ qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
**指定したファイルに対する使い方**:
```
qmk cformat [file1] [file2] [...] [fileN]
qmk format-c [file1] [file2] [...] [fileN]
```
**全てのコアファイルに対する使い方**:
```
qmk cformat -a
qmk format-c -a
```
**origin/master で変更されたファイルのみに対する使い方**:
```
qmk cformat
qmk format-c
```
**branch_name で変更されたファイルのみに対する使い方**:
```
qmk cformat -b branch_name
qmk format-c -b branch_name
```
## `qmk docs`
@@ -275,14 +275,14 @@ $ qmk kle2json -f kle.txt -f
Ψ Wrote out to info.json
```
## `qmk pyformat`
## `qmk format-py`
このコマンドは `qmk_firmware` 内の python コードを整形します。
**使用法**:
```
qmk pyformat
qmk format-py
```
## `qmk pytest`

View File

@@ -192,7 +192,7 @@ cli.log.info('Reading from %s and writing to %s', cli.args.filename, cli.args.ou
# テスト、リントおよびフォーマット
nose2、flake8 および yapf を使ってコードをテスト、リントおよびフォーマットします。これらのテストを実行するために `pytest``pyformat` サブコマンドを使うことができます。
nose2、flake8 および yapf を使ってコードをテスト、リントおよびフォーマットします。これらのテストを実行するために `pytest``format-py` サブコマンドを使うことができます。
### テストとリント
@@ -200,7 +200,7 @@ nose2、flake8 および yapf を使ってコードをテスト、リントお
### フォーマット
qmk pyformat
qmk format-py
## フォーマットの詳細

View File

@@ -32,10 +32,13 @@ QMK は十分な容量のフラッシュメモリを備えた USB 対応 AVR ま
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
* [STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html)
* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
* [STM32F446](https://www.st.com/en/microcontrollers-microprocessors/stm32f446.html)
* [STM32G431](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x1.html)
* [STM32G474](https://www.st.com/en/microcontrollers-microprocessors/stm32g4x4.html)
* [STM32L412](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
* [STM32L422](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
* [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
* [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)

View File

@@ -16,7 +16,7 @@
一部のキーボードでは、ブートマジックはデフォルトで無効になっています。その場合、`rules.mk` 内で以下のように明示的に有効にする必要があります:
```make
BOOTMAGIC_ENABLE = full
BOOTMAGIC_ENABLE = yes
```
?> `full` の代わりに `yes` が使われていることがあるかもしれませんが、これは問題ありません。ただし、`yes` は非推奨で、理想的には `full` (あるいは`lite`) が使われるべきです。

View File

@@ -88,15 +88,6 @@ voltage +----------------------
## QMK でサポートされるデバウンスアルゴリズム
QMK はデバウンス API を介して複数のデバウンスアルゴリズムをサポートします。
どのデバウンスメソッドが呼ばれるかのロジックは下記のとおりです。```rules.mk``` で設定された様々な定義をチェックします。
```
DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
DEBOUNCE_TYPE?= sym_defer_g
ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
endif
```
### デバウンスの選択
@@ -135,11 +126,3 @@ DEBOUNCE_TYPE = <アルゴリズムの名前>
* デバウンスは、全てのマトリクススキャンの後で発生します。
* MATRIX_ROWS ではなく num_rows を使って、分割キーボードが正しくサポートされるようにします。
* アルゴリズムが他のキーボードにも適用できる可能性がある場合、```quantum/debounce``` に追加することを検討してください。
### 古い名前
次の既存のアルゴリズムの古い名前は引き続きサポートされますが、代わりに新しい名前を使うことを推奨します。
* sym_g - sym_defer_g の古い名前
* eager_pk - sym_eager_pk の古い名前
* sym_pk - sym_defer_pk の古い名前
* eager_pr - sym_eager_pr の古い名前

View File

@@ -14,6 +14,8 @@ DIP スイッチは、以下を `rules.mk` に追加することでサポート
```c
// Connects each switch in the dip switch to the GPIO pin of the MCU
#define DIP_SWITCH_PINS { B14, A15, A10, B9 }
// For split keyboards, you can separately define the right side pins
#define DIP_SWITCH_PINS_RIGHT { ... }
```
あるいは
@@ -28,8 +30,9 @@ DIP スイッチは、以下を `rules.mk` に追加することでサポート
コールバック関数を `<keyboard>.c` に記述することができます:
```c
void dip_switch_update_kb(uint8_t index, bool active) {
dip_switch_update_user(index, active);
bool dip_switch_update_kb(uint8_t index, bool active) {
if !(dip_switch_update_user(index, active)) { return false; }
return true;
}
```
@@ -37,7 +40,7 @@ void dip_switch_update_kb(uint8_t index, bool active) {
あるいは `keymap.c` に記述することもできます:
```c
void dip_switch_update_user(uint8_t index, bool active) {
bool dip_switch_update_user(uint8_t index, bool active) {
switch (index) {
case 0:
if(active) { audio_on(); } else { audio_off(); }
@@ -62,6 +65,7 @@ void dip_switch_update_user(uint8_t index, bool active) {
}
break;
}
return true;
}
```
@@ -69,8 +73,9 @@ void dip_switch_update_user(uint8_t index, bool active) {
```c
void dip_switch_update_mask_kb(uint32_t state) {
dip_switch_update_mask_user(state);
bool dip_switch_update_mask_kb(uint32_t state) {
if (!dip_switch_update_mask_user(state)) { return false; }
return true;
}
```
@@ -78,7 +83,7 @@ void dip_switch_update_mask_kb(uint32_t state) {
あるいは `keymap.c` に記述することもできます:
```c
void dip_switch_update_mask_user(uint32_t state) {
bool dip_switch_update_mask_user(uint32_t state) {
if (state & (1UL<<0) && state & (1UL<<1)) {
layer_on(_ADJUST); // C on esc
} else {
@@ -94,6 +99,7 @@ void dip_switch_update_mask_user(uint32_t state) {
} else {
layer_off(_TEST_B);
}
return true;
}
```

View File

@@ -51,15 +51,18 @@ ENCODER_ENABLE = yes
コールバック関数を `<keyboard>.c` に記述することができます:
```c
void encoder_update_kb(uint8_t index, bool clockwise) {
encoder_update_user(index, clockwise);
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) {
return false;
}
}
```
あるいは `keymap.c` に記述することもできます:
```c
void encoder_update_user(uint8_t index, bool clockwise) {
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) { /* First encoder */
if (clockwise) {
tap_code(KC_PGDN);
@@ -73,6 +76,7 @@ void encoder_update_user(uint8_t index, bool clockwise) {
tap_code(KC_UP);
}
}
return true;
}
```

View File

@@ -52,7 +52,7 @@ I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED
`<keyboard>.c` に全ての LED を列挙する配列を定義します:
const is31_led g_is31_leds[DRIVER_LED_TOTAL] = {
const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
/* これらの位置については IS31 マニュアルを参照してください
* driver
* | LED address
@@ -61,7 +61,7 @@ I2C IS31FL3731 RGB コントローラを使ったアドレス指定可能な LED
....
}
ここで、`Cx_y` は[データシート](https://www.issi.com/WW/pdf/31FL3731.pdf)およびヘッダファイル `drivers/issi/is31fl3731-simple.h` で定義されるマトリックス内の LED の位置です。`driver``config.h` で定義したドライバのインデックス(`0``1``2``3`のいずれか)です。
ここで、`Cx_y` は[データシート](https://www.issi.com/WW/pdf/31FL3731.pdf)およびヘッダファイル `drivers/led/issi/is31fl3731-simple.h` で定義されるマトリックス内の LED の位置です。`driver``config.h` で定義したドライバのインデックス(`0``1``2``3`のいずれか)です。
## キーコード

View File

@@ -59,7 +59,7 @@
このことは、あなたは再びキーをタップするまでの時間として `TAPPING_TERM` の時間を持っていることを意味します。そのため、あなたは1つの `TAPPING_TERM` の時間内に全てのタップを行う必要はありません。これにより、キーの反応への影響を最小限に抑えながら、より長いタップ回数を可能にします。
次は `matrix_scan_tap_dance()` です。この関数はタップダンスキーのタイムアウトを制御します。
次は `tap_dance_task()` です。この関数はタップダンスキーのタイムアウトを制御します。
柔軟性のために、タップダンスは、キーコードの組み合わせにも、ユーザー関数にもなることができます。後者は、より高度なタップ回数の制御や、LED を点滅させたり、バックライトをいじったり、等々の制御を可能にします。これは、1つの共用体と、いくつかの賢いマクロによって成し遂げられています。

View File

@@ -29,7 +29,7 @@ Vagrant 以外に、適切なプロバイダがインストールされ、その
コマンドラインでプログラムしたい場合は、Vagranfile の ['modifyvm'] 行のコメントを解除して Linux への USB パススルーを有効にし、dfu-util/dfu-programmer のようなコマンドラインツールを使ってプログラムすることができます。あるいは Teensy CLI バージョンをインストールすることができます。
## Vagrantfile の概要
開発環境は QMK Docker イメージ、`qmkfm/base_container` を実行するように設定されています。これはシステム間の予測可能性が保証されるだけでなく、CI 環境もミラーされます。
開発環境は QMK Docker イメージ、`qmkfm/qmk_cli` を実行するように設定されています。これはシステム間の予測可能性が保証されるだけでなく、CI 環境もミラーされます。
## FAQ

View File

@@ -12,26 +12,28 @@
## AVR を使用したキーボードを QMK に追加する
QMK には AVR を使ったキーボードでの作業を簡略化するための機能が多数あります。大体のキーボードでは1行もコードを書く必要がありません。まずはじめに、`util/new_keyboard.sh` スクリプトを実行します。
QMK には AVR を使ったキーボードでの作業を簡略化するための機能が多数あります。大体のキーボードでは1行もコードを書く必要がありません。まずはじめに、`qmk new-keyboard` を実行します。
```
$ ./util/new_keyboard.sh
Generating a new QMK keyboard directory
$ qmk new-keyboard
Ψ Generating a new QMK keyboard directory
Keyboard Name: mycoolkb
Keyboard Type [avr]:
Your Name [John Smith]:
Keyboard Name: mycoolkeeb
Keyboard Type:
1. avr
2. ps2avrgb
Please enter your choice: [1]
Your Name: [John Smith]
Ψ Copying base template files...
Ψ Copying avr template files...
Ψ Renaming keyboard.[ch] to mycoolkeeb.[ch]...
Ψ Replacing %YEAR% with 2021...
Ψ Replacing %KEYBOARD% with mycoolkeeb...
Ψ Replacing %YOUR_NAME% with John Smith...
Copying base template files... done
Copying avr template files... done
Renaming keyboard files... done
Replacing %KEYBOARD% with mycoolkb... done
Replacing %YOUR_NAME% with John Smith... done
Created a new keyboard called mycoolkb.
To start working on things, cd into keyboards/mycoolkb,
or open the directory in your favourite text editor.
Ψ Created a new keyboard called mycoolkeeb.
Ψ To start working on things, `cd` into keyboards/mycoolkeeb,
Ψ or open the directory in your preferred text editor.
```
これにより、新しいキーボードをサポートするために必要なすべてのファイルが作成され、デフォルト値で設定が入力されます。あとはあなたのキーボード用にカスタマイズするだけです。

View File

@@ -104,8 +104,6 @@ JSON ファイルをビルドする最も簡単な方法は、[Keyboard Layout E
"tags": {
"form_factor": "numpad"
},
"width": 4,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -20,10 +20,6 @@
* キーボードの製品ページ、[QMK.fm/keyboards](https://qmk.fm/keyboards) のページ、あるいはキーボードに関する情報を説明する他のページの URL。
* `maintainer`
* メンテナの GitHub のユーザ名、あるいはコミュニティが管理するキーボードの場合は `qmk`
* `width`
* キー単位でのキーボードの幅
* `height`
* キー単位でのキーボードの高さ
* `layouts`
* 物理的なレイアウト表現。詳細は以下のセクションを見てください。

View File

@@ -257,42 +257,6 @@ See also: [Backlighting](feature_backlight.md)
|`BL_DEC` |Decrease the backlight level |
|`BL_BRTG`|Toggle backlight breathing |
## Bootmagic :id=bootmagic
See also: [Bootmagic](feature_bootmagic.md)
|Key |Aliases |Description |
|----------------------------------|---------|--------------------------------------------------------------------------|
|`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control |
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control |
|`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI |
|`MAGIC_UNSWAP_LCTL_LGUI` |`LCG_NRM`|Unswap Left Control and GUI |
|`MAGIC_SWAP_RCTL_RGUI` |`RCG_SWP`|Swap Right Control and GUI |
|`MAGIC_UNSWAP_RCTL_RGUI` |`RCG_NRM`|Unswap Right Control and GUI |
|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Control and GUI on both sides |
|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Control and GUI on both sides |
|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Control and GUI swap on both sides |
|`MAGIC_SWAP_LALT_LGUI` |`LAG_SWP`|Swap Left Alt and GUI |
|`MAGIC_UNSWAP_LALT_LGUI` |`LAG_NRM`|Unswap Left Alt and GUI |
|`MAGIC_SWAP_RALT_RGUI` |`RAG_SWP`|Swap Right Alt and GUI |
|`MAGIC_UNSWAP_RALT_RGUI` |`RAG_NRM`|Unswap Right Alt and GUI |
|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides |
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
|`MAGIC_NO_GUI` |`GUI_OFF`|Disable the GUI keys |
|`MAGIC_UNNO_GUI` |`GUI_ON` |Enable the GUI keys |
|`MAGIC_SWAP_GRAVE_ESC` |`GE_SWAP`|Swap <code>&#96;</code> and Escape |
|`MAGIC_UNSWAP_GRAVE_ESC` |`GE_NORM`|Unswap <code>&#96;</code> and Escape |
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` |`BS_SWAP`|Swap `\` and Backspace |
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|`BS_NORM`|Unswap `\` and Backspace |
|`MAGIC_HOST_NKRO` |`NK_ON` |Enable N-key rollover |
|`MAGIC_UNHOST_NKRO` |`NK_OFF` |Disable N-key rollover |
|`MAGIC_TOGGLE_NKRO` |`NK_TOGG`|Toggle N-key rollover |
|`MAGIC_EE_HANDS_LEFT` |`EH_LEFT`|Set the master half of a split keyboard as the left hand (for `EE_HANDS`) |
|`MAGIC_EE_HANDS_RIGHT` |`EH_RGHT`|Set the master half of a split keyboard as the right hand (for `EE_HANDS`)|
## Bluetooth :id=bluetooth
See also: [Bluetooth](feature_bluetooth.md)
@@ -354,6 +318,42 @@ See also: [Leader Key](feature_leader_key.md)
|---------|------------------------|
|`KC_LEAD`|Begins a leader sequence|
## Magic Keycodes :id=magic-keycodes
See also: [Magic Keycodes](keycodes_magic.md)
|Key |Aliases |Description |
|----------------------------------|---------|--------------------------------------------------------------------------|
|`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control |
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control |
|`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI |
|`MAGIC_UNSWAP_LCTL_LGUI` |`LCG_NRM`|Unswap Left Control and GUI |
|`MAGIC_SWAP_RCTL_RGUI` |`RCG_SWP`|Swap Right Control and GUI |
|`MAGIC_UNSWAP_RCTL_RGUI` |`RCG_NRM`|Unswap Right Control and GUI |
|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Control and GUI on both sides |
|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Control and GUI on both sides |
|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Control and GUI swap on both sides |
|`MAGIC_SWAP_LALT_LGUI` |`LAG_SWP`|Swap Left Alt and GUI |
|`MAGIC_UNSWAP_LALT_LGUI` |`LAG_NRM`|Unswap Left Alt and GUI |
|`MAGIC_SWAP_RALT_RGUI` |`RAG_SWP`|Swap Right Alt and GUI |
|`MAGIC_UNSWAP_RALT_RGUI` |`RAG_NRM`|Unswap Right Alt and GUI |
|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides |
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
|`MAGIC_NO_GUI` |`GUI_OFF`|Disable the GUI keys |
|`MAGIC_UNNO_GUI` |`GUI_ON` |Enable the GUI keys |
|`MAGIC_SWAP_GRAVE_ESC` |`GE_SWAP`|Swap <code>&#96;</code> and Escape |
|`MAGIC_UNSWAP_GRAVE_ESC` |`GE_NORM`|Unswap <code>&#96;</code> and Escape |
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` |`BS_SWAP`|Swap `\` and Backspace |
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|`BS_NORM`|Unswap `\` and Backspace |
|`MAGIC_HOST_NKRO` |`NK_ON` |Enable N-key rollover |
|`MAGIC_UNHOST_NKRO` |`NK_OFF` |Disable N-key rollover |
|`MAGIC_TOGGLE_NKRO` |`NK_TOGG`|Toggle N-key rollover |
|`MAGIC_EE_HANDS_LEFT` |`EH_LEFT`|Set the master half of a split keyboard as the left hand (for `EE_HANDS`) |
|`MAGIC_EE_HANDS_RIGHT` |`EH_RGHT`|Set the master half of a split keyboard as the right hand (for `EE_HANDS`)|
## MIDI :id=midi
See also: [MIDI](feature_midi.md)

36
docs/keycodes_magic.md Normal file
View File

@@ -0,0 +1,36 @@
# Magic Keycodes :id=magic-keycodes
**Magic Keycodes** are prefixed with `MAGIC_`, and allow you to access the functionality of the deprecated Bootmagic feature *after* your keyboard has initialized. To use the keycodes, assign them to your keymap as you would any other keycode.
|Key |Aliases |Description |
|----------------------------------|---------|--------------------------------------------------------------------------|
|`MAGIC_SWAP_CONTROL_CAPSLOCK` |`CL_SWAP`|Swap Caps Lock and Left Control |
|`MAGIC_UNSWAP_CONTROL_CAPSLOCK` |`CL_NORM`|Unswap Caps Lock and Left Control |
|`MAGIC_CAPSLOCK_TO_CONTROL` |`CL_CTRL`|Treat Caps Lock as Control |
|`MAGIC_UNCAPSLOCK_TO_CONTROL` |`CL_CAPS`|Stop treating Caps Lock as Control |
|`MAGIC_SWAP_LCTL_LGUI` |`LCG_SWP`|Swap Left Control and GUI |
|`MAGIC_UNSWAP_LCTL_LGUI` |`LCG_NRM`|Unswap Left Control and GUI |
|`MAGIC_SWAP_RCTL_RGUI` |`RCG_SWP`|Swap Right Control and GUI |
|`MAGIC_UNSWAP_RCTL_RGUI` |`RCG_NRM`|Unswap Right Control and GUI |
|`MAGIC_SWAP_CTL_GUI` |`CG_SWAP`|Swap Control and GUI on both sides |
|`MAGIC_UNSWAP_CTL_GUI` |`CG_NORM`|Unswap Control and GUI on both sides |
|`MAGIC_TOGGLE_CTL_GUI` |`CG_TOGG`|Toggle Control and GUI swap on both sides |
|`MAGIC_SWAP_LALT_LGUI` |`LAG_SWP`|Swap Left Alt and GUI |
|`MAGIC_UNSWAP_LALT_LGUI` |`LAG_NRM`|Unswap Left Alt and GUI |
|`MAGIC_SWAP_RALT_RGUI` |`RAG_SWP`|Swap Right Alt and GUI |
|`MAGIC_UNSWAP_RALT_RGUI` |`RAG_NRM`|Unswap Right Alt and GUI |
|`MAGIC_SWAP_ALT_GUI` |`AG_SWAP`|Swap Alt and GUI on both sides |
|`MAGIC_UNSWAP_ALT_GUI` |`AG_NORM`|Unswap Alt and GUI on both sides |
|`MAGIC_TOGGLE_ALT_GUI` |`AG_TOGG`|Toggle Alt and GUI swap on both sides |
|`MAGIC_NO_GUI` |`GUI_OFF`|Disable the GUI keys |
|`MAGIC_UNNO_GUI` |`GUI_ON` |Enable the GUI keys |
|`MAGIC_TOGGLE_GUI` |`GUI_TOG`|Toggles the status of the GUI keys |
|`MAGIC_SWAP_GRAVE_ESC` |`GE_SWAP`|Swap <code>&#96;</code> and Escape |
|`MAGIC_UNSWAP_GRAVE_ESC` |`GE_NORM`|Unswap <code>&#96;</code> and Escape |
|`MAGIC_SWAP_BACKSLASH_BACKSPACE` |`BS_SWAP`|Swap `\` and Backspace |
|`MAGIC_UNSWAP_BACKSLASH_BACKSPACE`|`BS_NORM`|Unswap `\` and Backspace |
|`MAGIC_HOST_NKRO` |`NK_ON` |Enable N-key rollover |
|`MAGIC_UNHOST_NKRO` |`NK_OFF` |Disable N-key rollover |
|`MAGIC_TOGGLE_NKRO` |`NK_TOGG`|Toggle N-key rollover |
|`MAGIC_EE_HANDS_LEFT` |`EH_LEFT`|Set the master half of a split keyboard as the left hand (for `EE_HANDS`) |
|`MAGIC_EE_HANDS_RIGHT` |`EH_RGHT`|Set the master half of a split keyboard as the right hand (for `EE_HANDS`)|

View File

@@ -93,7 +93,7 @@ And to do so, add `reset_keyboard()` to your function or macro, and this will re
## Wiping the EEPROM (Persistent Storage)
If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). To force an EEPROM reset, use the [`EEP_RST` keycode](quantum_keycodes.md) or [Bootmagic](feature_bootmagic.md) functionality. If neither of those are an option, then you can use a custom macro to do so.
If you're having issues with Audio, RGB Underglow, backlighting or keys acting weird, then you can reset the EEPROM (persistent setting storage). To force an EEPROM reset, use the [`EEP_RST` keycode](quantum_keycodes.md) or [Bootmagic Lite](feature_bootmagic.md) functionality. If neither of those are an option, then you can use a custom macro to do so.
To wipe the EEPROM, run `eeconfig_init()` from your function or macro to reset most of the settings to default.

View File

@@ -99,8 +99,6 @@ Use the `keyboard_name` object to set the name of the keyboard. For instruction
"tags": {
"form_factor": "numpad"
},
"width": 4,
"height": 5,
"layouts": {
"LAYOUT": {
"layout": [

View File

@@ -130,7 +130,7 @@ A 1 byte number that is sent as part of a HID report over USB that represents a
## Space Cadet Shift
A special set of shift keys which allow you to type various types of braces by tapping the left or right shift one or more times.
* [Space Cadet Shift Documentation](feature_space_cadet_shift.md)
* [Space Cadet Shift Documentation](feature_space_cadet.md)
## Tap
Pressing and releasing a key. In some situations you will need to distinguish between a key down and a key up event, and Tap always refers to both at once.

View File

@@ -15,10 +15,6 @@ The `info.json` file is a JSON formatted dictionary with the following keys avai
* A URL to the keyboard's product page, [QMK.fm/keyboards](https://qmk.fm/keyboards) page, or other page describing information about the keyboard.
* `maintainer`
* GitHub username of the maintainer, or `qmk` for community maintained boards
* `width`
* Width of the board in Key Units
* `height`
* Height of the board in Key Units
* `debounce`
* How many milliseconds (ms) to wait for debounce to happen. (Default: 5)
* `diode_direction`

View File

@@ -63,7 +63,7 @@ Configure the hardware via your config.h:
// 5: about 19200 baud
#define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20
```
You must also enable the ChibiOS `SERIAL` feature:
@@ -73,7 +73,7 @@ You must also enable the ChibiOS `SERIAL` feature:
Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral.
### USART Full-duplex
Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. USART Full-Duplex requires two conductors **without** pull-up resistors instead of one conductor with a pull-up resistor unlike the Half-duplex driver, but it is more efficent as it uses DMA transfers, which can result in even faster transmission speeds.
Targeting STM32 boards where communication is offloaded to a USART hardware device. The advantage over bitbang is that this provides fast and accurate timings. USART Full-Duplex requires two conductors **without** pull-up resistors instead of one conductor with a pull-up resistor unlike the Half-duplex driver. Due to its internal design it is more efficent, which can result in even faster transmission speeds.
#### Pin configuration
@@ -86,12 +86,13 @@ Please note that `TX` of the master half has to be connected with the `RX` pin o
To use the driver, add this to your rules.mk:
```make
SERIAL_DRIVER = usart_duplex
SERIAL_DRIVER = usart
```
Next configure the hardware via your config.h:
```c
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
#define SERIAL_USART_TX_PIN B6 // USART TX pin
#define SERIAL_USART_RX_PIN B7 // USART RX pin
//#define USART1_REMAP // Remap USART TX and RX pins on STM32F103 MCUs, see table below.
@@ -104,17 +105,17 @@ Next configure the hardware via your config.h:
// 3: 57600 baud
// 4: 38400 baud
// 5: 19200 baud
#define SERIAL_USART_DRIVER UARTD1 // USART driver of TX and RX pin. default: UARTD1
#define SERIAL_USART_DRIVER SD1 // USART driver of TX and RX pin. default: SD1
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_RX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
#define SERIAL_USART_TIMEOUT 20 // USART driver timeout. default 20
```
You must also enable the ChibiOS `UART` with blocking api feature:
* In your board's halconf.h: `#define HAL_USE_UART TRUE` and `#define UART_USE_WAIT TRUE`
* In your board's mcuconf.h: `#define STM32_UART_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU)
You must also enable the ChibiOS `SERIAL` feature:
* In your board's halconf.h: `#define HAL_USE_SERIAL TRUE`
* In your board's mcuconf.h: `#define STM32_SERIAL_USE_USARTn TRUE` (where 'n' matches the peripheral number of your selected USART on the MCU)
Do note that the configuration required is for the `UART` peripheral, not the `SERIAL` peripheral.
Do note that the configuration required is for the `SERIAL` peripheral, not the `UART` peripheral.
#### Pins for USART Peripherals with Alternate Functions for selected STM32 MCUs

View File

@@ -40,6 +40,7 @@ These topics start to dig into some of the features that QMK supports. You don't
* [Tap Dance](feature_tap_dance.md)
* [Combos](feature_combo.md)
* [Userspace](feature_userspace.md)
* [Key Overrides](feature_key_overrides.md)
# Advanced Topics
@@ -53,7 +54,7 @@ Everything below here requires a lot of foundational knowledge. Besides being ab
* **Advanced Features**
* [Unicode](feature_unicode.md)
* [API](api_overview.md)
* [Bootmagic](feature_bootmagic.md)
* [Bootmagic Lite](feature_bootmagic.md)
* **Hardware**
* [How Keyboards Work](how_keyboards_work.md)
* [How A Keyboard Matrix Works](how_a_matrix_works.md)

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