Compare commits

...

1007 Commits

Author SHA1 Message Date
Joel Challis
047ef3cd12 VUSB - Use correct endpoint poll for VIA (#16691) 2022-03-19 17:40:47 +00:00
leviport
3502bbbd16 Fix typo in docs/ref_functions.md (#16690) 2022-03-19 16:37:35 +00:00
Ryan
e354cbe782 device_ver -> device_version for some more boards (#16685) 2022-03-19 11:52:40 +00:00
stanrc85
06b6729b16 [Keymap] Update some code and keyboard rules (#16680) 2022-03-18 23:52:33 -07:00
Drashna Jaelre
61c644f6d0 [Keyboard] Update Tractyl Manuform config files (#16684) 2022-03-18 11:49:22 -07:00
Florian
773242503c annepro2: Add more LED functionalities to default-layer-indicators (#16676) 2022-03-18 17:24:43 +00:00
Joel Challis
ed773ab73c Relocate CLI git interactions (#16682) 2022-03-18 16:02:24 +00:00
Joel Challis
e5823b5650 [CLI] Add common util for dumping generated content (#16674) 2022-03-18 01:09:29 +00:00
Joel Challis
417f089115 Print out generated files during build (#16672) 2022-03-17 10:45:06 +11:00
Jay Greco
193dd01f4e [Keyboard] Add nullbits TIDBIT (#15182) 2022-03-16 08:34:16 -07:00
Ryan
d5d2a01db2 gboards/butterstick: move steno rules config to keymap level (#16666) 2022-03-16 04:08:52 +00:00
Ryan
8c5779f768 Fix m3n3van and minim keyboard names in keymap JSON (#16665) 2022-03-16 03:57:47 +00:00
Yakbats
a867cfc26d Update the AL1 Vender ID (#16660)
* Add via to AL1

* Updated number of rows and columns, and applied suggestions from code review

* Update Vender ID

Change the Vender ID for Triangle Lab to comply with the via PR checklist.
2022-03-16 03:14:31 +00:00
AnthonyNguyen168
fded67f1a9 [MB-65S] Change layout to follow change request from OEM (#16663) 2022-03-16 03:13:14 +00:00
an_achronism
f6f4d85aa5 yugo_m enhancement: include all available key positions (#16216)
* yugo_m enhancement to include all available key positions in matrix
2022-03-15 17:06:27 -07:00
Joel Challis
8bffc61959 Ensure dependent CI workflows run (#16662) 2022-03-15 23:27:55 +00:00
Moritz
77aafd8056 [Keyboard] Add Dolice keyboard (#16186) 2022-03-15 15:58:16 -07:00
Tom Konidas
a808c29726 [Keymap] Planck Keymap: tomkonidas (#15869) 2022-03-15 15:48:13 -07:00
Ryan
764dc18a81 Remove NO_ACTION_MACRO and NO_ACTION_FUNCTION from keyboard config.h (#16655) 2022-03-15 13:56:58 +00:00
Joel Challis
46e85ded47 Add merge workflow for XAP branch (#16652)
* Add merge workflow for XAP branch

* uncomment
2022-03-15 12:49:23 +00:00
jack
e9bf95e0f2 [Keyboard] Fix westm/westm68 compliation errors (#16657) 2022-03-15 02:35:17 -07:00
jpuerto96
e94c2df3f3 [Keyboard] Io mini1800 (#16115)
* First commit

* first commit

* 2x3u layout functional

* 625u layout

* rotary encoder

* Modifications to keymaps

* Remove ingrained from io_mini branch

* Update readme

* Update info.json

* change hardware availability

* Change rules.mk wording to match other PR

* Update keyboards/io_mini1800/rules.mk

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

* Update keyboards/io_mini1800/keymaps/2x3u/keymap.c

* Update keyboards/io_mini1800/io_mini1800.c

* Update keyboards/io_mini1800/keymaps/2x3u/readme.md

* Update keyboards/io_mini1800/readme.md
2022-03-15 01:35:11 -07:00
Albert Y
9aaf4a5a9b Add split keyboard example for Bootmagic Lite (#16349)
* Add split keyboard example for bootmagic lite

* Add handedness link

* Edit sentence structure

* Apply suggested language correction
2022-03-15 01:31:17 -07:00
PaperCraneKeyboards
92a9e7c50b [Keyboard] Adding Gerald65 (#15872)
* Gerald65 new keyboard files

* removing initial population of pck

* Initial Gerald65 Keyboard files

* Changed diode direction

* added fn layer, added picture to readme

* directed mo keycode to fn layer

* Changes to vendor id and bootloader instructions

* Changed to direct image reference

* Update keyboards/papercranekeyboards/gerald65/readme.md

* Remove no longer used features
2022-03-15 01:29:35 -07:00
thompson-ele
87bb1a3890 [Keyboard] Add Bacca70 keyboard (#16626)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-03-15 00:28:21 -07:00
jack
1ef4e305e3 Fix evancookaudio/sleepingdinosaur (#16654) 2022-03-15 15:02:49 +11:00
jack
36ddb567cc [Keyboard] Fix mechlovin/kay65 (#16653) 2022-03-14 21:00:57 -07:00
Pear
5e5047f071 [Keyboard westm68 rev1 and fine tune westm boards (#16528)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-14 20:55:33 -07:00
evanmcook
04826d1aa1 [Keyboard] evancookaudio sleepingdinosaur v2 (#16625) 2022-03-14 18:56:27 -07:00
mechlovin
7fde309799 [Keyboard] Add Kay65 PCB by Team Mechlovin' (#15565)
* add kay65 PCB

* update

* update

* Update readme.md

* Update keyboards/mechlovin/kay65/rev1/rules.mk

* Update keyboards/mechlovin/olly/jf/rules.mk

* Update keyboards/mechlovin/kay65/rev1/rules.mk

* Update keyboards/mechlovin/kay65/rev1/info.json

* Update keymap.c

* update

* Update keyboards/mechlovin/kay65/rev1/rev1.h

* Update keyboards/mechlovin/kay65/rev1/info.json

* Update keyboards/mechlovin/kay65/rev1/info.json

* Update keyboards/mechlovin/kay65/rev1/rules.mk

* Update keymap.c

* Update readme.md

* Update keyboards/mechlovin/olly/jf/readme.md

* Update keyboards/mechlovin/kay65/rev1/config.h
2022-03-14 17:23:57 -07:00
ethsol
a939adb55c Sentence correction (#16650) 2022-03-14 22:20:50 +00:00
Yakbats
6c11579876 [Keyboard] Add via keymap to AL1 (#16499) 2022-03-14 15:05:39 -07:00
Danny
a12d58c6c9 [Keyboard] Add BAMFK-1 (#16409)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-14 11:08:10 -07:00
Ryan
6a6a333c75 Disable RGB matrix pixel animations for some boards (#16643)
* idobao/id87/v2: disable RGB matrix pixel animations

* Same for two more boards
2022-03-14 13:58:05 +00:00
Ryan
5fb269b2b4 keebio/iris: Add ifdefs to encoder callbacks (#16642) 2022-03-14 13:57:44 +00:00
Joel Challis
c17323b0f5 bolsa/damapad - Fix missing layout macro (#16639) 2022-03-13 18:56:52 -07:00
jack
8d90cf36f1 Fix 40percentclub USB descriptors (#16638) 2022-03-14 12:04:11 +11:00
Ryan
dde4120a1e ISP flashing guide: add instructions for flashing STM32duino bootloader (#16568) 2022-03-13 23:55:47 +00:00
Ryan
c0f4179117 Move keyboard USB IDs and strings to data driven: 0-9 (#16481) 2022-03-13 23:54:49 +00:00
Ryan
df3770551a USB-USB converter cleanup (#16618) 2022-03-13 23:46:13 +00:00
Spencer Peterson
8fe3864fe7 [Keyboard] Add "Uno" rev2 (#14071)
* [Keyboard] Add "Uno" rev2

Adds support for the second revision of Uno, courtesy of @Snipeye.

* Update keyboards/uno/rev2/rules.mk

* Update keyboards/uno/rev1/rules.mk

* Update keyboards/uno/uno.h

* Update keyboards/uno/rev2/rules.mk

* Update keyboards/uno/rev1/rules.mk

* Update keyboards/uno/keymaps/demo/keymap.c

* Update keyboards/uno/keymaps/demo/keymap.c

* Update keyboards/uno/keymaps/demo/keymap.c

* Update keyboards/uno/rev2/rules.mk

* Update keyboards/uno/rev1/rules.mk

* Align rules.mk comments

* Update keyboards/uno/info.json

* Update keyboards/uno/rev1/config.h

* Update keyboards/uno/rev2/config.h

* Update keyboards/uno/rev2/config.h

* Update keyboards/uno/rev2/config.h

* Update keyboards/uno/rev1/config.h
2022-03-13 14:49:47 -07:00
jels
109c60feeb [Keyboard] Add support for Jels60 (#16605)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-03-13 10:30:55 -07:00
Takeshi ISHII
b906af0073 helix:edvorakjp keymap change to use split_common (#16532) 2022-03-13 13:56:56 +00:00
jpe230
1f63dbfb8e [Keymap] Update personal crkbd keymap (#16624) 2022-03-13 03:09:36 -07:00
jack
08794fef4e [Keyboard] add missing endif in glitch keyboard (#16629) 2022-03-13 03:08:33 -07:00
Matthew Dias
dccb5711c7 [Keyboard] Add damapad (#16443)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-12 23:37:22 -08:00
Matthew Dias
20424fd37f [Keyboard] Add Glitch (#16444)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-12 23:36:12 -08:00
Thomas Kriechbaumer
86b123141b docs: fix code sample (#16623) 2022-03-12 12:42:25 +00:00
James Young
3f79708095 Acheron Elongate Delta: add info.json (#16615) 2022-03-11 13:26:15 +00:00
James Young
74b24e410b DZ64RGB: add info.json (#16616) 2022-03-11 13:25:31 +00:00
mechlovin
003231aaf2 [Keyboard] Add Mechlovin Infinity87.5 PCB (#15163)
* add infinity87.5

* Update readme.md

* Update keyboards/mechlovin/infinity875/config.h

* Update keyboards/mechlovin/infinity875/info.json

* Update keyboards/mechlovin/infinity875/rules.mk

* Update keyboards/mechlovin/infinity875/rules.mk

* Update keyboards/mechlovin/infinity875/config.h

* Enable RGB matrix effect

* update keymap default

* undef RGB matrix effect

* Update keyboards/mechlovin/infinity875/rules.mk

* Update keyboards/mechlovin/infinity875/rules.mk

* Update keyboards/mechlovin/infinity875/rules.mk

* Update keyboards/mechlovin/infinity875/readme.md

* Update keyboards/mechlovin/infinity875/infinity875.h

* Update keyboards/mechlovin/infinity875/infinity875.h

* Update keyboards/mechlovin/infinity875/info.json

* Update keyboards/mechlovin/infinity875/infinity875.h

* Update keyboards/mechlovin/infinity875/infinity875.h

* Update keyboards/mechlovin/infinity875/info.json

* Update keyboards/mechlovin/infinity875/info.json

* Update keyboards/mechlovin/infinity875/info.json
2022-03-10 21:02:40 -08:00
Rocco Meli
ee71362f99 Personal user space and CRKBD R2G keymap (#15888)
* r2g folder groundwork

* Default mb keymap featuring mb logos

* Migrate Oled to keyboard folder

* Move rules configs to support config better

* update readmes

* Liscnece update

* Update config and fix issues caused by redef errs

* funciton name adjusts, define specific rgb modes

* move default oled font to postconfig

* update oled in line with develop merge

* fix return value

* Add some default rgb matrix defines

* del ugfx

* remove #include <stdio.h>

* create personal keymap for r2g

* reduce firmware size

* change keymap to follow physical layout

* remove RGBlight config lines to make both sides work (@Dasky on MechboardsUK Discord)

* strip down configuration, similar to crkbd/r2g:mb_via

* remove wrong oled code overwriting the r2g one

* broken code with RGB matrix (briks right side)

* remove high max brightness limit

* caps lock tap dance and RGB indicator for active caps lock

* fix caps lock led on right side

* add test macro

* remove latex macro which is too slow

* move caps lock tap dance to RALT and add space cadet shift

* switch CTL with ALT in first layer

* add tap dance for ESC/DEL

* space cadet tap dance with caps lock; shift works by needs a short pause

* add space cadet tap dance with caps lock on the right; shift works by needs a short pause and does not hold

* make more keys transparent

* enable auto shift and use logo on both oleds

* add user oled logo, slows down linking considerably

* oled name

* add arrow keys in usual configuration and add linear configuration to symbol layer

* add unicoede support

* add accents

* update to latest version

* add colemak dh layer

* report auto shift timeout

* define layer name shorcuts correctly

* disable VIA to enable more layers

* enable NKRO

* move some rules and unicode to user space

* move oled and tap dances to user space

* move tap dances fully out of keymap

* expand unicode map

* fix unicode code

* revert changes to r2g, make it equal to merged code

* revert changes to r2g, make it equal to merged code

* clang-format userspace

* clang-format config file

* Update keyboards/crkbd/keymaps/rmeli/keymap.c

* replace define with enum

* add licenses
2022-03-10 15:27:37 -08:00
Erovia
b75f6691a1 CLI: Fix 'cd' subcommand on Windows (#16610)
The 'cd' subcommand was failing as the current shell's Windows path was
mangled while milc processed it.
Using 'subprocess' directly avoids this issue and an extra layer of
subshell.
2022-03-10 21:33:41 +00:00
WJH
6c40b6856b [Docs] Include ASCII diagram to explain tap-hold modes (#15873)
* [Docs] Include ASCII diagram to explain tap-hold modes

* [Docs]: add examples for Default mode for Tap Hold

* [Docs] fix some wrong explanation in tap_hold.md
2022-03-10 12:48:33 -08:00
Christian Hofstede
b33fdc299c add chofstede keymap for gmmk/pro/iso (#16045)
Add new keymap for GMMK with some additional mappings and led indicator for caps lock

* add chofstede keymap

* fix formatting

* fix formatting

* add readme

* Update keyboards/gmmk/pro/iso/keymaps/chofstede/keymap.c
2022-03-10 12:41:30 -08:00
Liashenko Volodymyr
fc7a41fdce [Keyboard] lily58/glow_enc (#16101)
Add rgb-light and encoder for lily58 mod

* add support for lily58 encoders (one per size) and rgb-light.

The pcb and details here https://github.com/orvisevans/Lily58-Glow-Enc

* add support for lily58 encoders (one per size) and rgb-light.

The pcb and details here https://github.com/orvisevans/Lily58-Glow-Enc

* Update keyboards/lily58/glowEnc/config.h

* add GPL License to growEnc.h

* rename folder according to requirement to lower case
2022-03-10 12:21:55 -08:00
Era James
98da119293 era1112 keymap for preonic (#16064)
Added the keymap I have been using as a daily driver for the last month.

* good firmware 26 jan, best clicky mode stability so far

* modified to reflect master branch coding style

* further modified to reflect master branch coding style

* improving clicky stability, tuned down clicky delay duration

* changed name of keymap folder to use lowercase letters
2022-03-10 12:07:37 -08:00
kopibeng
61a8a60dfb [Keyboard] Add MNK65 (#16400)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-03-10 11:10:34 -08:00
makenova
265b96a12c [Keyboard] Add omega4 (#16464) 2022-03-10 11:10:05 -08:00
Ryan
bd70f5261c Remove matrix_key_count() (#16603)
* Remove `matrix_key_count()`

* Remove `matrix_bitpop()`
2022-03-10 12:18:07 +00:00
Hao Xiang Liew
dc8db6551d [KEYBOARD] keyboardio/atreus: VIA support (#16604) 2022-03-09 23:35:54 -08:00
Takeshi Nishio
9d0153dc70 [keyboard]Add v1 to jones keyboard (#14405)
* Change for latest information.

* Update from v03_1 to v1.

* Add v1 files.

* Remove finished todo comment.

* Fix COLUMN number, from "a" to "9".

* Formatting

* Update keyboards/jones/v1/rules.mk

* Add license header.

https://github.com/qmk/qmk_firmware/pull/14405#discussion_r710752035

* Implement better way to handle keycode for encoder.

Use "action_exec" instead of "tap_code16"
https://github.com/qmk/qmk_firmware/pull/14405#discussion_r710752924

* Move External EEPROM config  to keyboard level

* Move the lest of DYNAMIC_KEYMAP config  to keyboard level

https://github.com/qmk/qmk_firmware/pull/14405#discussion_r711668094

* Move the rest of DYNAMIC_KEYMAP config  to keyboard level

https://github.com/qmk/qmk_firmware/pull/14405#discussion_r711668094

* Update keyboards/jones/v1/rules.mk

* Update keyboards/jones/v1/rules.mk

* Update keyboards/jones/v1/rules.mk
2022-03-09 20:14:53 -08:00
maherma-adg
8bcb77cb9a Personalizacion del teclado de AdG (#15738)
* Personalizacion del teclado de AdG

Update layout description

fix symbol layer

* fix doc Colemak

* explicitly define enabled animations

* Change keymap folder name
2022-03-09 19:56:42 -08:00
jack
708b3f9192 [Keyboard] Size reduction for kbdfans/kbd67/mkiirgb_iso (#16601) 2022-03-09 19:46:30 -08:00
Hansol Kim
caeb213400 Add macOS-friendly keymap for GMMK Pro (ANSI) (#14333)
* Add macOS keymap for GMMK Pro (ANSI)

* Change macOS keymap directory name to lowercase

* Add toggleable layer with alternative keymap for function row

* Update readme
2022-03-09 14:04:41 -08:00
Tony Grosinger
db16271a72 Add Gergoplex keymap for tgrosinger (#15148)
* Add Gergoplex keymap for tgrosinger

* Add improved shortcuts for PopOS

* Add license
2022-03-09 13:47:57 -08:00
jpe230
dc67fd9b87 Various improvements for the AnnePro2 (#16579) 2022-03-09 16:49:29 +11:00
jpe230
6ab5a7d048 [Keymap] Personal keymap for crkbd (#16546) 2022-03-08 17:35:33 -08:00
Salicylic-acid3
c5c5d37e08 [Keymap] Added RGB_Matrix effect mode for naked48/j73gl (#16578) 2022-03-08 17:34:37 -08:00
Joel Challis
ed169a6b30 Correct order of takashicompany/dogtag info.json (#16591) 2022-03-09 01:24:59 +00:00
jack
5244b13173 Fix yandrstudio/zhou65 (#16589)
* initial cleanup and hotfix for rgb....

* remove /f401
2022-03-09 00:37:40 +00:00
Danny
022e1fdac8 Add Big Switch Seat (#16524)
* Add Big Switch Seat

* Update keyboards/keebio/bigswitchseat/rules.mk

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

* Update keyboards/keebio/bigswitchseat/rules.mk

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

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-08 22:08:02 +00:00
Ryan
3347b63d83 handwired/misterdeck refactor (#16572)
* handwired/misterdeck refactor

* Forgot to remove this
2022-03-08 22:07:02 +00:00
Jason Barnachea
d38696a493 [Keyboard] Add Rama Works M4-A (#16570)
* Initial commit

Add Rama Works M4-A keyboard.

* Update default keymap.c

* Update keyboards/machine_industries/m4_a/config.h

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-08 21:24:06 +00:00
Ryan
b593cfccbd qmk info: Nicer rendering of big-ass enter (#16541)
* `qmk info`: Nicer rendering of big-ass enter

* Formatting...
2022-03-08 20:45:47 +00:00
drewpyun
65eb0f939f [keymap] Add via support for Iskar (#16575)
* iskar initial commit

* testing

* added info.json to iskar

* Updated read.me

* updated info.json removed unnessary keymap folders, fixed rules.mk, added second layer to default layout, added vendor/product id, tested and compiled

* Update readme.md

* Update readme.md

* updated info.json, formatted files according to PR checklist

* Update keyboards/drewkeys/iskar/rules.mk

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

* Update keyboards/drewkeys/iskar/readme.md

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

* added keymaps onto iskar.h that was referenced in info.json

* changed filename to lowercase to match guidelines

* initial commit of VIA files

* edited via keymap

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-08 18:56:48 +00:00
JX
40d6766576 [Keyboard] Add Y&R Studio zhou65 keyboard (#14192)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-08 09:03:05 -08:00
Callum Hart
d92994be71 [Keyboard] Add Novus 60% keyboard (#16473)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-08 08:47:57 -08:00
jack
fe8b7619d3 [Keyboard] Fix late9/rev1 (#16576) 2022-03-07 21:48:56 -08:00
Ryan
89a515913f Oddball: set default pointing device driver (#16574) 2022-03-08 16:30:37 +11:00
drewpyun
403536986d [Keyboard] Add Iskar (#16562)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-07 20:23:53 -08:00
Matthew Dias
4d2ae22690 [Keyboard] Add mini winni (#15341)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-07 20:23:06 -08:00
Ryan Baker
996880a1da [Keyboard] Add rb69 (#16526) 2022-03-07 20:19:45 -08:00
yiancar
4493f31f80 Add HS version of Nebula65b due to different number of per-key-RGB (#16514)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2022-03-07 20:18:41 -08:00
ZiTe
0880850b15 [Bug] Rename has_mouse_report_changed parameters (#16417)
Fixes compilation issues when bluetooth is enabled, due to issues 
with cpp used by bluetooth code. 

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-03-07 20:16:35 -08:00
Albert Y
8f70adc0b6 [Keyboard] Update encoder code for macro3 (#16005) 2022-03-07 20:09:54 -08:00
rookiebwoy
87c2f97def [Keyboard] Add LATE-9 keyboard (#13966) 2022-03-07 19:59:50 -08:00
peepeetee
eb35f58a6e [Keyboard] Idobao ID87 v2 (#15875)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-03-07 19:45:54 -08:00
Sergey Vlasov
249bc3a5c5 [Keyboard] Add Winry315 keyboard (#15894) 2022-03-07 19:45:30 -08:00
Beanaccle
86966fce69 [Keyboard] Add KB58 (#15896)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-03-07 19:40:46 -08:00
TerryMathews
ec3df85f08 [Keyboard] TKC Portico68 v2 (#15916)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-07 19:39:33 -08:00
Uthol
b2fdb072e5 [Keyboard] Uthol (#16393)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-07 19:01:47 -08:00
Matthew Dias
869ede8e4a [Keyboard] Add parallel 65 (#16445)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-07 19:00:35 -08:00
peepeetee
8014fb14b6 Fix in-page links in reference_info_json.md (#16487) 2022-03-07 18:50:03 -08:00
Nabos
8e888794fa [Keymap] Add nabos keymap to dactyl_manuform (5x6) (#16547)
Co-authored-by: Nicolas Ballet <balletn@igbmc.fr>
2022-03-07 18:46:54 -08:00
Salicylic-acid3
c84d361e95 [Keyboard] Change maximum LED brightness for naked48 (#16564) 2022-03-07 18:45:28 -08:00
Umberto Baldi
f0d27e22aa [Keyboard] Change vendor ID for sick68 keyboard (#16563) 2022-03-07 18:44:49 -08:00
Steven Karrmann
8bcac1c8f7 [Keyboard] Add Morizon (#16549)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-03-07 18:39:58 -08:00
yiancar
6928bce461 [Keyboard] Add Cassini keyboard (#16522)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2022-03-07 18:28:26 -08:00
FearlessSpiff
5995432202 [Keymap] add mouse controls to Mechwilds Mercutio FearlessSpiff (#16566) 2022-03-07 18:17:30 -08:00
bwisn
893d86cb89 Add Anne Pro 2 keyboard (#14385)
* [keyboard] Initial support for Anne Pro 2

* [keyboard][AnnePro2] Keymap:update to a reasonable keymap with caps+hjkl => arrow

* :(

* changed to use HSI

* support for annepro2 c18

* keyboard/annepro2: Very stupid matrix scan bug fix.

* typo

* swap COL14/13

* keyboard/annepro2: startup secondary LED MCU

* keyboard/annepro2: typo fix

* Add IO Values

* Disable Combo feature

* Update default keymap to Anne Pro 2 Official Keymap

* keyboard/annepro2: keymap layer name changes

* keyboard/annepro2 BLE Support

* Fix keymap comment

FN1 ESC was listed as ~ instead of `

* keyboard/annepro2: Bluetooth path

* Keyboard annepro2 bidir led comms (#5)

* Added bidirectional shine comms and moved led functionality to new file

* Added bidirectional shine comms and moved led functionality to new file

* Restore original functionality to existing keymaps using new shine commands

* Fix dangling bracketless if statements

* PR cleanup

* add custom keycodes to switch led profiles

* Optimize code

* switch to prev profile before turning leds off

* Add persistent led support with eeprom (#9)

* adding HT32 support to chibios SPI master driver

* add support for W25X20CL SPI eeprom

* add makefile flag for eeprom feature

* add spi support to keyboard startup and config

* example keymap using eeprom profile loading

* Cleanup to fix C15 eeprom/spi build errors (#11)

* Cleanup to fix C15 eeprom/spi build errors

* add newline at eof

* LED Masking support for Shine

Introduce companion update to ledSetMask and ledClearMask.
In keymap `codetector` there is example of how to map caps_lock
to the caps_lock key light on the keyboard.

* [AnnePro2]: update bluetooth connection

* Merge the custom keys enums on annepro2.h (#13)

* Keyboard annepro2 ble caps lock (#12)

* Move matrix_scan_kb out of board.c to annepro2.c

* add buffer clear after init and caplock polling

* Add support for LED intensity (#15)

* Improve logic for switching off and on of LEDs (#16)

* Implement animation speed (#17)

* Include logic to send solid colors as foreground to shine and add sample profiles (#14)

Include the logic to send a solid color from qmk to shine. That solid color will act as a foreground (will override the current profile) until reset (witch will reactivate the current profile).
This functionality depends on changes made for shine as well.

Include 3 new profiles:

    default-full-caps -> same as default, but with the logic of using the red foreground color on caps lock.
    default-layer-indicators -> same as default, but with the logic of red foreground on caps lock, green foreground on FN1 and blue foreground on FN2.
    thomazmoura -> my own profile as a sample of an over-engineered advanced case scenario.

* Implement reactive lighting effects (#18)

* Added multiarrow keymap (#19)

* Add LED documentation (#26)

* add LED documentation

* add LED documentation to other default profiles

* Implement QMK's IAP default keybind (#29)

* Add keymap for going into IAP

* switch to default QMK keybind for IAP mode

* implement bluetooth IAP mode

* Make default config more like Obins stock default (#30)

* Add new message type for resetting foreground color (#31)

* annepro2(bluetooth): add media keys support (#41)

* Asynchronous, robust serial protocol. (#39)

* bla personal ap2-c18 keymap.

* Bidirectional, asynchronous message-based communication with Shine.

- Requires a matching Shine version.
- Protocol is resiliant to loosing bytes during communication, chips won't lock
  waiting for bytes that aren't coming.
- Chips resynchronize in event of loosing a byte using a AA0D header.

Regressions:
- Key masking/locking doesn't work right now. (did it work before?)
- Not all user keymaps build against it.

* Clang-format + code to ease reducing speed of LED UART.

- Did clang-format --style=file -i on multiple files according to
  coding_conventions_c.md

- Added separate serial speed for IAP boot and Led communication, it's possible
  that reducing this to 9600 helped someone with faulty HW. With this code they
  can do it with simple replacing of a value.

* Main chip can set/clear foreground using a mask mechanism.

- Some preparations for selective colouring.

* Selective mask works - tested on capslock.

- Migrated personal keymaps to new status API.

* Clear the foreground colors to show profile when it's modified.

- Show example of achieving selective caps-lock painting + foreground painting
  for layers.
- annepro2LedMaskSetRow is implemented, but still requires testing.

* Implement the QMK side of led blinking to indicate the command was received.

- This stupidly blinks the key when user presses one of the bluetooth commands
to let the user know that the command was received and forwarded to the BT chip.

- TODO: Row/col key positions are hardcoded and not taken from the keymap.

* Reduce memory footprint.

Applying code review suggestions. Moved msgId to globals - preparing for
transmission without copying payload when no retries are necessary.

Added empty readme.md files - required by QMK lint.

Co-authored-by: Tomasz bla Fortuna <bla@thera.be>

* Let the LED chip settle a bit before waking it from the bootloader. (#42)

At least for one person that helps to reliably get the LEDs working without
disconnecting/reconnecting the power to the board multiple times.

Co-authored-by: Tomasz bla Fortuna <bla@thera.be>

* annepro2: rename KEYMAP to LAYOUT, as required by new version of QMK

* annepro2: update ChibiOS configuration files

* annepro2: fix undefined reference to dprint and timer_read32

* annepro2: update ChibiOS MCU name

* update spi driver, fix bad merging with master

* annepro2: add readme and info.json

* annepro2: make code compatible with QMK coding conventions

* tmk_core: temporary fix to allow HT32 based keyboards to work without patched ChibiOS-contrib (AnnePro2)

* AnnePro2: removed core changes

* AnnePro2: Leave only default keymaps

Missing keymaps will be restored in another PR

* annepro2: add licence information

* annepro2: satisfy qmk lint

* annepro2: fix drashna's suggestions

* annepro2: fix matrix

* annepro2: apply code review suggestions

* annepro2: apply remaining code review suggestions

* annepro2: update info.json

* annepro2: remove include

* annepro2: rename keymap to layout

* annepro2: fix typing

* annepro2: apply suggestions from tzarc's code review

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

* annepro2: more fixes

* annepro2: apply suggestions from code review

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

* annepro2: rename file

* more fixes

* Apply suggestions from @tzarc code review

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

* Update keyboards/annepro2/protocol.h

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

* Update keyboards/annepro2/chconf.h

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

* apply CR suggestions

* upgrade readme

* IAP

* update IAP comments, defines

* led fix

* init fix

* annepro2: GPIO cleanup

* annepro2: ioline

* change waiting time

* Start develop for 2022q2

* [Core] Squeeze AVR some more with `-mrelax` and `-mcall-prologues` (#16269)

* Rework generate-api CLI command to use .build directory (#16441)

* Remove `send_unicode_hex_string()` (#16518)

* Change data driven "str" type to represent a quoted string literal (#16516)

* Change data driven "str" type to represent a quoted string literal

* Update docs

* Map data driven `DESCRIPTION` as string literal (#16523)

* update bootloader

* Revert "Merge pull request #2 from qmk/develop"

This reverts commit 9c76065188, reversing
changes made to 240745dc05.

* Revert "update bootloader"

This reverts commit 240745dc05.

* fix rules.mk

* change PROGRAM_CMD

Co-authored-by: codetector <codetector@codetector.cn>
Co-authored-by: Fagl4 <18francisco18@gmail.com>
Co-authored-by: Jakob Gillich <jakob@gillich.me>
Co-authored-by: tech2077 <tech2077@gmail.com>
Co-authored-by: jcdeA <31413538+JcdeA@users.noreply.github.com>
Co-authored-by: Thomaz Moura <5599621+thomazmoura@users.noreply.github.com>
Co-authored-by: Darkhan <darkhanu@gmail.com>
Co-authored-by: Paco <70448173+packorf@users.noreply.github.com>
Co-authored-by: jmarmstrong1207 <32995055+jmarmstrong1207@users.noreply.github.com>
Co-authored-by: 1Conan <7620342+1Conan@users.noreply.github.com>
Co-authored-by: Tomasz bla Fortuna <blagh@thera.be>
Co-authored-by: Tomasz bla Fortuna <bla@thera.be>
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: QMK Bot <hello@qmk.fm>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-08 12:12:53 +11:00
Matthew Bautista
2ff646c642 [Keyboard] LFK78 VIA support and Update (#16502) 2022-03-07 09:05:41 -08:00
jack
d953aa730e new lines at eof's (#16558) 2022-03-07 11:23:15 +00:00
Will McGloughlin
4b4f1c6edb [Keymap] Add encoder showcase keymap (#16544) 2022-03-06 23:16:50 -08:00
takashicompany
41fb9120d0 [Keyboard] Update DogTag Macro Pad (#16446)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-03-06 23:02:52 -08:00
peepeetee
6e61126e08 [Keyboard] BM68HSRGB/rev2 (#16454)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-06 23:02:31 -08:00
jels
9dea8a7d86 [Keyboard] Update Jels88 (#16486) 2022-03-06 22:59:30 -08:00
Koobaczech
b26217414c [Keyboard] Delete duplicate pandora directory (#16496) 2022-03-06 22:58:38 -08:00
Koobaczech
2d8266bd7b [Keyboard] Tidy Up pearlboards (#16497) 2022-03-06 22:58:06 -08:00
fOmey
bbd47fcaa2 [Keyboard] Atlantis ak81_ve encoder behaviour enhancement & fixes (#16503) 2022-03-06 22:55:56 -08:00
xiao
1a1b22ef07 [Keyboard] Sick68 VIA keymap (#16508)
Co-authored-by: xia0 <xiao@morgan.net.au>
2022-03-06 22:52:49 -08:00
owlab-git
0978dca728 [Keyboard] add qk65 files by qwertykeys studio (#16491) 2022-03-06 22:41:16 -08:00
Drashna Jaelre
ff6c70415c [Keymap] Drashna Mouse keys and oled updates (#16556) 2022-03-06 22:12:17 -08:00
QMK Bot
d8971d707e Format code according to conventions (#16554) 2022-03-06 20:55:08 -08:00
kopibeng
0e08fad5c5 [Keyboard] Add support for Typ65+ (#16399)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-03-06 19:36:22 -08:00
Felix Jen
dcfa4712fb [Keyboard] Add Kyuu Hotswap (#16360)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-03-06 19:30:13 -08:00
Takuya Urakawa
5de86a05c3 [Keyboard] Add Lain keyboard (#16345)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-06 19:27:41 -08:00
Andrew Garver
de10757f05 [Keyboard] fourier via keymap (#16335) 2022-03-06 19:27:08 -08:00
npspears
b77d51f41a [Keyboard] add support for Quark_Plus (#16324)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-06 19:26:23 -08:00
Takeshi ISHII
9d6cea070e [Keymap] Change helix:five_rows_jis keymap to use split_common (#16538) 2022-03-06 19:02:40 -08:00
Takeshi ISHII
4cae7becb1 [Keymap] Change helix:fraanrosi keymap to use split_common (#16533) 2022-03-06 19:02:00 -08:00
Joel Challis
30209de9fd merge/uma - Resolve configurator issues (#16551) 2022-03-06 21:58:08 +00:00
Takeshi ISHII
16cd1d9bf7 Change helix:five_rows keymap to use QMK standerd oled driver (#16539) 2022-03-06 10:18:41 +09:00
Ryan
8e9d45d270 qmk info: nicer rendering of ISO enter (#16466) 2022-03-05 22:54:32 +00:00
Joel Challis
b202e59322 Update info.json (#16540) 2022-03-06 07:59:54 +11:00
kiilerix
da6d6ce2e1 Some docs improvements (#15845)
* docs: clarify in "Keymap Overview" what LAYOUT is and isn't

It is not strictly necessary to use LAYOUT macros in keyboard.c, but it
is a convenient abstraction of hardware internals, allowing focus on the
physical keyboard layout.

From the C source point of view LAYOUT is macro with a parameter list,
which expands to a array of rows that each is an array with a keyboard
scancode for each column. A macro parameter list is not an array, and
even less a single array.

Perhaps no big deal, but also no reason to give incorrect hints.

* docs: update "Understanding QMK's Code" to current code structure introduced in 96e2b13d1d

This part of the documentation was no longer correct. I tried updating
it, mainly copy editing and using github links to latest release.

This is not trying to fix all problems, but just trying to fix some
problems while reusing much of the old phrases and structure.

* Update docs to use "qmk format-python"
2022-03-05 15:58:50 +11:00
yulei
82dd84e257 support more leds (#15840) 2022-03-05 15:57:19 +11:00
Kyle McCreery
0be7345640 [Keyboard] BDE Rev2 (#15877)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-03-04 10:10:32 -08:00
Joel Challis
c0185116d7 More validation of declared LAYOUT macro names (#16520) 2022-03-04 18:06:15 +01:00
Ryan
34ba7f1c18 Bug report template: require qmk doctor output (#16517) 2022-03-03 20:43:55 -08:00
Ryan
d412854e37 analog.[ch]: remove unnecessary includes (#16471) 2022-03-04 14:56:59 +11:00
Ryan
aab2ac22c5 Melody96 refactor (#16455) 2022-03-04 14:52:15 +11:00
jels
61ba8efa3e Update pr_checklist.md (#16484)
Update readme.md template link from https://github.com/qmk/qmk_firmware/blob/master/data/templates/avr/readme.md to https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md
2022-03-04 12:49:14 +11:00
jels
e01307f265 Typo in squeezing_avr.md (#16506)
Fixed typo in squeezing_avr docs.
2022-03-03 15:38:24 -08:00
Joel Challis
7fb312ccd7 Fix use of ISSI driver config before init (#16493) 2022-03-03 22:35:51 +00:00
Takeshi ISHII
4a66bdf294 Fix helix/rev2 not working properly when using split_common. (#16512)
When helix/rev2 was using split_common, it didn't work properly and I couldn't type on the right hand side.

The cause is that the following code, added in 0.16.0 to `quantum/keyboard.c`, does not include `quantum/split_common/split_util.h` but instead includes `keyboards/helix/rev2/split_util.h`. Therefore, `split_pre_init()/split_post_init()` in `quantum/split_common/split_util.c` was not called.

```c
  #ifdef SPLIT_KEYBOARD
  #    include "split_util.h"
  #endif
```
2022-03-03 20:23:49 +00:00
Gompa
ae2c77c827 [Bug] fix v-usb connection enumeration, ifdef workaround (#16511)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-03-03 09:24:04 -08:00
Takeshi ISHII
75b40dc7a5 Fix mistakes in the include path in helix/rev2/local_features.mk. (#16507)
```diff
  --- a/keyboards/helix/rev2/local_features.mk
  +++ b/keyboards/helix/rev2/local_features.mk
  @@ -6,7 +6,7 @@
   #

   KEYBOARD_LOCAL_FEATURES_MK :=
  --include $(strip $(HELIX_TOP_DIR)/pico/override_helix_options.mk) ## File ded  icated to maintenance
  +-include $(strip $(HELIX_TOP_DIR)/rev2/override_helix_options.mk) ## File dedicated to maintenance
  ```
2022-03-03 14:27:21 +00:00
Jake VanderVaate
96b6ddf4bf fixed typo in docs/newbs_getting_started.md (#16501) 2022-03-03 09:53:40 +00:00
Takeshi ISHII
e73f8e942c Change 'helix/rev2:default' setting to use split_common (#16432)
* add licenses message to helix/rev2 files

* Minimize the processing of helix/rev2/local_features.mk

* Changed helix/rev2 default setting to use split_common

* fix helix/rev2:edvorakjp build error

* Remove unnecessary '#include' from keymap.c

* helix keymaps Workaround for build errors. five_rows_jis, fraanrosi, froggy, froggy_106, yshrsmz

* Revert "fix helix/rev2:edvorakjp build error"

This reverts commit 731dbbe151.
Separated into a single PR #16433.

* Revert "Changed helix/rev2 default setting to use split_common"

This reverts commit e76dbd7762.

* add 'SPLIT_*_STATE_ENABLE' into helix/rev2/config.h

* Revert "helix keymaps Workaround for build errors. five_rows_jis, fraanrosi, froggy, froggy_106, yshrsmz"

This reverts commit 9b316c1c6a.

* change helix:default to use split_common

* change helix:five_rows to use split_common

* add comment into helix/rev2/rules.mk

* change helix:led_test to use split_common
2022-03-02 20:15:10 +09:00
xiao
09a43b12cb Revert "handwired/3dortho14u: refactor layout data (#16475)" (#16485)
This reverts commit 3ac769b6ab.
2022-03-01 15:48:38 -08:00
James Young
325c634101 atlas_65 Layout Macro Refactor (#16483)
* atlas_65.h: add matrix diagram

* atlas_65.h: apply linting

- convert tabs to spaces
  - four-space indent
- align backslashes in layout macro

* atlas_65.h: adjust layout macro alignment

Visually separates each side. White-space-only change.

* physically arrange layout macro

Move the matrix position identifiers in the layout macro to resemble the assembled keyboard's layout.

- move `k46` (right side B) to the fourth (Shift) row
- move each of `k1E`, `k2E` and `k3E` (right side navigation keys) up one row
- update keymaps to match

* update maintainer data

Update the maintainer data in `info.json` and `readme.md`.
2022-03-01 14:52:25 -08:00
Joel Challis
369575ad13 Remove invalid keyboard_folder from gk6 (#16480) 2022-03-01 02:12:01 +00:00
James Young
36635c2203 Ellora65: remove dead space from Configurator rendering (#16478) 2022-03-01 01:53:53 +00:00
Joel Challis
c9d9e70ac7 Move projectcain encoder logic to keyboard level (#16479) 2022-03-01 01:52:01 +00:00
James Young
f293e6b4da Glacier: Community Layout support (#16474)
* Glacier: Community Layout support

Enables the Glacier to use QMK's `tkl_f13_ansi_tsangan` community layout.

- rename `LAYOUT` to `LAYOUT_tkl_f13_ansi_tsangan`
- add `LAYOUTS` rule to `rules.mk`

* info.json: correct maintainer value

Use the maintainer's GitHub username.
2022-02-28 23:33:55 +00:00
James Young
3ac769b6ab handwired/3dortho14u: refactor layout data (#16475)
Remove nonextant matrix positions from the layout data.
2022-02-28 23:33:21 +00:00
James Young
d1068b23ad snatchpad: update layout data (#16476)
Fixes key overlaps in QMK Configurator.
2022-02-28 23:32:33 +00:00
Erovia
fbfd5312b9 CLI: Validate JSON keymap input (#16261)
* Fix schema validator

It should use the passed schema.

* Add required attributes to keymap schema

* Rework subcommands to validate the JSON keymaps

The 'compile', 'flash' and 'json2c' subcommands were reworked to add
JSON keymap validation so error is reported for non-JSON and
non-compliant-JSON inputs.

* Fix required fields in keymap schema

* Add tests

* Fix compiling keymaps directly from keymap directory

* Schema should not require version for now.
2022-02-28 20:02:39 +00:00
Joel Challis
779c7debcf Fix issues with data driven split keyboards (#16457) 2022-02-27 13:39:24 +01:00
Takeshi ISHII
e884414e1e fix helix/rev2:edvorakjp build error (#16433)
'helix/rev2/keymaps/edvorakjp' was no longer buildable due to changes made by #14864.
The reason is that the prototype of `oled_task_user()` was changed in keymaps/edvorakjp/oled.c, but keymaps/edvorakjp/oled.h was not changed.
Therefore, I modified the prototype in keymaps/edvorakjp/oled.h.
2022-02-27 20:30:00 +09:00
Joel Challis
77cdb20e16 Revert CLI default for manufacturer (#16467) 2022-02-27 10:34:26 +00:00
James Young
a7a3f72235 Wolf Sabre: fix Configurator layout data (#16465)
* apply friendly formatting to info.json

* rebuild Configurator layout data

KLE Rotation leads to incorrect layout data when converted to `info.json` format.

* add matrix diagram to sabre.h
2022-02-27 10:08:10 +00:00
James Young
57601d3cfe Wren: fix QMK Configurator key sequence (#16462)
* Wren: fix QMK Configurator key sequence

* info.json: update maintainer field
2022-02-27 00:38:51 -08:00
Albert Y
29ab430f1f [Docs] Anchor link correction in rgb matrix docs (#16460) 2022-02-26 18:38:46 -08:00
stanrc85
1d30ee72ab [Keymap] stanrc85 userspace rules cleanup (#16447) 2022-02-26 18:29:59 -08:00
Dasky
259cf76966 Link WS2812 driver page from rgb feature docs (#16366) 2022-02-27 01:50:44 +00:00
James Young
c1e008b052 [Keyboard] add YMDK YMD21 v2 (#16442)
* [Keyboard] add YMDK YMD21 v2

* remove trailing whitespace from default keymap
2022-02-26 17:36:30 -08:00
Ryan
97d0e7cb2d [Docs] Add commands to flashing docs (#16456) 2022-02-26 17:35:10 -08:00
Dari
d94b5d0b82 [Handwired] Support for Adafruit lemon keypad (#16395)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: zvecr <git@zvecr.com>
2022-02-26 17:18:51 -08:00
peepeetee
3057e5f8ca [Keyboard] ada1800mini (#16386)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-02-26 17:06:48 -08:00
Joel Challis
83a32b2574 Remove 1k USB_POLLING_INTERVAL_MS config from keyboards and default-ish keymaps (#16448)
* Remove 1k USB_POLLING_INTERVAL_MS config from keyboard level

* Remove 1k USB_POLLING_INTERVAL_MS config from default|via keymaps
2022-02-26 03:20:57 +00:00
zvecr
e793128991 Merge remote-tracking branch 'origin/develop' 2022-02-25 23:45:40 +00:00
zvecr
c0ee3d2c79 Merge '51db8baf77e2c0aa5f54d73114e84a33306d7380' as empty 2022-02-25 23:45:07 +00:00
Joel Challis
cf31355f08 Changelog 2022q1 (#16380)
* Initial changelog pass

* update generate-develop-pr-list content

* Fix bad word-ness

* Fix generate-develop-pr-list ignores

* Update docs/ChangeLog/20220226.md

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

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2022-02-23 17:33:08 +00:00
QMK Bot
bd01e1cee8 Merge remote-tracking branch 'origin/master' into develop 2022-02-22 18:32:43 +00:00
QMK Bot
8aec20c0da Format code according to conventions (#16435) 2022-02-22 18:29:47 +00:00
QMK Bot
a58a95f1f5 Merge remote-tracking branch 'origin/master' into develop 2022-02-22 18:24:50 +00:00
Joel Challis
5330d0888d Install extra CLI dependencies that are missing (#16426)
* Install extra CLI dependencies that are missing

* dos2unix is part of base container
2022-02-22 18:24:18 +00:00
QMK Bot
3039186dd9 Merge remote-tracking branch 'origin/master' into develop 2022-02-22 14:10:20 +00:00
Ryan
7646e567bd handwired/frankie_macropad: disable some features to reduce size (#16431) 2022-02-22 14:09:45 +00:00
QMK Bot
749918e119 Merge remote-tracking branch 'origin/master' into develop 2022-02-22 02:58:43 +00:00
Joel Challis
5dcc0743f5 Install extra CLI dependencies that are missing (#16425) 2022-02-22 02:57:52 +00:00
QMK Bot
c2ea26745d Merge remote-tracking branch 'origin/master' into develop 2022-02-21 19:23:59 +00:00
Fernando Rodrigues
e0342fec18 [Keyboard] Fixed default keymap and add VIA for Baredev rev1 (#15818)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-02-21 11:23:29 -08:00
QMK Bot
6b94d8e1c9 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 19:22:55 +00:00
xiao
ffe9c22032 [Keyboard] Add keyboard 3dortho14u (#16329)
Co-authored-by: xia0 <xiao@morgan.net.au>
2022-02-21 11:22:25 -08:00
QMK Bot
82a670135f Merge remote-tracking branch 'origin/master' into develop 2022-02-21 19:22:24 +00:00
Alexander
239fed2ef1 [Keyboard] Move rgb animation defines for KAPL keyboard (#16341) 2022-02-21 11:21:54 -08:00
fauxpark
145dca0e49 Merge remote-tracking branch 'upstream/master' into develop 2022-02-22 05:21:40 +11:00
jack
31f5900666 fix layout macro (#16414)
Co-authored-by: jack <{ID}+{username}@users.noreply.github.com>
2022-02-21 18:04:14 +00:00
Danny
302ed624ac Add encoder defaults for Keebio boards (#16398)
* Add BDN9 encoder defaults

* Add DSP40 encoder default

* Add FoldKB encoder defaults

* Add Iris encoder defaults

* Update Iris Rev. 6 encoder orientation

* Add KBO-5000 encoder defaults

* Add Quefrency encoder defaults

* Add Sinc encoder defaults

* Add Stick encoder defaults

* Remove encoder settings from VIA keymaps
2022-02-21 18:02:30 +00:00
jack
6ad86042fe Fix kikoslab/ellora65 (#16415) 2022-02-22 04:57:13 +11:00
QMK Bot
2f0dc0fb6d Format code according to conventions (#16419) 2022-02-21 17:44:27 +00:00
Adam Lickel
a5901a6c0d [Keymap] BDN9 keymap (#15924) 2022-02-21 09:35:23 -08:00
peepeetee
3290377918 [Keyboard] infinity81 (#16387) 2022-02-21 09:12:18 -08:00
yiancar
83b9483045 [keyboard] DC01 i2c timeout fix (#16392) 2022-02-21 09:11:49 -08:00
evanmcook
0b21fbc37b [Keyboard] add evancookaudio sleepingdinosaur (#16320)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-02-21 09:11:23 -08:00
takashicompany
7e4f74d689 [Keyboard] Update Heavy Left (#16354) 2022-02-21 09:11:00 -08:00
peepeetee
59f671744b [Keyboard] ID75 v2 (#16351) 2022-02-21 09:10:19 -08:00
Wolf Van Herreweghe
7fb22706fd [Keyboard] Add sabre (#15964)
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2022-02-21 09:10:06 -08:00
66f9e4eae
249eb87102 [Keyboard] [redox_w] add dvorak layout and white led support (#16259)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-02-21 09:09:19 -08:00
Michal Petrik
b1f8622513 [Docs] Update feature_leader_key.md (#16344)
Co-authored-by: zvecr <git@zvecr.com>
2022-02-21 09:08:36 -08:00
Michal Petrik
d3584be431 [Docs] Update newbs_building_firmware.md (#16333) 2022-02-21 09:08:07 -08:00
Takeshi ISHII
c204c735af Helix/pico move to split_common (#16418) 2022-02-21 08:30:49 -08:00
QMK Bot
25ba9b41c1 Format code according to conventions (#16421) 2022-02-21 08:29:54 -08:00
fauxpark
a44abeb99a Merge remote-tracking branch 'upstream/master' into develop 2022-02-22 03:04:41 +11:00
Ryan
f30f963a0b Internal docs generation updates (#16411) 2022-02-21 15:47:44 +00:00
Takeshi ISHII
b1de11c275 Fix a potential bug in encoder_init(). (#16372)
After executing `setPinInputHigh(pin)`, it is necessary to wait for the charging time to read from the corresponding pin. This is the same as requiring `matrix_output_unselect_delay()` after doing `unselect_row()` in matrix.c.
2022-02-21 23:13:06 +09:00
QMK Bot
69a6772074 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 09:04:17 +00:00
jackytrabbit
ae5f43072f Update the support for lazydesigners/dimple (#14797)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-21 10:03:18 +01:00
QMK Bot
0f962af691 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 08:55:44 +00:00
QMK Bot
f252287b0e Format code according to conventions (#16412) 2022-02-21 00:55:23 -08:00
Brandon Claveria
67b9a722c0 [Keyboard] Add Ellora65 (#14754)
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: swiftrax <swiftrax@github.com>
2022-02-21 00:55:05 -08:00
QMK Bot
7d153b9a66 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 08:40:46 +00:00
xiao
18490537a5 [Keyboard] Add Snatchpad keyboard (#16330)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: xia0 <xiao@morgan.net.au>
2022-02-21 00:40:11 -08:00
QMK Bot
8dc7cae7c7 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 08:39:42 +00:00
federicoweber
2d1f2810a4 [Keyboard] add Gizmo Engineering GK6 keyboard (#13907)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-02-21 00:38:53 -08:00
QMK Bot
f01caa2a5a Merge remote-tracking branch 'origin/master' into develop 2022-02-21 08:29:26 +00:00
hunter
019dddcfa3 [Keyboard] Add foundation (#16289)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-02-21 00:28:49 -08:00
QMK Bot
99099c4173 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 07:53:37 +00:00
Tim Liu
deb0fe4bcc [Keyboard] Add glacier in creatkeebs folder (#16079)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-20 23:52:39 -08:00
QMK Bot
09b44d2e73 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 07:44:26 +00:00
holtenc
2e31f542dc [Keyboard] Add Obro (#15884)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-20 23:43:55 -08:00
QMK Bot
63b8959413 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 06:33:42 +00:00
L. K. Post
14fb3cc8b0 [Keyboard] Add Kyria rev. 2 (#16178) 2022-02-20 22:33:00 -08:00
QMK Bot
37feb4fcb4 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 06:17:00 +00:00
Ivan Gromov
9bf25d1cd5 [Keyboard] Add Monoflex 60 keyboard (#16234)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-20 22:16:23 -08:00
QMK Bot
6a90e13224 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 06:05:20 +00:00
jack
2d1d44edb7 [Keyboard] Fix Hineybush/h08_ocelot and Hineybush/h65(_hotswap) (#16405) 2022-02-20 22:04:43 -08:00
QMK Bot
b21a803ec6 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 06:02:11 +00:00
TW59420
f7b5d67a7b [Keyboard] Add MW75R2 PCB (#15042)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-02-20 22:01:31 -08:00
QMK Bot
21a4f42957 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 05:57:49 +00:00
jack
65af7272f3 [Keyboard] Fix mwstudio/mw65_rgb errors (#16410) 2022-02-20 21:57:11 -08:00
QMK Bot
31ee13a5d7 Merge remote-tracking branch 'origin/master' into develop 2022-02-21 01:19:42 +00:00
HorrorTroll
3bc8afbb81 Update fix for MW65_rgb and added personal keymap (#15279)
* Update fix for MW65 and added personal keymap

* Resolve fix

* Resolved fix, again

* Added missing GPLv2 license headers

* Resolved issue
2022-02-20 17:18:35 -08:00
QMK Bot
f6d8dd972e Merge remote-tracking branch 'origin/master' into develop 2022-02-20 18:37:05 +00:00
Ryan
d175ee1d9b rart67m: move OLED and WPM code to default keymap (#16403)
* rart67m: move OLED and WPM code to default keymap

* Apply suggestions from code review

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

Co-authored-by: Joel Challis <git@zvecr.com>
2022-02-20 18:36:15 +00:00
QMK Bot
4d3ce3cdf8 Merge remote-tracking branch 'origin/master' into develop 2022-02-20 13:57:38 +00:00
Ryan
60f22831cb clueboard/card: disable Command to reduce size (#16404) 2022-02-20 13:57:03 +00:00
QMK Bot
f787114fe9 Merge remote-tracking branch 'origin/master' into develop 2022-02-20 08:21:51 +00:00
Josh Hinnebusch
38e3be4c74 Add h08_ocelot and h65 PCBs (#14054)
* add h65 start

* add h65 base files

* add ocelot base files

* add via keymap

* Update keyboards/hineybush/h08_ocelot/config.h

* Update keyboards/hineybush/h65/config.h

* add base files for h65 hotswap

* changes made per PR

* finally made updates per PR

* update readmes

* Update keyboards/hineybush/h65_hotswap/config.h

* Update keyboards/hineybush/h65_hotswap/rules.mk

* Update keyboards/hineybush/h65_hotswap/rules.mk

* Update keyboards/hineybush/h65_hotswap/readme.md

* Update keyboards/hineybush/h65_hotswap/info.json

* Update keyboards/hineybush/h65/rules.mk

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

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

* Update keyboards/hineybush/h65_hotswap/h65_hotswap.h

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

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

* Update keyboards/hineybush/h65/rules.mk

* Update keyboards/hineybush/h65/readme.md

* Update keyboards/hineybush/h08_ocelot/h08_ocelot.h

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

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

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

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

* Update keyboards/hineybush/h08_ocelot/readme.md

* Update keyboards/hineybush/h08_ocelot/rules.mk

* Update keyboards/hineybush/h08_ocelot/rules.mk

* Update keyboards/hineybush/h65/h65.h

* Update keyboards/hineybush/h08_ocelot/info.json

* Update keyboards/hineybush/h65/info.json

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

* Apply suggestions from code review

* update jsons for default qmk config layout

* Update keyboards/hineybush/h08_ocelot/rules.mk

* Update keyboards/hineybush/h65/h65.h

* Update keyboards/hineybush/h65/info.json

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

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

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

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

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

* Update keyboards/hineybush/h65_hotswap/rules.mk

* Update keyboards/hineybush/h65/config.h
2022-02-20 00:21:18 -08:00
QMK Bot
1d9808606a Merge remote-tracking branch 'origin/master' into develop 2022-02-20 07:10:44 +00:00
Benjamin Chausse
60e28544b2 Bliss Hotdox keymaps (#13160)
* Bliss Hotdox keymaps

* Update keyboards/hotdox/keymaps/bliss/keymap.c

* Update keyboards/hotdox/keymaps/bliss/keymap.c

* Add GPL License to keymap.c file
Changes to be committed:
	modified:   keymap.c

* make changes requested by fauxpark

* Update keyboards/hotdox/keymaps/bliss/readme.md

* Update keyboards/hotdox/keymaps/bliss/keymap.c

* Update keyboards/hotdox/keymaps/bliss/readme.md
2022-02-19 23:10:15 -08:00
QMK Bot
e2691c22c1 Merge remote-tracking branch 'origin/master' into develop 2022-02-20 05:52:47 +00:00
Matthew Dias
73657a7d58 Add kikkou keyboard (#15291)
* Add kikkou keyboard

* Apply suggestions from code review

* Update keyboards/kikkou/rules.mk

* Apply suggestions from code review1
2022-02-19 21:52:11 -08:00
fauxpark
5b688a09ec Merge remote-tracking branch 'upstream/master' into develop 2022-02-19 04:27:09 +11:00
Ryan
4666d26008 Fix a couple of boards being wrongly identified as AVR (#16377) 2022-02-19 02:53:36 +11:00
Simon
2d12eacb4b [Keyboard] Renamed Frooastboard to Frooastboard Nano (#16373) 2022-02-17 08:59:12 -08:00
Joakim Tufvegren
7dd993fb06 Fix build error for LED Matrix effect solid_reactive_wide. (#16383) 2022-02-17 08:53:06 -08:00
Drashna Jael're
da280739ef Merge remote-tracking branch 'origin/master' into develop 2022-02-17 08:44:30 -08:00
Ryan
548a463fe9 mokey/xox70: clean up layouts (#16375) 2022-02-17 08:43:03 -08:00
Joakim Tufvegren
7f63bcf38b [Bug] Re-add call to suspend_power_down_kb() (#16382) 2022-02-17 08:33:07 -08:00
Takeshi ISHII
7e00fcd7bc [Keyboard] Remove Helix/rev1 (#16389) 2022-02-17 08:18:16 -08:00
Joel Challis
0d9a0d5d97 Align new-keyboard with recent schema updates (#16378) 2022-02-16 20:58:40 +00:00
Joel Challis
5ff823d35f Bodge for helix build failures (#16376) 2022-02-16 17:46:48 +00:00
QMK Bot
08ebf1523b Merge remote-tracking branch 'origin/master' into develop 2022-02-15 17:48:14 +00:00
Dan Nixon
da68083fdf Update USB VID and PID for Aya (#16363) 2022-02-15 18:47:35 +01:00
QMK Bot
6a8df58887 Merge remote-tracking branch 'origin/master' into develop 2022-02-15 07:02:33 +00:00
Ryan
92eb067a63 Add extra braces for trackball keymaps (#16361) 2022-02-15 18:01:54 +11:00
Joel Challis
16767312db Align docs to new-keyboard behaviour (#16357) 2022-02-15 15:45:32 +11:00
Joel Challis
fede569bbe Allow NO_PIN within info.json (#16359) 2022-02-15 15:41:16 +11:00
Joel Challis
b0621223bc Various fixes for new-keyboard (#16358) 2022-02-15 01:42:58 +00:00
QMK Bot
c9f192bae8 Merge remote-tracking branch 'origin/master' into develop 2022-02-15 01:16:27 +00:00
Ryan
ac8bee7091 Fix multiple definition errors for trackball "boards" with no keys (#16350) 2022-02-15 01:15:53 +00:00
Erovia
23c238a180 CLI: Minor additions #12795 (#16276) 2022-02-14 12:02:35 +01:00
QMK Bot
1980e48e0d Merge remote-tracking branch 'origin/master' into develop 2022-02-14 06:25:23 +00:00
James Young
485cf920b4 Xenon: correct QMK Configurator key sequence (#16332) 2022-02-13 22:24:52 -08:00
QMK Bot
61ed2e2b3c Merge remote-tracking branch 'origin/master' into develop 2022-02-14 06:24:45 +00:00
James Young
6b01657a86 Mode M75S Layout Additions, Configurator Data and Code Touch-Up (#16327)
* m75s.h: correct matrix position identifier

`K5C` is actually on row 4, so it should be `K4C`.

* m75s.h: add matrix diagram

* add QMK Configurator data

* polish whitespace

- convert tabs to spaces
- update indent to four spaces
- remove trailing whitespace

* update readme

Didn't seem to be fully updated after being copied from the M65S codebase.

* add LAYOUT_ansi with keymap

ANSI layout with 2u Backspace.

* add LAYOUT_iso with keymap

ISO layout with 2u Backspace.

* add LAYOUT_ansi_tsangan with keymap

ANSI layout with 2u Backspace and 7u Spacebar.

* add LAYOUT_iso_tsangan with keymap

ISO layout with 2u Backspace and 7u Spacebar.

* add LAYOUT_ansi_split_bs with keymap

ANSI layout with Split Backspace.

* add LAYOUT_iso_split_bs with keymap

ISO layout with Split Backspace.

* add LAYOUT_ansi_tsangan_split_bs with keymap

ANSI layout with Split Backspace and 7u Spacebar.

* add LAYOUT_iso_tsangan_split_bs with keymap

ISO layout with Split Backspace and 7u Spacebar.
2022-02-13 22:24:11 -08:00
QMK Bot
f77e569e9f Merge remote-tracking branch 'origin/master' into develop 2022-02-14 02:02:16 +00:00
Ryan
b6b7e12029 Digicarp65: fix layouts (#16328) 2022-02-14 13:01:39 +11:00
Joel Challis
4fd04b2371 Fix compilation of ChibiOS UART driver (#16348)
Cherry picked fix from 15724
2022-02-13 20:44:44 +00:00
QMK Bot
63646e8906 Format code according to conventions (#16322) 2022-02-12 18:29:31 +00:00
Drashna Jaelre
afcdd7079c Update keyboard mapping for all moved boards this cycle (#16312) 2022-02-12 09:16:35 -08:00
QMK Bot
9f506e64ba Merge remote-tracking branch 'origin/master' into develop 2022-02-12 07:01:58 +00:00
Max Rumpf
773205cd1f [Keyboard] Convert Maxr1998/Phoebe to use info.json where possible (#16309) 2022-02-11 23:01:25 -08:00
QMK Bot
aefe6ee9f5 Merge remote-tracking branch 'origin/master' into develop 2022-02-12 04:03:02 +00:00
cole smith
19c57a2a6a [Keyboard] Lulu keyboard by boardsource (#15951)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-11 20:02:30 -08:00
Ryan
e596ece87a Clang-format tweaks (#15906) 2022-02-11 20:00:34 -08:00
peepeetee
17c0ca6fa4 [Keyboard] move g heavy industry boards into /gboards (#16040)
Co-authored-by: zvecr <git@zvecr.com>
2022-02-11 19:54:48 -08:00
QMK Bot
52d6f07a82 Merge remote-tracking branch 'origin/master' into develop 2022-02-12 03:23:18 +00:00
uqs
40529e89de [Keymap] Add uqs' keymaps for various boards and ploopy mouse (#16265) 2022-02-11 19:22:47 -08:00
peepeetee
0f926a8ae8 move montex to IDOBAO vendor folder (#15668)
* move montex to IDOBAO vendor folder

* move montex to montex/v1
2022-02-12 01:14:07 +00:00
peepeetee
c72120baab move @satt99 's comet46 to satt/ (#16059) 2022-02-12 01:13:48 +00:00
QMK Bot
50201af2b7 Merge remote-tracking branch 'origin/master' into develop 2022-02-12 01:11:25 +00:00
Joel Challis
8b48bab54f Add wren configurator data (#16321) 2022-02-12 01:10:48 +00:00
peepeetee
8957e928a2 move mechkeys keyboards into the mechkeys/ vendor folder (#15760)
* move mechkeys keyboards to mechkeys/

* fix compilation

* fix default folder
2022-02-11 22:41:10 +00:00
peepeetee
bd35fa7de1 move @takashiski 's keebs into /takashiski (#16089) 2022-02-11 21:51:20 +00:00
Joy Lee
71c0b97bce Added external spi flash driver. (#15419) 2022-02-11 20:26:16 +00:00
Dasky
00cc64638c Fix right side ws2812 leds having two indices (#15985)
* Fix right side leds having two indices

* remove redundant left check
2022-02-11 20:13:22 +00:00
precondition
7148a69d5e Pass in the keyrecord_t of the dual-role/tapping key when calling per-key tap hold functions (#15938)
* Replace keyp by &tapping_key in the record arg of per-key tap hold funcs

* Replace NULL by &(keyrecord_t){} in 2nd arg of get_tapping_term
2022-02-11 19:53:26 +00:00
Joel Challis
39bec3bfa5 Various fixes for matrix _RIGHT handling (#16292)
* Various fixes for matrix _RIGHT handling

* clang
2022-02-11 19:01:16 +00:00
QMK Bot
2d4a69cfc6 Merge remote-tracking branch 'origin/master' into develop 2022-02-11 12:38:20 +00:00
Ryan
5f10387c41 handwired/promethium: fix missing include (#16317) 2022-02-11 12:37:36 +00:00
Idan Kamara
793f54f6ca ps2/avr: use the correct file name (#16316)
This was missed in https://github.com/qmk/qmk_firmware/pull/14895.

Thanks to fauxpark for spotting this.
2022-02-11 20:36:26 +11:00
QMK Bot
656c151e07 Merge remote-tracking branch 'origin/master' into develop 2022-02-11 03:38:26 +00:00
Ryan
89fc2f166f mechlovin/kay60: fix mismatched layout name (#16314) 2022-02-11 14:37:41 +11:00
QMK Bot
8106697a42 Merge remote-tracking branch 'origin/master' into develop 2022-02-11 02:31:55 +00:00
Ryan
2bc4a216df maxr1998/pulse4k: Move Combo code to keymap level (#16301)
* maxr1998/pulse4k: Move Combo code to keymap level

* Reorder code
2022-02-11 02:31:19 +00:00
QMK Bot
cc7d3b75d7 Merge remote-tracking branch 'origin/master' into develop 2022-02-11 00:19:54 +00:00
Ryan
63c310f6fd Add 65_iso_split_bs default layout (#16283) 2022-02-11 11:19:18 +11:00
peepeetee
9e4942bec8 [Keyboard] move latincompass's boards to /latincompass (#16039) 2022-02-10 15:20:11 -08:00
peepeetee
27ec667430 move id80 and id75 to v1 to accommodate for id75 v2 and id80 v3 (#15992)
* move id80 to a v1 to acommondate for v2 and a future v3

* move id75 to v1

* fix manufacturer and product fields, enable backlight

* move user keymap

* Fix DEFAULT_FOLDER

* Update build command

Co-authored-by: zvecr <git@zvecr.com>
2022-02-10 21:46:03 +00:00
peepeetee
7c57c88c86 move ID87 to IDOBAO vendor folder (#15667)
* move ID87 to IDOBAO vendor folder

* move to v1 to acommondate for v2
2022-02-10 21:19:33 +00:00
QMK Bot
8787978951 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 21:03:01 +00:00
James Young
bc5d46aaad Mode 75H Touch-UP (#16310)
* m75h.h: correct matrix position identifier

`K5C` is actually on row 4, so it should be `K4C`.

* m75h.h: add matrix diagram

* add QMK Configurator data

* polish whitespace

- convert tabs to spaces
- update indent to four spaces
- remove trailing whitespace
2022-02-10 21:02:23 +00:00
Joel Challis
e04f6c5d38 Remove manual enable of LTO within user keymaps (#15378) 2022-02-10 09:52:39 -08:00
Joel Challis
f7e7671f69 Migrate more makefile utilities to builddefs sub-directory (#16002) 2022-02-10 09:45:51 -08:00
QMK Bot
7a0fd646e3 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 16:23:14 +00:00
James Young
195242dc37 keyten kt60-M: rename LAYOUT to LAYOUT_60_tsangan_hhkb (#16307)
* rename LAYOUT to LAYOUT_60_tsangan_hhkb

* info.json: correct maintainer value

Field is meant to reference the maintainer's GitHub username.

* rules.mk: enable Community Layout support
2022-02-10 16:22:42 +00:00
QMK Bot
9f4fbd3aa7 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 16:22:18 +00:00
James Young
d25bce24cd Keyprez Unicorn: fix QMK Configurator key sequence (#16305)
* info.json: apply friendly formatting

* info.json: fix key sequence
2022-02-10 16:21:38 +00:00
QMK Bot
54572c8daf Merge remote-tracking branch 'origin/master' into develop 2022-02-10 16:20:03 +00:00
James Young
c9e19fe6fc KeebsForAll Freebird Numpad Pro: fix Configurator key positioning (#16303)
* info.json: apply friendly formatting

* info.json: fix key positioning

Fixes the second row being rendered on top of the first row.
2022-02-10 16:19:27 +00:00
QMK Bot
cbdb225a67 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 16:18:23 +00:00
James Young
21522e0964 info.json: fix QMK Configurator rendering (#16299) 2022-02-10 16:17:47 +00:00
QMK Bot
78c3149365 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 16:17:45 +00:00
James Young
da4eda8930 info.json: fix key sequence (#16297) 2022-02-10 16:17:12 +00:00
QMK Bot
815d2bae81 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 16:17:00 +00:00
Albert Y
f662939037 Sentence structure update (#16306) 2022-02-10 16:16:01 +00:00
Ryan
3e52e60595 Fix slashes in build_full_test.mk (#16300) 2022-02-10 18:20:37 +11:00
QMK Bot
0930c60553 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 07:13:21 +00:00
Albert Y
3e5cb1da0f Improve description of LED state data sync option (#16302) 2022-02-10 18:12:42 +11:00
QMK Bot
473557ff7d Merge remote-tracking branch 'origin/master' into develop 2022-02-10 05:24:53 +00:00
James Young
cb9142224b Eye Oh Designs SPRH: fix Configurator data (#16296) 2022-02-09 21:24:10 -08:00
QMK Bot
03b1de6925 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 05:23:32 +00:00
James Young
c092d716c5 gl516/j73gl: fix Configurator key sequence (#16298) 2022-02-09 21:22:47 -08:00
QMK Bot
12246733b7 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 03:30:02 +00:00
James Young
66f61ae4cb CMM.Studio Fuji65: correct layout data for real this time (#16295)
Because I apparently can't tell the difference between coordinates and dimensions.
2022-02-09 19:29:25 -08:00
QMK Bot
61e8a0879e Merge remote-tracking branch 'origin/master' into develop 2022-02-10 01:31:55 +00:00
James Young
5475553dd8 Demiurge: correct Configurator Layout data (#16294)
* info.json: apply friendly formatting

* info.json: correct layout data
2022-02-10 01:31:07 +00:00
QMK Bot
bc702fade2 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 01:21:42 +00:00
Sergi Meseguer
628166a3a9 [Keymap] zigotica layout tweaks (#16291) 2022-02-09 17:21:12 -08:00
QMK Bot
968081958a Merge remote-tracking branch 'origin/master' into develop 2022-02-10 01:15:04 +00:00
James Young
ae041078e8 CMM.Studio Fuji65: Configurator Data Patch (#16293)
* info.json: correct layout data

* info.json: correct maintainer field
2022-02-10 01:14:32 +00:00
QMK Bot
6339b6dab7 Merge remote-tracking branch 'origin/master' into develop 2022-02-10 01:04:13 +00:00
Aric Crosson Bouwers
9d74c95215 [Keymap] submitting ariccb planck keymap (#16177)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-09 17:03:43 -08:00
Nick Brassel
ae6f471f1c Modify the output of the size checks. (#16290) 2022-02-10 08:50:55 +11:00
peepeetee
250fd721ac move four_banger to bpiphany (#16082) 2022-02-09 21:33:40 +00:00
peepeetee
8e34b64a99 move hid_liber to /bpiphany (#16091) 2022-02-09 21:29:59 +00:00
peepeetee
cd673cceba move spaceholdings boards into /spaceholdings (#16096) 2022-02-09 21:19:28 +00:00
peepeetee
a9250ad8a1 move @7-rate 's keebs to /rate (#16099) 2022-02-09 21:14:33 +00:00
peepeetee
9aed06ba47 move @npspears 's boards into /checkerboards (#16100) 2022-02-09 21:08:20 +00:00
Nick Brassel
c2c2f30f9f Remove parent-relative paths from keyboards. (#16282)
* Remove parent-relative paths from keyboards.

* Update keyboards/capsunlocked/cu75/rules.mk

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-10 07:02:53 +11:00
Joel Challis
1f67de2001 Align existing pca9555 driver to better match mcp23018 API (#16277) 2022-02-09 19:55:39 +00:00
QMK Bot
96afc7a03a Merge remote-tracking branch 'origin/master' into develop 2022-02-09 19:48:31 +00:00
Arda Kılıçdağı
de4f2bf1ff Further update to #13745 on Crkbd keymap (#16284)
* Further update to #13745

Hello, 

This is further update to #13745 , somehow my commit did not get merged 

https://github.com/qmk/qmk_firmware/pull/13745#discussion_r802603490

* Update config.h
2022-02-09 19:47:53 +00:00
jack
d1e5221bf8 Fix idobao/id80/v3 compilation errors (#16280)
* fix

* another redefintion
2022-02-09 07:01:58 +00:00
QMK Bot
3face6b704 Merge remote-tracking branch 'origin/master' into develop 2022-02-09 05:51:58 +00:00
Brandon Claveria
c49438feec [Keyboard] Digicarp65 (#15926)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: swiftrax <swiftrax@github.com>
2022-02-08 21:51:51 -08:00
MechMerlin
c212b65e48 New Keyboard: 1upkeyboards super16v2 (#16198)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-02-08 21:51:20 -08:00
QMK Bot
69b6e0796b Merge remote-tracking branch 'origin/master' into develop 2022-02-09 05:50:15 +00:00
peepeetee
b114b27373 [Keyboard] Idobao ID80 V3 (#15912)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-02-08 21:49:53 -08:00
bomb
a75fb03f39 [Keyboard] MelGeek Mach80 rev2 (#15610) 2022-02-08 21:49:40 -08:00
QMK Bot
7650e68798 Merge remote-tracking branch 'origin/master' into develop 2022-02-09 05:42:39 +00:00
Vino Rodrigues
bf4ce41696 [Keyboard] refine LED Matrix LED positions on KBD67 Lite (#15769) 2022-02-08 21:42:01 -08:00
QMK Bot
4b377a80fa Merge remote-tracking branch 'origin/master' into develop 2022-02-09 05:24:00 +00:00
Danny
11e50f5ff1 [Keyboard] Add explicit RGB Matrix defines for Iris Rev. 6 (#16275) 2022-02-08 21:23:25 -08:00
QMK Bot
70e9f70c93 Merge remote-tracking branch 'origin/master' into develop 2022-02-09 05:20:34 +00:00
Alexander
71a48a0102 [Keyboard] Add Kapl (#16255)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-08 21:19:54 -08:00
QMK Bot
9e293e7f9c Merge remote-tracking branch 'origin/master' into develop 2022-02-09 05:13:10 +00:00
IskandarMa
04020da48c [Docs] pr checklist: update doc hyperlinks to relative ones and use IDs (#16263) 2022-02-08 21:12:39 -08:00
Nick Brassel
a2ffdb4abd Merge remote-tracking branch 'upstream/master' into develop 2022-02-09 16:00:09 +11:00
Nick Brassel
efdaa7f972 Add support for driving unselected row/col. (#16278) 2022-02-09 15:50:13 +11:00
Joel Challis
74e8a71768 Move driver to core (#15944) 2022-02-09 00:07:42 +00:00
Joel Challis
2e279f1b88 Initial pass at data driven new-keyboard subcommand (#12795)
* Initial pass at a data driven keyboard subcommand

* format

* lint

* Handle bootloader now its mandatory
2022-02-09 06:03:30 +11:00
Nick Brassel
a239051c4a Misc size regression script improvements. (#16268)
* Misc size regression script improvements.

- Sets environment variable SIZE_REGRESSION_EXECUTING during execution
  so hook scripts like `post-checkout` may skip processing.
- Forces checkout of the target branch, including removal of all
  temporary object files in the process.
- Prints out a warning on exit stating that the git repository is in an
  indeterminate state, and the user needs to swap back to whatever
  intended branch they were working with originally.

* Remove `git clean`
2022-02-08 16:25:55 +00:00
James Young
e26778ceb5 LFKeyboards Mini1800: refactor into revisions (#16260)
* fork Mini1800 into reva and revc versions

* update info.json

- apply friendly formatting
- update maintainer value

* update keymap rules.mk formatting

- align inline comments
- convert tabs to spaces

* align keymap rules.mk files to QMK template

* move common keymap rules.mk settings to revision level

* info.json: correct key sequence

* align revision rules.mk files to QMK template

* clean up revision rules.mk files

* add readme files for each revision

* correct USB Product string

* remove post_rules.mk files

The internal settings were commented out, so the files actually don't do anything.

* edit Bootloader instructions on main readme

* move non-assignment rules to post_rules.mk

* add inline comments for NKRO_ENABLE per fauxpark
2022-02-07 20:12:59 -08:00
James Young
f3aa5db414 Boardsource The Mark 65 Touch-Up and Layout Additions (#16270)
* the_mark.h: use ____ for KC_NO

* the_mark.h: number matrix positions electrically

`K300` and `K301` has misleading identifiers - `K300` was on column 1 and `K301` on column 0.

* the_mark.h: use QMK 3-character notation

* the_mark.h: add matrix diagram

* refactor reference keymaps

- convert tabs to spaces
- use four-space indent
- grid align keycodes
- remove extra line breaks
- add layer indexes to `via` keymap

* info.json: apply friendly formatting

* add LAYOUT_ansi_split_bs_space

Includes reference keymap.

* add LAYOUT_iso_split_bs_space

Includes reference keymap.

* info.json: edit maintainer value

There is a Boardsource GitHub account, but knowing the user who maintains it is helpful.
2022-02-07 19:45:44 -08:00
James Young
7c5d4484f6 Wings42: add QMK Configurator data (#16267)
* add info.json for wings42/rev1

* add info.json for wings42/rev1_extkeys

* add info.json for wings42/rev2
2022-02-07 19:44:19 -08:00
QMK Bot
87e6c2b06b Merge remote-tracking branch 'origin/master' into develop 2022-02-07 21:32:27 +00:00
Alin Marin Elena
837205b08f [Keyboard] M60 split 5x12 lego pcb (#14383)
* add m60 lego case in split, with stm32f401 and 411

* Update keyboards/mlego/m60_split/m60_split.h

* Update keyboards/mlego/m60_split/rev1/config.h

* Update keyboards/mlego/m60_split/rev2/config.h

* address the moving of enum in keymaps
2022-02-07 13:31:51 -08:00
QMK Bot
a1902c3bf8 Merge remote-tracking branch 'origin/master' into develop 2022-02-07 19:29:12 +00:00
Duccio
67d10cbc7e [Keyboard] [eternal_keypad] Update product_id and add keymap (#16253) 2022-02-07 11:28:20 -08:00
QMK Bot
008b5f52e5 Merge remote-tracking branch 'origin/master' into develop 2022-02-07 18:27:58 +00:00
Jimmy Sjölund
3ca19fa933 [Keymap] Updated Planck layout - jimmysjolund (#16245)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-07 10:24:20 -08:00
Nick Brassel
a86d6fffc9 Fixup bootloaders. (#16256) 2022-02-06 19:09:21 -08:00
Joel Challis
53a7306682 Reduce firmware size for dztech/dz60rgb_wkl/v2_1:via (#16254) 2022-02-06 23:58:05 +00:00
Joel Challis
842d20267c Remove half implemented micronucleus bootloader support (#16252) 2022-02-06 22:59:03 +00:00
Drashna Jaelre
9124f5dc2d Add layout change callbacks to VIA (#16087)
* Add layout change callbacks to VIA

* Update worklouder example
2022-02-06 22:01:04 +00:00
QMK Bot
3b60e71f07 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 21:01:53 +00:00
Joel Challis
2a42a80c20 Fix wheatfield/split75 iso info.json (#16250) 2022-02-06 21:01:18 +00:00
QMK Bot
ab23b4167f Merge remote-tracking branch 'origin/master' into develop 2022-02-06 17:50:38 +00:00
SneakboxKB
e7a9e92a04 [Keyboard] Add aliceclonergb (#14285)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: SneakboxKB <64090325+mujimanic@users.noreply.github.com>
2022-02-06 09:50:09 -08:00
QMK Bot
41bbb34287 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 17:38:30 +00:00
Takeshi ISHII
87199eb2f5 add 'info_config.h' into docs/hardware_keyboard_guidelines.md (#16247)
Added info_config.h added in #10817 to the include order description of config.h.
2022-02-06 17:37:59 +00:00
QMK Bot
65a4ad1177 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 17:37:11 +00:00
Jouke Witteveen
14f886d03b [Docs] Address some typos (also in moonlander matrix.c) (#16248)
* [Docs] Fix repeated words

* [Keyboard] Fix moonlander output

The left/right orientation differs from Ergodox EZ.
2022-02-06 17:36:44 +00:00
QMK Bot
b7f415d047 Format code according to conventions (#16249) 2022-02-06 09:08:13 -08:00
MasterSpoon
0452ad9479 Add RGB matrix & LED Matrix support for IS31FL3742A, IS31FL3743A, IS31FL3745, IS31FL3746A (#14989)
Co-authored-by: Xelus22 <17491233+Xelus22@users.noreply.github.com>
2022-02-06 09:04:43 -08:00
Ryan
e036c19d06 Add SN74x138 demultiplexer driver (#16217) 2022-02-06 09:02:45 -08:00
QMK Bot
f4e3f75ecc Merge remote-tracking branch 'origin/master' into develop 2022-02-06 16:58:25 +00:00
Anton K. (ai Doge)
8da9588bfb [Keyboard] via support for eternal_keypad (#16242) 2022-02-06 08:57:58 -08:00
QMK Bot
c7a39c4549 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 16:56:06 +00:00
fOmey
4974b50a7f RGB matrix backlight mapping and fixes (#16231) 2022-02-06 08:55:35 -08:00
Desprez Jean-Marc
5a0e129f11 [Bug] Fix layer_state restoration at end of dynamic macro feature (#16230) 2022-02-06 08:55:16 -08:00
QMK Bot
89cc668b73 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 15:57:43 +00:00
Elliot Powell
4fb6eb7253 [Keyboard] Add Support for KeebsForAll Freebird Numpads (#16046)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-06 07:57:16 -08:00
QMK Bot
1dce1f90d7 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 15:57:08 +00:00
evanmcook
4c9c7b9963 [Keyboard] added evancook.audio tenpad macropad (#16189)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-06 07:56:36 -08:00
QMK Bot
ff7274fe9a Merge remote-tracking branch 'origin/master' into develop 2022-02-06 15:55:29 +00:00
4pplet
ea116b785b [Keyboard] Waffling60 Revision C (#16191)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: 4pplet <4pplet@protonmail.com>
Co-authored-by: 4pplet <stefan.ess@gmail.com>
2022-02-06 07:54:56 -08:00
QMK Bot
49d5d13148 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 05:18:37 +00:00
yiancar
095f0bfe02 [Keyboard] Mnk75 (#15879)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2022-02-05 21:18:10 -08:00
QMK Bot
1aa9328200 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 05:17:07 +00:00
peepeetee
de1417b660 move @qpocket 's keyboards to qpocket/ (#15827) 2022-02-05 21:16:47 -08:00
Albert Y
7a0b07f84b [Docs] RGB documentation formatting corrections (#15826) 2022-02-05 21:16:36 -08:00
peepeetee
38e085df87 move input club keyboards into vendor folder (#15788) 2022-02-05 21:16:21 -08:00
QMK Bot
10fa737ab8 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 04:58:43 +00:00
Boris Churzin
88a22268eb [Keyboard] oryx rules.mk rgblight (#16229)
Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>
2022-02-05 20:58:15 -08:00
QMK Bot
a7c403fb09 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 04:54:14 +00:00
James Young
317252612f Noxary Valhalla: refactor LAYOUT_all, add QMK Configurator data (#16241) 2022-02-05 20:53:51 -08:00
QMK Bot
9e65b23adc Merge remote-tracking branch 'origin/master' into develop 2022-02-06 04:53:35 +00:00
James Young
ac6283e836 KBDfans KBD19x: add LAYOUT_iso (#16240) 2022-02-05 20:53:07 -08:00
QMK Bot
ad4f954b66 Merge remote-tracking branch 'origin/master' into develop 2022-02-06 04:08:13 +00:00
James Young
afb198f49d Cutie Club x Keebcats Dougal: add LAYOUT_65_ansi and LAYOUT_65_iso (#16239) 2022-02-05 20:07:39 -08:00
QMK Bot
f440732ff2 Merge remote-tracking branch 'origin/master' into develop 2022-02-05 17:02:37 +00:00
HorrorTroll
ee67cdfeec [Keyboard] Add Paws 60 keyboard (#16204) 2022-02-05 09:01:58 -08:00
Dasky
b1debfb12f Remove default pointing device driver. (#16190)
* remove custom as default

* add missing pointing_device_driver to rules.mk

* Update docs
2022-02-05 14:29:15 +00:00
QMK Bot
065f6eeb4e Merge remote-tracking branch 'origin/master' into develop 2022-02-05 14:28:11 +00:00
Michał Szczepaniak
df37125755 Add macroboard(5x6 OLKB blackpill) keyboard (#16219)
* Add macroboard keyboard

* Fix issues requested in pull request

* Removed halconf/mcuconf and moved to handwired directory

* Added description, enabled bootmagic, disabled console

* Apply suggestions from code review

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-05 14:27:41 +00:00
QMK Bot
80dbdb2a61 Merge remote-tracking branch 'origin/master' into develop 2022-02-05 11:45:18 +00:00
IskandarMa
10fda3ec8e [Docs] feature: mouse keys, fix misused wording (#16226) 2022-02-05 11:44:48 +00:00
Ryan
3facf05324 Add custom to list of valid bootloader types in info.json (#16228) 2022-02-05 11:43:22 +00:00
Ryan
f4f3bf81c7 Add missing BOOTLOADER for a handful of boards (#16225) 2022-02-05 16:55:24 +11:00
Dasky
e16dd1bcc0 add version.h to gitignore (#16222) 2022-02-04 19:23:27 -08:00
Adam Lickel
eb8ace0855 RGB Matrix: Reload from EEPROM (#15923)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2022-02-04 19:08:48 -08:00
QMK Bot
119cadbaae Merge remote-tracking branch 'origin/master' into develop 2022-02-05 03:07:32 +00:00
Kyrre Havik
719881c2ee [Keyboard] Add Xenon keyboard (#15915)
Co-authored-by: Sam Mohr <smores56@users.noreply.github.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-02-04 19:06:49 -08:00
QMK Bot
80db7668da Merge remote-tracking branch 'origin/master' into develop 2022-02-05 01:59:35 +00:00
Lalit Maganti
1febea8d4b [Keymap] add LalitMaganti GMMK Pro Keymap (#16203)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-02-04 17:59:08 -08:00
Nick Brassel
d31dd6d2a0 Followup to #16220, more test error output. (#16221) 2022-02-05 12:51:23 +11:00
QMK Bot
28fbcac6c9 Merge remote-tracking branch 'origin/master' into develop 2022-02-05 01:50:54 +00:00
James Young
904d5f14f5 Studio Kestra Galatea: add (#16218) 2022-02-04 17:50:27 -08:00
Nick Brassel
e987ce1652 Standardise error output. (#16220) 2022-02-04 17:32:31 -08:00
QMK Bot
45406c0ca2 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 23:09:00 +00:00
James Young
f8376d2a37 Bathroom Epiphanies Ghost Squid: add QMK Configurator data (#16212) 2022-02-05 10:08:23 +11:00
Thomas Weißschuh
f1cd2a5a89 ChibiOS: add support for HID Programmable Buttons (#15787)
* ChibiOS: add support for HID Programmable Buttons

Fixes #15596

* Enable SHARED_ENDPOINT when PROGRAMMABLE_BUTTON is enabled

The Programmable Button driver expects the shared EP to be enabled.
So enforce this invariant.
2022-02-04 22:25:57 +00:00
QMK Bot
5b31e97187 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 21:23:22 +00:00
Xelus22
8d5375d08b [Bug] fix Pachi RGB Rev2 RGB positioning (#16182) 2022-02-04 13:22:53 -08:00
QMK Bot
0844b0d9bd Merge remote-tracking branch 'origin/master' into develop 2022-02-04 21:20:21 +00:00
jack
16d53fa1c7 [Keymap] Fix OLED font path in default Rhymestone keymap (#16197) 2022-02-04 13:19:46 -08:00
QMK Bot
b4dba89dc4 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 21:19:15 +00:00
Ian McLinden
c067d374d7 [Keyboard] Add VIA keymap to AMAG23 (#16206) 2022-02-04 13:19:12 -08:00
TerryMathews
13821fdbd7 [Keyboard] TKC Portico75 (#15114)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jael're <drashna@live.com>
2022-02-04 13:18:42 -08:00
QMK Bot
a72f4346ce Merge remote-tracking branch 'origin/master' into develop 2022-02-04 21:15:50 +00:00
IskandarMa
f52cc210b8 [Docs] feature_macro.md: minor formatting fix (#16205) 2022-02-05 08:15:21 +11:00
Nick Brassel
8fd8b2dc92 Skip categorisation of PR if it's only for code formatting. (#16215) 2022-02-05 07:36:57 +11:00
QMK Bot
0c0aa6a0ae Merge remote-tracking branch 'origin/master' into develop 2022-02-04 20:35:49 +00:00
James Young
7540a80341 MTBKeys MTB60 Solder Layout Macro Refactor (#16195) 2022-02-04 12:35:17 -08:00
QMK Bot
ec9147f069 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 20:34:55 +00:00
James Young
ca46abdc38 FJLabs 7V Hotswap: refactor LAYOUT_75_all macro (#16213) 2022-02-04 12:34:34 -08:00
James Young
9fe0842b6d Meow65: rename LAYOUT to LAYOUT_65_ansi_blocker (#16214) 2022-02-04 12:34:16 -08:00
QMK Bot
e83aa78357 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 19:36:04 +00:00
James Young
0a40916845 MechanicKeys Mini Ashen 40: refactor LAYOUT macro (#16192)
* info.json: apply friendly formatting

* move Backspace argument/keycode to top row

* info.json: correct maintainer field
2022-02-04 11:35:29 -08:00
QMK Bot
b4ceefde37 Format code according to conventions (#16211) 2022-02-04 19:23:30 +00:00
Albert Y
6a35788b63 [Core] Add Pixel Flow RGB matrix effect (#15829)
* Initial PIXEL FLOW matrix effect commit

* Commit suggested use of rgb_matrix_check_finished_leds

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

* Code change support for split RGB

Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2022-02-05 05:58:16 +11:00
QMK Bot
578d3f6951 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 18:57:58 +00:00
QMK Bot
f2384d062b Merge remote-tracking branch 'origin/master' into develop 2022-02-04 18:56:47 +00:00
Joel Challis
135c935990 Initial migration of suspend callbacks (#16067)
* Initial migration of suspend logic

* Add header
2022-02-05 05:10:00 +11:00
Sergey Vlasov
580ef6d88f ChibiOS timer fixes (#16017)
* chibios/timer: Move the 16-bit timer handling into a separate function

Extract the code which effectively makes a 32-bit tick counter from a
possibly 16-bit ChibiOS system timer into a separate function.  Does
not really change the behavior of the timer API, but makes the actions
done in `timer_clear()` and `timer_read32()` more obvious.

* chibios/timer: Rename some variable to better reflect their role

* chibios/timer: Fix 32-bit tick counter overflow handling

The QMK timer API implementation for ChibiOS used a 32-bit tick counter
(obtained from the ChibiOS system timer) and then converted the value to
milliseconds to produce the timer value for QMK.  However, the frequency
of the ChibiOS timer is above 1000 Hz in most cases (values of 10000 Hz
or even 100000 Hz are typically used), and therefore the 32-bit tick
counter was overflowing and wrapping around much earlier than expected
(after about 5 days for 10000 Hz, or about 12 hours for 100000 Hz).
When this wraparound happened, the QMK timer value was jumping back to
zero, which broke various code dealing with timers (e.g., deferred
executors).

Just making the tick counter 64-bit to avoid the overflow is not a good
solution, because the ChibiOS code which performs the conversion from
ticks to milliseconds may encounter overflows when handling a 64-bit
value.  Adjusting just the value converted to milliseconds to account
for lost 2**32 ticks is also not possible, because 2**32 ticks may not
correspond to an integer number of milliseconds.  Therefore the tick
counter overflow is handled as follows:

  - A reasonably large number of ticks (the highest multiple of the
    ChibiOS timer frequency that fits into uint32_t) is subtracted from
    the tick counter, so that its value is again brought below 2**32.
    The subtracted value is chosen so that it would correspond to an
    integer number of seconds, therefore it could be converted to
    milliseconds without any loss of precision.

  - The equivalent number of milliseconds is then added to the converted
    QMK timer value, so that the QMK timer continues to count
    milliseconds as it was before the tick counter overflow.

* chibios/timer: Add a virtual timer to make 16-bit timer updates more reliable

The code which extends the 16-bit ChibiOS system timer to a 32-bit tick
counter requires that it is called at least once for every overflow of
the system timer (otherwise the tick counter can skip one or more
overflow periods).  Normally this requirement is satisfied just from
various parts of QMK code reading the current timer value; however, in
some rare circumstances the QMK code may be blocked waiting for some
event, and when this situation is combined with having a rather high
timer frequency, this may result in improper timekeeping.

Enhance the timer reliability by adding a ChibiOS virtual timer which
invokes a callback every half of the timer overflow period.  The virtual
timer callback can be invoked even when the normal QMK code is blocked;
the only requirement is that the timer interrupts are enabled, and the
ChibiOS kernel is not locked for an excessive time (but the timer update
will eventually work correctly if the virtual timer handling is not
delayed by more than a half of the timer overflow period).

Keeping a virtual timer always active also works around a ChibiOS bug
that can manifest with a 16-bit system timer and a relatively high timer
frequency: when all active virtual timers have delays longer than the
timer overflow period, the handling of virtual timers stops completely.
In QMK this bug can result in a `wait_ms()` call with a delay larger
than the timer overflow period just hanging indefinitely.  However, when
the timer update code adds a virtual timer with a shorter delay, all
other virtual timers are also handled properly.
2022-02-05 05:08:50 +11:00
Joel Challis
8927d56606 Update outputselect to use platform connected state API (#16185) 2022-02-04 09:55:58 -08:00
QMK Bot
e212c7c2e5 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 17:46:59 +00:00
QMK Bot
5178f75475 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 16:00:17 +00:00
QMK Bot
d966b39c5d Merge remote-tracking branch 'origin/master' into develop 2022-02-04 04:32:58 +00:00
QMK Bot
249280cac2 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 03:45:30 +00:00
Nick Brassel
db43e45077 Ensure version.h is recreated each build. (#16188) 2022-02-04 07:36:02 +11:00
QMK Bot
57a78b68de Merge remote-tracking branch 'origin/master' into develop 2022-02-03 10:19:27 +00:00
Nick Brassel
0be2eaf174 Create a build error if no bootloader is specified. (#16181)
* Create a build error if no bootloader is specified.

* Update builddefs/bootloader.mk

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-03 19:22:49 +11:00
QMK Bot
0d7ff026b1 Merge remote-tracking branch 'origin/master' into develop 2022-02-02 21:09:21 +00:00
QMK Bot
24da0457f8 Merge remote-tracking branch 'origin/master' into develop 2022-02-02 16:22:19 +00:00
QMK Bot
96dbbc0439 Format code according to conventions (#16169) 2022-02-02 16:25:32 +11:00
Nick Brassel
1bdc1c23c7 Fixup builds so that teensy EEPROM knows which MCU it's targeting. (#16168) 2022-02-02 16:21:07 +11:00
QMK Bot
593704b7a7 Merge remote-tracking branch 'origin/master' into develop 2022-02-02 05:05:53 +00:00
QMK Bot
9aed323aa0 Merge remote-tracking branch 'origin/master' into develop 2022-02-02 05:05:18 +00:00
Drashna Jaelre
d4dc743a85 Fix issues with Python Tests (#16162)
* Reformat python due to yapf changes

* Fix pytest keymap list test

* revert formatting

* Use contra, because, well

https://www.reddit.com/r/MechanicalKeyboards/comments/8riofq/did_i_kill_my_contra/
2022-02-02 15:44:42 +11:00
Nick Brassel
d6d48aa2aa Remove old .gitignore entry. Add more macOS junk exclusions. (#16167) 2022-02-02 15:36:37 +11:00
QMK Bot
74420c9fa2 Merge remote-tracking branch 'origin/master' into develop 2022-02-02 04:33:01 +00:00
QMK Bot
7d38aec3ac Merge remote-tracking branch 'origin/master' into develop 2022-02-02 04:31:44 +00:00
Nick Brassel
6e2b03cf69 Fixup multibuild filegen (#16166)
* Add env variable support to multibuild.

* Generate version.h in build-specific location.
2022-02-02 15:30:22 +11:00
Nick Brassel
e22efc037a Don't make EEPROM size assumptions with dynamic keymaps. (#16054)
* Don't make EEPROM size assumptions with dynamic keymaps.

* Add support for checking against emulated flash, error out if someone attempts to build a board without specifying EEPROM size.

* Reorder defines so that MCU is considered last.

* Refactor EEPROM definitions for simplicity.

* Fix max sizing of kabedon/kabedon980.

* Fix max sizing of mechlovin/olly/jf.

* Fix unit tests.

* Review comments, add messages with values during build failures.
2022-02-02 15:04:37 +11:00
peepeetee
da5cb5fd6f [Keyboard] move woodkeys.click keyboards to /woodkeys (#16113) 2022-01-31 20:44:28 -08:00
peepeetee
984481ff8e [Keyboard] move @drhigsby 's boards into /drhigsby (#16041) 2022-01-31 20:36:16 -08:00
QMK Bot
3b580de023 Merge remote-tracking branch 'origin/master' into develop 2022-02-01 02:59:00 +00:00
peepeetee
a2cfa23baf [Keyboard] move @vuhopkep 's keebs into /hnahkb (#16102) 2022-01-31 18:13:33 -08:00
peepeetee
d9238b7baf [Keyboard] fix missed .noci in reviung move (#16107) 2022-01-31 18:13:13 -08:00
peepeetee
b8deac707e [Keyboard] move @tominabox1 's keebs into /tominabox1 (#16109) 2022-01-31 18:12:57 -08:00
peepeetee
1477440ba0 [Keyboard] move niu_mini to /kbdfans (#16112) 2022-01-31 18:12:39 -08:00
QMK Bot
735fb8a8b6 Merge remote-tracking branch 'origin/master' into develop 2022-02-01 02:11:34 +00:00
peepeetee
8515d12e20 [Keyboard] move @omkbd 's boards to /omkbd (#16116) 2022-01-31 18:11:18 -08:00
QMK Bot
658d211804 Merge remote-tracking branch 'origin/master' into develop 2022-02-01 02:08:56 +00:00
QMK Bot
e4afd371dc Merge remote-tracking branch 'origin/master' into develop 2022-02-01 02:08:02 +00:00
QMK Bot
97ee1c0aee Merge remote-tracking branch 'origin/master' into develop 2022-02-01 02:06:00 +00:00
QMK Bot
d36c245400 Merge remote-tracking branch 'origin/master' into develop 2022-02-01 00:29:19 +00:00
XScorpion2
a33dcb5a9a Small fix for Sol 3 brightness limits (#16157) 2022-02-01 00:10:46 +00:00
QMK Bot
1571f8e258 Merge remote-tracking branch 'origin/master' into develop 2022-01-31 21:31:58 +00:00
peepeetee
84b7fc364d [Keyboard] move @takai 's keyboards into /recompile_keys (#16053) 2022-01-31 11:52:01 -08:00
peepeetee
ae705e3e55 [Keyboard] move @ka2hiro 's boards into /kagizaraya (#16070) 2022-01-31 11:48:51 -08:00
peepeetee
3fefaf7f6b [Keyboard] move @GlenPickle 's chimera* boards into a folder (#16072) 2022-01-31 11:47:38 -08:00
peepeetee
6cb0e8924b [Keyboard] move @yynmt 's boards into /yynmt (#16075) 2022-01-31 11:46:08 -08:00
peepeetee
2427678f7d [Keyboard] move @Biacco42 's keebs into /biacco42 (#16080) 2022-01-31 11:44:45 -08:00
peepeetee
2e052b87c4 [Keyboard] move unikeyboard boards to /unikeyboard (#16081) 2022-01-31 11:42:53 -08:00
QMK Bot
4452be587b Merge remote-tracking branch 'origin/master' into develop 2022-01-31 19:40:44 +00:00
QMK Bot
781cdde288 Merge remote-tracking branch 'origin/master' into develop 2022-01-31 19:35:14 +00:00
QMK Bot
d1e1f95975 Merge remote-tracking branch 'origin/master' into develop 2022-01-31 19:32:13 +00:00
QMK Bot
8116b2a15c Merge remote-tracking branch 'origin/master' into develop 2022-01-31 11:16:45 +00:00
QMK Bot
14c1bd3b93 Merge remote-tracking branch 'origin/master' into develop 2022-01-31 01:27:07 +00:00
QMK Bot
8ad59ec127 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 23:11:13 +00:00
QMK Bot
4297f0669b Merge remote-tracking branch 'origin/master' into develop 2022-01-30 23:10:15 +00:00
QMK Bot
fc74d6b8d9 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 23:08:10 +00:00
Nick Brassel
9af9af73f4 Fix up default folder locations. (#16135) 2022-01-30 21:48:05 +00:00
Drashna Jaelre
d1cf218b9d [Keyboard] Overhaul Tractyl Manuform (#16134) 2022-01-30 13:29:43 -08:00
Drashna Jael're
b57f8a8b9f Merge remote-tracking branch 'origin/master' into develop 2022-01-30 13:23:13 -08:00
QMK Bot
1be1bebc04 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 19:29:29 +00:00
peepeetee
a1b39e6db2 [Keyboard] move That-Canadian 's boards into /maple_computing (#16050) 2022-01-30 11:28:04 -08:00
peepeetee
07bb65384c [Keyboard] move @kkatano 's keyboards to kkatano user folder (#15684) 2022-01-30 11:22:12 -08:00
peepeetee
51e99b562d [Keyboard] move @monksoffunk 's boards into 25keys/ (#15789) 2022-01-30 11:17:04 -08:00
QMK Bot
211533c738 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 19:13:37 +00:00
QMK Bot
b4f124c78c Merge remote-tracking branch 'origin/master' into develop 2022-01-30 19:06:54 +00:00
QMK Bot
2d23516462 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 19:00:54 +00:00
QMK Bot
56623a6224 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 18:59:30 +00:00
peepeetee
566f6e7b76 [Keyboard] move @matthewdias 's keebs into matthewdias/ (#15991) 2022-01-30 10:58:40 -08:00
Vino Rodrigues
cad8866db1 Add support for Q-series on the ckled2001 LED driver (#16051) 2022-01-30 10:56:54 -08:00
QMK Bot
3f7da15bba Merge remote-tracking branch 'origin/master' into develop 2022-01-30 18:53:06 +00:00
mmccoyd
cffc3fcce5 [Keyboard] Re-org Hillside folders and fix default keymap (#16128)
Co-authored-by: mmccoyd <mmccoyd@cs.berkley.edu>
2022-01-30 10:53:01 -08:00
QMK Bot
dc816a98fe Merge remote-tracking branch 'origin/master' into develop 2022-01-30 18:47:30 +00:00
peepeetee
a6a7b1ce8f [Keyboard] move @ibnuda 's keebs into /ibnuda (#16108) 2022-01-30 10:47:26 -08:00
QMK Bot
84c1fcef05 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 18:36:17 +00:00
Ryan
7d685956cc Rename AdafruitBLE to BluefruitLE (#16127) 2022-01-30 17:29:42 +00:00
QMK Bot
9f4769fbe6 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 07:12:22 +00:00
QMK Bot
749fa8b55f Merge remote-tracking branch 'origin/master' into develop 2022-01-29 23:30:10 +00:00
QMK Bot
02dff061db Merge remote-tracking branch 'origin/master' into develop 2022-01-29 23:29:28 +00:00
QMK Bot
b001d9383a Merge remote-tracking branch 'origin/master' into develop 2022-01-29 23:28:42 +00:00
QMK Bot
8696d93e96 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 23:27:35 +00:00
QMK Bot
c969d4ece3 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 21:29:50 +00:00
QMK Bot
86bb162dd3 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 21:17:50 +00:00
QMK Bot
67b001c737 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 18:50:19 +00:00
QMK Bot
6c380e0eb1 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 18:29:10 +00:00
QMK Bot
38de0681ff Merge remote-tracking branch 'origin/master' into develop 2022-01-29 18:28:12 +00:00
QMK Bot
d6abdda34f Merge remote-tracking branch 'origin/master' into develop 2022-01-29 16:06:50 +00:00
QMK Bot
d0faaa9c7c Merge remote-tracking branch 'origin/master' into develop 2022-01-29 14:28:24 +00:00
QMK Bot
b79b8dcdd0 Format code according to conventions (#16110) 2022-01-29 12:25:49 +00:00
Pete Sevander
d700447dda Combo TAP_CODE_DELAY and clear_weak_mods (#15866) 2022-01-28 23:19:36 -08:00
QMK Bot
8c1c377272 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 07:11:11 +00:00
QMK Bot
6991631385 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 07:07:29 +00:00
QMK Bot
20fac523c7 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 07:05:20 +00:00
Ga68
1f59fe6d1b Adjust tap_code16 to account for TAP_HOLD_CAPS_DELAY (#15635)
Co-authored-by: Ga68 <github.ga68.e@grxme.com>
2022-01-28 23:03:21 -08:00
QMK Bot
3e9551bcfa Merge remote-tracking branch 'origin/master' into develop 2022-01-29 06:59:01 +00:00
QMK Bot
aff9eafea5 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 06:43:15 +00:00
QMK Bot
fee5950a5c Merge remote-tracking branch 'origin/master' into develop 2022-01-29 03:28:29 +00:00
QMK Bot
720ccf9559 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 03:27:16 +00:00
QMK Bot
2f5074cf32 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 01:35:09 +00:00
QMK Bot
46e2caea78 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 00:19:53 +00:00
QMK Bot
51ee8965a7 Merge remote-tracking branch 'origin/master' into develop 2022-01-28 23:34:08 +00:00
QMK Bot
99478417ac Merge remote-tracking branch 'origin/master' into develop 2022-01-27 15:57:01 +00:00
QMK Bot
7c4992bce1 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 15:51:25 +00:00
QMK Bot
59f9703224 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 15:42:37 +00:00
QMK Bot
f25977bcd4 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 15:37:50 +00:00
QMK Bot
2ab685565a Merge remote-tracking branch 'origin/master' into develop 2022-01-27 14:50:48 +00:00
QMK Bot
5ee29dc000 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 14:49:24 +00:00
QMK Bot
799de75b8b Merge remote-tracking branch 'origin/master' into develop 2022-01-27 05:16:34 +00:00
Stefan Kerkmann
be59e8af2b Deprecate split transactions status field (#16023) 2022-01-26 21:13:27 -08:00
QMK Bot
ed8ab3e32c Merge remote-tracking branch 'origin/master' into develop 2022-01-27 05:13:11 +00:00
QMK Bot
2df420f1f4 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 05:02:08 +00:00
Joel Challis
6a9ec74b32 Remove unused suspend_idle (#16063) 2022-01-26 14:57:28 -08:00
QMK Bot
9e5f8983ec Merge remote-tracking branch 'origin/master' into develop 2022-01-26 22:01:51 +00:00
Dasky
7b31fc54df Enable a default task throttle for split pointing. (#15925) 2022-01-26 19:24:29 +00:00
QMK Bot
c99cbd915f Merge remote-tracking branch 'origin/master' into develop 2022-01-26 19:23:51 +00:00
Ryan
4f6c0d0ea5 More keyboard rules.mk cleanups (#16044)
* More keyboard rules.mk cleanups

* Found a couple more
2022-01-25 20:21:08 +00:00
QMK Bot
44e62a3634 Merge remote-tracking branch 'origin/master' into develop 2022-01-25 13:43:25 +00:00
QMK Bot
efbfd30318 Merge remote-tracking branch 'origin/master' into develop 2022-01-25 13:41:28 +00:00
Joel Challis
2da12182f3 Fix handwired/ms_sculpt_mobile default keymap (#16032) 2022-01-25 13:10:51 +00:00
Joel Challis
7df371750f Workaround in Makefile for recursive rule matching (#15988)
* Bodge for recursive rule matching

* Bodge for recursive rule matching - force python3

* Tidy up
2022-01-25 11:50:35 +11:00
Nick Brassel
5f23345886 Add a script that simplifies running commands under docker. (#16028) 2022-01-24 23:58:53 +00:00
Joel Challis
bf9569db93 Various Makefile optimisations (#16015) 2022-01-24 23:54:56 +00:00
Ryan
c71c0fba90 Fix bootloader_jump for certain CTRL boards (#16026) 2022-01-25 09:28:13 +11:00
Joel Challis
5249a606f1 Fix up issue with PROGMEM and hand_swap_config (#16027) 2022-01-24 22:20:08 +00:00
Ryan
1d11ae3087 Rip out old macro and action_function system (#16025)
* Rip out old macro and action_function system

* Update quantum/action_util.c

Co-authored-by: Joel Challis <git@zvecr.com>
2022-01-24 21:22:20 +00:00
QMK Bot
3340ca46e8 Merge remote-tracking branch 'origin/master' into develop 2022-01-24 15:58:34 +00:00
Nick Brassel
8f22819d47 Default EEPROM implementation should be transient when not implemented. Removed the equivalent eeprom_teensy fallback. (#16020) 2022-01-24 14:18:05 +00:00
QMK Bot
489c5ff4a2 Merge remote-tracking branch 'origin/master' into develop 2022-01-24 01:37:57 +00:00
QMK Bot
939006d2e5 Merge remote-tracking branch 'origin/master' into develop 2022-01-24 01:33:44 +00:00
QMK Bot
95321fbc2c Merge remote-tracking branch 'origin/master' into develop 2022-01-23 22:15:53 +00:00
Nick Brassel
77062e9a36 Add L432, L442. (#16016) 2022-01-24 08:49:36 +11:00
QMK Bot
0f53e1333f Merge remote-tracking branch 'origin/master' into develop 2022-01-23 20:38:05 +00:00
Drashna Jaelre
8776b4b088 [Keyboard] Fix erroneous SRC for Clueboard 66 hotswap (#16007) 2022-01-23 15:10:59 +00:00
Joel Challis
a8700404f7 Relocate matrix_init_quantum content (#15953)
* Relocate matrix_init_quantum content

* Update include order

* Fix cherry pick from 15722
2022-01-23 02:41:57 +00:00
Drashna Jaelre
8101a836a4 [Bug] Fix compilation issues for led indicators (#16001) 2022-01-22 23:43:39 +00:00
Joel Challis
eddd1c0567 Fix BACKLIGHT_CAPS_LOCK warning (#15999)
* Fix BACKLIGHT_CAPS_LOCK warning

* align defs
2022-01-22 23:11:42 +00:00
Joel Challis
6e83b44940 Align location of some host led logic (#15954)
* Align location of host led logic

* Move more

* align ifdefs

* Fix up includes

* Move callback defs

* Convert comment to build message
2022-01-22 21:17:02 +00:00
Ryan
448a90f6b0 rocketboard_16: Fix mismatched LUT sizes (#15997) 2022-01-23 06:56:44 +11:00
Ryan
8ec18d1476 Remove action_function() from LFKeyboards boards (#15993) 2022-01-22 18:24:02 +00:00
QMK Bot
4ef11f0905 Merge remote-tracking branch 'origin/master' into develop 2022-01-22 15:04:17 +00:00
QMK Bot
8863e1f696 Merge remote-tracking branch 'origin/master' into develop 2022-01-22 10:26:24 +00:00
QMK Bot
82c194f86c Merge remote-tracking branch 'origin/master' into develop 2022-01-22 06:16:20 +00:00
Ryan
c587df3b66 Fix build failures for mschwingen/modelm (#15987) 2022-01-22 06:12:34 +00:00
QMK Bot
372f2b76aa Merge remote-tracking branch 'origin/master' into develop 2022-01-22 06:12:22 +00:00
Ryan Hausen
489475814a fixed typo in orange HSV colors decalartion (#15976) 2022-01-22 06:12:14 +00:00
Albert Y
fed36fc5f8 Adjust mouse key defaults (#15883) 2022-01-21 22:09:44 -08:00
QMK Bot
833f8db838 Merge remote-tracking branch 'origin/master' into develop 2022-01-22 06:09:28 +00:00
QMK Bot
e137e39911 Merge remote-tracking branch 'origin/master' into develop 2022-01-22 05:57:32 +00:00
QMK Bot
b91efb896d Merge remote-tracking branch 'origin/master' into develop 2022-01-22 05:55:41 +00:00
QMK Bot
72dc5d5862 Merge remote-tracking branch 'origin/master' into develop 2022-01-22 05:32:01 +00:00
Drashna Jaelre
909003cce9 [Bug] Fix hack for chibiOS reset name (#15984) 2022-01-22 04:59:19 +00:00
QMK Bot
3a27f065b7 Merge remote-tracking branch 'origin/master' into develop 2022-01-22 04:27:26 +00:00
Drashna Jael're
102cec8241 Merge remote-tracking branch 'origin/master' into develop 2022-01-21 20:11:30 -08:00
XScorpion2
ad702096a9 [Keyboard] Sol 3 Keyboard from RGBKB (#15687)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Franklyn Tackitt <franklyn@tackitt.net>
2022-01-21 19:51:12 -08:00
Ryan
b45a037c7e Rename some Quantum keycodes (#15968)
* Rename some Quantum keycodes

* Tweak EEPROM clear and debug keycode short aliases
2022-01-22 03:34:15 +00:00
QMK Bot
c7f477bc59 Merge remote-tracking branch 'origin/master' into develop 2022-01-21 15:49:13 +00:00
QMK Bot
2f5c70e834 Merge remote-tracking branch 'origin/master' into develop 2022-01-21 14:18:11 +00:00
QMK Bot
be6a4745ae Merge remote-tracking branch 'origin/master' into develop 2022-01-21 01:30:48 +00:00
QMK Bot
ecfa4172d0 Merge remote-tracking branch 'origin/master' into develop 2022-01-20 23:20:58 +00:00
QMK Bot
c9866313a7 Merge remote-tracking branch 'origin/master' into develop 2022-01-20 23:20:26 +00:00
QMK Bot
edf9d33e61 Merge remote-tracking branch 'origin/master' into develop 2022-01-20 20:14:40 +00:00
QMK Bot
fe1f53ce8f Merge remote-tracking branch 'origin/master' into develop 2022-01-20 20:12:20 +00:00
QMK Bot
36b7a13be9 Merge remote-tracking branch 'origin/master' into develop 2022-01-20 17:25:31 +00:00
Drashna Jaelre
6ebb44f17e [Bug][Core] Fix optical sensor firmware upload (#15919) 2022-01-20 09:23:16 -08:00
QMK Bot
24324378a8 Merge remote-tracking branch 'origin/master' into develop 2022-01-19 20:54:25 +00:00
Joel Challis
d840ef2b28 Relocate matrix_scan_quantum tasks (#15882)
* Move matrix_scan_quantum tasks

* Fix tests

* Fix up missing refs
2022-01-19 17:38:48 +00:00
Ryan
dcb0c4e51e Add example implementations for compatible MCUs list (#15935)
* Add example implementations for compatible MCUs list

* Update docs/compatible_microcontrollers.md

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

Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-01-19 20:34:59 +11:00
QMK Bot
bb75c10e28 Merge remote-tracking branch 'origin/master' into develop 2022-01-19 00:21:45 +00:00
QMK Bot
3a01f51063 Merge remote-tracking branch 'origin/master' into develop 2022-01-19 00:19:22 +00:00
QMK Bot
b825af0728 Merge remote-tracking branch 'origin/master' into develop 2022-01-18 18:25:03 +00:00
QMK Bot
9a65cc39da Merge remote-tracking branch 'origin/master' into develop 2022-01-17 19:01:26 +00:00
QMK Bot
fb65f07832 Merge remote-tracking branch 'origin/master' into develop 2022-01-17 14:12:32 +00:00
Ryan
c72ed7c024 CLI: Parse USB device version BCD (#14580)
* CLI: Parse USB device version BCD

* Apply suggestions
2022-01-17 08:44:34 +11:00
Nick Brassel
557fbbd6af Yet another bad DEFAULT_FOLDER fix. (#15904) 2022-01-16 20:12:58 +00:00
peepeetee
217ad5cfc0 move yd60mq to ymdk vendor folder (#15647) 2022-01-17 07:01:00 +11:00
QMK Bot
6a723c3571 Merge remote-tracking branch 'origin/master' into develop 2022-01-16 19:59:22 +00:00
QMK Bot
069e232bab Merge remote-tracking branch 'origin/master' into develop 2022-01-16 19:54:12 +00:00
peepeetee
15290f4366 rename idobo to idobao/id75, move to vendor folder (#15661)
* rename idobo to idobao/id75, move to vendor folder

* add image, amend readme to id75

* add buying link
2022-01-17 06:53:11 +11:00
Albert Y
1d3c2ceded Add init function to clear previous effect (#15815) 2022-01-17 06:48:09 +11:00
QMK Bot
33384a3663 Merge remote-tracking branch 'origin/master' into develop 2022-01-15 20:23:36 +00:00
QMK Bot
02637ec350 Merge remote-tracking branch 'origin/master' into develop 2022-01-15 07:51:29 +00:00
QMK Bot
9cd2024814 Merge remote-tracking branch 'origin/master' into develop 2022-01-15 07:28:32 +00:00
QMK Bot
b8dbebec2d Merge remote-tracking branch 'origin/master' into develop 2022-01-15 07:27:06 +00:00
QMK Bot
f07ea255a9 Merge remote-tracking branch 'origin/master' into develop 2022-01-15 05:49:44 +00:00
Dasky
08a42dc72c Fix broken bootloader builds in develop. (#15880) 2022-01-15 01:04:58 +00:00
QMK Bot
77eae62d62 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 19:06:58 +00:00
QMK Bot
90f2a03895 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 18:58:43 +00:00
QMK Bot
71a9384f49 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 14:48:10 +00:00
QMK Bot
cfc136f198 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 14:47:32 +00:00
QMK Bot
b7fb5f9987 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:42:48 +00:00
QMK Bot
fba519116d Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:41:11 +00:00
QMK Bot
a7e1de81ff Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:38:56 +00:00
QMK Bot
85743b9f32 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:38:08 +00:00
QMK Bot
7b75aa1818 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:34:21 +00:00
QMK Bot
15d385a862 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 21:56:21 +00:00
QMK Bot
c93dc153f1 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 20:44:40 +00:00
QMK Bot
66ef608726 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 19:58:56 +00:00
QMK Bot
7cbada6902 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 19:03:21 +00:00
QMK Bot
c02be0012e Merge remote-tracking branch 'origin/master' into develop 2022-01-13 19:01:15 +00:00
QMK Bot
354eedae7a Merge remote-tracking branch 'origin/master' into develop 2022-01-13 18:59:54 +00:00
QMK Bot
0d88d277e4 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 17:20:41 +00:00
QMK Bot
5c3f3e8332 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 17:19:05 +00:00
peepeetee
50baf28386 move winry25tc to winry/ (#15637) 2022-01-13 09:18:56 -08:00
QMK Bot
3f5d47eae8 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 17:17:06 +00:00
QMK Bot
856f49cf48 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 17:16:47 +00:00
QMK Bot
4f79b57774 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 17:16:06 +00:00
QMK Bot
3058bf0f83 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 12:48:06 +00:00
QMK Bot
2b1f97dcc2 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 05:00:26 +00:00
Alabastard-64
a8482a4424 PMW3389 Revert Firmware load during Initilization (#15859) 2022-01-13 02:51:05 +00:00
QMK Bot
bd2af5c556 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 02:39:15 +00:00
QMK Bot
69e4c18153 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 02:29:55 +00:00
QMK Bot
2609c49731 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 02:14:13 +00:00
Drashna Jael're
4eb284ef8d [Keyboard] Fix suihankey/split 2022-01-12 15:18:06 -08:00
QMK Bot
b554d8d336 Merge remote-tracking branch 'origin/master' into develop 2022-01-12 23:06:54 +00:00
QMK Bot
8b188e060c Merge remote-tracking branch 'origin/master' into develop 2022-01-12 23:05:58 +00:00
peepeetee
ddc6601487 move id67 (#15662) 2022-01-12 14:50:00 -08:00
QMK Bot
88630d4913 Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:21:43 +00:00
QMK Bot
96209d7eba Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:16:17 +00:00
peepeetee
92b2738bbb move @kakunpc 's keebs into kakunpc/ (#15814)
Co-authored-by: kakunpc <15257475+kakunpc@users.noreply.github.com>
2022-01-12 14:13:45 -08:00
QMK Bot
5eb7eee560 Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:12:06 +00:00
QMK Bot
99706e038b Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:11:30 +00:00
QMK Bot
cf954bbfd0 Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:10:48 +00:00
QMK Bot
6e516ee89f Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:10:08 +00:00
QMK Bot
42a49ba44f Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:09:11 +00:00
QMK Bot
43d18321e3 Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:06:23 +00:00
QMK Bot
58769a40de Merge remote-tracking branch 'origin/master' into develop 2022-01-12 01:08:02 +00:00
Alabastard-64
2842ab4052 Add PMW3389 optical sensor Support (Updated) (#15740)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-01-11 14:33:13 -08:00
QMK Bot
a7eb27b867 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 20:18:21 +00:00
QMK Bot
5e817664ad Merge remote-tracking branch 'origin/master' into develop 2022-01-11 18:09:11 +00:00
QMK Bot
fd98d78cd8 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 18:07:58 +00:00
peepeetee
37d801776e [Keyboard] move @obosob 's boards into obosob/ (#15799) 2022-01-11 10:05:06 -08:00
peepeetee
f0c14507a5 [Keyboard] move @nacly 's boards to nacly/ (#15801) 2022-01-11 10:01:33 -08:00
QMK Bot
80e321f6ab Merge remote-tracking branch 'origin/master' into develop 2022-01-11 17:57:37 +00:00
QMK Bot
aebf17b7e2 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 17:56:03 +00:00
QMK Bot
52acb7dcac Merge remote-tracking branch 'origin/master' into develop 2022-01-11 17:43:47 +00:00
QMK Bot
4187fc7fbb Merge remote-tracking branch 'origin/master' into develop 2022-01-11 03:20:36 +00:00
Nick Brassel
be1dcb9185 Fix CI. (#15828)
* Fix CI.
2022-01-11 14:20:33 +11:00
QMK Bot
012db45bfb Merge remote-tracking branch 'origin/master' into develop 2022-01-11 03:15:35 +00:00
QMK Bot
75bba4522d Merge remote-tracking branch 'origin/master' into develop 2022-01-11 03:12:50 +00:00
QMK Bot
113b0f04bc Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:58:04 +00:00
QMK Bot
dff6f23a1a Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:48:23 +00:00
QMK Bot
461f279883 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:44:04 +00:00
QMK Bot
9b07108fbf Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:39:46 +00:00
QMK Bot
8e1269617a Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:37:16 +00:00
QMK Bot
92ec98d5ce Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:33:20 +00:00
QMK Bot
d4e05f6df3 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:31:53 +00:00
QMK Bot
0b9324f332 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:17:43 +00:00
cedrikl
c20522369b [Keymap] Add another GMMK Pro ANSI Keymap with custom RGB. (#14243)
Co-authored-by: Cedrik Lussier <lussier.cedrik@gmail.com>
2022-01-10 17:15:47 -08:00
QMK Bot
cec35d2399 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:12:40 +00:00
QMK Bot
4b9f73d32e Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:10:03 +00:00
QMK Bot
a760168722 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:09:14 +00:00
QMK Bot
c6277687b4 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:07:56 +00:00
QMK Bot
79f2fca1f9 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:58:16 +00:00
peepeetee
34602f4b25 [Keyboard] move reviung keyboards to a directory (#15636) 2022-01-10 16:57:20 -08:00
peepeetee
2b212cf692 [Keyboard] Rename ymdk_np21 to np21, move to ymdk vendor folder (#15641) 2022-01-10 16:56:59 -08:00
peepeetee
65e7d0c01f [Keyboard] move ymd96 to ymdk vendor folder (#15643) 2022-01-10 16:55:58 -08:00
peepeetee
c08ed73216 [Keyboard] move ymd75 to ymdk vendor folder (#15645) 2022-01-10 16:55:37 -08:00
QMK Bot
db608aae51 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:54:24 +00:00
QMK Bot
bc617d8ad1 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:53:34 +00:00
QMK Bot
a5a3918856 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:51:40 +00:00
QMK Bot
6ed4f51413 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:50:47 +00:00
peepeetee
d7d3839b8d [Keyboard] move ID80 to IDOBAO vendor folder (#15665) 2022-01-10 16:49:50 -08:00
QMK Bot
184f4b38c8 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:49:20 +00:00
QMK Bot
93149711f6 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:45:05 +00:00
QMK Bot
dfecad4362 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:42:28 +00:00
peepeetee
b1942d1d0c [Keyboard] move cu24, cu75, cu80/v1 into capsunlocked folder (#15758) 2022-01-10 16:42:13 -08:00
peepeetee
93bacff1a6 [Keyboard] move prototypist boards into vendor folder (#15780) 2022-01-10 16:40:22 -08:00
peepeetee
36ebc75e9a [Keyboard] move yiancar's boards into yiancardesigns/ (#15781) 2022-01-10 16:39:56 -08:00
peepeetee
a483ab3213 [Keyboard] move novelkeys keyboards to vendor folder (#15783) 2022-01-10 16:39:17 -08:00
peepeetee
ced6d835e8 [Keyboard] move weirdo-f's keyboards into weirdo/ (#15785) 2022-01-10 16:38:55 -08:00
peepeetee
a2ddb44957 [Keyboard] move marksard's boards to marksard/ (#15786) 2022-01-10 16:38:31 -08:00
peepeetee
31a6401193 [Keyboard] move rainkeebs's keyboards to rainkeebs/ (#15797) 2022-01-10 16:35:54 -08:00
peepeetee
ceea8ab5fe [Keyboard] move standaside into edi/ (#15798) 2022-01-10 16:35:23 -08:00
QMK Bot
f10285d800 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 23:06:51 +00:00
peepeetee
aafbe043f9 [Keyboard] move lyso1 's boards into lyso1/ (#15767) 2022-01-10 15:06:37 -08:00
QMK Bot
20e16bbcc4 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 23:05:34 +00:00
peepeetee
e6e6529b4a [Keyboard] move Salicylic-acid3's keyboards to salicylic-acid3/ (#15791) 2022-01-10 15:03:15 -08:00
QMK Bot
4cff18a705 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 23:02:16 +00:00
QMK Bot
1a4db497db Merge remote-tracking branch 'origin/master' into develop 2022-01-10 23:02:04 +00:00
Stefan Kerkmann
5470e4a8ad [Core] ChibiOS: shorten USB disconnect state on boot to 50ms (#15805) 2022-01-10 15:01:20 -08:00
QMK Bot
5d0c92b40c Merge remote-tracking branch 'origin/master' into develop 2022-01-10 23:00:33 +00:00
QMK Bot
e014d9897d Merge remote-tracking branch 'origin/master' into develop 2022-01-10 23:00:06 +00:00
Drashna Jaelre
ec7c3ac12d Optimize initialization of PMW3360 Sensor (#15821) 2022-01-10 14:57:36 -08:00
QMK Bot
2fbdfae4b7 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 20:36:43 +00:00
QMK Bot
017c26c167 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 20:33:24 +00:00
QMK Bot
0b4afdf35b Merge remote-tracking branch 'origin/master' into develop 2022-01-10 20:16:17 +00:00
QMK Bot
371fc8c062 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 19:06:34 +00:00
QMK Bot
d52dca47e8 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 19:00:14 +00:00
Nick Brassel
0c402157fc Advanced deferred_exec for core-side code. (#15579) 2022-01-10 18:26:46 +00:00
QMK Bot
05b6fbb1f5 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 16:23:47 +00:00
QMK Bot
b4b636112e Merge remote-tracking branch 'origin/master' into develop 2022-01-10 10:34:22 +00:00
QMK Bot
5491385f3d Merge remote-tracking branch 'origin/master' into develop 2022-01-10 10:33:15 +00:00
QMK Bot
437dad1b0e Merge remote-tracking branch 'origin/master' into develop 2022-01-10 10:22:38 +00:00
QMK Bot
13a44b1fff Merge remote-tracking branch 'origin/master' into develop 2022-01-10 09:26:59 +00:00
QMK Bot
89260bab86 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 09:14:12 +00:00
QMK Bot
ceab485e58 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 21:17:55 +00:00
QMK Bot
9682abd5b8 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 20:08:56 +00:00
Pete Sevander
21958a9343 New combo configuration options (#15083)
Co-authored-by: precondition <57645186+precondition@users.noreply.github.com>
2022-01-09 12:02:25 -08:00
QMK Bot
69b211abb6 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 19:57:38 +00:00
QMK Bot
78dba27922 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 18:22:39 +00:00
QMK Bot
515eb94fab Merge remote-tracking branch 'origin/master' into develop 2022-01-09 17:45:14 +00:00
QMK Bot
30d060417f Merge remote-tracking branch 'origin/master' into develop 2022-01-09 04:03:19 +00:00
QMK Bot
9578b4b570 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 03:58:05 +00:00
QMK Bot
a1ca14c1e1 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 03:54:14 +00:00
Joel Challis
7562f6644f Slight tidy up of keyboard task loop (#15725) 2022-01-09 03:50:44 +00:00
Leo Deng
82d3bdb733 IS31FL3733 driver for LED Matrix (#15088) 2022-01-08 19:37:03 -08:00
QMK Bot
98078f769d Merge remote-tracking branch 'origin/master' into develop 2022-01-09 03:27:15 +00:00
QMK Bot
de59dd1835 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 02:34:46 +00:00
QMK Bot
e67ac61160 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 02:30:48 +00:00
QMK Bot
a120a166b9 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 01:30:24 +00:00
QMK Bot
687d4772a7 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 00:14:06 +00:00
QMK Bot
fea1a3d5c7 Merge remote-tracking branch 'origin/master' into develop 2022-01-09 00:13:07 +00:00
QMK Bot
6332caef78 Merge remote-tracking branch 'origin/master' into develop 2022-01-08 21:24:33 +00:00
QMK Bot
ff878aa30c Merge remote-tracking branch 'origin/master' into develop 2022-01-08 21:23:13 +00:00
QMK Bot
98aaf7dccd Merge remote-tracking branch 'origin/master' into develop 2022-01-08 21:19:44 +00:00
QMK Bot
86fd95962c Merge remote-tracking branch 'origin/master' into develop 2022-01-08 21:14:01 +00:00
QMK Bot
3c9ddf7c53 Merge remote-tracking branch 'origin/master' into develop 2022-01-08 20:51:03 +00:00
QMK Bot
0a21929928 Merge remote-tracking branch 'origin/master' into develop 2022-01-08 20:33:10 +00:00
QMK Bot
30c201e1c5 Merge remote-tracking branch 'origin/master' into develop 2022-01-08 18:45:13 +00:00
QMK Bot
34dccc565e Merge remote-tracking branch 'origin/master' into develop 2022-01-08 03:23:12 +00:00
QMK Bot
2093498425 Merge remote-tracking branch 'origin/master' into develop 2022-01-07 21:48:28 +00:00
QMK Bot
c3937de310 Merge remote-tracking branch 'origin/master' into develop 2022-01-07 21:31:06 +00:00
QMK Bot
bd63d91163 Merge remote-tracking branch 'origin/master' into develop 2022-01-07 20:21:40 +00:00
QMK Bot
bd07ae6713 Merge remote-tracking branch 'origin/master' into develop 2022-01-07 13:28:14 +00:00
QMK Bot
f9a39775fc Merge remote-tracking branch 'origin/master' into develop 2022-01-07 08:25:25 +00:00
QMK Bot
6e8c3dfafc Merge remote-tracking branch 'origin/master' into develop 2022-01-07 05:25:57 +00:00
QMK Bot
ccd1839443 Merge remote-tracking branch 'origin/master' into develop 2022-01-07 03:07:48 +00:00
QMK Bot
b1c4d3322d Merge remote-tracking branch 'origin/master' into develop 2022-01-07 01:39:11 +00:00
QMK Bot
03f2235bc5 Merge remote-tracking branch 'origin/master' into develop 2022-01-06 23:50:31 +00:00
QMK Bot
eada33b889 Merge remote-tracking branch 'origin/master' into develop 2022-01-06 23:46:19 +00:00
QMK Bot
d5293e1f43 Merge remote-tracking branch 'origin/master' into develop 2022-01-06 23:45:47 +00:00
QMK Bot
005949ff25 Merge remote-tracking branch 'origin/master' into develop 2022-01-06 12:00:55 +00:00
Drashna Jael're
ac466c1571 Merge remote-tracking branch 'origin/master' into develop 2022-01-06 02:01:04 -08:00
Joel Challis
8dbc8a802c Unify the key up/down behaviour of RGB keycodes (#15730) 2022-01-06 18:52:32 +11:00
QMK Bot
2387a95be6 Merge remote-tracking branch 'origin/master' into develop 2022-01-06 07:51:58 +00:00
QMK Bot
ce8e5fb54e Merge remote-tracking branch 'origin/master' into develop 2022-01-06 07:44:56 +00:00
QMK Bot
d0063ea3e9 Merge remote-tracking branch 'origin/master' into develop 2022-01-05 23:39:51 +00:00
QMK Bot
2b975f3f3a Merge remote-tracking branch 'origin/master' into develop 2022-01-05 21:57:10 +00:00
QMK Bot
34592f225a Merge remote-tracking branch 'origin/master' into develop 2022-01-05 20:07:12 +00:00
QMK Bot
49d8d9ebf2 Merge remote-tracking branch 'origin/master' into develop 2022-01-05 20:03:59 +00:00
Ryan
5fb93934d0 Fixes for bootloader refactor build failures (#15638) 2022-01-06 06:55:46 +11:00
QMK Bot
99e11f4823 Merge remote-tracking branch 'origin/master' into develop 2022-01-05 02:11:57 +00:00
QMK Bot
c089541938 Merge remote-tracking branch 'origin/master' into develop 2022-01-03 22:42:47 +00:00
QMK Bot
73e372d920 Merge remote-tracking branch 'origin/master' into develop 2022-01-03 21:55:23 +00:00
QMK Bot
1f1d2ffd29 Merge remote-tracking branch 'origin/master' into develop 2022-01-03 17:08:10 +00:00
QMK Bot
0a3452f307 Merge remote-tracking branch 'origin/master' into develop 2022-01-03 03:26:48 +00:00
QMK Bot
bfc8539d68 Merge remote-tracking branch 'origin/master' into develop 2022-01-03 00:21:07 +00:00
QMK Bot
c32a329583 Format code according to conventions (#15705) 2022-01-02 00:11:49 -08:00
QMK Bot
668e6b8e92 Merge remote-tracking branch 'origin/master' into develop 2022-01-02 08:07:51 +00:00
peepeetee
89f7378569 move @yangdigi 's keyboards to a YDKB folder (#15681) 2022-01-02 00:07:01 -08:00
uqs
8b44eaa63e Update pmw3360 comments to match the datasheet better, fix delays. (#15682) 2022-01-02 00:06:17 -08:00
QMK Bot
367e2bb0ff Merge remote-tracking branch 'origin/master' into develop 2022-01-02 01:39:06 +00:00
QMK Bot
6513e0cea3 Merge remote-tracking branch 'origin/master' into develop 2022-01-01 18:11:31 +00:00
QMK Bot
5fcdff9935 Format code according to conventions (#15693) 2021-12-31 23:46:23 +00:00
Dasky
4fe6f3cd7a Fix split pointing for analog joystick (#15691)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-12-31 15:38:23 -08:00
QMK Bot
cbb51eacb0 Merge remote-tracking branch 'origin/master' into develop 2021-12-31 03:28:18 +00:00
QMK Bot
602b0b14d5 Merge remote-tracking branch 'origin/master' into develop 2021-12-30 04:18:05 +00:00
QMK Bot
dde5cd1c54 Merge remote-tracking branch 'origin/master' into develop 2021-12-29 21:36:08 +00:00
QMK Bot
c8af82432d Merge remote-tracking branch 'origin/master' into develop 2021-12-29 14:15:23 +00:00
Drashna Jaelre
f85b945c32 [Keyboard] Fix compiler issue with tractyl manuform 4x6 (#15646) 2021-12-29 05:54:57 -08:00
Drashna Jaelre
0d02af816b [Keyboard] Update grs_70ec to use newer custom matrix (#15609) 2021-12-29 05:26:28 -08:00
QMK Bot
42caee329f Merge remote-tracking branch 'origin/master' into develop 2021-12-29 13:06:10 +00:00
QMK Bot
6636c21453 Merge remote-tracking branch 'origin/master' into develop 2021-12-29 10:57:52 +00:00
QMK Bot
7d6a7e195c Merge remote-tracking branch 'origin/master' into develop 2021-12-29 10:56:54 +00:00
QMK Bot
967b3b351b Merge remote-tracking branch 'origin/master' into develop 2021-12-29 04:26:09 +00:00
Drashna Jaelre
9d801cb03d [Keyboard] Update Tractyl Manuform to use Split Pointing Device Sync 2021-12-28 20:25:06 -08:00
QMK Bot
db38fb1a60 Merge remote-tracking branch 'origin/master' into develop 2021-12-28 21:01:23 +00:00
QMK Bot
98823ff8fc Merge remote-tracking branch 'origin/master' into develop 2021-12-28 05:13:45 +00:00
QMK Bot
13e8fea023 Merge remote-tracking branch 'origin/master' into develop 2021-12-28 03:35:37 +00:00
yfuku
60b4ee1df3 Move to organization folder (#15481)
* move directory

* fix

* move wings42 to dailycraft

* Adjust wings42 to work with organization folder.
2021-12-28 14:34:24 +11:00
peepeetee
6151b365f9 move bm65hsrgb_iso and bm68hsrgb to rev1/ (#15132) 2021-12-28 14:32:34 +11:00
Drashna Jaelre
14d5c3f2f1 [Bug] Include missing string.h include (#15606) 2021-12-28 10:57:41 +11:00
QMK Bot
cd3db41d06 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 23:34:28 +00:00
QMK Bot
25707cad5c Format code according to conventions (#15604) 2021-12-28 10:08:44 +11:00
Drashna Jaelre
c86baf3ece [Core] Fix bug and code regression for Split Common (#15603) 2021-12-28 10:01:51 +11:00
QMK Bot
2689e360ce Merge remote-tracking branch 'origin/master' into develop 2021-12-27 10:28:33 +00:00
uqs
d3952523fe pwm3360 driver cleanup and diff reduction to adns9800 (#15559)
* Diff reduction between ADNS9800 and PMW3360 drivers.

They are very similar devices. This (somewhat) unreadable diff is
essentially a no-op, but it makes a `vimdiff` between the 2 drivers much
more readable.

* Cleanup pwm3360 driver some more.

Remove redundant calls to spi_start() and spi_stop(), as pmw3360_write()
will already call these.
2021-12-27 21:26:09 +11:00
QMK Bot
0709d208db Merge remote-tracking branch 'origin/master' into develop 2021-12-27 10:25:01 +00:00
QMK Bot
be2265d0d1 Format code according to conventions (#15593) 2021-12-27 21:20:52 +11:00
QMK Bot
1127e0da6b Merge remote-tracking branch 'origin/master' into develop 2021-12-27 10:18:38 +00:00
Alabastard-64
f08824f6eb Fix for SPI write timing in PMW3360 driver (#15519)
Timing does not match Pixart documentation for this sensor (may have been carried forward from adns9800).
Not aware of any issues coming from this currently.
It should only cause issues when writing to multiple registers in succession which currently only happens during initialization for the PMW3360.
This should prevent future issues with write operations if other features of the sensor are added.
2021-12-27 21:18:35 +11:00
QMK Bot
740c47d4d7 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 10:17:45 +00:00
QMK Bot
c929b7aadf Merge remote-tracking branch 'origin/master' into develop 2021-12-27 10:16:53 +00:00
Ryan
6f81880f17 Convert some more boards to Matrix Lite (#15489) 2021-12-27 21:15:56 +11:00
Victor Toni
6209122213 [Keymap] Add vitoni keymap for GMMK Pro (ISO) (#15006)
* [Keymap] Add vitoni layout for GMMK Pro (ISO)

Keymap has layered cursor keys similar to laptop keyboards.

* Configure RGB defaults for startup

* Configure encoder to change value/brightness on FN layer

* Remove FN layer and add dedicated RGB layer

* Make RGB layer sticky (using TG) to avoid holding FN while configuring RGB

* Add RGB indicators for active layers

* Add RGB indicator for active RESET mode

Signed-off-by: Victor Toni <victor.toni@gmail.com>

* Configure idle / USB suspend settings

* Add RGB fade in when resuming after suspend

* Add RGB fade out before suspend

* Add fade out before idle

* Add breathe effect when idle
2021-12-27 21:13:12 +11:00
Ryan
6bc870d899 Refactor bootloader_jump() implementations (#15450)
* Refactor `bootloader_jump()` implementations

* Fix tests?

* Rename `atmel-samba` to `md-boot`
2021-12-27 21:10:07 +11:00
QMK Bot
cffe143ca2 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 10:06:16 +00:00
Jay Greco
ac31863021 Custom matrix lite support for split keyboards (#14674)
* Custom matrix lite support for split keyboards

* WIP: matrix -> matrix_common refactor

* Move matrix_post_scan() to matrix_common.c
2021-12-27 21:03:40 +11:00
QMK Bot
4519af69a9 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 09:57:30 +00:00
Nick Brassel
4d96e53222 More GPIO compilation fixes. (#15592) 2021-12-26 21:36:52 -08:00
Nick Brassel
8503c97b96 Merge remote-tracking branch 'upstream/master' into develop 2021-12-27 15:18:08 +11:00
Nick Brassel
c53ee0b3ce Fixup line endings 2021-12-27 15:15:49 +11:00
QMK Bot
fa1d3159af Merge remote-tracking branch 'origin/master' into develop 2021-12-27 04:05:58 +00:00
QMK Bot
e969420a85 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:48:37 +00:00
QMK Bot
ba7243d409 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:44:31 +00:00
QMK Bot
2cd350d3f4 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:41:18 +00:00
QMK Bot
cd62961392 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:37:11 +00:00
QMK Bot
eadfcb9a40 Format code according to conventions (#15590) 2021-12-27 14:34:15 +11:00
QMK Bot
ed43450043 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:32:42 +00:00
QMK Bot
5df515c22d Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:29:11 +00:00
QMK Bot
2d03a337ab Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:19:52 +00:00
QMK Bot
111ee6cb91 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:16:22 +00:00
QMK Bot
daf71c8d37 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:10:40 +00:00
QMK Bot
ca5bd0aa2c Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:07:03 +00:00
QMK Bot
a1dd4f3c0f Merge remote-tracking branch 'origin/master' into develop 2021-12-27 03:06:43 +00:00
Simon Arlott
c93935f243 Durgod: Increase scan rate by using wait_us GPT timer (#14091)
Lower the tick rate from 10kHz to 1kHz (otherwise all the extra interrupts
reduce the achievable scan rate). Enable the WAIT_US_TIMER using GPT TIM3.

Observed scan rate on the K320 is increased from 625Hz to 2090-2120Hz.
2021-12-27 14:04:26 +11:00
QMK Bot
dfe5fe7181 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 02:57:38 +00:00
QMK Bot
c20096c7aa Merge remote-tracking branch 'origin/master' into develop 2021-12-27 02:51:13 +00:00
QMK Bot
79f2445414 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 02:49:35 +00:00
Chad Austin
25713dc222 Add sym_defer_pr debouncer type (#14948) 2021-12-27 13:44:56 +11:00
QMK Bot
e15dbb49e0 Merge remote-tracking branch 'origin/master' into develop 2021-12-27 02:42:35 +00:00
Nick Brassel
3a3272a3d6 Defer pin operations to gpio.h (#15589) 2021-12-27 13:27:38 +11:00
QMK Bot
11d5ff415f Merge remote-tracking branch 'origin/master' into develop 2021-12-27 01:25:35 +00:00
Drashna Jaelre
672c6b4721 Make (un)register code functions weak (#15285) 2021-12-27 12:15:56 +11:00
QMK Bot
f9cf09ebd1 Format code according to conventions (#15588) 2021-12-27 12:10:04 +11:00
Dasky
7f7364c559 [Core] Split support for pointing devices. (#15304)
* Draft implementation

* formatting

* fix combined buttons

* remove pimoroni throttle

* sync pointing on a throttle loop with checksum

* no longer used

* doh

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

* switch pimoroni to a cpi equivalent

* add cpi support

* allow user modification of seperate mouse reports

* a little tidy up

* add *_RIGHT defines.

* docs

* doxygen comments

* basic changelog

* clean up pimoroni

* small doc fixes

* Update docs/feature_pointing_device.md

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

* performance tweak if side has usb

* Don't run init funtions on wrong side

* renamed some variables for consistency

* fix pimoroni typos

* Clamp instead of OR

* Promote combined values to uint16_t

* Update pointing_device.c

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2021-12-27 12:05:51 +11:00
Hugo Osvaldo Barrera
76a673233c Add a clarification to an error message (#15207)
Makes this a bit more foolproof.

See https://github.com/qmk/qmk_firmware/issues/15202
2021-12-27 11:53:46 +11:00
vectorstorm
0391801267 Fixes potential wpm sampling overflow, along with code comment fixes (#15277)
Co-authored-by: Trevor Powell <trevor@vectorstorm.com.au>
2021-12-27 11:52:56 +11:00
Nick Brassel
6e40dfa022 Add open-drain GPIO support. (#15282)
* Add open-drain GPIO support.

* `qmk format-c`

* Wording.

* Remove port GPIO implementations as the only board that uses it has its own internal defs anyway. Will wait for first-class handling of ports in core before reimplementing.
2021-12-27 11:52:10 +11:00
QMK Bot
f491e6b138 Merge remote-tracking branch 'origin/master' into develop 2021-12-25 01:47:49 +00:00
uqs
859e2aa86b Fix some typos, especially the sensor name. (#15557) 2021-12-24 17:46:49 -08:00
QMK Bot
d6b9056d42 Merge remote-tracking branch 'origin/master' into develop 2021-12-25 01:35:05 +00:00
QMK Bot
c734e7c1bf Merge remote-tracking branch 'origin/master' into develop 2021-12-25 01:27:51 +00:00
QMK Bot
407647d0d1 Merge remote-tracking branch 'origin/master' into develop 2021-12-25 01:23:54 +00:00
QMK Bot
bd1d41024b Merge remote-tracking branch 'origin/master' into develop 2021-12-25 01:23:13 +00:00
QMK Bot
19abd80fb2 Merge remote-tracking branch 'origin/master' into develop 2021-12-25 01:20:37 +00:00
QMK Bot
78b330c8b4 Merge remote-tracking branch 'origin/master' into develop 2021-12-25 01:18:22 +00:00
QMK Bot
e0490a24f2 Merge remote-tracking branch 'origin/master' into develop 2021-12-25 01:13:07 +00:00
QMK Bot
53472a4e7b Merge remote-tracking branch 'origin/master' into develop 2021-12-24 22:31:48 +00:00
QMK Bot
e24fe0832b Merge remote-tracking branch 'origin/master' into develop 2021-12-24 20:10:51 +00:00
QMK Bot
45731efcac Merge remote-tracking branch 'origin/master' into develop 2021-12-24 00:39:31 +00:00
QMK Bot
b7ed91f861 Merge remote-tracking branch 'origin/master' into develop 2021-12-24 00:37:36 +00:00
QMK Bot
4582b1b41a Merge remote-tracking branch 'origin/master' into develop 2021-12-23 21:43:43 +00:00
QMK Bot
d737b4704c Merge remote-tracking branch 'origin/master' into develop 2021-12-22 17:46:05 +00:00
QMK Bot
51bc051172 Merge remote-tracking branch 'origin/master' into develop 2021-12-22 17:08:53 +00:00
QMK Bot
df7fe3e2ac Merge remote-tracking branch 'origin/master' into develop 2021-12-22 14:27:56 +00:00
SmollChungus
e95156d4d8 Documentation Typo fix (#15538) 2021-12-22 12:47:01 +00:00
QMK Bot
96073e1368 Merge remote-tracking branch 'origin/master' into develop 2021-12-22 07:37:26 +00:00
QMK Bot
f5995901b0 [CI] Format code according to conventions (#15541) 2021-12-22 17:09:50 +11:00
Ryan
77d3e564f7 Migrate RN42 to UART driver and refactor (#15492) 2021-12-22 16:51:39 +11:00
QMK Bot
78648b37e9 Merge remote-tracking branch 'origin/master' into develop 2021-12-21 18:47:48 +00:00
Nick Brassel
7b018f097d Use the PR title rather than parsing the commit message. (#15537) 2021-12-22 05:44:47 +11:00
QMK Bot
b6bd01aa8b Merge remote-tracking branch 'origin/master' into develop 2021-12-21 17:20:45 +00:00
QMK Bot
9a356ab943 Merge remote-tracking branch 'origin/master' into develop 2021-12-20 19:32:28 +00:00
QMK Bot
acf7824f9a Merge remote-tracking branch 'origin/master' into develop 2021-12-19 20:59:07 +00:00
QMK Bot
3410b25cf8 Merge remote-tracking branch 'origin/master' into develop 2021-12-19 20:07:41 +00:00
QMK Bot
560386461e Merge remote-tracking branch 'origin/master' into develop 2021-12-18 08:49:18 +00:00
QMK Bot
8d61218abe Merge remote-tracking branch 'origin/master' into develop 2021-12-18 03:00:14 +00:00
QMK Bot
6beca1c6c0 Merge remote-tracking branch 'origin/master' into develop 2021-12-18 02:30:19 +00:00
QMK Bot
aefa85162b Merge remote-tracking branch 'origin/master' into develop 2021-12-17 16:11:43 +00:00
QMK Bot
4219508b42 Merge remote-tracking branch 'origin/master' into develop 2021-12-17 07:52:39 +00:00
QMK Bot
1b29f98d99 Merge remote-tracking branch 'origin/master' into develop 2021-12-17 07:52:16 +00:00
QMK Bot
4b185a52bc Merge remote-tracking branch 'origin/master' into develop 2021-12-16 18:07:39 +00:00
QMK Bot
3a2d01df6a Merge remote-tracking branch 'origin/master' into develop 2021-12-16 18:05:44 +00:00
QMK Bot
8fe49ebe0b Merge remote-tracking branch 'origin/master' into develop 2021-12-16 16:46:11 +00:00
QMK Bot
9f72f27279 Merge remote-tracking branch 'origin/master' into develop 2021-12-16 08:29:11 +00:00
QMK Bot
c8fd62432a Merge remote-tracking branch 'origin/master' into develop 2021-12-16 05:59:42 +00:00
QMK Bot
b33ecce392 Merge remote-tracking branch 'origin/master' into develop 2021-12-15 21:41:42 +00:00
Ryan
9d0b145007 Fix build failure for UT47 (#15483) 2021-12-15 14:25:32 +00:00
Ryan
c12268807d Migrate serial_uart usages to UART driver (#15479)
* Migrate Thermal Printer feature to UART driver

* Migrate 40percentclub UT47 to UART driver

* Migrate Centromere to UART driver

* Migrate Chimera Ergo to UART driver

* Migrate Chimera Let's Split to UART driver

* Migrate Chimera Ortho to UART driver

* Migrate Chimera Ortho Plus to UART driver

* Migrate Comet46 to UART driver

* Migrate Palm USB converter to UART driver

* Migrate Sun USB converter to UART driver

* Migrate Dichotomy to UART driver

* Migrate Honeycomb to UART driver

* Migrate Mitosis to UART driver

* Migrate Redox W to UART driver

* Migrate Uni660 to UART driver

* Migrate Telophase to UART driver
2021-12-15 11:00:39 +00:00
QMK Bot
c0bb153151 Merge remote-tracking branch 'origin/master' into develop 2021-12-15 04:54:21 +00:00
QMK Bot
3c5b9f70f5 Merge remote-tracking branch 'origin/master' into develop 2021-12-15 03:42:16 +00:00
QMK Bot
fce882f516 Merge remote-tracking branch 'origin/master' into develop 2021-12-15 03:40:55 +00:00
QMK Bot
045977ea91 Merge remote-tracking branch 'origin/master' into develop 2021-12-15 03:40:34 +00:00
QMK Bot
7e3dab79ad Merge remote-tracking branch 'origin/master' into develop 2021-12-15 03:38:44 +00:00
QMK Bot
a97da5a569 Merge remote-tracking branch 'origin/master' into develop 2021-12-15 02:52:46 +00:00
Drashna Jael're
14d5e92da5 Merge remote-tracking branch 'origin/master' into develop 2021-12-14 18:29:13 -08:00
Stefan Kerkmann
8b865a9d64 [Core] Don't send keyboard reports that propagate no changes to the host (#14065) 2021-12-14 10:40:18 -08:00
QMK Bot
ce5a2a7367 Merge remote-tracking branch 'origin/master' into develop 2021-12-14 07:50:11 +00:00
QMK Bot
f6be5773d5 Merge remote-tracking branch 'origin/master' into develop 2021-12-14 07:43:14 +00:00
QMK Bot
757b42f2fb Merge remote-tracking branch 'origin/master' into develop 2021-12-14 04:56:33 +00:00
QMK Bot
c03859a3e4 Merge remote-tracking branch 'origin/master' into develop 2021-12-13 02:06:27 +00:00
Dipl.-Ing. Raoul Rubien, BSc
415faebd65 added missing audio_off_user() callback (#15457)
Co-authored-by: Raoul Rubien <raoul.rubienr@gmail.com>
2021-12-11 16:58:25 -08:00
QMK Bot
dd994e72ad Merge remote-tracking branch 'origin/master' into develop 2021-12-11 18:40:00 +00:00
Drashna Jael're
f92d153532 Merge remote-tracking branch 'origin/master' into develop 2021-12-11 10:28:29 -08:00
QMK Bot
31bce31c74 Merge remote-tracking branch 'origin/master' into develop 2021-12-09 06:45:59 +00:00
QMK Bot
6ef36482a2 Merge remote-tracking branch 'origin/master' into develop 2021-12-09 06:42:44 +00:00
QMK Bot
46a74d820f Merge remote-tracking branch 'origin/master' into develop 2021-12-09 06:41:17 +00:00
fauxpark
c394bf1c98 Merge remote-tracking branch 'upstream/master' into develop 2021-12-09 17:24:05 +11:00
QMK Bot
7aa466515e Merge remote-tracking branch 'origin/master' into develop 2021-12-09 05:01:31 +00:00
QMK Bot
ef847f8ef6 Merge remote-tracking branch 'origin/master' into develop 2021-12-09 03:49:44 +00:00
Nick Brassel
30f0bbe079 Add support for 21.11.x, remove 21.6.x as ChibiOS "canceled" it. (#15435) 2021-12-09 07:42:21 +11:00
QMK Bot
1259140d5a Merge remote-tracking branch 'origin/master' into develop 2021-12-08 17:52:11 +00:00
QMK Bot
108684351e Merge remote-tracking branch 'origin/master' into develop 2021-12-08 17:39:29 +00:00
Drashna Jael're
af936c6ae6 Merge remote-tracking branch 'origin/master' into develop 2021-12-08 08:17:55 -08:00
Drashna Jaelre
26febb7c24 Expand rotational range for PMW3360 Optical Sensor (#15431) 2021-12-08 07:38:09 -08:00
QMK Bot
fe2ef59240 Merge remote-tracking branch 'origin/master' into develop 2021-12-07 20:01:52 +00:00
QMK Bot
fc968fd473 Merge remote-tracking branch 'origin/master' into develop 2021-12-07 20:01:04 +00:00
QMK Bot
0ea644a53b Merge remote-tracking branch 'origin/master' into develop 2021-12-07 20:00:12 +00:00
QMK Bot
3c90a30fe7 Merge remote-tracking branch 'origin/master' into develop 2021-12-07 19:59:04 +00:00
QMK Bot
6cc51eb9d9 Merge remote-tracking branch 'origin/master' into develop 2021-12-07 19:04:42 +00:00
QMK Bot
eecd22fbd4 Merge remote-tracking branch 'origin/master' into develop 2021-12-07 14:48:49 +00:00
Drashna Jaelre
9d7e64bcb3 Remove Deprecated USB Polling comment from vusb.c (#15420) 2021-12-07 19:57:33 +11:00
QMK Bot
0e52a84878 Merge remote-tracking branch 'origin/master' into develop 2021-12-07 06:36:39 +00:00
QMK Bot
fc51ce8304 Merge remote-tracking branch 'origin/master' into develop 2021-12-07 05:17:41 +00:00
QMK Bot
1b67b14587 Merge remote-tracking branch 'origin/master' into develop 2021-12-07 04:58:08 +00:00
Drashna Jaelre
5f7c0e3097 Add missing define for unicode common (#15416) 2021-12-06 11:36:30 -08:00
QMK Bot
ce1ee47ef5 Merge remote-tracking branch 'origin/master' into develop 2021-12-06 17:38:55 +00:00
Drashna Jaelre
942b3cf16c Generalize Unicode defines (#15409) 2021-12-06 09:38:36 -08:00
QMK Bot
e8747e116f Merge remote-tracking branch 'origin/master' into develop 2021-12-06 17:12:55 +00:00
QMK Bot
681f9f4ca6 Merge remote-tracking branch 'origin/master' into develop 2021-12-06 05:47:21 +00:00
QMK Bot
ae3219ae0e Merge remote-tracking branch 'origin/master' into develop 2021-12-06 04:48:27 +00:00
QMK Bot
42a5742add Merge remote-tracking branch 'origin/master' into develop 2021-12-06 04:27:05 +00:00
QMK Bot
590082520e Merge remote-tracking branch 'origin/master' into develop 2021-12-06 01:26:21 +00:00
QMK Bot
a299018824 Merge remote-tracking branch 'origin/master' into develop 2021-12-06 00:32:26 +00:00
QMK Bot
12b9831eeb Merge remote-tracking branch 'origin/master' into develop 2021-12-05 19:52:49 +00:00
QMK Bot
3c0a91059b Merge remote-tracking branch 'origin/master' into develop 2021-12-02 16:56:43 +00:00
Joel Challis
3bf2403244 Tidy up existing i2c_master implementations (#15376)
* Move chibios defines out of header

* Make some avr defines internal
2021-12-02 14:32:31 +00:00
QMK Bot
4466261895 Merge remote-tracking branch 'origin/master' into develop 2021-12-02 14:32:15 +00:00
QMK Bot
4d55cde5a7 Merge remote-tracking branch 'origin/master' into develop 2021-12-02 01:06:17 +00:00
QMK Bot
d123364b32 Merge remote-tracking branch 'origin/master' into develop 2021-12-01 17:38:53 +00:00
fauxpark
0b241ea4f7 Merge remote-tracking branch 'upstream/master' into develop 2021-12-02 03:26:54 +11:00
Joel Challis
1493e6d3f0 Convert ai03/orbit to SPLIT_KEYBOARD (#15340) 2021-12-01 11:19:14 +00:00
Joel Challis
3d06860f3c Convert not_so_minidox to SPLIT_KEYBOARD (#15306) 2021-12-01 11:19:07 +00:00
QMK Bot
3716e02ff3 Merge remote-tracking branch 'origin/master' into develop 2021-12-01 08:59:09 +00:00
Joel Challis
2726856cde Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK (#15368) 2021-11-30 17:34:08 -08:00
QMK Bot
3079fd0415 Merge remote-tracking branch 'origin/master' into develop 2021-11-30 20:15:53 +00:00
QMK Bot
0e5fc86c68 Merge remote-tracking branch 'origin/master' into develop 2021-11-30 19:24:58 +00:00
QMK Bot
a1c39084a2 Merge remote-tracking branch 'origin/master' into develop 2021-11-30 19:16:06 +00:00
QMK Bot
8879cdb250 Merge remote-tracking branch 'origin/master' into develop 2021-11-30 18:37:47 +00:00
QMK Bot
75714ff123 Merge remote-tracking branch 'origin/master' into develop 2021-11-30 18:33:12 +00:00
QMK Bot
4bc356711d Merge remote-tracking branch 'origin/master' into develop 2021-11-30 17:52:20 +00:00
QMK Bot
12d26c1466 Merge remote-tracking branch 'origin/master' into develop 2021-11-30 17:50:55 +00:00
QMK Bot
2445c1435a Merge remote-tracking branch 'origin/master' into develop 2021-11-30 17:49:29 +00:00
Joel Challis
9204f8535b [Keyboard] Convert ergoinu to SPLIT_KEYBOARD (#15305) 2021-11-30 09:49:09 -08:00
QMK Bot
55a84843ea Merge remote-tracking branch 'origin/master' into develop 2021-11-30 10:11:28 +00:00
QMK Bot
a83731660d Merge remote-tracking branch 'origin/master' into develop 2021-11-30 05:54:51 +00:00
QMK Bot
d57ecaa9a6 Merge remote-tracking branch 'origin/master' into develop 2021-11-30 05:45:47 +00:00
Drashna Jaelre
b5a5bb6d74 Change default USB Polling rate to 1kHz (#15352) 2021-11-29 17:18:54 -08:00
QMK Bot
fefcad3933 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 16:41:58 +00:00
QMK Bot
04d9c53c6e Merge remote-tracking branch 'origin/master' into develop 2021-11-29 16:28:24 +00:00
QMK Bot
c1556f7af0 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 16:27:40 +00:00
QMK Bot
25a0432228 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 16:24:11 +00:00
xiao
b7cdda7dcd [Keyboard] Added Wakizashi 40 (#15336)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-11-29 08:23:58 -08:00
Stefan Kerkmann
c1297ceb97 [Core] Remove matrix_is_modified() and debounce_is_active() (#15349) 2021-11-29 08:22:10 -08:00
QMK Bot
a3e9b347ec Merge remote-tracking branch 'origin/master' into develop 2021-11-29 15:08:56 +00:00
QMK Bot
5ebeb32ec0 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 15:08:12 +00:00
QMK Bot
bee48ced71 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:30:33 +00:00
QMK Bot
852d3af0a1 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:29:27 +00:00
QMK Bot
1c1ba06cfb Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:28:36 +00:00
QMK Bot
36d5ea8f85 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:26:55 +00:00
QMK Bot
dcb20e55fc Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:26:11 +00:00
QMK Bot
5bd3e9e806 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:24:57 +00:00
QMK Bot
7ac9d1abe4 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:23:43 +00:00
QMK Bot
696dea19f6 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:23:16 +00:00
QMK Bot
9215edde66 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:21:44 +00:00
QMK Bot
9d0373779c Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:20:59 +00:00
QMK Bot
6779f847ea Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:19:11 +00:00
QMK Bot
e931ac57e1 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:18:42 +00:00
QMK Bot
42412d7272 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:18:06 +00:00
QMK Bot
d558d10042 Merge remote-tracking branch 'origin/master' into develop 2021-11-29 08:17:17 +00:00
wheredoesyourmindgo
7f67504993 Added cancel_key_lock function (#15321) 2021-11-29 00:17:07 -08:00
QMK Bot
4461355cce Merge remote-tracking branch 'origin/master' into develop 2021-11-29 07:42:34 +00:00
QMK Bot
ccc2030bee Merge remote-tracking branch 'origin/master' into develop 2021-11-28 21:00:34 +00:00
QMK Bot
6932e22dd8 Merge remote-tracking branch 'origin/master' into develop 2021-11-28 20:45:57 +00:00
QMK Bot
69c341eb5c Merge remote-tracking branch 'origin/master' into develop 2021-11-28 20:28:51 +00:00
QMK Bot
1f7faad37a Merge remote-tracking branch 'origin/master' into develop 2021-11-28 20:01:16 +00:00
QMK Bot
d41067f59b Merge remote-tracking branch 'origin/master' into develop 2021-11-28 06:44:34 +00:00
QMK Bot
24d47dc631 Merge remote-tracking branch 'origin/master' into develop 2021-11-28 06:27:27 +00:00
QMK Bot
c99d2965a0 Merge remote-tracking branch 'origin/master' into develop 2021-11-28 05:53:26 +00:00
QMK Bot
9a4a3517de Merge remote-tracking branch 'origin/master' into develop 2021-11-28 02:00:18 +00:00
QMK Bot
4b1db46647 Merge remote-tracking branch 'origin/master' into develop 2021-11-28 01:12:40 +00:00
Nick Brassel
51db8baf77 Start develop for 2022q1. 2021-11-28 11:16:20 +11:00
6214 changed files with 84348 additions and 26568 deletions

View File

@@ -5,6 +5,9 @@ AlignConsecutiveAssignments: 'true'
AlignConsecutiveDeclarations: 'true'
AlignOperands: 'true'
AllowAllParametersOfDeclarationOnNextLine: 'false'
AllowShortCaseLabelsOnASingleLine: 'false'
AllowShortFunctionsOnASingleLine: Empty
AllowShortLoopsOnASingleLine: 'false'
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: 'false'
@@ -20,6 +23,7 @@ SortIncludes: 'false'
SpaceBeforeAssignmentOperators: 'true'
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: 'false'
SpacesBeforeTrailingComments: 1
TabWidth: '4'
UseTab: Never

View File

@@ -18,19 +18,18 @@ assignees: ''
## System Information
- Keyboard:
- Revision (if applicable):
- Operating system:
- AVR GCC version:
<!-- Run `avr-gcc --version` to find this out. -->
- ARM GCC version:
<!-- Run `arm-none-eabi-gcc --version` to find this out. -->
- QMK Firmware version:
<!-- Run `git describe --abbrev=0 --tags` to find this out. -->
- Any keyboard related software installed?
- [ ] AutoHotKey
- [ ] Karabiner
- [ ] Other:
**Keyboard:**
**Revision (if applicable):**
**Operating system:**
**`qmk doctor` output:**
```
(Paste output here)
```
**Any keyboard related software installed?**
- [ ] AutoHotKey (Windows)
- [ ] Karabiner (macOS)
- [ ] Other:
## Additional Context

View File

@@ -5,7 +5,6 @@ on:
branches:
- master
jobs:
develop_update:
runs-on: ubuntu-latest
@@ -15,6 +14,7 @@ jobs:
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
- name: Checkout develop
@@ -22,14 +22,7 @@ jobs:
git fetch origin master develop
git checkout develop
- name: Check if branch locked
id: check_locked
uses: andstor/file-existence-action@v1
with:
files: ".locked"
- name: Update develop from master
if: steps.check_locked.outputs.files_exists == 'false'
run: |
git config --global user.name "QMK Bot"
git config --global user.email "hello@qmk.fm"

View File

@@ -0,0 +1,35 @@
name: Update feature branches after develop merge
on:
push:
branches:
- develop
jobs:
feature_branch_update:
runs-on: ubuntu-latest
if: github.repository == 'qmk/qmk_firmware'
strategy:
matrix:
branch:
- xap
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.QMK_BOT_TOKEN }}
fetch-depth: 0
- name: Checkout branch
run: |
git fetch origin develop ${{ matrix.branch }}
git checkout ${{ matrix.branch }}
- name: Update branch from develop
run: |
git config --global user.name "QMK Bot"
git config --global user.email "hello@qmk.fm"
git merge origin/develop
git push origin ${{ matrix.branch }}

View File

@@ -19,14 +19,14 @@ jobs:
container: qmkfm/qmk_cli
steps:
- name: Install dependencies
run: |
apt-get update && apt-get install -y dos2unix
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
- uses: trilom/file-changes-action@v1.2.4
id: file_changes
with:

View File

@@ -13,14 +13,14 @@ jobs:
container: qmkfm/qmk_cli
steps:
- name: Install dependencies
run: |
apt-get update && apt-get install -y dos2unix
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install dependencies
run: |
pip3 install -r requirements-dev.txt
- name: Run qmk formatters
shell: 'bash {0}'
run: |

2
.gitignore vendored
View File

@@ -3,6 +3,7 @@
*.swp
*~
.DS_Store
._*
# Build artifacts
.clang_complete
@@ -18,7 +19,6 @@
# QMK-specific
api_data/v1
doxygen/
quantum/version.h
*.bin
*.eep

View File

@@ -21,7 +21,7 @@ DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "QMK Firmware"
PROJECT_NUMBER = https://github.com/qmk/qmk_firmware
PROJECT_BRIEF = "Keyboard controller firmware for Atmel AVR and ARM USB families"
OUTPUT_DIRECTORY = doxygen
OUTPUT_DIRECTORY = .build/doxygen
ALLOW_UNICODE_NAMES = NO
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
@@ -145,7 +145,7 @@ FILE_PATTERNS = *.c \
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXCLUDE_PATTERNS = */protocol/arm_atsam/*
EXCLUDE_SYMBOLS =
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
@@ -209,7 +209,7 @@ EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED =
PREDEFINED = __DOXYGEN__ PROGMEM
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES

135
Makefile
View File

@@ -19,6 +19,10 @@ endif
# Otherwise the [OK], [ERROR] and [WARN] messages won't be displayed correctly
override SILENT := false
ifdef SKIP_VERSION
SKIP_GIT := yes
endif
ifndef SUB_IS_SILENT
ifndef SKIP_GIT
QMK_VERSION := $(shell git describe --abbrev=0 --tags 2>/dev/null)
@@ -50,48 +54,12 @@ ABS_ROOT_MAKEFILE := $(abspath $(ROOT_MAKEFILE))
ABS_STARTING_DIR := $(dir $(ABS_STARTING_MAKEFILE))
ABS_ROOT_DIR := $(dir $(ABS_ROOT_MAKEFILE))
STARTING_DIR := $(subst $(ABS_ROOT_DIR),,$(ABS_STARTING_DIR))
BUILD_DIR := $(ROOT_DIR)/.build
TEST_DIR := $(BUILD_DIR)/test
include paths.mk
TEST_OUTPUT_DIR := $(BUILD_DIR)/test
ERROR_FILE := $(BUILD_DIR)/error_occurred
# Helper function to process the newt element of a space separated path
# It works a bit like the traditional functional head tail
# so the CURRENT_PATH_ELEMENT will become the new head
# and the PATH_ELEMENTS are the rest that are still unprocessed
define NEXT_PATH_ELEMENT
$$(eval CURRENT_PATH_ELEMENT := $$(firstword $$(PATH_ELEMENTS)))
$$(eval PATH_ELEMENTS := $$(wordlist 2,9999,$$(PATH_ELEMENTS)))
endef
# We change the / to spaces so that we more easily can work with the elements
# separately
PATH_ELEMENTS := $(subst /, ,$(STARTING_DIR))
# Initialize the path elements list for further processing
$(eval $(call NEXT_PATH_ELEMENT))
# Phony targets to enable a few simple make commands outside the main processing below.
.PHONY: list-keyboards
list-keyboards:
util/list_keyboards.sh | sort -u | tr '\n' ' '
.PHONY: generate-keyboards-file
generate-keyboards-file:
util/list_keyboards.sh | sort -u
.PHONY: clean
clean:
echo -n 'Deleting .build/ ... '
rm -rf $(BUILD_DIR)
echo 'done.'
.PHONY: distclean
distclean: clean
echo -n 'Deleting *.bin, *.hex, and *.uf2 ... '
rm -f *.bin *.hex *.uf2
echo 'done.'
.DEFAULT_GOAL := all:all
@@ -119,53 +87,20 @@ endef
# a function that returns the value
COMPARE_AND_REMOVE_FROM_RULE = $(eval $(call COMPARE_AND_REMOVE_FROM_RULE_HELPER,$1))$(RULE_FOUND)
# Recursively try to find a match for the start of the rule to be checked
# $1 The list to be checked
# If a match is found, then RULE_FOUND is set to true
# and MATCHED_ITEM to the item that was matched
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER3
ifneq ($1,)
ifeq ($$(call COMPARE_AND_REMOVE_FROM_RULE,$$(firstword $1)),true)
MATCHED_ITEM := $$(firstword $1)
else
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$$(wordlist 2,9999,$1)))
endif
endif
endef
# A recursive helper function for finding the longest match
# $1 The list to be checked
# It works by always removing the currently matched item from the list
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER2
# Stop the recursion when the list is empty
ifneq ($1,)
RULE_BEFORE := $$(RULE)
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER3,$1))
# If a match is found in the current list, otherwise just return what we had before
ifeq ($$(RULE_FOUND),true)
# Save the best match so far and call itself recursively
BEST_MATCH := $$(MATCHED_ITEM)
BEST_MATCH_RULE := $$(RULE)
RULE_FOUND := false
RULE := $$(RULE_BEFORE)
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER2,$$(filter-out $$(MATCHED_ITEM),$1)))
endif
endif
endef
# Recursively try to find the longest match for the start of the rule to be checked
# Try to find a match for the start of the rule to be checked
# $1 The list to be checked
# If a match is found, then RULE_FOUND is set to true
# and MATCHED_ITEM to the item that was matched
define TRY_TO_MATCH_RULE_FROM_LIST_HELPER
BEST_MATCH :=
$$(eval $$(call TRY_TO_MATCH_RULE_FROM_LIST_HELPER2,$1))
ifneq ($$(BEST_MATCH),)
# Split on ":", padding with empty strings to avoid indexing issues
TOKEN1:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[0])" $$(RULE))
TOKENr:=$$(shell python3 -c "import sys; print((sys.argv[1].split(':',1)+[''])[1])" $$(RULE))
FOUNDx:=$$(shell echo $1 | tr " " "\n" | grep -Fx $$(TOKEN1))
ifneq ($$(FOUNDx),)
RULE := $$(TOKENr)
RULE_FOUND := true
RULE := $$(BEST_MATCH_RULE)
MATCHED_ITEM := $$(BEST_MATCH)
MATCHED_ITEM := $$(TOKEN1)
else
RULE_FOUND := false
MATCHED_ITEM :=
@@ -340,7 +275,7 @@ define PARSE_KEYMAP
# Specify the variables that we are passing forward to submake
MAKE_VARS := KEYBOARD=$$(CURRENT_KB) KEYMAP=$$(CURRENT_KM) REQUIRE_PLATFORM_KEY=$$(REQUIRE_PLATFORM_KEY) QMK_BIN=$$(QMK_BIN)
# And the first part of the make command
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_keyboard.mk $$(MAKE_TARGET)
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f $(BUILDDEFS_PATH)/build_keyboard.mk $$(MAKE_TARGET)
# The message to display
MAKE_MSG := $$(MSG_MAKE_KB)
# We run the command differently, depending on if we want more output or not
@@ -382,12 +317,12 @@ define BUILD_TEST
TEST_NAME := $$(notdir $$(TEST_PATH))
MAKE_TARGET := $2
COMMAND := $1
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f build_test.mk $$(MAKE_TARGET)
MAKE_CMD := $$(MAKE) -r -R -C $(ROOT_DIR) -f $(BUILDDEFS_PATH)/build_test.mk $$(MAKE_TARGET)
MAKE_VARS := TEST=$$(TEST_NAME) TEST_PATH=$$(TEST_PATH) FULL_TESTS="$$(FULL_TESTS)"
MAKE_MSG := $$(MSG_MAKE_TEST)
$$(eval $$(call BUILD))
ifneq ($$(MAKE_TARGET),clean)
TEST_EXECUTABLE := $$(TEST_DIR)/$$(TEST_NAME).elf
TEST_EXECUTABLE := $$(TEST_OUTPUT_DIR)/$$(TEST_NAME).elf
TESTS += $$(TEST_NAME)
TEST_MSG := $$(MSG_TEST)
$$(TEST_NAME)_COMMAND := \
@@ -404,6 +339,7 @@ define PARSE_TEST
TESTS :=
TEST_NAME := $$(firstword $$(subst :, ,$$(RULE)))
TEST_TARGET := $$(subst $$(TEST_NAME),,$$(subst $$(TEST_NAME):,,$$(RULE)))
include $(BUILDDEFS_PATH)/testlist.mk
ifeq ($$(TEST_NAME),all)
MATCHED_TESTS := $$(TEST_LIST)
else
@@ -426,7 +362,6 @@ define SET_SILENT_MODE
endif
endef
include paths.mk
include $(BUILDDEFS_PATH)/message.mk
ifeq ($(strip $(BREAK_ON_ERRORS)), yes)
@@ -496,14 +431,22 @@ 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
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o quantum/version.h)
.PHONY: list-keyboards
list-keyboards:
util/list_keyboards.sh | sort -u | tr '\n' ' '
include $(ROOT_DIR)/testlist.mk
.PHONY: generate-keyboards-file
generate-keyboards-file:
util/list_keyboards.sh | sort -u
.PHONY: clean
clean:
echo -n 'Deleting .build/ ... '
rm -rf $(BUILD_DIR)
echo 'done.'
.PHONY: distclean
distclean: clean
echo -n 'Deleting *.bin, *.hex, and *.uf2 ... '
rm -f *.bin *.hex *.uf2
echo 'done.'

View File

@@ -30,6 +30,7 @@
# bootloadhid HIDBootFlash compatible (ATmega32A)
# usbasploader USBaspLoader (ATmega328P)
# ARM:
# halfkay PJRC Teensy
# kiibohd Input:Club Kiibohd bootloader (only used on their boards)
# stm32duino STM32Duino (STM32F103x8)
# stm32-dfu STM32 USB DFU in ROM
@@ -37,12 +38,23 @@
# RISC-V:
# gd32v-dfu GD32V USB DFU in ROM
#
# If you need to provide your own implementation, you can set inside `rules.mk`
# `BOOTLOADER = custom` -- you'll need to provide your own implementations. See
# the respective file under `platforms/<PLATFORM>/bootloaders/custom.c` to see
# which functions may be overridden.
#
# BOOTLOADER_SIZE can still be defined manually, but it's recommended
# you add any possible configuration to this list
ifeq ($(strip $(BOOTLOADER)), custom)
OPT_DEFS += -DBOOTLOADER_CUSTOM
BOOTLOADER_TYPE = custom
endif
ifeq ($(strip $(BOOTLOADER)), atmel-dfu)
OPT_DEFS += -DBOOTLOADER_ATMEL_DFU
OPT_DEFS += -DBOOTLOADER_DFU
BOOTLOADER_TYPE = dfu
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
BOOTLOADER_SIZE = 4096
endif
@@ -53,6 +65,8 @@ endif
ifeq ($(strip $(BOOTLOADER)), lufa-dfu)
OPT_DEFS += -DBOOTLOADER_LUFA_DFU
OPT_DEFS += -DBOOTLOADER_DFU
BOOTLOADER_TYPE = dfu
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
BOOTLOADER_SIZE ?= 4096
endif
@@ -63,6 +77,8 @@ endif
ifeq ($(strip $(BOOTLOADER)), qmk-dfu)
OPT_DEFS += -DBOOTLOADER_QMK_DFU
OPT_DEFS += -DBOOTLOADER_DFU
BOOTLOADER_TYPE = dfu
ifneq (,$(filter $(MCU), at90usb162 atmega16u2 atmega32u2 atmega16u4 atmega32u4 at90usb646 at90usb647))
BOOTLOADER_SIZE ?= 4096
endif
@@ -73,10 +89,14 @@ endif
ifeq ($(strip $(BOOTLOADER)), qmk-hid)
OPT_DEFS += -DBOOTLOADER_QMK_HID
OPT_DEFS += -DBOOTLOADER_HID
BOOTLOADER_TYPE = dfu
BOOTLOADER_SIZE ?= 4096
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
BOOTLOADER_TYPE = halfkay
ifeq ($(strip $(MCU)), atmega32u4)
BOOTLOADER_SIZE = 512
endif
@@ -86,18 +106,26 @@ ifeq ($(strip $(BOOTLOADER)), halfkay)
endif
ifeq ($(strip $(BOOTLOADER)), caterina)
OPT_DEFS += -DBOOTLOADER_CATERINA
BOOTLOADER_TYPE = caterina
BOOTLOADER_SIZE = 4096
endif
ifneq (,$(filter $(BOOTLOADER), bootloadhid bootloadHID))
OPT_DEFS += -DBOOTLOADER_BOOTLOADHID
BOOTLOADER_TYPE = bootloadhid
BOOTLOADER_SIZE = 4096
endif
ifneq (,$(filter $(BOOTLOADER), usbasploader USBasp))
OPT_DEFS += -DBOOTLOADER_USBASP
BOOTLOADER_TYPE = usbasploader
BOOTLOADER_SIZE = 4096
endif
ifeq ($(strip $(BOOTLOADER)), lufa-ms)
OPT_DEFS += -DBOOTLOADER_MS
BOOTLOADER_TYPE = dfu
BOOTLOADER_SIZE ?= 8192
FIRMWARE_FORMAT = bin
cpfirmware: lufa_warning
@@ -115,6 +143,7 @@ endif
ifeq ($(strip $(BOOTLOADER)), stm32-dfu)
OPT_DEFS += -DBOOTLOADER_STM32_DFU
BOOTLOADER_TYPE = stm32_dfu
# Options to pass to dfu-util when flashing
DFU_ARGS ?= -d 0483:DF11 -a 0 -s 0x08000000:leave
@@ -122,6 +151,7 @@ ifeq ($(strip $(BOOTLOADER)), stm32-dfu)
endif
ifeq ($(strip $(BOOTLOADER)), apm32-dfu)
OPT_DEFS += -DBOOTLOADER_APM32_DFU
BOOTLOADER_TYPE = stm32_dfu
# Options to pass to dfu-util when flashing
DFU_ARGS ?= -d 314B:0106 -a 0 -s 0x08000000:leave
@@ -129,6 +159,7 @@ ifeq ($(strip $(BOOTLOADER)), apm32-dfu)
endif
ifeq ($(strip $(BOOTLOADER)), gd32v-dfu)
OPT_DEFS += -DBOOTLOADER_GD32V_DFU
BOOTLOADER_TYPE = gd32v_dfu
# Options to pass to dfu-util when flashing
DFU_ARGS ?= -d 28E9:0189 -a 0 -s 0x08000000:leave
@@ -136,6 +167,8 @@ ifeq ($(strip $(BOOTLOADER)), gd32v-dfu)
endif
ifeq ($(strip $(BOOTLOADER)), kiibohd)
OPT_DEFS += -DBOOTLOADER_KIIBOHD
BOOTLOADER_TYPE = kiibohd
ifeq ($(strip $(MCU_ORIG)), MK20DX128)
MCU_LDSCRIPT = MK20DX128BLDR4
endif
@@ -151,8 +184,7 @@ ifeq ($(strip $(BOOTLOADER)), stm32duino)
OPT_DEFS += -DBOOTLOADER_STM32DUINO
MCU_LDSCRIPT = STM32F103x8_stm32duino_bootloader
BOARD = STM32_F103_STM32DUINO
# STM32F103 does NOT have an USB bootloader in ROM (only serial), so setting anything here does not make much sense
STM32_BOOTLOADER_ADDRESS = 0x80000000
BOOTLOADER_TYPE = stm32duino
# Options to pass to dfu-util when flashing
DFU_ARGS = -d 1EAF:0003 -a 2 -R
@@ -160,4 +192,17 @@ ifeq ($(strip $(BOOTLOADER)), stm32duino)
endif
ifeq ($(strip $(BOOTLOADER)), tinyuf2)
OPT_DEFS += -DBOOTLOADER_TINYUF2
BOOTLOADER_TYPE = tinyuf2
endif
ifeq ($(strip $(BOOTLOADER)), halfkay)
OPT_DEFS += -DBOOTLOADER_HALFKAY
BOOTLOADER_TYPE = halfkay
endif
ifeq ($(strip $(BOOTLOADER)), md-boot)
OPT_DEFS += -DBOOTLOADER_MD_BOOT
BOOTLOADER_TYPE = md_boot
endif
ifeq ($(strip $(BOOTLOADER_TYPE)),)
$(call CATASTROPHIC_ERROR,Invalid BOOTLOADER,No bootloader specified. Please set an appropriate 'BOOTLOADER' in your keyboard's 'rules.mk' file.)
endif

View File

@@ -14,7 +14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
$(TEST)_INC := \
tests\test_common\common_config.h
tests/test_common/common_config.h
$(TEST)_SRC := \
$(TMK_COMMON_SRC) \
@@ -33,4 +33,4 @@ $(TEST)_DEFS := $(TMK_COMMON_DEFS) $(OPT_DEFS)
$(TEST)_CONFIG := $(TEST_PATH)/config.h
VPATH += $(TOP_DIR)/tests/test_common
VPATH += $(TOP_DIR)/tests/test_common

View File

@@ -37,6 +37,17 @@ ifdef SKIP_VERSION
OPT_DEFS += -DSKIP_VERSION
endif
# Generate the version.h file
ifdef SKIP_VERSION
VERSION_H_FLAGS := --skip-all
endif
ifdef SKIP_GIT
VERSION_H_FLAGS := --skip-git
endif
# Generate the board's version.h file.
$(shell $(QMK_BIN) generate-version-h $(VERSION_H_FLAGS) -q -o $(KEYMAP_OUTPUT)/src/version.h)
# Determine which subfolders exist.
KEYBOARD_FOLDER_PATH_1 := $(KEYBOARD)
KEYBOARD_FOLDER_PATH_2 := $(patsubst %/,%,$(dir $(KEYBOARD_FOLDER_PATH_1)))
@@ -100,7 +111,7 @@ INFO_RULES_MK = $(shell $(QMK_BIN) generate-rules-mk --quiet --escape --keyboard
include $(INFO_RULES_MK)
# Check for keymap.json first, so we can regenerate keymap.c
include build_json.mk
include $(BUILDDEFS_PATH)/build_json.mk
# Pull in keymap level rules.mk
ifeq ("$(wildcard $(KEYMAP_PATH))", "")
@@ -127,9 +138,9 @@ ifeq ("$(wildcard $(KEYMAP_PATH))", "")
KEYMAP_PATH := $(MAIN_KEYMAP_PATH_1)
else ifneq ($(LAYOUTS),)
# If we haven't found a keymap yet fall back to community layouts
include build_layout.mk
include $(BUILDDEFS_PATH)/build_layout.mk
else
$(error Could not find keymap)
$(call CATASTROPHIC_ERROR,Invalid keymap,Could not find keymap)
# this state should never be reached
endif
endif
@@ -148,17 +159,21 @@ ifneq ("$(wildcard $(KEYMAP_JSON))", "")
# 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)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) json2c --quiet --output $(KEYMAP_C) $(KEYMAP_JSON))
@$(BUILD_CMD)
$(KEYMAP_OUTPUT)/src/config.h: $(KEYMAP_JSON)
$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --keymap $(KEYMAP) --output $(KEYMAP_H)
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --keymap $(KEYMAP) --output $(KEYMAP_H))
@$(BUILD_CMD)
generated-files: $(KEYMAP_OUTPUT)/src/config.h $(KEYMAP_OUTPUT)/src/keymap.c
endif
ifeq ($(strip $(CTPC)), yes)
CONVERT_TO_PROTON_C=yes
CONVERT_TO_PROTON_C=yes
endif
ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
@@ -315,13 +330,19 @@ endif
CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h
$(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h)
@$(BUILD_CMD)
$(KEYBOARD_OUTPUT)/src/default_keyboard.h: $(INFO_JSON_FILES)
$(QMK_BIN) generate-keyboard-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.h
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-keyboard-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/default_keyboard.h)
@$(BUILD_CMD)
$(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES)
$(QMK_BIN) generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h
@$(SILENT) || printf "$(MSG_GENERATING) $@" | $(AWK_CMD)
$(eval CMD=$(QMK_BIN) generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h)
@$(BUILD_CMD)
generated-files: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/default_keyboard.h $(KEYBOARD_OUTPUT)/src/layouts.h
@@ -384,8 +405,10 @@ VPATH += $(KEYMAP_PATH)
VPATH += $(USER_PATH)
VPATH += $(KEYBOARD_PATHS)
VPATH += $(COMMON_VPATH)
VPATH += $(KEYBOARD_OUTPUT)/src
VPATH += $(KEYMAP_OUTPUT)/src
include common_features.mk
include $(BUILDDEFS_PATH)/common_features.mk
include $(BUILDDEFS_PATH)/generic_features.mk
include $(TMK_PATH)/protocol.mk
include $(PLATFORM_PATH)/common.mk
@@ -447,7 +470,7 @@ check-md5: build
objs-size: build
include $(BUILDDEFS_PATH)/show_options.mk
include $(TMK_PATH)/rules.mk
include $(BUILDDEFS_PATH)/common_rules.mk
# Ensure we have generated files available for each of the objects
define GEN_FILES

View File

@@ -25,7 +25,7 @@ ifneq ($(FORCE_LAYOUT),)
$(info Forcing layout: $(FORCE_LAYOUT))
LAYOUTS := $(FORCE_LAYOUT)
else
$(error Forced layout does not exist)
$(call CATASTROPHIC_ERROR,Invalid layout,Forced layout does not exist)
endif
endif

View File

@@ -43,6 +43,7 @@ all: elf
VPATH += $(COMMON_VPATH)
PLATFORM:=TEST
PLATFORM_KEY:=test
BOOTLOADER_TYPE:=none
ifeq ($(strip $(DEBUG)), 1)
CONSOLE_ENABLE = yes
@@ -53,7 +54,7 @@ include tests/test_common/build.mk
include $(TEST_PATH)/test.mk
endif
include common_features.mk
include $(BUILDDEFS_PATH)/common_features.mk
include $(BUILDDEFS_PATH)/generic_features.mk
include $(PLATFORM_PATH)/common.mk
include $(TMK_PATH)/protocol.mk
@@ -62,7 +63,7 @@ include $(QUANTUM_PATH)/encoder/tests/rules.mk
include $(QUANTUM_PATH)/sequencer/tests/rules.mk
include $(PLATFORM_PATH)/test/rules.mk
ifneq ($(filter $(FULL_TESTS),$(TEST)),)
include build_full_test.mk
include $(BUILDDEFS_PATH)/build_full_test.mk
endif
$(TEST)_SRC += \
@@ -76,7 +77,7 @@ $(TEST_OBJ)/$(TEST)_DEFS := $($(TEST)_DEFS)
$(TEST_OBJ)/$(TEST)_CONFIG := $($(TEST)_CONFIG)
include $(PLATFORM_PATH)/$(PLATFORM_KEY)/platform.mk
include $(TMK_PATH)/rules.mk
include $(BUILDDEFS_PATH)/common_rules.mk
$(shell mkdir -p $(BUILD_DIR)/test 2>/dev/null)

View File

@@ -20,7 +20,6 @@ QUANTUM_SRC += \
$(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 \
@@ -109,11 +108,10 @@ ifeq ($(strip $(MOUSEKEY_ENABLE)), yes)
SRC += $(QUANTUM_DIR)/mousekey.c
endif
VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi pmw3360 pimoroni_trackball custom
POINTING_DEVICE_DRIVER ?= custom
VALID_POINTING_DEVICE_DRIVER_TYPES := adns5050 adns9800 analog_joystick cirque_pinnacle_i2c cirque_pinnacle_spi pmw3360 pmw3389 pimoroni_trackball custom
ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
ifeq ($(filter $(POINTING_DEVICE_DRIVER),$(VALID_POINTING_DEVICE_DRIVER_TYPES)),)
$(error POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type)
$(call CATASTROPHIC_ERROR,Invalid POINTING_DEVICE_DRIVER,POINTING_DEVICE_DRIVER="$(POINTING_DEVICE_DRIVER)" is not a valid pointing device type)
else
OPT_DEFS += -DPOINTING_DEVICE_ENABLE
MOUSE_ENABLE := yes
@@ -144,6 +142,9 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pmw3360)
OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
QUANTUM_LIB_SRC += spi_master.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pmw3389)
OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
QUANTUM_LIB_SRC += spi_master.c
endif
endif
endif
@@ -151,56 +152,88 @@ endif
VALID_EEPROM_DRIVER_TYPES := vendor custom transient i2c spi
EEPROM_DRIVER ?= vendor
ifeq ($(filter $(EEPROM_DRIVER),$(VALID_EEPROM_DRIVER_TYPES)),)
$(error EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver)
$(call CATASTROPHIC_ERROR,Invalid EEPROM_DRIVER,EEPROM_DRIVER="$(EEPROM_DRIVER)" is not a valid EEPROM driver)
else
OPT_DEFS += -DEEPROM_ENABLE
ifeq ($(strip $(EEPROM_DRIVER)), custom)
# Custom EEPROM implementation -- only needs to implement init/erase/read_block/write_block
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_CUSTOM
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c
else ifeq ($(strip $(EEPROM_DRIVER)), i2c)
# External I2C EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C
COMMON_VPATH += $(DRIVER_PATH)/eeprom
QUANTUM_LIB_SRC += i2c_master.c
SRC += eeprom_driver.c eeprom_i2c.c
else ifeq ($(strip $(EEPROM_DRIVER)), spi)
# External SPI EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
COMMON_VPATH += $(DRIVER_PATH)/eeprom
QUANTUM_LIB_SRC += spi_master.c
SRC += eeprom_driver.c eeprom_spi.c
else ifeq ($(strip $(EEPROM_DRIVER)), transient)
# Transient EEPROM implementation -- no data storage but provides runtime area for it
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c eeprom_transient.c
else ifeq ($(strip $(EEPROM_DRIVER)), vendor)
# Vendor-implemented EEPROM
OPT_DEFS += -DEEPROM_VENDOR
ifeq ($(PLATFORM),AVR)
# Automatically provided by avr-libc, nothing required
else ifeq ($(PLATFORM),CHIBIOS)
ifneq ($(filter STM32F3xx_% STM32F1xx_% %_STM32F401xC %_STM32F401xE %_STM32F405xG %_STM32F411xE %_STM32F072xB %_STM32F042x6 %_GD32VF103xB %_GD32VF103x8, $(MCU_SERIES)_$(MCU_LDSCRIPT)),)
OPT_DEFS += -DEEPROM_DRIVER
# Emulated EEPROM
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_FLASH_EMULATED
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c
SRC += $(PLATFORM_COMMON_DIR)/eeprom_stm32.c
SRC += $(PLATFORM_COMMON_DIR)/flash_stm32.c
else ifneq ($(filter $(MCU_SERIES),STM32L0xx STM32L1xx),)
OPT_DEFS += -DEEPROM_DRIVER
# True EEPROM on STM32L0xx, L1xx
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_STM32_L0_L1
COMMON_VPATH += $(DRIVER_PATH)/eeprom
COMMON_VPATH += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/eeprom
SRC += eeprom_driver.c
SRC += eeprom_stm32_L0_L1.c
else ifneq ($(filter $(MCU_SERIES),KL2x K20x),)
# Teensy EEPROM implementations
OPT_DEFS += -DEEPROM_TEENSY
SRC += eeprom_teensy.c
else
# This will effectively work the same as "transient" if not supported by the chip
SRC += $(PLATFORM_COMMON_DIR)/eeprom_teensy.c
# Fall back to transient, i.e. non-persistent
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_TRANSIENT
COMMON_VPATH += $(DRIVER_PATH)/eeprom
SRC += eeprom_driver.c eeprom_transient.c
endif
else ifeq ($(PLATFORM),ARM_ATSAM)
SRC += $(PLATFORM_COMMON_DIR)/eeprom.c
# arm_atsam EEPROM
OPT_DEFS += -DEEPROM_SAMD
SRC += $(PLATFORM_COMMON_DIR)/eeprom_samd.c
else ifeq ($(PLATFORM),TEST)
# Test harness "EEPROM"
OPT_DEFS += -DEEPROM_TEST_HARNESS
SRC += $(PLATFORM_COMMON_DIR)/eeprom.c
endif
endif
endif
VALID_FLASH_DRIVER_TYPES := spi
FLASH_DRIVER ?= no
ifneq ($(strip $(FLASH_DRIVER)), no)
ifeq ($(filter $(FLASH_DRIVER),$(VALID_FLASH_DRIVER_TYPES)),)
$(error FLASH_DRIVER="$(FLASH_DRIVER)" is not a valid FLASH driver)
else
OPT_DEFS += -DFLASH_ENABLE
ifeq ($(strip $(FLASH_DRIVER)), spi)
OPT_DEFS += -DFLASH_DRIVER -DFLASH_SPI
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += flash_spi.c
endif
endif
endif
RGBLIGHT_ENABLE ?= no
VALID_RGBLIGHT_TYPES := WS2812 APA102 custom
@@ -212,7 +245,7 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
RGBLIGHT_DRIVER ?= WS2812
ifeq ($(filter $(RGBLIGHT_DRIVER),$(VALID_RGBLIGHT_TYPES)),)
$(error RGBLIGHT_DRIVER="$(RGBLIGHT_DRIVER)" is not a valid RGB type)
$(call CATASTROPHIC_ERROR,Invalid RGBLIGHT_DRIVER,RGBLIGHT_DRIVER="$(RGBLIGHT_DRIVER)" is not a valid RGB type)
else
COMMON_VPATH += $(QUANTUM_DIR)/rgblight
POST_CONFIG_H += $(QUANTUM_DIR)/rgblight/rgblight_post_config.h
@@ -237,12 +270,12 @@ ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
endif
LED_MATRIX_ENABLE ?= no
VALID_LED_MATRIX_TYPES := IS31FL3731 custom
VALID_LED_MATRIX_TYPES := IS31FL3731 IS31FL3742A IS31FL3743A IS31FL3745 IS31FL3746A custom
# TODO: IS31FL3733 IS31FL3737 IS31FL3741
ifeq ($(strip $(LED_MATRIX_ENABLE)), yes)
ifeq ($(filter $(LED_MATRIX_DRIVER),$(VALID_LED_MATRIX_TYPES)),)
$(error "$(LED_MATRIX_DRIVER)" is not a valid matrix type)
$(call CATASTROPHIC_ERROR,Invalid LED_MATRIX_DRIVER,LED_MATRIX_DRIVER="$(LED_MATRIX_DRIVER)" is not a valid matrix type)
endif
OPT_DEFS += -DLED_MATRIX_ENABLE
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
@@ -264,14 +297,43 @@ endif
SRC += is31fl3731-simple.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3742A)
OPT_DEFS += -DIS31FLCOMMON -DIS31FL3742A -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3743A)
OPT_DEFS += -DIS31FLCOMMON -DIS31FL3743A -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3745)
OPT_DEFS += -DIS31FLCOMMON -DIS31FL3745 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), IS31FL3746A)
OPT_DEFS += -DIS31FLCOMMON -DIS31FL3746A -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
QUANTUM_LIB_SRC += i2c_master.c
endif
endif
RGB_MATRIX_ENABLE ?= no
VALID_RGB_MATRIX_TYPES := AW20216 IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 CKLED2001 WS2812 custom
VALID_RGB_MATRIX_TYPES := AW20216 IS31FL3731 IS31FL3733 IS31FL3737 IS31FL3741 IS31FL3742A IS31FL3743A IS31FL3745 IS31FL3746A CKLED2001 WS2812 custom
ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
ifeq ($(filter $(RGB_MATRIX_DRIVER),$(VALID_RGB_MATRIX_TYPES)),)
$(error "$(RGB_MATRIX_DRIVER)" is not a valid matrix type)
$(call CATASTROPHIC_ERROR,Invalid RGB_MATRIX_DRIVER,RGB_MATRIX_DRIVER="$(RGB_MATRIX_DRIVER)" is not a valid matrix type)
endif
OPT_DEFS += -DRGB_MATRIX_ENABLE
ifneq (,$(filter $(MCU), atmega16u2 atmega32u2 at90usb162))
@@ -323,6 +385,34 @@ endif
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3742A)
OPT_DEFS += -DIS31FLCOMMON -DIS31FL3742A -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3743A)
OPT_DEFS += -DIS31FLCOMMON -DIS31FL3743A -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3745)
OPT_DEFS += -DIS31FLCOMMON -DIS31FL3745 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), IS31FL3746A)
OPT_DEFS += -DIS31FLCOMMON -DIS31FL3746A -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), CKLED2001)
OPT_DEFS += -DCKLED2001 -DSTM32_I2C -DHAL_USE_I2C=TRUE
COMMON_VPATH += $(DRIVER_PATH)/led
@@ -356,7 +446,7 @@ endif
ifeq ($(strip $(PRINTING_ENABLE)), yes)
OPT_DEFS += -DPRINTING_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_printer.c
SRC += $(TMK_DIR)/protocol/serial_uart.c
QUANTUM_LIB_SRC += uart.c
endif
VARIABLE_TRACE ?= no
@@ -385,7 +475,7 @@ else
endif
ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
ifeq ($(filter $(BACKLIGHT_DRIVER),$(VALID_BACKLIGHT_TYPES)),)
$(error BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
$(call CATASTROPHIC_ERROR,Invalid BACKLIGHT_DRIVER,BACKLIGHT_DRIVER="$(BACKLIGHT_DRIVER)" is not a valid backlight type)
endif
COMMON_VPATH += $(QUANTUM_DIR)/backlight
@@ -410,7 +500,7 @@ VALID_WS2812_DRIVER_TYPES := bitbang pwm spi i2c
WS2812_DRIVER ?= bitbang
ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),)
$(error WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver)
$(call CATASTROPHIC_ERROR,Invalid WS2812_DRIVER,WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver)
endif
OPT_DEFS += -DWS2812_DRIVER_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]'))
@@ -465,7 +555,7 @@ VALID_MAGIC_TYPES := yes
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)
$(call CATASTROPHIC_ERROR,Invalid BOOTMAGIC_ENABLE,BOOTMAGIC_ENABLE="$(BOOTMAGIC_ENABLE)" is not a valid type of magic)
endif
ifneq ($(strip $(BOOTMAGIC_ENABLE)), no)
OPT_DEFS += -DBOOTMAGIC_LITE
@@ -481,7 +571,7 @@ CUSTOM_MATRIX ?= no
ifneq ($(strip $(CUSTOM_MATRIX)), yes)
ifeq ($(filter $(CUSTOM_MATRIX),$(VALID_CUSTOM_MATRIX_TYPES)),)
$(error CUSTOM_MATRIX="$(CUSTOM_MATRIX)" is not a valid custom matrix type)
$(call CATASTROPHIC_ERROR,Invalid CUSTOM_MATRIX,CUSTOM_MATRIX="$(CUSTOM_MATRIX)" is not a valid custom matrix type)
endif
# Include common stuff for all non custom matrix users
@@ -564,7 +654,7 @@ 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)
$(call CATASTROPHIC_ERROR,Invalid OLED_DRIVER,OLED_DRIVER="$(OLED_DRIVER)" is not a valid OLED driver)
else
OPT_DEFS += -DOLED_ENABLE
COMMON_VPATH += $(DRIVER_PATH)/oled
@@ -604,6 +694,7 @@ ifeq ($(strip $(UNICODE_ENABLE)), yes)
endif
ifeq ($(strip $(UNICODE_COMMON)), yes)
OPT_DEFS += -DUNICODE_COMMON_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_unicode_common.c
endif
@@ -631,7 +722,7 @@ endif
ifeq ($(strip $(PS2_USE_BUSYWAIT)), yes)
PS2_ENABLE := yes
SRC += ps2_busywait.c
SRC += ps2_io_avr.c
SRC += ps2_io.c
OPT_DEFS += -DPS2_USE_BUSYWAIT
endif
@@ -660,7 +751,7 @@ VALID_JOYSTICK_TYPES := analog digital
JOYSTICK_DRIVER ?= analog
ifeq ($(strip $(JOYSTICK_ENABLE)), yes)
ifeq ($(filter $(JOYSTICK_DRIVER),$(VALID_JOYSTICK_TYPES)),)
$(error "$(JOYSTICK_DRIVER)" is not a valid joystick driver)
$(call CATASTROPHIC_ERROR,Invalid JOYSTICK_DRIVER,JOYSTICK_DRIVER="$(JOYSTICK_DRIVER)" is not a valid joystick driver)
endif
OPT_DEFS += -DJOYSTICK_ENABLE
SRC += $(QUANTUM_DIR)/process_keycode/process_joystick.c
@@ -680,7 +771,7 @@ VALID_USBPD_DRIVER_TYPES = custom vendor
USBPD_DRIVER ?= vendor
ifeq ($(strip $(USBPD_ENABLE)), yes)
ifeq ($(filter $(strip $(USBPD_DRIVER)),$(VALID_USBPD_DRIVER_TYPES)),)
$(error USBPD_DRIVER="$(USBPD_DRIVER)" is not a valid USBPD driver)
$(call CATASTROPHIC_ERROR,Invalid USBPD_DRIVER,USBPD_DRIVER="$(USBPD_DRIVER)" is not a valid USBPD driver)
else
OPT_DEFS += -DUSBPD_ENABLE
ifeq ($(strip $(USBPD_DRIVER)), vendor)
@@ -690,7 +781,7 @@ ifeq ($(strip $(USBPD_ENABLE)), yes)
OPT_DEFS += -DUSBPD_STM32G4
SRC += usbpd_stm32g4.c
else
$(error There is no vendor-provided USBPD driver available)
$(call CATASTROPHIC_ERROR,Invalid USBPD_DRIVER,There is no vendor-provided USBPD driver available)
endif
else ifeq ($(strip $(USBPD_DRIVER)), custom)
OPT_DEFS += -DUSBPD_CUSTOM
@@ -700,25 +791,26 @@ ifeq ($(strip $(USBPD_ENABLE)), yes)
endif
BLUETOOTH_ENABLE ?= no
VALID_BLUETOOTH_DRIVER_TYPES := AdafruitBLE RN42 custom
VALID_BLUETOOTH_DRIVER_TYPES := BluefruitLE RN42 custom
ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
ifeq ($(filter $(strip $(BLUETOOTH_DRIVER)),$(VALID_BLUETOOTH_DRIVER_TYPES)),)
$(error "$(BLUETOOTH_DRIVER)" is not a valid Bluetooth driver type)
$(call CATASTROPHIC_ERROR,Invalid BLUETOOTH_DRIVER,BLUETOOTH_DRIVER="$(BLUETOOTH_DRIVER)" is not a valid Bluetooth driver type)
endif
OPT_DEFS += -DBLUETOOTH_ENABLE
NO_USB_STARTUP_CHECK := yes
COMMON_VPATH += $(DRIVER_PATH)/bluetooth
SRC += outputselect.c
ifeq ($(strip $(BLUETOOTH_DRIVER)), AdafruitBLE)
OPT_DEFS += -DMODULE_ADAFRUIT_BLE
ifeq ($(strip $(BLUETOOTH_DRIVER)), BluefruitLE)
OPT_DEFS += -DBLUETOOTH_BLUEFRUIT_LE
SRC += analog.c
SRC += $(DRIVER_PATH)/bluetooth/adafruit_ble.cpp
SRC += $(DRIVER_PATH)/bluetooth/bluefruit_le.cpp
QUANTUM_LIB_SRC += spi_master.c
endif
ifeq ($(strip $(BLUETOOTH_DRIVER)), RN42)
OPT_DEFS += -DMODULE_RN42
SRC += $(TMK_DIR)/protocol/serial_uart.c
OPT_DEFS += -DBLUETOOTH_RN42
SRC += $(DRIVER_PATH)/bluetooth/rn42.c
QUANTUM_LIB_SRC += uart.c
endif
endif

View File

@@ -234,6 +234,7 @@ endif
# Define programs and commands.
SHELL = sh
SED = sed
REMOVE = rm -f
REMOVEDIR = rmdir
COPY = cp
@@ -292,17 +293,15 @@ sym: $(BUILD_DIR)/$(TARGET).sym
LIBNAME=lib$(TARGET).a
lib: $(LIBNAME)
# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex
#ELFSIZE = $(SIZE) --mcu=$(MCU) --format=avr $(TARGET).elf
ELFSIZE = $(SIZE) $(BUILD_DIR)/$(TARGET).elf
# Display size of file, modifying the output so people don't mistakenly grab the hex output
BINARY_SIZE = $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(SED) -e 's/\.build\/.*$$/$(TARGET).$(FIRMWARE_FORMAT)/g'
sizebefore:
@if test -f $(BUILD_DIR)/$(TARGET).hex; then $(SECHO) $(MSG_SIZE_BEFORE); $(SILENT) || $(HEXSIZE); \
@if test -f $(BUILD_DIR)/$(TARGET).hex; then $(SECHO) $(MSG_SIZE_BEFORE); $(SILENT) || $(BINARY_SIZE); \
2>/dev/null; $(SECHO); fi
sizeafter: $(BUILD_DIR)/$(TARGET).hex
@if test -f $(BUILD_DIR)/$(TARGET).hex; then $(SECHO); $(SECHO) $(MSG_SIZE_AFTER); $(SILENT) || $(HEXSIZE); \
@if test -f $(BUILD_DIR)/$(TARGET).hex; then $(SECHO); $(SECHO) $(MSG_SIZE_AFTER); $(SILENT) || $(BINARY_SIZE); \
2>/dev/null; $(SECHO); fi
# Display compiler version information.
@@ -479,7 +478,7 @@ ifeq ($(findstring avr-gcc,$(CC)),avr-gcc)
SIZE_MARGIN = 1024
check-size:
$(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) platforms/avr/bootloader_size.c 2> /dev/null | sed -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0))
$(eval MAX_SIZE=$(shell n=`$(CC) -E -mmcu=$(MCU) -D__ASSEMBLER__ $(CFLAGS) $(OPT_DEFS) platforms/avr/bootloader_size.c 2> /dev/null | $(SED) -ne 's/\r//;/^#/n;/^AVR_SIZE:/,$${s/^AVR_SIZE: //;p;}'` && echo $$(($$n)) || echo 0))
$(eval CURRENT_SIZE=$(shell if [ -f $(BUILD_DIR)/$(TARGET).hex ]; then $(SIZE) --target=$(FORMAT) $(BUILD_DIR)/$(TARGET).hex | $(AWK) 'NR==2 {print $$4}'; else printf 0; fi))
$(eval FREE_SIZE=$(shell expr $(MAX_SIZE) - $(CURRENT_SIZE)))
$(eval OVER_SIZE=$(shell expr $(CURRENT_SIZE) - $(MAX_SIZE)))

View File

@@ -143,6 +143,9 @@ ifneq ($(findstring STM32F042, $(MCU)),)
# This ensures that the EEPROM page buffer fits into RAM
USE_PROCESS_STACKSIZE = 0x600
USE_EXCEPTIONS_STACKSIZE = 0x300
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFFC400
endif
ifneq ($(findstring STM32F072, $(MCU)),)
@@ -175,6 +178,9 @@ ifneq ($(findstring STM32F072, $(MCU)),)
# UF2 settings
UF2_FAMILY ?= STM32F0
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFFC800
endif
ifneq ($(findstring STM32F103, $(MCU)),)
@@ -239,6 +245,9 @@ ifneq ($(findstring STM32F303, $(MCU)),)
# UF2 settings
UF2_FAMILY ?= STM32F3
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFFD800
endif
ifneq ($(findstring STM32F401, $(MCU)),)
@@ -276,6 +285,9 @@ ifneq ($(findstring STM32F401, $(MCU)),)
# UF2 settings
UF2_FAMILY ?= STM32F4
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq ($(findstring STM32F405, $(MCU)),)
@@ -308,6 +320,9 @@ ifneq ($(findstring STM32F405, $(MCU)),)
# UF2 settings
UF2_FAMILY ?= STM32F4
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq ($(findstring STM32F407, $(MCU)),)
@@ -340,6 +355,9 @@ ifneq ($(findstring STM32F407, $(MCU)),)
# UF2 settings
UF2_FAMILY ?= STM32F4
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq ($(findstring STM32F411, $(MCU)),)
@@ -377,6 +395,9 @@ ifneq ($(findstring STM32F411, $(MCU)),)
# UF2 settings
UF2_FAMILY ?= STM32F4
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq ($(findstring STM32F446, $(MCU)),)
@@ -406,6 +427,9 @@ ifneq ($(findstring STM32F446, $(MCU)),)
BOARD ?= GENERIC_STM32_F446XE
USE_FPU ?= yes
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq ($(findstring STM32G431, $(MCU)),)
@@ -438,6 +462,9 @@ ifneq ($(findstring STM32G431, $(MCU)),)
# UF2 settings
UF2_FAMILY ?= STM32G4
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq ($(findstring STM32G474, $(MCU)),)
@@ -470,6 +497,46 @@ ifneq ($(findstring STM32G474, $(MCU)),)
# UF2 settings
UF2_FAMILY ?= STM32G4
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq (,$(filter $(MCU),STM32L432 STM32L442))
# Cortex version
MCU = cortex-m4
# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
ARMV = 7
## chip/board settings
# - the next two should match the directories in
# <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
MCU_FAMILY = STM32
MCU_SERIES = STM32L4xx
# Linker script to use
# - it should exist either in <chibios>/os/common/startup/ARMCMx/compilers/GCC/ld/
# or <keyboard_dir>/ld/
MCU_LDSCRIPT ?= STM32L432xC
# Startup code to use
# - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
MCU_STARTUP ?= stm32l4xx
# Board: it should exist either in <chibios>/os/hal/boards/,
# <keyboard_dir>/boards/, or drivers/boards/
BOARD ?= GENERIC_STM32_L432XC
PLATFORM_NAME ?= platform_l432
USE_FPU ?= yes
# UF2 settings
UF2_FAMILY ?= STM32L4
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq (,$(filter $(MCU),STM32L433 STM32L443))
@@ -504,6 +571,9 @@ ifneq (,$(filter $(MCU),STM32L433 STM32L443))
# UF2 settings
UF2_FAMILY ?= STM32L4
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq (,$(filter $(MCU),STM32L412 STM32L422))
@@ -538,6 +608,9 @@ ifneq (,$(filter $(MCU),STM32L412 STM32L422))
# UF2 settings
UF2_FAMILY ?= STM32L4
# Bootloader address for STM32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFF0000
endif
ifneq ($(findstring WB32F3G71, $(MCU)),)
@@ -567,6 +640,10 @@ ifneq ($(findstring WB32F3G71, $(MCU)),)
BOARD ?= GENERIC_WB32_F3G71XX
USE_FPU ?= no
# Bootloader address for WB32 DFU
STM32_BOOTLOADER_ADDRESS ?= 0x1FFFE000
WB32_BOOTLOADER_ADDRESS ?= 0x1FFFE000
endif
ifneq ($(findstring GD32VF103, $(MCU)),)

View File

@@ -63,6 +63,7 @@ MSG_COMPILING_CXX = Compiling:
MSG_ASSEMBLING = Assembling:
MSG_CLEANING = Cleaning project:
MSG_CREATING_LIBRARY = Creating library:
MSG_GENERATING = Generating:
MSG_SUBMODULE_DIRTY = $(WARN_COLOR)WARNING:$(NO_COLOR) Some git submodules are out of date or modified.\n\
Please consider running $(BOLD)make git-submodule$(NO_COLOR).\n\n
MSG_NO_CMP = $(ERROR_COLOR)Error:$(NO_COLOR)$(BOLD) cmp command not found, please install diffutils\n$(NO_COLOR)
@@ -87,6 +88,7 @@ define GENERATE_MSG_AVAILABLE_KEYMAPS
endef
MSG_AVAILABLE_KEYMAPS = $(eval $(call GENERATE_MSG_AVAILABLE_KEYMAPS))$(MSG_AVAILABLE_KEYMAPS_ACTUAL)
MSG_BOOTLOADER_NOT_FOUND_BASE = Bootloader not found. Make sure the board is in bootloader mode. See https://docs.qmk.fm/\#/newbs_flashing\n
MSG_CHECK_FILESIZE = Checking file size of $(TARGET).$(FIRMWARE_FORMAT)
MSG_CHECK_FILESIZE_SKIPPED = (Firmware size check does not yet support $(MCU_ORIG); skipping)
MSG_FILE_TOO_BIG = $(ERROR_COLOR)The firmware is too large!$(NO_COLOR) $(CURRENT_SIZE)/$(MAX_SIZE) ($(OVER_SIZE) bytes over)\n
@@ -97,6 +99,11 @@ MSG_PYTHON_MISSING = $(ERROR_COLOR)ERROR:$(NO_COLOR) Cannot run \"qmk hello\"!\n
Please run $(BOLD)qmk setup$(NO_COLOR) to install all the dependencies QMK requires.\n\n
MSG_FLASH_BOOTLOADER = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's bootloader is not specified or is not supported by the \":flash\" target at this time.\n\n
MSG_FLASH_ARCH = $(WARN_COLOR)WARNING:$(NO_COLOR) This board's architecture is not supported by the \":flash\" target at this time.\n\n
MSG_BOOTLOADER_NOT_FOUND = $(ERROR_COLOR)ERROR:$(NO_COLOR) Bootloader not found. Trying again in 5s (Ctrl+C to cancel)\n
MSG_BOOTLOADER_NOT_FOUND = $(ERROR_COLOR)ERROR:$(NO_COLOR) $(MSG_BOOTLOADER_NOT_FOUND_BASE) Trying again in 5s (Ctrl+C to cancel)\n
BOOTLOADER_RETRY_TIME ?= 0.5
MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY = Bootloader not found. Trying again every $(BOOTLOADER_RETRY_TIME)s (Ctrl+C to cancel)
MSG_BOOTLOADER_NOT_FOUND_QUICK_RETRY = $(MSG_BOOTLOADER_NOT_FOUND_BASE) Trying again every $(BOOTLOADER_RETRY_TIME)s (Ctrl+C to cancel)
define CATASTROPHIC_ERROR
$(shell printf "\n * %-99s $(ERROR_STRING)\n" "$2" >&2)
$(error $1)
endef

View File

@@ -8,7 +8,7 @@ include $(PLATFORM_PATH)/test/testlist.mk
define VALIDATE_TEST_LIST
ifneq ($1,)
ifeq ($$(findstring -,$1),-)
$$(error Test names can't contain '-', but '$1' does)
$$(call CATASTROPHIC_ERROR,Invalid test name,Test names can't contain '-', but '$1' does.)
else
$$(eval $$(call VALIDATE_TEST_LIST,$$(firstword $2),$$(wordlist 2,9999,$2)))
endif

View File

@@ -15,6 +15,8 @@
"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"},
# TODO: Replace ^^^ with vvv
#"DEVICE_VER": {"info_key": "usb.device_version", "value_type": "bcd_version"},
"DESCRIPTION": {"info_key": "keyboard_folder", "to_json": false},
"DIODE_DIRECTION": {"info_key": "diode_direction"},
"FORCE_NKRO": {"info_key": "usb.force_nkro", "value_type": "bool"},

View File

@@ -41,8 +41,14 @@
'atom47/rev3': {
target: 'maartenwut/atom47/rev3'
},
bakeneko60: {
target: 'kkatano/bakeneko60'
},
bakeneko65: {
target: 'bakeneko65/rev2'
target: 'kkatano/bakeneko65/rev2'
},
bakeneko80: {
target: 'kkatano/bakeneko80'
},
bear_face: {
target: 'bear_face/v1'
@@ -215,6 +221,9 @@
LAYOUT: 'LAYOUT_all'
}
},
idobo: {
target: 'idobao/id75'
},
'jj40': {
target: 'kprepublic/jj40'
},
@@ -260,6 +269,9 @@
'lfkeyboards/smk65': {
target: 'lfkeyboards/smk65/revb'
},
m3v3van: {
target: 'matthewdias/m3n3van'
},
'maartenwut/atom47/rev2': {
target: 'evyd13/atom47/rev2'
},
@@ -353,9 +365,15 @@
'mechlovin/hannah65': {
target: 'mechlovin/hannah65/rev1'
},
minim: {
target: 'matthewdias/minim'
},
model01: {
target: 'keyboardio/model01'
},
model_v: {
target: 'matthewdias/model_v'
},
m0lly: {
target: 'tkc/m0lly'
},
@@ -498,6 +516,9 @@
'tokyo60': {
target: 'tokyokeyboard/tokyo60'
},
'txuu': {
target: 'matthewdias/txuu'
},
underscore33: {
target: 'underscore33/rev1'
},
@@ -550,7 +571,7 @@
target: 'xelus/valor/rev1'
},
yd60mq: {
target: 'yd60mq/12led'
target: 'ymdk/yd60mq/12led'
},
ymd75: {
target: 'ymd75/rev1'
@@ -563,5 +584,615 @@
},
zeal65: {
target: 'wilba_tech/zeal65'
},
# Moved during 2022 Q1 cycle
6ball: {
target: 'maple_computing/6ball'
},
7skb: {
target: 'salicylic_acid3/7skb'
},
7splus: {
target: 'salicylic_acid3/7splus'
},
acr60: {
target: 'mechkeys/acr60'
},
adalyn: {
target: 'tominabox1/adalyn'
},
ajisai74: {
target: 'salicylic_acid3/ajisai74'
},
aleth42: {
target: '25keys/aleth42'
},
alicia_cook: {
target: 'ibnuda/alicia_cook'
},
allison: {
target: 'prototypist/allison'
},
allison_numpad: {
target: 'prototypist/allison_numpad'
},
alu84: {
target: 'mechkeys/alu84'
},
angel17: {
target: 'kakunpc/angel17'
},
angel64/alpha: {
target: 'kakunpc/angel64/alpha'
},
angel64/rev1: {
target: 'kakunpc/angel64/rev1'
},
arch_36: {
target: 'obosob/arch_36'
},
bakeneko60: {
target: 'kkatano/bakeneko60'
},
bakeneko65/rev2: {
target: 'kkatano/bakeneko65/rev2'
},
bakeneko65/rev3: {
target: 'kkatano/bakeneko65/rev3'
},
bakeneko80: {
target: 'kkatano/bakeneko80'
},
barleycorn: {
target: 'yiancardesigns/barleycorn'
},
bat43/rev1: {
target: 'dailycraft/bat43/rev1'
},
bat43/rev2: {
target: 'dailycraft/bat43/rev2'
},
bigseries/1key: {
target: 'woodkeys/bigseries/1key'
},
bigseries/2key: {
target: 'woodkeys/bigseries/2key'
},
bigseries/3key: {
target: 'woodkeys/bigseries/3key'
},
bigseries/4key: {
target: 'woodkeys/bigseries/4key'
},
bkf: {
target: 'drhigsby/bkf'
},
business_card/alpha: {
target: 'kakunpc/business_card/alpha'
},
business_card/beta: {
target: 'kakunpc/business_card/beta'
},
butterstick: {
target: 'gboards/butterstick'
},
c39: {
target: 'maple_computing/c39'
},
cassette42: {
target: '25keys/cassette42'
},
chidori: {
target: 'kagizaraya/chidori'
},
chili: {
target: 'ydkb/chili'
},
chimera_ergo: {
target: 'glenpickle/chimera_ergo'
},
chimera_ls: {
target: 'glenpickle/chimera_ls'
},
chimera_ortho: {
target: 'glenpickle/chimera_ortho'
},
chimera_ortho_plus: {
target: 'glenpickle/chimera_ortho_plus'
},
choc_taro: {
target: 'kakunpc/choc_taro'
},
choco60: {
target: 'recompile_keys/choco60'
},
christmas_tree: {
target: 'maple_computing/christmas_tree'
},
claw44/rev1: {
target: 'dailycraft/claw44/rev1'
},
cocoa40: {
target: 'recompile_keys/cocoa40'
},
comet46: {
target: 'satt/comet46'
},
cu24: {
target: 'capsunlocked/cu24'
},
cu75: {
target: 'capsunlocked/cu75'
},
cu80: {
target: 'capsunlocked/cu80/v1'
},
delilah: {
target: 'rainkeebs/delilah'
},
diverge3: {
target: 'unikeyboard/diverge3'
},
divergetm2: {
target: 'unikeyboard/divergetm2'
},
dozen0: {
target: 'yynmt/dozen0'
},
dubba175: {
target: 'drhigsby/dubba175'
},
eggman: {
target: 'qpockets/eggman'
},
ergo42: {
target: 'biacco42/ergo42'
},
ergoarrows: {
target: 'salicylic_acid3/ergoarrows'
},
ergodash/mini: {
target: 'omkbd/ergodash/mini'
},
ergodash/rev1: {
target: 'omkbd/ergodash/rev1'
},
ergodox_infinity: {
target: 'input_club/ergodox_infinity'
},
ergotaco: {
target: 'gboards/ergotaco'
},
espectro: {
target: 'mechkeys/espectro'
},
felix: {
target: 'unikeyboard/felix'
},
four_banger: {
target: 'bpiphany/four_banger'
},
freyr: {
target: 'hnahkb/freyr'
},
geminate60: {
target: 'weirdo/geminate60'
},
georgi: {
target: 'gboards/georgi'
},
gergo: {
target: 'gboards/gergo'
},
getta25: {
target: 'salicylic_acid3/getta25'
},
gingham: {
target: 'yiancardesigns/gingham'
},
gurindam: {
target: 'ibnuda/gurindam'
},
halberd: {
target: 'kagizaraya/halberd'
},
hecomi/alpha: {
target: 'takashiski/hecomi/alpha'
},
hid_liber: {
target: 'bpiphany/hid_liber'
},
id67/default_rgb: {
target: 'idobao/id67/default_rgb'
},
id67/rgb: {
target: 'idobao/id67/rgb'
},
id80: {
target: 'idobao/id80/v1'
},
id87: {
target: 'idobao/id87/v1'
},
idobo: {
target: 'idobao/id75/v1'
},
infinity60: {
target: 'input_club/infinity60'
},
ivy/rev1: {
target: 'maple_computing/ivy/rev1'
},
jisplit89: {
target: 'salicylic_acid3/jisplit89'
},
jnao: {
target: 'maple_computing/jnao'
},
just60: {
target: 'ydkb/just60'
},
k_type: {
target: 'input_club/k_type'
},
kagamidget: {
target: 'yynmt/kagamidget'
},
kelowna/rgb64: {
target: 'weirdo/kelowna/rgb64'
},
kprepublic/bm65hsrgb_iso: {
target: 'kprepublic/bm65hsrgb_iso/rev1'
},
kprepublic/bm68hsrgb: {
target: 'kprepublic/bm68hsrgb/rev1'
},
latin17rgb: {
target: 'latincompass/latin17rgb'
},
latin47ble: {
target: 'latincompass/latin47ble'
},
latin60rgb: {
target: 'latincompass/latin60rgb'
},
latin64ble: {
target: 'latincompass/latin64ble'
},
latin6rgb: {
target: 'latincompass/latin6rgb'
},
latinpad: {
target: 'latincompass/latinpad'
},
latinpadble: {
target: 'latincompass/latinpadble'
},
launchpad/rev1: {
target: 'maple_computing/launchpad/rev1'
},
lck75: {
target: 'lyso1/lck75'
},
le_chiffre: {
target: 'tominabox1/le_chiffre'
},
lefishe: {
target: 'lyso1/lefishe'
},
lets_split_eh/eh: {
target: 'maple_computing/lets_split_eh/eh'
},
ls_60: {
target: 'weirdo/ls_60'
},
m3n3van: {
target: 'matthewdias/m3n3van'
},
mechmini/v1: {
target: 'mechkeys/mechmini/v1'
},
mechmini/v2: {
target: 'mechkeys/mechmini/v2'
},
meira: {
target: 'woodkeys/meira'
},
meishi: {
target: 'biacco42/meishi'
},
meishi2: {
target: 'biacco42/meishi2'
},
minidox/rev1: {
target: 'maple_computing/minidox/rev1'
},
minim: {
target: 'matthewdias/minim'
},
mio: {
target: 'recompile_keys/mio'
},
model_v: {
target: 'matthewdias/model_v'
},
montex: {
target: 'idobao/montex/v1'
},
nafuda: {
target: 'salicylic_acid3/nafuda'
},
naiping/np64: {
target: 'weirdo/naiping/np64'
},
naiping/nphhkb: {
target: 'weirdo/naiping/nphhkb'
},
naiping/npminila: {
target: 'weirdo/naiping/npminila'
},
naked48: {
target: 'salicylic_acid3/naked48'
},
naked60: {
target: 'salicylic_acid3/naked60'
},
naked64: {
target: 'salicylic_acid3/naked64'
},
namecard2x4: {
target: 'takashiski/namecard2x4'
},
nebula12: {
target: 'spaceholdings/nebula12'
},
nebula68: {
target: 'spaceholdings/nebula68'
},
nebula68b: {
target: 'spaceholdings/nebula68b'
},
niu_mini: {
target: 'kbdfans/niu_mini'
},
nk1: {
target: 'novelkeys/nk1'
},
nk65: {
target: 'novelkeys/nk65'
},
nk87: {
target: 'novelkeys/nk87'
},
nknl7en: {
target: 'salicylic_acid3/nknl7en'
},
nknl7jp: {
target: 'salicylic_acid3/nknl7jp'
},
nomu30: {
target: 'recompile_keys/nomu30'
},
novelpad: {
target: 'novelkeys/novelpad'
},
ogurec: {
target: 'drhigsby/ogurec'
},
otaku_split/rev0: {
target: 'takashiski/otaku_split/rev0'
},
otaku_split/rev1: {
target: 'takashiski/otaku_split/rev1'
},
owl8: {
target: 'dailycraft/owl8'
},
packrat: {
target: 'drhigsby/packrat'
},
pistachio: {
target: 'rate/pistachio'
},
pistachio_mp: {
target: 'rate/pistachio_mp'
},
pistachio_pro: {
target: 'rate/pistachio_pro'
},
plexus75: {
target: 'checkerboards/plexus75'
},
pursuit40: {
target: 'checkerboards/pursuit40'
},
qaz: {
target: 'tominabox1/qaz'
},
quark: {
target: 'checkerboards/quark'
},
rabbit_capture_plan: {
target: 'kakunpc/rabbit_capture_plan'
},
rainkeeb: {
target: 'rainkeebs/rainkeeb'
},
reviung33: {
target: 'reviung/reviung33'
},
reviung34: {
target: 'reviung/reviung34'
},
reviung39: {
target: 'reviung/reviung39'
},
reviung41: {
target: 'reviung/reviung41'
},
reviung5: {
target: 'reviung/reviung5'
},
reviung53: {
target: 'reviung/reviung53'
},
reviung61: {
target: 'reviung/reviung61'
},
runner3680/3x6: {
target: 'omkbd/runner3680/3x6'
},
runner3680/3x7: {
target: 'omkbd/runner3680/3x7'
},
runner3680/3x8: {
target: 'omkbd/runner3680/3x8'
},
runner3680/4x6: {
target: 'omkbd/runner3680/4x6'
},
runner3680/4x7: {
target: 'omkbd/runner3680/4x7'
},
runner3680/4x8: {
target: 'omkbd/runner3680/4x8'
},
runner3680/5x6: {
target: 'omkbd/runner3680/5x6'
},
runner3680/5x6_5x8: {
target: 'omkbd/runner3680/5x6_5x8'
},
runner3680/5x7: {
target: 'omkbd/runner3680/5x7'
},
runner3680/5x8: {
target: 'omkbd/runner3680/5x8'
},
scarletbandana: {
target: 'woodkeys/scarletbandana'
},
scythe: {
target: 'kagizaraya/scythe'
},
seigaiha: {
target: 'yiancardesigns/seigaiha'
},
setta21: {
target: 'salicylic_acid3/setta21'
},
space_space/rev1: {
target: 'qpockets/space_space/rev1'
},
space_space/rev2: {
target: 'qpockets/space_space/rev2'
},
spiderisland/winry25tc: {
target: 'winry/winry25tc'
},
splitreus62: {
target: 'nacly/splitreus62'
},
squiggle/rev1: {
target: 'ibnuda/squiggle/rev1'
},
standaside: {
target: 'edi/standaside'
},
steal_this_keyboard: {
target: 'obosob/steal_this_keyboard'
},
stella: {
target: 'hnahkb/stella'
},
suihankey/alpha: {
target: 'kakunpc/suihankey/alpha'
},
suihankey/rev1: {
target: 'kakunpc/suihankey/rev1'
},
suihankey/split: {
target: 'kakunpc/suihankey/split'
},
the_ruler: {
target: 'maple_computing/the_ruler'
},
thedogkeyboard: {
target: 'kakunpc/thedogkeyboard'
},
tiger910: {
target: 'weirdo/tiger910'
},
treadstone32: {
target: 'marksard/treadstone32'
},
treadstone48/rev1: {
target: 'marksard/treadstone48/rev1'
},
treadstone48/rev2: {
target: 'marksard/treadstone48/rev2'
},
txuu: {
target: 'matthewdias/txuu'
},
ua62: {
target: 'nacly/ua62'
},
underscore33/rev1: {
target: 'tominabox1/underscore33/rev1'
},
underscore33/rev2: {
target: 'tominabox1/underscore33/rev2'
},
vn66: {
target: 'hnahkb/vn66'
},
wallaby: {
target: 'kkatano/wallaby'
},
wanten: {
target: 'qpockets/wanten'
},
whitefox: {
target: 'input_club/whitefox'
},
wings42/rev1: {
target: 'dailycraft/wings42/rev1'
},
wings42/rev1_extkeys: {
target: 'dailycraft/wings42/rev1_extkeys'
},
wings42/rev2: {
target: 'dailycraft/wings42/rev2'
},
yasui: {
target: 'rainkeebs/yasui'
},
yd60mq: {
target: 'ymdk/yd60mq'
},
yd68: {
target: 'ydkb/yd68'
},
ymd75: {
target: 'ymdk/ymd75'
},
ymd96: {
target: 'ymdk/ymd96'
},
ymdk_np21: {
target: 'ymdk/np21'
},
yurei: {
target: 'kkatano/yurei'
},
zinc: {
target: '25keys/zinc'
},
zinc/rev1: {
target: '25keys/zinc/rev1'
},
zinc/reva: {
target: '25keys/zinc/reva'
}
}

View File

@@ -20,6 +20,10 @@
"type": "string",
"pattern": "^0x[0-9A-F]{4}$"
},
"bcd_version": {
"type": "string",
"pattern": "^[0-9]{1,2}\\.[0-9]\\.[0-9]$"
},
"text_identifier": {
"type": "string",
"minLength": 1,
@@ -29,7 +33,33 @@
"oneOf": [
{
"type": "string",
"enum": ["LAYOUT", "LAYOUT_planck_1x2uC"]
"enum": [
"LAYOUT",
"LAYOUT_1x2uC",
"LAYOUT_1x2uL",
"LAYOUT_1x2uR",
"LAYOUT_2x2uC",
"LAYOUT_2x3uC",
"LAYOUT_625uC",
"LAYOUT_ANSI_DEFAULT",
"LAYOUT_JP",
"LAYOUT_ortho_3x12_1x2uC",
"LAYOUT_ortho_4x12_1x2uC",
"LAYOUT_ortho_4x12_1x2uL",
"LAYOUT_ortho_4x12_1x2uR",
"LAYOUT_ortho_5x12_1x2uC",
"LAYOUT_ortho_5x12_2x2uC",
"LAYOUT_ortho_5x14_1x2uC",
"LAYOUT_ortho_5x14_1x2uL",
"LAYOUT_ortho_5x14_1x2uR",
"LAYOUT_planck_1x2uC",
"LAYOUT_planck_1x2uL",
"LAYOUT_planck_1x2uR",
"LAYOUT_preonic_1x2uC",
"LAYOUT_preonic_1x2uL",
"LAYOUT_preonic_1x2uR",
"LAYOUT_reviung34_2uL"
]
},
{
"type": "string",
@@ -47,6 +77,10 @@
},
"mcu_pin": {
"oneOf": [
{
"type": "string",
"enum": ["NO_PIN"]
},
{
"type": "string",
"pattern": "^[A-K]\\d{1,2}$"
@@ -70,13 +104,13 @@
"signed_int": {
"type": "number",
"multipleOf": 1
}
},
"signed_int_8": {
"type": "number",
"min": -127,
"max": 127,
"multipleOf": 1
}
},
"string_array": {
"type": "array",
"items": {
@@ -97,7 +131,7 @@
"type": "number",
"min": 0,
"multipleOf": 1
}
},
"unsigned_int_8": {
"type": "number",
"min": 0,

View File

@@ -13,7 +13,7 @@
},
"processor": {
"type": "string",
"enum": ["cortex-m0", "cortex-m0plus", "cortex-m3", "cortex-m4", "MKL26Z64", "MK20DX128", "MK20DX256", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L433", "STM32L443", "GD32VF103", "WB32F3G71", "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", "MK66FX1M0", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F405", "STM32F407", "STM32F411", "STM32F446", "STM32G431", "STM32G474", "STM32L412", "STM32L422", "STM32L432", "STM32L433", "STM32L442", "STM32L443", "GD32VF103", "WB32F3G71", "atmega16u2", "atmega32u2", "atmega16u4", "atmega32u4", "at90usb162", "at90usb646", "at90usb647", "at90usb1286", "at90usb1287", "atmega32a", "atmega328p", "atmega328", "attiny85", "unknown"]
},
"audio": {
"type": "object",
@@ -45,7 +45,7 @@
"properties": {
"driver": {
"type": "string",
"enum": ["AdafruitBLE", "RN42"]
"enum": ["BluefruitLE", "RN42"]
},
"lto": {"type": "boolean"},
}
@@ -57,7 +57,7 @@
},
"bootloader": {
"type": "string",
"enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "gd32v-dfu", "wb32-dfu", "unknown", "usbasploader", "USBasp", "tinyuf2"],
"enum": ["atmel-dfu", "bootloadhid", "bootloadHID", "custom", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "md-boot", "qmk-dfu", "qmk-hid", "stm32-dfu", "stm32duino", "gd32v-dfu", "wb32-dfu", "unknown", "usbasploader", "USBasp", "tinyuf2"],
},
"bootloader_instructions": {
"type": "string",
@@ -69,7 +69,7 @@
"properties": {
"debounce_type": {
"type": "string",
"enum": ["custom", "eager_pk", "eager_pr", "sym_defer_pk", "sym_eager_pk"]
"enum": ["custom", "eager_pk", "eager_pr", "sym_defer_pk", "sym_defer_pr", "sym_eager_pk"]
},
"firmware_format": {
"type": "string",
@@ -109,6 +109,7 @@
},
"layouts": {
"type": "object",
"propertyNames": {"$ref": "qmk.definitions.v1#/layout_macro"},
"additionalProperties": {
"type": "object",
"additionalProperties": false,
@@ -320,7 +321,8 @@
"type": "object",
"additionalProperties": false,
"properties": {
"device_ver": {"$ref": "qmk.definitions.v1#/hex_number_4d"},
"device_ver": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, # Deprecated
"device_version": {"$ref": "qmk.definitions.v1#/bcd_version"},
"force_nkro": {"type": "boolean"},
"pid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},
"vid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},

View File

@@ -53,5 +53,10 @@
"type": "string",
"description": "asdf"
}
}
},
"required": [
"keyboard",
"layout",
"layers"
]
}

View File

@@ -1,4 +0,0 @@
// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "%(KEYBOARD)s.h"

View File

@@ -1 +0,0 @@
# The default keymap for %(KEYBOARD)s

View File

@@ -0,0 +1,20 @@
// Copyright %YEAR% %REAL_NAME% (@%USER_NAME%)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT

View File

@@ -0,0 +1,25 @@
{
"keyboard_name": "%KEYBOARD%",
"maintainer": "%USER_NAME%",
"manufacturer": "%REAL_NAME%",
"processor": "%MCU%",
"bootloader": "%BOOTLOADER%",
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["C2"],
"rows": ["D1"]
},
"usb": {
"vid": "0xFEED",
"pid": "0x0000",
"device_version": "1.0.0"
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
}
}

View File

@@ -1,20 +1,20 @@
# %(KEYBOARD)s
# %KEYBOARD%
![%(KEYBOARD)s](imgur.com image replace me!)
![%KEYBOARD%](imgur.com image replace me!)
*A short description of the keyboard/project*
* Keyboard Maintainer: [%(YOUR_NAME)s](https://github.com/%(USER_NAME)s)
* Keyboard Maintainer: [%REAL_NAME%](https://github.com/%USER_NAME%)
* Hardware Supported: *The PCBs, controllers supported*
* Hardware Availability: *Links to where you can find this hardware*
Make example for this keyboard (after setting up your build environment):
make %(KEYBOARD)s:default
make %KEYBOARD%:default
Flashing example for this keyboard:
make %(KEYBOARD)s:default:flash
make %KEYBOARD%:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).

View File

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

View File

@@ -1,128 +0,0 @@
// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "config_common.h"
/* USB Device descriptor parameter */
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x0000
#define DEVICE_VER 0x0001
#define MANUFACTURER %(USER_NAME)s
#define PRODUCT %(KEYBOARD)s
/* key matrix size */
#define MATRIX_ROWS 8
#define MATRIX_COLS 15
/*
* Keyboard Matrix Assignments
*
* Change this to how you wired your keyboard
* COLS: AVR pins used for columns, left to right
* ROWS: AVR pins used for rows, top to bottom
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
*
*/
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 }
#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION COL2ROW
//#define LED_NUM_LOCK_PIN D0
//#define LED_CAPS_LOCK_PIN D1
//#define LED_SCROLL_LOCK_PIN D6
#define BACKLIGHT_PIN D4
//#define BACKLIGHT_LEVELS 3
//#define BACKLIGHT_BREATHING
#define RGBLED_NUM 16
//#define RGBLIGHT_HUE_STEP 8
//#define RGBLIGHT_SAT_STEP 8
//#define RGBLIGHT_VAL_STEP 8
//#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
//#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
/*== all animations enable ==*/
//#define RGBLIGHT_ANIMATIONS
/*== or choose animations ==*/
//#define RGBLIGHT_EFFECT_BREATHING
//#define RGBLIGHT_EFFECT_RAINBOW_MOOD
//#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
//#define RGBLIGHT_EFFECT_SNAKE
//#define RGBLIGHT_EFFECT_KNIGHT
//#define RGBLIGHT_EFFECT_CHRISTMAS
//#define RGBLIGHT_EFFECT_STATIC_GRADIENT
//#define RGBLIGHT_EFFECT_RGB_TEST
//#define RGBLIGHT_EFFECT_ALTERNATING
/*== customize breathing effect ==*/
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
//#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
/*==== use exp() and sin() ====*/
//#define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
//#define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5
/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
* This is useful for the Windows task manager shortcut (ctrl+shift+esc).
*/
//#define GRAVE_ESC_CTRL_OVERRIDE
/*
* Force NKRO
*
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
* makefile for this to work.)
*
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
* until the next keyboard reset.
*
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
* fully operational during normal computer usage.
*
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
* power-up.
*
*/
//#define FORCE_NKRO
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION
/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0

489
docs/ChangeLog/20220226.md Normal file
View File

@@ -0,0 +1,489 @@
# QMK Breaking Changes - 2022 February 26 Changelog
## Notable Features :id=notable-features
### Default USB Polling rate now 1kHz ([#15352](https://github.com/qmk/qmk_firmware/pull/15352))
The default USB Polling rate has been aligned across supported platforms to now be 1ms/1kHz.
Something something *Lets go gamers!*
### Split support for pointing devices ([#15304](https://github.com/qmk/qmk_firmware/pull/15304))
Pointing devices can now be shared across a split keyboard with support for a single pointing device or a pointing device on each side.
See the [Pointing Device](feature_pointing_device.md) documentation for further configuration options.
## Changes Requiring User Action :id=changes-requiring-user-action
### Legacy macro and action_function system removed ([#16025](https://github.com/qmk/qmk_firmware/pull/16025))
The long time deprecated `MACRO()` and `action_get_macro` methods have been removed. Where possible, existing usages have been migrated over to core [Macros](feature_macros.md).
### Create a build error if no bootloader is specified ([#16181](https://github.com/qmk/qmk_firmware/pull/16181))
Bootloader configuration is no longer assumed. Keyboards must now set either:
* `BOOTLOADER` within `rules.mk`
* `bootloader` within `info.json`
### Rename `AdafruitBLE` to `BluefruitLE` ([#16127](https://github.com/qmk/qmk_firmware/pull/16127))
In preparation of future bluetooth work, the `AdafruitBLE` integration has been renamed to allow potential for any other Adafruit BLE products.
### Updated Keyboard Codebases :id=updated-keyboard-codebases
The following keyboards have had their source moved within QMK:
| Old Keyboard Name | New Keyboard Name |
|----------------------------|------------------------------------|
| 6ball | maple_computing/6ball |
| 7skb | salicylic_acid3/7skb |
| 7splus | salicylic_acid3/7splus |
| acr60 | mechkeys/acr60 |
| adalyn | tominabox1/adalyn |
| ajisai74 | salicylic_acid3/ajisai74 |
| aleth42 | 25keys/aleth42 |
| alicia_cook | ibnuda/alicia_cook |
| allison_numpad | prototypist/allison_numpad |
| allison | prototypist/allison |
| alu84 | mechkeys/alu84 |
| angel17 | kakunpc/angel17 |
| angel64/alpha | kakunpc/angel64/alpha |
| angel64/rev1 | kakunpc/angel64/rev1 |
| arch_36 | obosob/arch_36 |
| bakeneko60 | kkatano/bakeneko60 |
| bakeneko65/rev2 | kkatano/bakeneko65/rev2 |
| bakeneko65/rev3 | kkatano/bakeneko65/rev3 |
| bakeneko80 | kkatano/bakeneko80 |
| barleycorn | yiancardesigns/barleycorn |
| bat43/rev1 | dailycraft/bat43/rev1 |
| bat43/rev2 | dailycraft/bat43/rev2 |
| bigseries/1key | woodkeys/bigseries/1key |
| bigseries/2key | woodkeys/bigseries/2key |
| bigseries/3key | woodkeys/bigseries/3key |
| bigseries/4key | woodkeys/bigseries/4key |
| bkf | drhigsby/bkf |
| business_card/alpha | kakunpc/business_card/alpha |
| business_card/beta | kakunpc/business_card/beta |
| butterstick | gboards/butterstick |
| c39 | maple_computing/c39 |
| cassette42 | 25keys/cassette42 |
| chidori | kagizaraya/chidori |
| chili | ydkb/chili |
| chimera_ergo | glenpickle/chimera_ergo |
| chimera_ls | glenpickle/chimera_ls |
| chimera_ortho | glenpickle/chimera_ortho |
| chimera_ortho_plus | glenpickle/chimera_ortho_plus |
| choco60 | recompile_keys/choco60 |
| choc_taro | kakunpc/choc_taro |
| christmas_tree | maple_computing/christmas_tree |
| claw44/rev1 | dailycraft/claw44/rev1 |
| cocoa40 | recompile_keys/cocoa40 |
| comet46 | satt/comet46 |
| cu24 | capsunlocked/cu24 |
| cu75 | capsunlocked/cu75 |
| cu80 | capsunlocked/cu80/v1 |
| delilah | rainkeebs/delilah |
| diverge3 | unikeyboard/diverge3 |
| divergetm2 | unikeyboard/divergetm2 |
| dozen0 | yynmt/dozen0 |
| dubba175 | drhigsby/dubba175 |
| eggman | qpockets/eggman |
| ergo42 | biacco42/ergo42 |
| ergoarrows | salicylic_acid3/ergoarrows |
| ergodash/mini | omkbd/ergodash/mini |
| ergodash/rev1 | omkbd/ergodash/rev1 |
| ergodox_infinity | input_club/ergodox_infinity |
| ergotaco | gboards/ergotaco |
| espectro | mechkeys/espectro |
| felix | unikeyboard/felix |
| four_banger | bpiphany/four_banger |
| freyr | hnahkb/freyr |
| geminate60 | weirdo/geminate60 |
| georgi | gboards/georgi |
| gergo | gboards/gergo |
| getta25 | salicylic_acid3/getta25 |
| gingham | yiancardesigns/gingham |
| gurindam | ibnuda/gurindam |
| halberd | kagizaraya/halberd |
| hecomi/alpha | takashiski/hecomi/alpha |
| hid_liber | bpiphany/hid_liber |
| id67/default_rgb | idobao/id67/default_rgb |
| id67/rgb | idobao/id67/rgb |
| id80 | idobao/id80/v1 |
| id87 | idobao/id87/v1 |
| idobo | idobao/id75/v1 |
| infinity60 | input_club/infinity60 |
| ivy/rev1 | maple_computing/ivy/rev1 |
| jisplit89 | salicylic_acid3/jisplit89 |
| jnao | maple_computing/jnao |
| just60 | ydkb/just60 |
| kagamidget | yynmt/kagamidget |
| kelowna/rgb64 | weirdo/kelowna/rgb64 |
| kprepublic/bm65hsrgb_iso | kprepublic/bm65hsrgb_iso/rev1 |
| kprepublic/bm68hsrgb | kprepublic/bm68hsrgb/rev1 |
| k_type | input_club/k_type |
| latin17rgb | latincompass/latin17rgb |
| latin47ble | latincompass/latin47ble |
| latin60rgb | latincompass/latin60rgb |
| latin64ble | latincompass/latin64ble |
| latin6rgb | latincompass/latin6rgb |
| latinpadble | latincompass/latinpadble |
| latinpad | latincompass/latinpad |
| launchpad/rev1 | maple_computing/launchpad/rev1 |
| lck75 | lyso1/lck75 |
| le_chiffre | tominabox1/le_chiffre |
| lefishe | lyso1/lefishe |
| lets_split_eh/eh | maple_computing/lets_split_eh/eh |
| ls_60 | weirdo/ls_60 |
| m3n3van | matthewdias/m3n3van |
| mechmini/v1 | mechkeys/mechmini/v1 |
| mechmini/v2 | mechkeys/mechmini/v2 |
| meira | woodkeys/meira |
| meishi2 | biacco42/meishi2 |
| meishi | biacco42/meishi |
| minidox/rev1 | maple_computing/minidox/rev1 |
| minim | matthewdias/minim |
| mio | recompile_keys/mio |
| model_v | matthewdias/model_v |
| montex | idobao/montex/v1 |
| nafuda | salicylic_acid3/nafuda |
| naiping/np64 | weirdo/naiping/np64 |
| naiping/nphhkb | weirdo/naiping/nphhkb |
| naiping/npminila | weirdo/naiping/npminila |
| naked48 | salicylic_acid3/naked48 |
| naked60 | salicylic_acid3/naked60 |
| naked64 | salicylic_acid3/naked64 |
| namecard2x4 | takashiski/namecard2x4 |
| nebula12 | spaceholdings/nebula12 |
| nebula68b | spaceholdings/nebula68b |
| nebula68 | spaceholdings/nebula68 |
| niu_mini | kbdfans/niu_mini |
| nk1 | novelkeys/nk1 |
| nk65 | novelkeys/nk65 |
| nk87 | novelkeys/nk87 |
| nknl7en | salicylic_acid3/nknl7en |
| nknl7jp | salicylic_acid3/nknl7jp |
| nomu30 | recompile_keys/nomu30 |
| novelpad | novelkeys/novelpad |
| ogurec | drhigsby/ogurec |
| otaku_split/rev0 | takashiski/otaku_split/rev0 |
| otaku_split/rev1 | takashiski/otaku_split/rev1 |
| owl8 | dailycraft/owl8 |
| packrat | drhigsby/packrat |
| pistachio_mp | rate/pistachio_mp |
| pistachio_pro | rate/pistachio_pro |
| pistachio | rate/pistachio |
| plexus75 | checkerboards/plexus75 |
| pursuit40 | checkerboards/pursuit40 |
| qaz | tominabox1/qaz |
| quark | checkerboards/quark |
| rabbit_capture_plan | kakunpc/rabbit_capture_plan |
| rainkeeb | rainkeebs/rainkeeb |
| reviung33 | reviung/reviung33 |
| reviung34 | reviung/reviung34 |
| reviung39 | reviung/reviung39 |
| reviung41 | reviung/reviung41 |
| reviung53 | reviung/reviung53 |
| reviung5 | reviung/reviung5 |
| reviung61 | reviung/reviung61 |
| runner3680/3x6 | omkbd/runner3680/3x6 |
| runner3680/3x7 | omkbd/runner3680/3x7 |
| runner3680/3x8 | omkbd/runner3680/3x8 |
| runner3680/4x6 | omkbd/runner3680/4x6 |
| runner3680/4x7 | omkbd/runner3680/4x7 |
| runner3680/4x8 | omkbd/runner3680/4x8 |
| runner3680/5x6_5x8 | omkbd/runner3680/5x6_5x8 |
| runner3680/5x6 | omkbd/runner3680/5x6 |
| runner3680/5x7 | omkbd/runner3680/5x7 |
| runner3680/5x8 | omkbd/runner3680/5x8 |
| scarletbandana | woodkeys/scarletbandana |
| scythe | kagizaraya/scythe |
| seigaiha | yiancardesigns/seigaiha |
| setta21 | salicylic_acid3/setta21 |
| space_space/rev1 | qpockets/space_space/rev1 |
| space_space/rev2 | qpockets/space_space/rev2 |
| spiderisland/winry25tc | winry/winry25tc |
| splitreus62 | nacly/splitreus62 |
| squiggle/rev1 | ibnuda/squiggle/rev1 |
| standaside | edi/standaside |
| steal_this_keyboard | obosob/steal_this_keyboard |
| stella | hnahkb/stella |
| suihankey/alpha | kakunpc/suihankey/alpha |
| suihankey/rev1 | kakunpc/suihankey/rev1 |
| suihankey/split | kakunpc/suihankey/split |
| thedogkeyboard | kakunpc/thedogkeyboard |
| the_ruler | maple_computing/the_ruler |
| tiger910 | weirdo/tiger910 |
| treadstone32 | marksard/treadstone32 |
| treadstone48/rev1 | marksard/treadstone48/rev1 |
| treadstone48/rev2 | marksard/treadstone48/rev2 |
| txuu | matthewdias/txuu |
| ua62 | nacly/ua62 |
| underscore33/rev1 | tominabox1/underscore33/rev1 |
| underscore33/rev2 | tominabox1/underscore33/rev2 |
| vn66 | hnahkb/vn66 |
| wallaby | kkatano/wallaby |
| wanten | qpockets/wanten |
| whitefox | input_club/whitefox |
| wings42/rev1 | dailycraft/wings42/rev1 |
| wings42/rev1_extkeys | dailycraft/wings42/rev1_extkeys |
| wings42/rev2 | dailycraft/wings42/rev2 |
| yasui | rainkeebs/yasui |
| yd60mq | ymdk/yd60mq |
| yd68 | ydkb/yd68 |
| ymd75 | ymdk/ymd75 |
| ymd96 | ymdk/ymd96 |
| ymdk_np21 | ymdk/np21 |
| yurei | kkatano/yurei |
| zinc | 25keys/zinc |
| zinc/rev1 | 25keys/zinc/rev1 |
| zinc/reva | 25keys/zinc/reva |
## Notable core changes :id=notable-core
### New MCU Support :id=new-mcu-support
Building on previous cycles, QMK firmware picked up support for a couple extra MCU variants:
* STM32L432
* STM32L442
### New Drivers
QMK now has core-supplied support for the following device peripherals:
#### LED
* IS31FL3742A
* IS31FL3743A
* IS31FL3745
* IS31FL3746A
#### GPIO
* SN74x138
* mcp23018
---
## Full changelist
Core:
* Initial pass at data driven new-keyboard subcommand ([#12795](https://github.com/qmk/qmk_firmware/pull/12795))
* Don't send keyboard reports that propagate no changes to the host ([#14065](https://github.com/qmk/qmk_firmware/pull/14065))
* Custom matrix lite support for split keyboards ([#14674](https://github.com/qmk/qmk_firmware/pull/14674))
* Add sym_defer_pr debouncer type ([#14948](https://github.com/qmk/qmk_firmware/pull/14948))
* Add RGB matrix & LED Matrix support for IS31FL3742A, IS31FL3743A, IS31FL3745, IS31FL3746A ([#14989](https://github.com/qmk/qmk_firmware/pull/14989))
* New combo configuration options ([#15083](https://github.com/qmk/qmk_firmware/pull/15083))
* IS31FL3733 driver for LED Matrix ([#15088](https://github.com/qmk/qmk_firmware/pull/15088))
* Add open-drain GPIO support. ([#15282](https://github.com/qmk/qmk_firmware/pull/15282))
* Make (un)register code functions weak ([#15285](https://github.com/qmk/qmk_firmware/pull/15285))
* Split support for pointing devices. ([#15304](https://github.com/qmk/qmk_firmware/pull/15304))
* Added cancel_key_lock function ([#15321](https://github.com/qmk/qmk_firmware/pull/15321))
* Remove matrix_is_modified() and debounce_is_active() ([#15349](https://github.com/qmk/qmk_firmware/pull/15349))
* Change default USB Polling rate to 1kHz ([#15352](https://github.com/qmk/qmk_firmware/pull/15352))
* Implement MAGIC_TOGGLE_CONTROL_CAPSLOCK ([#15368](https://github.com/qmk/qmk_firmware/pull/15368))
* Tidy up existing i2c_master implementations ([#15376](https://github.com/qmk/qmk_firmware/pull/15376))
* Generalize Unicode defines ([#15409](https://github.com/qmk/qmk_firmware/pull/15409))
* Added external spi flash driver. ([#15419](https://github.com/qmk/qmk_firmware/pull/15419))
* Remove Deprecated USB Polling comment from vusb.c ([#15420](https://github.com/qmk/qmk_firmware/pull/15420))
* Expand rotational range for PMW3360 Optical Sensor ([#15431](https://github.com/qmk/qmk_firmware/pull/15431))
* ChibiOS SVN mirror script update ([#15435](https://github.com/qmk/qmk_firmware/pull/15435))
* Refactor `bootloader_jump()` implementations ([#15450](https://github.com/qmk/qmk_firmware/pull/15450))
* added missing audio_off_user() callback ([#15457](https://github.com/qmk/qmk_firmware/pull/15457))
* Migrate serial_uart usages to UART driver ([#15479](https://github.com/qmk/qmk_firmware/pull/15479))
* Migrate RN42 to UART driver and refactor ([#15492](https://github.com/qmk/qmk_firmware/pull/15492))
* pwm3360 driver cleanup and diff reduction to adns9800 ([#15559](https://github.com/qmk/qmk_firmware/pull/15559))
* Advanced deferred_exec for core-side code. ([#15579](https://github.com/qmk/qmk_firmware/pull/15579))
* Adjust tap_code16 to account for TAP_HOLD_CAPS_DELAY ([#15635](https://github.com/qmk/qmk_firmware/pull/15635))
* Slight tidy up of keyboard task loop ([#15725](https://github.com/qmk/qmk_firmware/pull/15725))
* Unify the key up/down behaviour of RGB keycodes ([#15730](https://github.com/qmk/qmk_firmware/pull/15730))
* Add PMW3389 optical sensor Support (Updated) ([#15740](https://github.com/qmk/qmk_firmware/pull/15740))
* ChibiOS: add support for HID Programmable Buttons ([#15787](https://github.com/qmk/qmk_firmware/pull/15787))
* ChibiOS: shorten USB disconnect state on boot to 50ms ([#15805](https://github.com/qmk/qmk_firmware/pull/15805))
* Add init function to clear previous matrix effect ([#15815](https://github.com/qmk/qmk_firmware/pull/15815))
* Optimize initialization of PMW3360 Sensor ([#15821](https://github.com/qmk/qmk_firmware/pull/15821))
* Add Pixel Flow RGB matrix effect ([#15829](https://github.com/qmk/qmk_firmware/pull/15829))
* PMW3389 Revert Firmware load during Initilization ([#15859](https://github.com/qmk/qmk_firmware/pull/15859))
* Combo `TAP_CODE_DELAY` and `clear_weak_mods` ([#15866](https://github.com/qmk/qmk_firmware/pull/15866))
* Relocate matrix_scan_quantum tasks ([#15882](https://github.com/qmk/qmk_firmware/pull/15882))
* Adjust mouse key defaults ([#15883](https://github.com/qmk/qmk_firmware/pull/15883))
* RGB Matrix: Reload from EEPROM ([#15923](https://github.com/qmk/qmk_firmware/pull/15923))
* Enable a default task throttle for split pointing. ([#15925](https://github.com/qmk/qmk_firmware/pull/15925))
* Move mcp23018 driver to core ([#15944](https://github.com/qmk/qmk_firmware/pull/15944))
* Relocate matrix_init_quantum content ([#15953](https://github.com/qmk/qmk_firmware/pull/15953))
* Align location of some host led logic ([#15954](https://github.com/qmk/qmk_firmware/pull/15954))
* Rename some Quantum keycodes ([#15968](https://github.com/qmk/qmk_firmware/pull/15968))
* Migrate more makefile utilities to builddefs sub-directory ([#16002](https://github.com/qmk/qmk_firmware/pull/16002))
* Various Makefile optimisations ([#16015](https://github.com/qmk/qmk_firmware/pull/16015))
* Add support for STM32L432, STM32L442. ([#16016](https://github.com/qmk/qmk_firmware/pull/16016))
* EEPROM refactor: remove `eeprom_teensy.c` by default, use transient instead ([#16020](https://github.com/qmk/qmk_firmware/pull/16020))
* Deprecate Split Transaction status field ([#16023](https://github.com/qmk/qmk_firmware/pull/16023))
* Rip out old macro and action_function system ([#16025](https://github.com/qmk/qmk_firmware/pull/16025))
* Add a script that simplifies running commands under docker. ([#16028](https://github.com/qmk/qmk_firmware/pull/16028))
* Add support for Q-series on the ckled2001 LED driver ([#16051](https://github.com/qmk/qmk_firmware/pull/16051))
* Remove unused suspend_idle ([#16063](https://github.com/qmk/qmk_firmware/pull/16063))
* Initial migration of suspend callbacks ([#16067](https://github.com/qmk/qmk_firmware/pull/16067))
* Add layout change callbacks to VIA ([#16087](https://github.com/qmk/qmk_firmware/pull/16087))
* Rename `AdafruitBLE` to `BluefruitLE` ([#16127](https://github.com/qmk/qmk_firmware/pull/16127))
* Update outputselect to use platform connected state API ([#16185](https://github.com/qmk/qmk_firmware/pull/16185))
* Remove default pointing device driver. ([#16190](https://github.com/qmk/qmk_firmware/pull/16190))
* Add SN74x138 demultiplexer driver ([#16217](https://github.com/qmk/qmk_firmware/pull/16217))
* Standardise error output. ([#16220](https://github.com/qmk/qmk_firmware/pull/16220))
* Followup to #16220, more test error output. ([#16221](https://github.com/qmk/qmk_firmware/pull/16221))
* Misc size regression script improvements. ([#16268](https://github.com/qmk/qmk_firmware/pull/16268))
* Align existing pca9555 driver to better match mcp23018 API ([#16277](https://github.com/qmk/qmk_firmware/pull/16277))
* Size checks print out target firmware file instead ([#16290](https://github.com/qmk/qmk_firmware/pull/16290))
CLI:
* `develop` changelog generator: use the PR title instead ([#15537](https://github.com/qmk/qmk_firmware/pull/15537))
* `develop` changelog generator: skip code formatting in listing ([#16215](https://github.com/qmk/qmk_firmware/pull/16215))
Keyboards:
* Durgod: Increase scan rate by using wait_us timer ([#14091](https://github.com/qmk/qmk_firmware/pull/14091))
* Add another GMMK Pro ANSI Keymap with custom RGB. ([#14243](https://github.com/qmk/qmk_firmware/pull/14243))
* Parse USB device version BCD ([#14580](https://github.com/qmk/qmk_firmware/pull/14580))
* Add vitoni keymap for GMMK Pro (ISO) ([#15006](https://github.com/qmk/qmk_firmware/pull/15006))
* Move bm65hsrgb_iso and bm68hsrgb to rev1/ to prepare for updates to the boards ([#15132](https://github.com/qmk/qmk_firmware/pull/15132))
* Convert ergoinu to SPLIT_KEYBOARD ([#15305](https://github.com/qmk/qmk_firmware/pull/15305))
* Convert not_so_minidox to SPLIT_KEYBOARD ([#15306](https://github.com/qmk/qmk_firmware/pull/15306))
* Added new handwired keyboard Wakizashi 40 ([#15336](https://github.com/qmk/qmk_firmware/pull/15336))
* Convert ai03/orbit to SPLIT_KEYBOARD ([#15340](https://github.com/qmk/qmk_firmware/pull/15340))
* Remove manual enable of LTO within user keymaps ([#15378](https://github.com/qmk/qmk_firmware/pull/15378))
* Move to organization folder ([#15481](https://github.com/qmk/qmk_firmware/pull/15481))
* Convert some more boards to Matrix Lite ([#15489](https://github.com/qmk/qmk_firmware/pull/15489))
* Organize Reviung boards into a directory ([#15636](https://github.com/qmk/qmk_firmware/pull/15636))
* move winry25tc to winry/ ([#15637](https://github.com/qmk/qmk_firmware/pull/15637))
* Rename ymdk_np21 to np21 + move to ymdk vendor folder ([#15641](https://github.com/qmk/qmk_firmware/pull/15641))
* move ymd96 to ymdk vendor folder ([#15643](https://github.com/qmk/qmk_firmware/pull/15643))
* move ymd75 to ymdk vendor folder ([#15645](https://github.com/qmk/qmk_firmware/pull/15645))
* move yd60mq to ymdk vendor folder ([#15647](https://github.com/qmk/qmk_firmware/pull/15647))
* rename idobo to idobao/id75, move to vendor folder ([#15661](https://github.com/qmk/qmk_firmware/pull/15661))
* move ID67 to IDOBAO vendor folder ([#15662](https://github.com/qmk/qmk_firmware/pull/15662))
* move ID80 to IDOBAO vendor folder ([#15665](https://github.com/qmk/qmk_firmware/pull/15665))
* move ID87 to IDOBAO vendor folder ([#15667](https://github.com/qmk/qmk_firmware/pull/15667))
* move montex to IDOBAO vendor folder ([#15668](https://github.com/qmk/qmk_firmware/pull/15668))
* move @yangdigi 's keyboards to a YDKB folder ([#15681](https://github.com/qmk/qmk_firmware/pull/15681))
* move @kkatano 's keyboards to kkatano user folder ([#15684](https://github.com/qmk/qmk_firmware/pull/15684))
* Sol 3 Keyboard from RGBKB ([#15687](https://github.com/qmk/qmk_firmware/pull/15687))
* move cu24, cu75, cu80/v1 into capsunlocked folder ([#15758](https://github.com/qmk/qmk_firmware/pull/15758))
* move mechkeys keyboards into the mechkeys/ vendor folder ([#15760](https://github.com/qmk/qmk_firmware/pull/15760))
* move @lyso1 's boards into lyso1/ ([#15767](https://github.com/qmk/qmk_firmware/pull/15767))
* move prototypist boards into vendor folder ([#15780](https://github.com/qmk/qmk_firmware/pull/15780))
* move @yiancar 's boards into yiancardesigns/ ([#15781](https://github.com/qmk/qmk_firmware/pull/15781))
* move novelkeys keyboards to vendor folder ([#15783](https://github.com/qmk/qmk_firmware/pull/15783))
* move @weirdo-f 's keyboards into weirdo/ ([#15785](https://github.com/qmk/qmk_firmware/pull/15785))
* move @marksard 's boards to marksard/ ([#15786](https://github.com/qmk/qmk_firmware/pull/15786))
* move input club keyboards into vendor folder ([#15788](https://github.com/qmk/qmk_firmware/pull/15788))
* move @monksoffunk 's boards into 25keys/ ([#15789](https://github.com/qmk/qmk_firmware/pull/15789))
* move @Salicylic-acid3 's keyboards to salicylic-acid3/ ([#15791](https://github.com/qmk/qmk_firmware/pull/15791))
* move @rainkeebs 's keyboards to rainkeebs/ ([#15797](https://github.com/qmk/qmk_firmware/pull/15797))
* move standaside into edi/ ([#15798](https://github.com/qmk/qmk_firmware/pull/15798))
* move @obosob 's boards into obosob/ ([#15799](https://github.com/qmk/qmk_firmware/pull/15799))
* move @nacly 's boards to nacly/ ([#15801](https://github.com/qmk/qmk_firmware/pull/15801))
* move @kakunpc 's keebs into kakunpc/ ([#15814](https://github.com/qmk/qmk_firmware/pull/15814))
* move @qpocket 's keyboards to qpocket/ ([#15827](https://github.com/qmk/qmk_firmware/pull/15827))
* BDN9 keymap ([#15924](https://github.com/qmk/qmk_firmware/pull/15924))
* move @matthewdias 's keebs into matthewdias/ ([#15991](https://github.com/qmk/qmk_firmware/pull/15991))
* move id80 and id75 to v1 to accommodate for id75 v2 and id80 v3 ([#15992](https://github.com/qmk/qmk_firmware/pull/15992))
* Remove `action_function()` from LFKeyboards boards ([#15993](https://github.com/qmk/qmk_firmware/pull/15993))
* move @latincompass (aka @18438880 , @haierwangwei2005)'s boards to /latincompass ([#16039](https://github.com/qmk/qmk_firmware/pull/16039))
* move g heavy industry boards into /gboards ([#16040](https://github.com/qmk/qmk_firmware/pull/16040))
* move @drhigsby 's boards into /drhigsby ([#16041](https://github.com/qmk/qmk_firmware/pull/16041))
* More keyboard rules.mk cleanups ([#16044](https://github.com/qmk/qmk_firmware/pull/16044))
* move @That-Canadian 's boards into /maple_computing ([#16050](https://github.com/qmk/qmk_firmware/pull/16050))
* move @takai 's keyboards into /recompile_keys ([#16053](https://github.com/qmk/qmk_firmware/pull/16053))
* move @satt99 's comet46 to satt/ ([#16059](https://github.com/qmk/qmk_firmware/pull/16059))
* move @ka2hiro 's boards into /kagizaraya ([#16070](https://github.com/qmk/qmk_firmware/pull/16070))
* move @GlenPickle 's chimera* boards into a folder ([#16072](https://github.com/qmk/qmk_firmware/pull/16072))
* move @yynmt 's boards into /yynmt ([#16075](https://github.com/qmk/qmk_firmware/pull/16075))
* move @Biacco42 's keebs into /biacco42 ([#16080](https://github.com/qmk/qmk_firmware/pull/16080))
* move unikeyboard boards to /unikeyboard ([#16081](https://github.com/qmk/qmk_firmware/pull/16081))
* move four_banger to bpiphany ([#16082](https://github.com/qmk/qmk_firmware/pull/16082))
* move @takashiski 's keebs into /takashiski ([#16089](https://github.com/qmk/qmk_firmware/pull/16089))
* move hid_liber to /bpiphany ([#16091](https://github.com/qmk/qmk_firmware/pull/16091))
* move spaceholdings boards into /spaceholdings ([#16096](https://github.com/qmk/qmk_firmware/pull/16096))
* move @7-rate 's keebs to /rate ([#16099](https://github.com/qmk/qmk_firmware/pull/16099))
* move @npspears 's boards into /checkerboards ([#16100](https://github.com/qmk/qmk_firmware/pull/16100))
* move @vuhopkep 's keebs into /hnahkb ([#16102](https://github.com/qmk/qmk_firmware/pull/16102))
* move @ibnuda 's keebs into /ibnuda ([#16108](https://github.com/qmk/qmk_firmware/pull/16108))
* move @tominabox1 's keebs into /tominabox1 ([#16109](https://github.com/qmk/qmk_firmware/pull/16109))
* move niu_mini to /kbdfans ([#16112](https://github.com/qmk/qmk_firmware/pull/16112))
* move woodkeys.click keyboards to /woodkeys ([#16113](https://github.com/qmk/qmk_firmware/pull/16113))
* move @omkbd 's boards to /omkbd ([#16116](https://github.com/qmk/qmk_firmware/pull/16116))
* Overhaul Tractyl Manuform ([#16134](https://github.com/qmk/qmk_firmware/pull/16134))
* Reduce firmware size for dztech/dz60rgb_wkl/v2_1:via ([#16254](https://github.com/qmk/qmk_firmware/pull/16254))
Keyboard fixes:
* Fix build failure for UT47 ([#15483](https://github.com/qmk/qmk_firmware/pull/15483))
* Update grs_70ec to use newer custom matrix ([#15609](https://github.com/qmk/qmk_firmware/pull/15609))
* fix compiler issue with Tractyl Manuform 4x6 ([#15646](https://github.com/qmk/qmk_firmware/pull/15646))
* Fix CI. ([#15828](https://github.com/qmk/qmk_firmware/pull/15828))
* Yet another bad `DEFAULT_FOLDER` fix. ([#15904](https://github.com/qmk/qmk_firmware/pull/15904))
* Fix build failures for `mschwingen/modelm` ([#15987](https://github.com/qmk/qmk_firmware/pull/15987))
* `rocketboard_16`: Fix mismatched LUT sizes ([#15997](https://github.com/qmk/qmk_firmware/pull/15997))
* Fix erroneous SRC for Clueboard 66 hotswap ([#16007](https://github.com/qmk/qmk_firmware/pull/16007))
* Fix handwired/ms_sculpt_mobile default keymap ([#16032](https://github.com/qmk/qmk_firmware/pull/16032))
* Re-org Hillside folders as new model prep. Fix default keymap. ([#16128](https://github.com/qmk/qmk_firmware/pull/16128))
* Fix up default folder locations. Again. ([#16135](https://github.com/qmk/qmk_firmware/pull/16135))
* Sol3 rgb fix ([#16157](https://github.com/qmk/qmk_firmware/pull/16157))
* Add missing `BOOTLOADER` for a handful of boards ([#16225](https://github.com/qmk/qmk_firmware/pull/16225))
* Remove half implemented micronucleus bootloader support ([#16252](https://github.com/qmk/qmk_firmware/pull/16252))
* Fixup bootloaders. ([#16256](https://github.com/qmk/qmk_firmware/pull/16256))
* Fix idobao/id80/v3 compilation errors ([#16280](https://github.com/qmk/qmk_firmware/pull/16280))
* Remove parent-relative paths from keyboards. ([#16282](https://github.com/qmk/qmk_firmware/pull/16282))
* Bodge for helix build failures ([#16376](https://github.com/qmk/qmk_firmware/pull/16376))
Others:
* Add a clarification to an error message ([#15207](https://github.com/qmk/qmk_firmware/pull/15207))
* Clang-format tweaks ([#15906](https://github.com/qmk/qmk_firmware/pull/15906))
* Add example implementations for compatible MCUs list ([#15935](https://github.com/qmk/qmk_firmware/pull/15935))
* Add version.h to gitignore ([#16222](https://github.com/qmk/qmk_firmware/pull/16222))
* Update keyboard mapping for all moved boards this cycle ([#16312](https://github.com/qmk/qmk_firmware/pull/16312))
* Align docs to new-keyboard behaviour ([#16357](https://github.com/qmk/qmk_firmware/pull/16357))
* Align new-keyboard with recent schema updates ([#16378](https://github.com/qmk/qmk_firmware/pull/16378))
Bugs:
* Fixes potential wpm sampling overflow, along with code comment fixes ([#15277](https://github.com/qmk/qmk_firmware/pull/15277))
* Add missing define for unicode common ([#15416](https://github.com/qmk/qmk_firmware/pull/15416))
* Fix for SPI write timing in PMW3360 driver ([#15519](https://github.com/qmk/qmk_firmware/pull/15519))
* Documentation Typo fix ([#15538](https://github.com/qmk/qmk_firmware/pull/15538))
* fix a typo ([#15557](https://github.com/qmk/qmk_firmware/pull/15557))
* Fix avr serial compile ([#15589](https://github.com/qmk/qmk_firmware/pull/15589))
* More AVR GPIO compilation fixes. ([#15592](https://github.com/qmk/qmk_firmware/pull/15592))
* Fix bug and code regression for Split Common ([#15603](https://github.com/qmk/qmk_firmware/pull/15603))
* Include missing string.h include in split ([#15606](https://github.com/qmk/qmk_firmware/pull/15606))
* Fixes for bootloader refactor build failures ([#15638](https://github.com/qmk/qmk_firmware/pull/15638))
* Update pmw3360 driver after reading the datasheet top to bottom. Fix some outdated refs. ([#15682](https://github.com/qmk/qmk_firmware/pull/15682))
* Fix split pointing for analog joystick ([#15691](https://github.com/qmk/qmk_firmware/pull/15691))
* Fix broken bootloader builds in develop. ([#15880](https://github.com/qmk/qmk_firmware/pull/15880))
* Fix optical sensor firmware upload ([#15919](https://github.com/qmk/qmk_firmware/pull/15919))
* Pass in the keyrecord_t of the dual-role/tapping key when calling per-key tap hold functions ([#15938](https://github.com/qmk/qmk_firmware/pull/15938))
* fixed typo in orange HSV colors decalartion ([#15976](https://github.com/qmk/qmk_firmware/pull/15976))
* Fix hack for chibiOS reset name ([#15984](https://github.com/qmk/qmk_firmware/pull/15984))
* Fix right side ws2812 leds having two indices ([#15985](https://github.com/qmk/qmk_firmware/pull/15985))
* Workaround in Makefile for recursive rule matching ([#15988](https://github.com/qmk/qmk_firmware/pull/15988))
* Fix BACKLIGHT_CAPS_LOCK warning ([#15999](https://github.com/qmk/qmk_firmware/pull/15999))
* Fix compilation issues for led indicators ([#16001](https://github.com/qmk/qmk_firmware/pull/16001))
* ChibiOS timer fixes ([#16017](https://github.com/qmk/qmk_firmware/pull/16017))
* Fix bootloader_jump for certain CTRL boards ([#16026](https://github.com/qmk/qmk_firmware/pull/16026))
* Fix up issue with PROGMEM and hand_swap_config ([#16027](https://github.com/qmk/qmk_firmware/pull/16027))
* Don't make EEPROM size assumptions with dynamic keymaps. ([#16054](https://github.com/qmk/qmk_firmware/pull/16054))
* fix missed .noci in reviung move ([#16107](https://github.com/qmk/qmk_firmware/pull/16107))
* Fix issues with Python Tests ([#16162](https://github.com/qmk/qmk_firmware/pull/16162))
* Fixup multibuild filegen ([#16166](https://github.com/qmk/qmk_firmware/pull/16166))
* Remove old .gitignore entry. Add more macOS junk exclusions. ([#16167](https://github.com/qmk/qmk_firmware/pull/16167))
* Fixup builds so that teensy EEPROM knows which MCU it's targeting. ([#16168](https://github.com/qmk/qmk_firmware/pull/16168))
* Create a build error if no bootloader is specified. ([#16181](https://github.com/qmk/qmk_firmware/pull/16181))
* Ensure `version.h` is recreated each build. ([#16188](https://github.com/qmk/qmk_firmware/pull/16188))
* Add `custom` to list of valid bootloader types in info.json ([#16228](https://github.com/qmk/qmk_firmware/pull/16228))
* Fix `layer_state` restoration at end of dynamic macro feature #16208 ([#16230](https://github.com/qmk/qmk_firmware/pull/16230))
* Minor additions #12795 ([#16276](https://github.com/qmk/qmk_firmware/pull/16276))
* Various fixes for matrix _RIGHT handling ([#16292](https://github.com/qmk/qmk_firmware/pull/16292))
* Fix slashes in build_full_test.mk ([#16300](https://github.com/qmk/qmk_firmware/pull/16300))
* ps2/avr: use the correct file name ([#16316](https://github.com/qmk/qmk_firmware/pull/16316))
* Fix compilation of ChibiOS UART driver ([#16348](https://github.com/qmk/qmk_firmware/pull/16348))
* Various fixes for new-keyboard ([#16358](https://github.com/qmk/qmk_firmware/pull/16358))
* Allow NO_PIN within data driven configuration ([#16359](https://github.com/qmk/qmk_firmware/pull/16359))

View File

@@ -37,7 +37,6 @@
* 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)
@@ -53,9 +52,6 @@
* [Your Fork](newbs_git_using_your_master_branch.md)
* [Merge Conflicts](newbs_git_resolving_merge_conflicts.md)
* [Fixing Your Branch](newbs_git_resynchronize_a_branch.md)
* Keyboard Building
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* Simple Keycodes
* [Full List](keycodes.md)
@@ -124,17 +120,22 @@
* [Thermal Printer](feature_thermal_printer.md)
* [Velocikey](feature_velocikey.md)
* Keyboard Building
* [Easy Maker for One Offs](easy_maker.md)
* [Porting Keyboards](porting_your_keyboard_to_qmk.md)
* [Hand Wiring Guide](hand_wire.md)
* [ISP Flashing Guide](isp_flashing_guide.md)
* Developing QMK
* [PR Checklist](pr_checklist.md)
* Breaking Changes
* [Overview](breaking_changes.md)
* [My Pull Request Was Flagged](breaking_changes_instructions.md)
* [Most Recent ChangeLog](ChangeLog/20211127.md "QMK v0.15.0 - 2021 Nov 27")
* [Most Recent ChangeLog](ChangeLog/20220226.md "QMK v0.16.0 - 2022 Feb 26")
* [Past Breaking Changes](breaking_changes_history.md)
* C Development
* [ARM Debugging Guide](arm_debugging.md)
* [AVR Processors](hardware_avr.md)
* [Coding Conventions](coding_conventions_c.md)
* [Compatible Microcontrollers](compatible_microcontrollers.md)
* [Drivers](hardware_drivers.md)

View File

@@ -62,7 +62,7 @@ This shows us that the job has made it through the queue and is currently runnin
Once your compile job has finished you'll check the `result` key. The value of this key is a hash containing several key bits of information:
* `firmware_binary_url`: A list of URLs for the the flashable firmware
* `firmware_keymap_url`: A list of URLs for the the `keymap.c`
* `firmware_binary_url`: A list of URLs for the flashable firmware
* `firmware_keymap_url`: A list of URLs for the `keymap.c`
* `firmware_source_url`: A list of URLs for the full firmware source code
* `output`: The stdout and stderr for this compile job. Errors will be found here.

View File

@@ -8,6 +8,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?
* [2022 Feb 26](ChangeLog/20220226.md)
* [2021 Nov 27](ChangeLog/20211127.md)
* [2021 Aug 28](ChangeLog/20210828.md)
* [2021 May 29](ChangeLog/20210529.md)
@@ -20,17 +21,17 @@ The breaking change period is when we will merge PR's that change QMK in dangero
## When is the next Breaking Change?
The next Breaking Change is scheduled for February 26, 2022.
The next Breaking Change is scheduled for May 28, 2022.
### Important Dates
* [x] 2021 Nov 27 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
* [ ] 2022 Jan 31 - `develop` closed to new PR's.
* [ ] 2022 Jan 31 - Call for testers.
* [ ] 2022 Feb 12 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
* [ ] 2022 Feb 24 - `master` is locked, no PR's merged.
* [ ] 2022 Feb 26 - Merge `develop` to `master`.
* [ ] 2022 Feb 26 - `master` is unlocked. PR's can be merged again.
* [x] 2022 Feb 26 - `develop` is tagged with a new release version. Each push to `master` is subsequently merged to `develop` by GitHub actions.
* [ ] 2022 Apr 31 - `develop` closed to new PR's.
* [ ] 2022 Apr 31 - Call for testers.
* [ ] 2022 May 14 - Last day for merges -- after this point `develop` is locked for testing and accepts only bugfixes
* [ ] 2022 May 26 - `master` is locked, no PR's merged.
* [ ] 2022 May 28 - Merge `develop` to `master`.
* [ ] 2022 May 28 - `master` is unlocked. PR's can be merged again.
## What changes will be included?

View File

@@ -2,6 +2,7 @@
This page links to all previous changelogs from the QMK Breaking Changes process.
* [2022 Feb 26](ChangeLog/20220226.md) - version 0.16.0
* [2021 Nov 27](ChangeLog/20211127.md) - version 0.15.0
* [2021 Aug 28](ChangeLog/20210828.md) - version 0.14.0
* [2021 May 29](ChangeLog/20210529.md) - version 0.13.0

View File

@@ -54,7 +54,7 @@ or in keymap directory
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk compile
Ψ Compiling keymap with make make gh60/satan:colemak
Ψ Compiling keymap with make gh60/satan:colemak
...
```
@@ -310,7 +310,7 @@ Any arguments that are not provided will prompt for input. If `-u` is not passed
**Usage**:
```
qmk new-keyboard [-kb KEYBOARD] [-t {avr,ps2avrgb}] -u USERNAME
qmk new-keyboard [-kb KEYBOARD] [-t {atmega32u4,STM32F303,etc}] [-l {60_ansi,75_iso,etc}] -u USERNAME
```
## `qmk new-keymap`

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 `format-py` subcommands to run these tests:
We use nose2, flake8, and yapf to test, lint, and format code. You can use the `pytest` and `format-python` 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 format-py
qmk format-python
## Formatting Details

View File

@@ -1,6 +1,6 @@
# Compatible Microcontrollers
QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB or more, though it will *just* squeeze into 16kB with most features disabled.
QMK runs on any USB-capable AVR or ARM microcontroller with enough flash space - generally 32kB+ for AVR, and 64kB+ for ARM. With significant disabling of features, QMK may *just* squeeze into 16kB AVR MCUs.
## Atmel AVR
@@ -8,7 +8,11 @@ The following use [LUFA](https://www.fourwalledcubicle.com/LUFA.php) as the USB
* [ATmega16U2](https://www.microchip.com/wwwproducts/en/ATmega16U2) / [ATmega32U2](https://www.microchip.com/wwwproducts/en/ATmega32U2)
* [ATmega16U4](https://www.microchip.com/wwwproducts/en/ATmega16U4) / [ATmega32U4](https://www.microchip.com/wwwproducts/en/ATmega32U4)
* SparkFun Pro Micro (and clones)
* PJRC Teensy 2.0
* Adafruit Feather 32U4
* [AT90USB64](https://www.microchip.com/wwwproducts/en/AT90USB646) / [AT90USB128](https://www.microchip.com/wwwproducts/en/AT90USB1286)
* PJRC Teensy++ 2.0
* [AT90USB162](https://www.microchip.com/wwwproducts/en/AT90USB162)
Certain MCUs which do not have native USB will use [V-USB](https://www.obdev.at/products/vusb/index.html) instead:
@@ -25,17 +29,23 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
* [STM32F0x2](https://www.st.com/en/microcontrollers-microprocessors/stm32f0x2.html)
* [STM32F103](https://www.st.com/en/microcontrollers-microprocessors/stm32f103.html)
* Bluepill (with STM32duino bootloader)
* [STM32F303](https://www.st.com/en/microcontrollers-microprocessors/stm32f303.html)
* QMK Proton-C
* [STM32F401](https://www.st.com/en/microcontrollers-microprocessors/stm32f401.html)
* WeAct Blackpill
* [STM32F405](https://www.st.com/en/microcontrollers-microprocessors/stm32f405-415.html)
* [STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html)
* [STM32F411](https://www.st.com/en/microcontrollers-microprocessors/stm32f411.html)
* WeAct Blackpill
* [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)
* [STM32L432](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
* [STM32L433](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
* [STM32L442](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x2.html)
* [STM32L443](https://www.st.com/en/microcontrollers-microprocessors/stm32l4x3.html)
### WestBerryTech (WB32)
@@ -45,13 +55,16 @@ You can also use any ARM chip with USB that [ChibiOS](https://www.chibios.org) s
### NXP (Kinetis)
* [MKL26Z64](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/kl-series-cortex-m0-plus/kinetis-kl2x-72-96-mhz-usb-ultra-low-power-microcontrollers-mcus-based-on-arm-cortex-m0-plus-core:KL2x)
* PJRC Teensy LC
* [MK20DX128](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-50-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-based-on-arm-cortex-m4-core:K20_50)
* [MK20DX256](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k2x-usb/kinetis-k20-72-mhz-full-speed-usb-mixed-signal-integration-microcontrollers-mcus-based-on-arm-cortex-m4-core:K20_72)
* PJRC Teensy 3.2
* [MK66FX1M0](https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/k-series-cortex-m4/k6x-ethernet/kinetis-k66-180-mhz-dual-high-speed-full-speed-usbs-2mb-flash-microcontrollers-mcus-based-on-arm-cortex-m4-core:K66_180)
* PJRC Teensy 3.6
## Atmel ATSAM
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop).
There is limited support for one of Atmel's ATSAM microcontrollers, that being the [ATSAMD51J18A](https://www.microchip.com/wwwproducts/en/ATSAMD51J18A) used by the [Massdrop keyboards](https://github.com/qmk/qmk_firmware/tree/master/keyboards/massdrop). However, it is not recommended to design a board with this microcontroller as the support is quite specialized to Massdrop hardware.
## RISC-V

View File

@@ -61,6 +61,8 @@ This is a C header file that is one of the first things included, and will persi
* pins unused by the keyboard for reference
* `#define MATRIX_HAS_GHOST`
* define is matrix has ghost (unlikely)
* `#define MATRIX_UNSELECT_DRIVE_HIGH`
* On un-select of matrix pins, rather than setting pins to input-high, sets them to output-high.
* `#define DIODE_DIRECTION COL2ROW`
* COL2ROW or ROW2COL - how your matrix is configured. COL2ROW means the black mark on your diode is facing to the rows, and between the switch and the rows.
* `#define DIRECT_PINS { { F1, F0, B0, C7 }, { F4, F5, F6, F7 } }`
@@ -124,10 +126,6 @@ If you define these options you will disable the associated feature, which can s
* disable tap dance and other tapping features
* `#define NO_ACTION_ONESHOT`
* disable one-shot modifiers
* `#define NO_ACTION_MACRO`
* disable old-style macro handling using `MACRO()`, `action_get_macro()` _(deprecated)_
* `#define NO_ACTION_FUNCTION`
* disable old-style function handling using `fn_actions`, `action_function()` _(deprecated)_
## Features That Can Be Enabled
@@ -383,7 +381,6 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* A list of [layouts](feature_layouts.md) this keyboard supports.
* `LTO_ENABLE`
* Enables Link Time Optimization (LTO) when compiling the keyboard. This makes the process take longer, but it can significantly reduce the compiled size (and since the firmware is small, the added time is not noticeable).
However, this will automatically disable the legacy TMK Macros and Functions features, as these break when LTO is enabled. It does this by automatically defining `NO_ACTION_MACRO` and `NO_ACTION_FUNCTION`. (Note: This does not affect QMK [Macros](feature_macros.md) and [Layers](feature_layers.md).)
## AVR MCU Options
* `MCU = atmega32u4`
@@ -434,8 +431,8 @@ Use these to enable or disable building certain features. The more you have enab
* MIDI controls
* `UNICODE_ENABLE`
* Unicode
* `BLUETOOTH`
* Current options are AdafruitBLE, RN42
* `BLUETOOTH_ENABLE`
* Current options are BluefruitLE, RN42
* `SPLIT_KEYBOARD`
* Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
* `CUSTOM_MATRIX`

View File

@@ -74,7 +74,7 @@ Whenever QMK generates a complete `info.json` it extracts information from `conf
If you are not sure how to edit this file or are not comfortable with Python [open an issue](https://github.com/qmk/qmk_firmware/issues/new?assignees=&labels=cli%2C+python&template=other_issues.md&title=) or [join #cli on Discord](https://discord.gg/heQPAgy) and someone can help you with this part.
### Add code to generate it
### Add code to generate it :id=add-code-to-generate-it
The final piece of the puzzle is providing your new option to the build system. This is done by generating two files:

View File

@@ -7,7 +7,7 @@ Currently Bluetooth support is limited to AVR based chips. For Bluetooth 2.1, QM
|Board |Bluetooth Protocol |Connection Type|rules.mk |Bluetooth Chip|
|----------------------------------------------------------------|--------------------|---------------|--------------------------------|--------------|
|Roving Networks RN-42 (Sparkfun Bluesmirf) |Bluetooth Classic |UART |`BLUETOOTH_DRIVER = RN42` |RN-42 |
|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy|SPI |`BLUETOOTH_DRIVER = AdafruitBLE`|nRF51822 |
|[Bluefruit LE SPI Friend](https://www.adafruit.com/product/2633)|Bluetooth Low Energy|SPI |`BLUETOOTH_DRIVER = BluefruitLE`|nRF51822 |
Not Supported Yet but possible:
* [Bluefruit LE UART Friend](https://www.adafruit.com/product/2479). [Possible tmk implementation found in](https://github.com/tmk/tmk_keyboard/issues/514)
@@ -17,9 +17,9 @@ Not Supported Yet but possible:
### Adafruit BLE SPI Friend
Currently The only bluetooth chipset supported by QMK is the Adafruit Bluefruit SPI Friend. It's a Nordic nRF51822 based chip running Adafruit's custom firmware. Data is transmitted via Adafruit's SDEP over Hardware SPI. The [Feather 32u4 Bluefruit LE](https://www.adafruit.com/product/2829) is supported as it's an AVR mcu connected via SPI to the Nordic BLE chip with Adafruit firmware. If Building a custom board with the SPI friend it would be easiest to just use the pin selection that the 32u4 feather uses but you can change the pins in the config.h options with the following defines:
* `#define ADAFRUIT_BLE_RST_PIN D4`
* `#define ADAFRUIT_BLE_CS_PIN B4`
* `#define ADAFRUIT_BLE_IRQ_PIN E6`
* `#define BLUEFRUIT_LE_RST_PIN D4`
* `#define BLUEFRUIT_LE_CS_PIN B4`
* `#define BLUEFRUIT_LE_IRQ_PIN E6`
A Bluefruit UART friend can be converted to an SPI friend, however this [requires](https://github.com/qmk/qmk_firmware/issues/2274) some reflashing and soldering directly to the MDBT40 chip.
@@ -32,7 +32,7 @@ Add the following to your `rules.mk`:
```make
BLUETOOTH_ENABLE = yes
BLUETOOTH_DRIVER = AdafruitBLE # or RN42
BLUETOOTH_DRIVER = BluefruitLE # or RN42
```
## Bluetooth Keycodes

View File

@@ -23,14 +23,35 @@ And to trigger the bootloader, you hold this key down when plugging the keyboard
## Split Keyboards
When handedness is predetermined via an option like `SPLIT_HAND_PIN`, you might need to configure a different key between halves. To do so, add these entries to your `config.h` file:
When [handedness](feature_split_keyboard.md#setting-handedness) is predetermined via options like `SPLIT_HAND_PIN` or `EE_HANDS`, you might need to configure a different key between halves. To identify the correct key for the right half, examine the split key matrix defined in the `<keyboard>.h` file, e.g.:
```c
#define LAYOUT_split_3x5_2( \
L01, L02, L03, L04, L05, R01, R02, R03, R04, R05, \
L06, L07, L08, L09, L10, R06, R07, R08, R09, R10, \
L11, L12, L13, L14, L15, R11, R12, R13, R14, R15, \
L16, L17, R16, R17 \
) \
{ \
{ L01, L02, L03, L04, L05 }, \
{ L06, L07, L08, L09, L10 }, \
{ L11, L12, L13, L14, L15 }, \
{ L16, L17, KC_NO, KC_NO, KC_NO }, \
{ R01, R02, R03, R04, R05 }, \
{ R06, R07, R08, R09, R10 }, \
{ R11, R12, R13, R14, R15 }, \
{ R16, R17, KC_NO, KC_NO, KC_NO } \
}
```
If you pick the top right key for the right half, it is `R05` on the top layout. Within the key matrix below, `R05` is located on row 4 columnn 4. To use that key as the right half's Bootmagic Lite trigger, add these entries to your `config.h` file:
```c
#define BOOTMAGIC_LITE_ROW_RIGHT 4
#define BOOTMAGIC_LITE_COLUMN_RIGHT 1
#define BOOTMAGIC_LITE_COLUMN_RIGHT 4
```
By default, these values are not set.
?> These values are not set by default.
## Advanced Bootmagic Lite
@@ -51,7 +72,7 @@ void bootmagic_lite(void) {
}
```
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.
You can define additional logic 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

View File

@@ -141,10 +141,13 @@ Processing combos has two buffers, one for the key presses, another for the comb
## 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.
## Strict key press order
By defining `COMBO_MUST_PRESS_IN_ORDER` combos only activate when the keys are pressed in the same order as they are defined in the key array.
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.
## Per Combo Timing, Holding, Tapping and Key Press Order
For each combo, it is possible to configure the time window it has to pressed in, if it needs to be held down, if it needs to be tapped, or if its keys need to be pressed in order.
For example, tap-only combos are useful if any (or all) of the underlying keys are mod-tap or layer-tap keys. When you tap the combo, you get the combo result. When you press the combo and hold it down, the combo doesn't 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.
@@ -153,6 +156,7 @@ In order to use these features, the following configuration options and function
| `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`) |
| `COMBO_MUST_PRESS_IN_ORDER_PER_COMBO` | bool get_combo_must_press_in_order(uint16_t index, combo_t \*combo) | Controls if a given combo should fire only if its keys are pressed in order. (default: `true`) |
Examples:
```c
@@ -216,6 +220,38 @@ bool get_combo_must_tap(uint16_t index, combo_t *combo) {
return false;
}
bool get_combo_must_press_in_order(uint16_t combo_index, combo_t *combo) {
switch (combo_index) {
/* List combos here that you want to only activate if their keys
* are pressed in the same order as they are defined in the combo's key
* array. */
case COMBO_NAME_HERE:
return true;
default:
return false;
}
}
```
## Generic hook to (dis)allow a combo activation
By defining `COMBO_SHOULD_TRIGGER` and its companying function `bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record)` you can block or allow combos to activate on the conditions of your choice.
For example, you could disallow some combos on the base layer and allow them on another. Or disable combos on the home row when a timer is running.
Examples:
```c
bool combo_should_trigger(uint16_t combo_index, combo_t *combo, uint16_t keycode, keyrecord_t *record) {
/* Disable combo `SOME_COMBO` on layer `_LAYER_A` */
switch (combo_index) {
case SOME_COMBO:
if (layer_state_is(_LAYER_A)) {
return false;
}
}
return true;
}
```
## Variable Length Combos

View File

@@ -116,6 +116,7 @@ Where name of algorithm is one of:
For use in keyboards where refreshing ```NUM_KEYS``` 8-bit counters is computationally expensive / low scan rate, and fingers usually only hit one row at a time. This could be
appropriate for the ErgoDox models; the matrix is rotated 90°, and hence its "rows" are really columns, and each finger only hits a single "row" at a time in normal use.
* ```sym_eager_pk``` - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key
* ```sym_defer_pr``` - debouncing per row. On any state change, a per-row timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that row, the entire row is pushed. Can improve responsiveness over `sym_defer_g` while being less susceptible than per-key debouncers to noise.
* ```sym_defer_pk``` - debouncing per key. On any state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key status change is pushed.
* ```asym_eager_defer_pk``` - debouncing per key. On a key-down state change, response is immediate, followed by ```DEBOUNCE``` milliseconds of no further input for that key. On a key-up state change, a per-key timer is set. When ```DEBOUNCE``` milliseconds of no changes have occurred on that key, the key-up status change is pushed.

View File

@@ -85,7 +85,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
```
!> If you return `true`, this will allow the keyboard level code to run, as well. Returning `false` will override the keyboard level code. Depending on how the keyboard level function is set up.
!> If you return `true`, it will allow the keyboard level code to run as well. Returning `false` will override the keyboard level code, depending on how the keyboard function is set up.
Layer conditions can also be used with the callback function like the following:

View File

@@ -4,17 +4,17 @@ If you're using a 60% keyboard, or any other layout with no F-row, you will have
## Usage
Replace the `KC_GRV` key in your keymap (usually to the left of the `1` key) with `KC_GESC`. Most of the time this key will output `KC_ESC` when pressed. However, when Shift or GUI are held down it will output `KC_GRV` instead.
Replace the `KC_GRV` key in your keymap (usually to the left of the `1` key) with `QK_GESC`. Most of the time this key will output `KC_ESC` when pressed. However, when Shift or GUI are held down it will output `KC_GRV` instead.
## What Your OS Sees
If Mary presses GESC on her keyboard, the OS will see an KC_ESC character. Now if Mary holds Shift down and presses GESC it will output `~`, or a shifted backtick. Now if she holds GUI/CMD/WIN, it will output a simple <code>&#96;</code> character.
If Mary presses `QK_GESC` on her keyboard, the OS will see an KC_ESC character. Now if Mary holds Shift down and presses `QK_GESC` it will output `~`, or a shifted backtick. Now if she holds GUI/CMD/WIN, it will output a simple <code>&#96;</code> character.
## Keycodes
|Key |Aliases |Description |
|---------|-----------|------------------------------------------------------------------|
|`KC_GESC`|`GRAVE_ESC`|Escape when pressed, <code>&#96;</code> when Shift or GUI are held|
|Key |Aliases |Description |
|-----------------|---------|------------------------------------------------------------------|
|`QK_GRAVE_ESCAPE`|`QK_GESC`|Escape when pressed, <code>&#96;</code> when Shift or GUI are held|
### Caveats

View File

@@ -167,7 +167,7 @@ List of waveform sequences from the datasheet:
```
#define DRV_GREETING *sequence name or number*
```
If haptic feedback is enabled, the keyboard will vibrate to a specific sqeuence during startup. That can be selected using the following define:
If haptic feedback is enabled, the keyboard will vibrate to a specific sequence during startup. That can be selected using the following define:
```
#define DRV_MODE_DEFAULT *sequence name or number*
@@ -191,9 +191,6 @@ With the entry of `#define NO_HAPTIC_MOD` in config.h, the following keys will n
* `TT()` layer tap toggle keys, when held to activate a layer. However when tapped `TAPPING_TOGGLE` times to permanently toggle the layer, on the last tap haptic feedback is still triggered.
* `MT()` mod tap keys, when held to keep a usual modifier key pressed. However when tapped, and the key is quickly released, and sends a keycode, haptic feedback is still triggered. See also [Mod-Tap](mod_tap.md).
### NO_HAPTIC_FN
With the entry of `#define NO_HAPTIC_FN` in config.h, deprecated `fn_actions` type function keys will not trigger 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.
@@ -207,4 +204,4 @@ With the entry of `#define NO_HAPTIC_LOCKKEYS` in config.h, none of the followin
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.
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

@@ -19,4 +19,5 @@ First, enable Key Lock by setting `KEY_LOCK_ENABLE = yes` in your `rules.mk`. Th
Key Lock is only able to hold standard action keys and [One Shot modifier](one_shot_keys.md) keys (for example, if you have your Shift defined as `OSM(KC_LSFT)`).
This does not include any of the QMK special functions (except One Shot modifiers), or shifted versions of keys such as `KC_LPRN`. If it's in the [Basic Keycodes](keycodes_basic.md) list, it can be held.
Switching layers will not cancel the Key Lock.
Switching layers will not cancel the Key Lock. The Key Lock can be cancelled by calling the `cancel_key_lock()` function.

View File

@@ -37,7 +37,7 @@ void matrix_scan_user(void) {
}
```
As you can see, you have a few function. You can use `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS`, `SEQ_THREE_KEYS` up to `SEQ_FIVE_KEYS` for longer sequences.
As you can see, you have a few functions. You can use `SEQ_ONE_KEY` for single-key sequences (Leader followed by just one key), and `SEQ_TWO_KEYS`, `SEQ_THREE_KEYS` up to `SEQ_FIVE_KEYS` for longer sequences.
Each of these accepts one or more keycodes as arguments. This is an important point: You can use keycodes from **any layer on your keyboard**. That layer would need to be active for the leader macro to fire, obviously.
@@ -74,9 +74,9 @@ SEQ_THREE_KEYS(KC_C, KC_C, KC_C) {
## Infinite Leader key timeout
Sometimes your leader key is not on a comfortable places as the rest of keys on your sequence. Imagine that your leader key is one of your outer top right keys, you may need to reposition your hand just to reach your leader key.
Sometimes your leader key is not on a comfortable place as the rest of keys on your sequence. Imagine that your leader key is one of your outer top right keys, you may need to reposition your hand just to reach your leader key.
This can make typing the entire sequence on time hard even if you are able to type most of the sequence fast. For example, if your sequence is `Leader + asd` typing `asd` fast is very easy once you have your hands in your home row. However starting the sequence in time after moving your hand out of the home row to reach the leader key and back is not.
To remove the stress this situation produces to your hands you can enable an infinite timeout just for the leader key. This mean that, after you hit the leader key you will have an infinite amount of time to start the rest of the sequence, allowing you to proper position your hands on the best position to type the rest of the sequence comfortably.
To remove the stress this situation produces to your hands you can enable an infinite timeout just for the leader key. This means that after you hit the leader key you will have an infinite amount of time to start the rest of the sequence, allowing you to proper position your hands on the best position to type the rest of the sequence comfortably.
This infinite timeout only affects the leader key, so in our previous example of `Leader + asd` you will have an infinite amount of time between `Leader` and `a`, but once you start the sequence the timeout you have configured (global or per key) will work normally.
This way you can configure a very short `LEADER_TIMEOUT` but still have plenty of time to position your hands.
@@ -89,11 +89,11 @@ In order to enable this, place this in your `config.h`:
By default, the Leader Key feature will filter the keycode out of [`Mod-Tap`](mod_tap.md) and [`Layer Tap`](feature_layers.md#switching-and-toggling-layers) functions when checking for the Leader sequences. That means if you're using `LT(3, KC_A)`, it will pick this up as `KC_A` for the sequence, rather than `LT(3, KC_A)`, giving a more expected behavior for newer users.
While, this may be fine for most, if you want to specify the whole keycode (eg, `LT(3, KC_A)` from the example above) in the sequence, you can enable this by added `#define LEADER_KEY_STRICT_KEY_PROCESSING` to your `config.h` file. This will then disable the filtering, and you'll need to specify the whole keycode.
While, this may be fine for most, if you want to specify the whole keycode (eg, `LT(3, KC_A)` from the example above) in the sequence, you can enable this by adding `#define LEADER_KEY_STRICT_KEY_PROCESSING` to your `config.h` file. This will then disable the filtering, and you'll need to specify the whole keycode.
## Customization
The Leader Key feature has some additional customization to how the Leader Key feature works. It has two functions that can be called at certain parts of the process. Namely `leader_start()` and `leader_end()`.
The Leader Key feature has some additional customization to how the Leader Key feature works. It has two functions that can be called at certain parts of the process. Namely `leader_start()` and `leader_end()`.
The `leader_start()` function is called when you tap the `KC_LEAD` key, and the `leader_end()` function is called when either the leader sequence is completed, or the leader timeout is hit.

View File

@@ -1,6 +1,6 @@
# LED Indicators
?> This feature requires additional configuration to work on both halves of a split keyboard see [Data sync options](feature_split_keyboard.md#data-sync-options)
?> LED indicators on split keyboards will require state information synced to the slave half (e.g. `#define SPLIT_LED_STATE_ENABLE`). See [data sync options](feature_split_keyboard.md#data-sync-options) for more details.
QMK provides methods to read 5 of the LEDs defined in the HID spec:

View File

@@ -67,6 +67,109 @@ const is31_led PROGMEM 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/led/issi/is31fl3731-simple.h`. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` ).
---
### IS31FLCOMMON :id=is31flcommon
There is basic support for addressable LED matrix lighting with a selection of I2C ISSI Lumissil LED controllers through a shared common driver. To enable it, add this to your `rules.mk`:
```makefile
LED_MATRIX_ENABLE = yes
LED_MATRIX_DRIVER = <driver name>
```
Where `<driver name>` is the applicable LED driver chip as below
| Driver Name | Data Sheet | Capability |
|-------------|------------|------------|
| `IS31FL3742A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3742A_DS.pdf) | 180 LED, 30x6 Matrix |
| `ISSIFL3743A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3743A_DS.pdf) | 198 LED, 18x11 Matrix |
| `IS31FL3745` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3745_DS.pdf) | 144 LED, 18x8 Matrix |
| `IS31FL3746A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3746A_DS.pdf) | 72 LED, 18x4 Matrix |
You can use between 1 and 4 IC's. Do not specify `DRIVER_ADDR_<N>` define for IC's if not present on your keyboard. The `DRIVER_ADDR_1` default assumes that all Address pins on the controller have been connected to GND. Drivers that have SYNC functionality have the default settings to disable if 1 driver. If more than 1 drivers then `DRIVER_ADDR_1` will be set to Master and the remaiing ones set to Slave.
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 LED driver IC's are present | |
| `DRIVER_LED_TOTAL` | (Required) How many LED lights are present across all drivers | |
| `DRIVER_ADDR_1` | (Optional) Address for the first LED driver | |
| `DRIVER_ADDR_<N>` | (Required) Address for the additional LED drivers | |
| `ISSI_SSR_<N>` | (Optional) Configuration for the Spread Spectrum Register | |
| `ISSI_CONFIGURATION` | (Optional) Configuration for the Configuration Register | |
| `ISSI_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF |
| `ISSI_PULLDOWNUP` | (Optional) Configuration for the Pull Up & Pull Down Register | |
| `ISSI_TEMP` | (Optional) Configuration for the Tempature Register | |
| `ISSI_PWM_ENABLE` | (Optional) Configuration for the PWM Enable Register | |
| `ISSI_PWM_SET` | (Optional) Configuration for the PWM Setting Register | |
| `ISSI_SCAL_LED ` | (Optional) Configuration for the LEDs Scaling Registers | 0xFF |
| `ISSI_MANUAL_SCALING` | (Optional) If you wish to configure the Scaling Registers manually | |
Defaults
| Variable | IS31FL3742A | IS31FL3743A | IS31FL3745 | IS31FL3746 |
|----------|-------------|-------------|------------|------------|
| `DRIVER_ADDR_1` | 0b0110000 | 0b0100000 | 0b0100000 | 0b1100000 |
| `ISSI_SSR_1` | 0x00 | 0x00 / 0x60 | 0x00 / 0xC0 | 0x00 |
| `ISSI_SSR_<2-4>` | 0x00 | 0x40 | 0x80 | 0x00 |
| `ISSI_CONFIGURATION` | 0x31 | 0x01 | 0x31 | 0x01 |
| `ISSI_PULLDOWNUP` | 0x55 | 0x33 | 0x33 | 0x33 |
| `ISSI_TEMP` | N/A | 0x00 | 0x00 | 0x00 |
| `ISSI_PWM_ENABLE` | N/A | N/A | N/A | 0x00 |
| `ISSI_PWM_SET` | 0x00 | N/A | N/A | 0x00 |
Here is an example using 2 drivers.
```c
#define DRIVER_ADDR_2 0b0100001
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 66
#define DRIVER_2_LED_TOTAL 42
#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 4 drivers are supported, but it would be trivial to support for more. Note that using a combination of different drivers is not supported. All drivers must be of the same model.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | LED address
* | | */
{ 0, CS1_SW1 },
{ 0, CS2_SW1 },
// ...
}
```
Where `CSx_SWx` is the location of the LED in the matrix defined by the datasheet. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` for now).
`ISSI_MANUAL_SCALING` is used to override the Scaling for individual LED's. By default they will be set as per `ISSI_SCAL_LED`. In `config.h` set how many LED's you want to manually set scaling for.
Eg `#define ISSI_MANUAL_SCALING 3`
Then Define the array listing all the LEDs you want to override in your `<keyboard>.c`:
```c
const is31_led __flash g_is31_scaling[ISSI_MANUAL_SCALING] = {
* LED Index
* | Scaling
* | | */
{5, 120},
{9, 120},
....
}
```
Where LED Index is the position of the LED in the `g_is31_leds` array. The `scaling` value between 0 and 255 to be written to the Scaling Register.
---
## Common Configuration :id=common-configuration

View File

@@ -40,7 +40,7 @@ You can define up to 32 macros in a `keymap.json` file, as used by [Configurator
### Selecting Your Host Keyboard Layout
If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros- you may need to type different keys to get the same letters! To address this you can add the `host_language` key to your keymap.json, like so:
If you type in a language other than English, or use a non-QWERTY layout like Colemak, Dvorak, or Workman, you may have set your computer's input language to match this layout. This presents a challenge when creating macros - you may need to type different keys to get the same letters! To address this you can add the `host_language` key to your `keymap.json`, like so:
```json
{
@@ -75,7 +75,7 @@ The current list of available languages is:
### Macro Basics
Each macro is an array consisting of strings and objects (dictionaries.) Strings are typed to your computer while objects allow you to control how your macro is typed out.
Each macro is an array consisting of strings and objects (dictionaries). Strings are typed to your computer while objects allow you to control how your macro is typed out.
#### Object Format

View File

@@ -59,13 +59,13 @@ This is the default mode. You can adjust the cursor and scrolling acceleration u
|Define |Default|Description |
|----------------------------|-------|---------------------------------------------------------|
|`MOUSEKEY_DELAY` |300 |Delay between pressing a movement key and cursor movement|
|`MOUSEKEY_INTERVAL` |50 |Time between cursor movements in milliseconds |
|`MOUSEKEY_MOVE_DELTA` |5 |Step size |
|`MOUSEKEY_DELAY` |10 |Delay between pressing a movement key and cursor movement|
|`MOUSEKEY_INTERVAL` |20 |Time between cursor movements in milliseconds |
|`MOUSEKEY_MOVE_DELTA` |8 |Step size |
|`MOUSEKEY_MAX_SPEED` |10 |Maximum cursor speed at which acceleration stops |
|`MOUSEKEY_TIME_TO_MAX` |20 |Time until maximum cursor speed is reached |
|`MOUSEKEY_WHEEL_DELAY` |300 |Delay between pressing a wheel key and wheel movement |
|`MOUSEKEY_WHEEL_INTERVAL` |100 |Time between wheel movements |
|`MOUSEKEY_TIME_TO_MAX` |30 |Time until maximum cursor speed is reached |
|`MOUSEKEY_WHEEL_DELAY` |10 |Delay between pressing a wheel key and wheel movement |
|`MOUSEKEY_WHEEL_INTERVAL` |80 |Time between wheel movements |
|`MOUSEKEY_WHEEL_MAX_SPEED` |8 |Maximum number of scroll steps per scroll action |
|`MOUSEKEY_WHEEL_TIME_TO_MAX`|40 |Time until maximum scroll speed is reached |
@@ -85,9 +85,9 @@ This is an extension of the accelerated mode. The kinetic mode uses a quadratic
|Define |Default |Description |
|--------------------------------------|---------|---------------------------------------------------------------|
|`MK_KINETIC_SPEED` |undefined|Enable kinetic mode |
|`MOUSEKEY_DELAY` |8 |Delay between pressing a movement key and cursor movement |
|`MOUSEKEY_INTERVAL` |8 |Time between cursor movements in milliseconds |
|`MOUSEKEY_MOVE_DELTA` |25 |Step size for accelerating from initial to base speed |
|`MOUSEKEY_DELAY` |5 |Delay between pressing a movement key and cursor movement |
|`MOUSEKEY_INTERVAL` |10 |Time between cursor movements in milliseconds |
|`MOUSEKEY_MOVE_DELTA` |5 |Step size for accelerating from initial to base speed |
|`MOUSEKEY_INITIAL_SPEED` |100 |Initial speed of the cursor in pixel per second |
|`MOUSEKEY_BASE_SPEED` |1000 |Maximum cursor speed at which acceleration stops |
|`MOUSEKEY_DECELERATED_SPEED` |400 |Decelerated cursor speed |
@@ -164,7 +164,7 @@ small and detailed movements of the cursor.
* **KC_ACL2:** This acceleration sets your cursor to the maximum (computer defined) speed. This is
useful for moving the cursor large distances without much accuracy.
To use constant speed mode, you must at least define `MK_COMBINED` in your keymaps `config.h` file:
To use combined speed mode, you must at least define `MK_COMBINED` in your keymaps `config.h` file:
```c
#define MK_COMBINED

View File

@@ -2,7 +2,7 @@
Pointing Device is a generic name for a feature intended to be generic: moving the system pointer around. There are certainly other options for it - like mousekeys - but this aims to be easily modifiable and hardware driven. You can implement custom keys to control functionality, or you can gather information from other peripherals and insert it directly here - let QMK handle the processing for you.
To enable Pointing Device, uncomment the following line in your rules.mk:
To enable Pointing Device, add the following line in your rules.mk and specify one of the driver options below.
```make
POINTING_DEVICE_ENABLE = yes
@@ -40,13 +40,13 @@ POINTING_DEVICE_DRIVER = adns9800
The ADNS 9800 is an SPI driven optical sensor, that uses laser output for surface tracking.
| Setting | Description | Default |
|------------------------|------------------------------------------------------------------------|---------------|
|`ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|`ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`ADNS9800_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|`ADNS9800_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|`ADNS9800_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
| Setting | Description | Default |
|--------------------------------|------------------------------------------------------------------------|---------------|
|`ADNS9800_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|`ADNS9800_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`ADNS9800_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|`ADNS9800_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|`ADNS9800_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
The CPI range is 800-8200, in increments of 200. Defaults to 1800 CPI.
@@ -69,7 +69,7 @@ The Analog Joystick is an analog (ADC) driven sensor. There are a variety of jo
|`ANALOG_JOYSTICK_AXIS_MAX` | (Optional) Sets the upper range to be considered movement. | `1023` |
|`ANALOG_JOYSTICK_SPEED_REGULATOR` | (Optional) The divisor used to slow down movement. (lower makes it faster) | `20` |
|`ANALOG_JOYSTICK_READ_INTERVAL` | (Optional) The interval in milliseconds between reads. | `10` |
|`ANALOG_JOYSTICK_SPEED_MAX` | (Optional) The maxiumum value used for motion. | `2` |
|`ANALOG_JOYSTICK_SPEED_MAX` | (Optional) The maximum value used for motion. | `2` |
|`ANALOG_JOYSTICK_CLICK_PIN` | (Optional) The pin wired up to the press switch of the analog stick. | _not defined_ |
@@ -127,11 +127,10 @@ The Pimoroni Trackball module is a I2C based breakout board with an RGB enable t
| Setting | Description | Default |
|-------------------------------------|------------------------------------------------------------------------------------|---------|
|`PIMORONI_TRACKBALL_ADDRESS` | (Required) Sets the I2C Address for the Pimoroni Trackball. | `0x0A` |
|`PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackpad in milliseconds. | `100` |
|`PIMORONI_TRACKBALL_INTERVAL_MS` | (Optional) The update/read interval for the sensor in milliseconds. | `8` |
|`PIMORONI_TRACKBALL_TIMEOUT` | (Optional) The timeout for i2c communication with the trackball in milliseconds. | `100` |
|`PIMORONI_TRACKBALL_SCALE` | (Optional) The multiplier used to generate reports from the sensor. | `5` |
|`PIMORONI_TRACKBALL_DEBOUNCE_CYCLES` | (Optional) The number of scan cycles used for debouncing on the ball press. | `20` |
|`PIMORONI_TRACKBALL_ERROR_COUNT` | (Optional) Specifies the number of read/write errors until the sensor is disabled. | `10` |
|`PIMORONI_TRACKBALL_ERROR_COUNT` | (Optional) Specifies the number of read/write errors until the sensor is disabled. | `10` |
### PMW 3360 Sensor
@@ -145,20 +144,50 @@ The PMW 3360 is an SPI driven optical sensor, that uses a built in IR LED for su
| Setting | Description | Default |
|-----------------------------|--------------------------------------------------------------------------------------------|---------------|
|`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
|`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|`PMW3360_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` |
|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0` |
|`PMW3360_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
|`PMW3360_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|`PMW3360_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`PMW3360_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|`PMW3360_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|`PMW3360_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` |
|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 127 degrees directly in the sensor.| `0` |
|`PMW3360_FIRMWARE_UPLOAD_FAST` | (Optional) Skips the 15us wait between firmware blocks. | _not defined_ |
The CPI range is 100-12000, in increments of 100. Defaults to 1600 CPI.
### PMW 3389 Sensor
To use the PMW 3389 sensor, add this to your `rules.mk`
```make
POINTING_DEVICE_DRIVER = pmw3389
```
The PMW 3389 is an SPI driven optical sensor, that uses a built in IR LED for surface tracking.
| Setting | Description | Default |
|---------------------------------|--------------------------------------------------------------------------------------------|---------------|
|`PMW3389_CS_PIN` | (Required) Sets the Cable Select pin connected to the sensor. | _not defined_ |
|`PMW3389_CLOCK_SPEED` | (Optional) Sets the clock speed that the sensor runs at. | `2000000` |
|`PMW3389_SPI_LSBFIRST` | (Optional) Sets the Least/Most Significant Byte First setting for SPI. | `false` |
|`PMW3389_SPI_MODE` | (Optional) Sets the SPI Mode for the sensor. | `3` |
|`PMW3389_SPI_DIVISOR` | (Optional) Sets the SPI Divisor used for SPI communication. | _varies_ |
|`PMW3389_LIFTOFF_DISTANCE` | (Optional) Sets the lift off distance at run time | `0x02` |
|`ROTATIONAL_TRANSFORM_ANGLE` | (Optional) Allows for the sensor data to be rotated +/- 30 degrees directly in the sensor. | `0` |
|`PMW3389_FIRMWARE_UPLOAD_FAST` | (Optional) Skips the 15us wait between firmware blocks. | _not defined_ |
The CPI range is 50-16000, in increments of 50. Defaults to 2000 CPI.
### Custom Driver
If you have a sensor type that isn't supported here, you can manually implement it, by adding these functions (with the correct implementation for your device):
If you have a sensor type that isn't supported above, a custom option is available by adding the following to your `rules.mk`
```make
POINTING_DEVICE_DRIVER = custom
```
Using the custom driver will require implementing the following functions:
```c
void pointing_device_driver_init(void) {}
@@ -171,14 +200,35 @@ void pointing_device_driver_set_cpi(uint16_t cpi) {}
## Common Configuration
| Setting | Description | Default |
|-------------------------------|-----------------------------------------------------------------------|---------------|
|`POINTING_DEVICE_ROTATION_90` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_180` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_270` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
|`POINTING_DEVICE_INVERT_X` | (Optional) Inverts the X axis report. | _not defined_ |
|`POINTING_DEVICE_INVERT_Y` | (Optional) Inverts the Y axis report. | _not defined_ |
|`POINTING_DEVICE_MOTION_PIN` | (Optional) If supported, will only read from sensor if pin is active. | _not defined_ |
| Setting | Description | Default |
|----------------------------------|-----------------------------------------------------------------------|-------------------|
|`POINTING_DEVICE_ROTATION_90` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_180` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_270` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
|`POINTING_DEVICE_INVERT_X` | (Optional) Inverts the X axis report. | _not defined_ |
|`POINTING_DEVICE_INVERT_Y` | (Optional) Inverts the Y axis report. | _not defined_ |
|`POINTING_DEVICE_MOTION_PIN` | (Optional) If supported, will only read from sensor if pin is active. | _not defined_ |
|`POINTING_DEVICE_TASK_THROTTLE_MS` | (Optional) Limits the frequency that the sensor is polled for motion. | _not defined_ |
!> When using `SPLIT_POINTING_ENABLE` the `POINTING_DEVICE_MOTION_PIN` functionality is not supported and `POINTING_DEVICE_TASK_THROTTLE_MS` will default to `1`. Increasing this value will increase transport performance at the cost of possible mouse responsiveness.
## Split Keyboard Configuration
The following configuration options are only available when using `SPLIT_POINTING_ENABLE` see [data sync options](feature_split_keyboard.md?id=data-sync-options). The rotation and invert `*_RIGHT` options are only used with `POINTING_DEVICE_COMBINED`. If using `POINTING_DEVICE_LEFT` or `POINTING_DEVICE_RIGHT` use the common configuration above to configure your pointing device.
| Setting | Description | Default |
|----------------------------------------|-----------------------------------------------------------------------|---------------|
|`POINTING_DEVICE_LEFT` | Pointing device on the left side (Required - pick one only) | _not defined_ |
|`POINTING_DEVICE_RIGHT` | Pointing device on the right side (Required - pick one only) | _not defined_ |
|`POINTING_DEVICE_COMBINED` | Pointing device on both sides (Required - pick one only) | _not defined_ |
|`POINTING_DEVICE_ROTATION_90_RIGHT` | (Optional) Rotates the X and Y data by 90 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_180_RIGHT` | (Optional) Rotates the X and Y data by 180 degrees. | _not defined_ |
|`POINTING_DEVICE_ROTATION_270_RIGHT` | (Optional) Rotates the X and Y data by 270 degrees. | _not defined_ |
|`POINTING_DEVICE_INVERT_X_RIGHT` | (Optional) Inverts the X axis report. | _not defined_ |
|`POINTING_DEVICE_INVERT_Y_RIGHT` | (Optional) Inverts the Y axis report. | _not defined_ |
!> If there is a `_RIGHT` configuration option or callback, the [common configuration](feature_pointing_device.md?id=common-configuration) option will work for the left. For correct left/right detection you should setup a [handedness option](feature_split_keyboard?id=setting-handedness), `EE_HANDS` is usually a good option for an existing board that doesn't do handedness by hardware.
## Callbacks and Functions
@@ -188,14 +238,29 @@ void pointing_device_driver_set_cpi(uint16_t cpi) {}
| `pointing_device_init_kb(void)` | Callback to allow for keyboard level initialization. Useful for additional hardware sensors. |
| `pointing_device_init_user(void)` | Callback to allow for user level initialization. Useful for additional hardware sensors. |
| `pointing_device_task_kb(mouse_report)` | Callback that sends sensor data, so keyboard code can intercept and modify the data. Returns a mouse report. |
| `pointing_device_task_user(mouse_report)` | Callback that sends sensor data, so user coe can intercept and modify the data. Returns a mouse report. |
| `pointing_device_task_user(mouse_report)` | Callback that sends sensor data, so user code can intercept and modify the data. Returns a mouse report. |
| `pointing_device_handle_buttons(buttons, pressed, button)` | Callback to handle hardware button presses. Returns a `uint8_t`. |
| `pointing_device_get_cpi(void)` | Gets the current CPI/DPI setting from the sensor, if supported. |
| `pointing_device_set_cpi(uint16_t)` | Sets the CPI/DPI, if supported. |
| `pointing_device_get_report(void)` | Returns the current mouse report (as a `mouse_report_t` data structure). |
| `pointing_device_set_report(mouse_report)` | Sets the mouse report to the assigned `mouse_report_t` data structured passed to the function. |
| `pointing_device_send(void)` | Sends the current mouse report to the host system. Function can be replaced. |
| `has_mouse_report_changed(old, new)` | Compares the old and new `mouse_report_t` data and returns true only if it has changed. |
| `has_mouse_report_changed(new_report, old_report)` | Compares the old and new `mouse_report_t` data and returns true only if it has changed. |
| `pointing_device_adjust_by_defines(mouse_report)` | Applies rotations and invert configurations to a raw mouse report. |
## Split Keyboard Callbacks and Functions
The combined functions below are only available when using `SPLIT_POINTING_ENABLE` and `POINTING_DEVICE_COMBINED`. The 2 callbacks `pointing_device_task_combined_*` replace the single sided equivalents above. See the [combined pointing devices example](feature_pointing_device.md?id=combined-pointing-devices)
| Function | Description |
|-----------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------|
| `pointing_device_set_shared_report(mouse_report)` | Sets the shared mouse report to the assigned `mouse_report_t` data structured passed to the function. |
| `pointing_device_set_cpi_on_side(bool, uint16_t)` | Sets the CPI/DPI of one side, if supported. Passing `true` will set the left and `false` the right` |
| `pointing_device_combine_reports(left_report, right_report)` | Returns a combined mouse_report of left_report and right_report (as a `mouse_report_t` data structure) |
| `pointing_device_task_combined_kb(left_report, right_report)` | Callback, so keyboard code can intercept and modify the data. Returns a combined mouse report. |
| `pointing_device_task_combined_user(left_report, right_report)` | Callback, so user code can intercept and modify. Returns a combined mouse report using `pointing_device_combine_reports` |
| `pointing_device_adjust_by_defines_right(mouse_report)` | Applies right side rotations and invert configurations to a raw mouse report. |
# Manipulating Mouse Reports
@@ -211,14 +276,14 @@ The report_mouse_t (here "mouseReport") has the following properties:
To manually manipulate the mouse reports outside of the `pointing_device_task_*` functions, you can use:
* `pointing_device_get_report()` - Returns the current report_mouse_t that represents the information sent to the host computer
* `pointing_device_set_report(report_mouse_t newMouseReport)` - Overrides and saves the report_mouse_t to be sent to the host computer
* `pointing_device_set_report(report_mouse_t mouse_report)` - Overrides and saves the report_mouse_t to be sent to the host computer
* `pointing_device_send()` - Sends the mouse report to the host and zeroes out the report.
When the mouse report is sent, the x, y, v, and h values are set to 0 (this is done in `pointing_device_send()`, which can be overridden to avoid this behavior). This way, button states persist, but movement will only occur once. For further customization, both `pointing_device_init` and `pointing_device_task` can be overridden.
Additionally, by default, `pointing_device_send()` will only send a report when the report has actually changed. This prevents it from continuously sending mouse reports, which will keep the host system awake. This behavior can be changed by creating your own `pointing_device_send()` function.
Also, you use the `has_mouse_report_changed(new, old)` function to check to see if the report has changed.
Also, you use the `has_mouse_report_changed(new_report, old_report)` function to check to see if the report has changed.
## Examples
@@ -260,7 +325,8 @@ report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
if (set_scrolling) {
mouse_report.h = mouse_report.x;
mouse_report.v = mouse_report.y;
mouse_report.x = mouse_report.y = 0
mouse_report.x = 0;
mouse_report.y = 0;
}
return mouse_report;
}
@@ -274,3 +340,62 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
```
This allows you to toggle between scrolling and cursor movement by pressing the DRAG_SCROLL key.
## Split Examples
The following examples make use the `SPLIT_POINTING_ENABLE` functionality and show how to manipulate the mouse report for a scrolling mode.
### Single Pointing Device
The following example will work with either `POINTING_DEVICE_LEFT` or `POINTING_DEVICE_RIGHT` and enables scrolling mode while on a particular layer.
```c
static bool scrolling_mode = false;
layer_state_t layer_state_set_user(layer_state_t state) {
switch (get_highest_layer(state)) {
case _RAISE: // If we're on the _RAISE layer enable scrolling mode
scrolling_mode = true;
pointing_device_set_cpi(2000);
break;
default:
if (scrolling_mode) { // check if we were scrolling before and set disable if so
scrolling_mode = false;
pointing_device_set_cpi(8000);
}
break;
}
return state;
}
report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) {
if (scrolling_mode) {
mouse_report.h = mouse_report.x;
mouse_report.v = mouse_report.y;
mouse_report.x = 0;
mouse_report.y = 0;
}
return mouse_report;
}
```
### Combined Pointing Devices
The following example requires `POINTING_DEVICE_COMBINED` and sets the left side pointing device to scroll only.
```c
void keyboard_post_init_user(void) {
pointing_device_set_cpi_on_side(true, 1000); //Set cpi on left side to a low value for slower scrolling.
pointing_device_set_cpi_on_side(false, 8000); //Set cpi on right side to a reasonable value for mousing.
}
report_mouse_t pointing_device_task_combined_user(report_mouse_t left_report, report_mouse_t right_report) {
left_report.h = left_report.x;
left_report.v = left_report.y;
left_report.x = 0;
left_report.y = 0;
return pointing_device_combine_reports(left_report, right_report);
}
```
=======

View File

@@ -232,6 +232,115 @@ const is31_led PROGMEM 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/led/issi/is31fl3737.h`. The `driver` is the index of the driver you defined in your `config.h` (Only `0`, `1` for now).
---
### IS31FLCOMMON :id=is31flcommon
There is basic support for addressable RGB matrix lighting with a selection of I2C ISSI Lumissil RGB controllers through a shared common driver. To enable it, add this to your `rules.mk`:
```makefile
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = <driver name>
```
Where `<driver name>` is the applicable LED driver chip as below
| Driver Name | Data Sheet | Capability |
|-------------|------------|------------|
| `IS31FL3742A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3742A_DS.pdf) | 60 RGB, 30x6 Matrix |
| `ISSIFL3743A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3743A_DS.pdf) | 66 RGB, 18x11 Matrix |
| `IS31FL3745` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3745_DS.pdf) | 48 RGB, 18x8 Matrix |
| `IS31FL3746A` | [datasheet](https://www.lumissil.com/assets/pdf/core/IS31FL3746A_DS.pdf) | 24 RGB, 18x4 Matrix |
You can use between 1 and 4 IC's. Do not specify `DRIVER_ADDR_<N>` define for IC's if not present on your keyboard. The `DRIVER_ADDR_1` default assumes that all Address pins on the controller have been connected to GND. Drivers that have SYNC functionality have the default settings to disable if 1 driver. If more than 1 drivers then `DRIVER_ADDR_1` will be set to Master and the remaining ones set to Slave.
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` | (Optional) Address for the first RGB driver | |
| `DRIVER_ADDR_<N>` | (Required) Address for the additional RGB drivers | |
| `ISSI_SSR_<N>` | (Optional) Configuration for the Spread Spectrum Register | |
| `ISSI_CONFIGURATION` | (Optional) Configuration for the Configuration Register | |
| `ISSI_GLOBALCURRENT` | (Optional) Configuration for the Global Current Register | 0xFF |
| `ISSI_PULLDOWNUP` | (Optional) Configuration for the Pull Up & Pull Down Register | |
| `ISSI_TEMP` | (Optional) Configuration for the Tempature Register | |
| `ISSI_PWM_ENABLE` | (Optional) Configuration for the PWM Enable Register | |
| `ISSI_PWM_SET` | (Optional) Configuration for the PWM Setting Register | |
| `ISSI_SCAL_RED` | (Optional) Configuration for the RED LEDs in Scaling Registers | 0xFF |
| `ISSI_SCAL_BLUE` | (Optional) Configuration for the BLUE LEDs in Scaling Registers | 0xFF |
| `ISSI_SCAL_GREEN` | (Optional) Configuration for the GREEN LEDs in Scaling Registers | 0xFF |
| `ISSI_MANUAL_SCALING` | (Optional) If you wish to configure the Scaling Registers manually | |
Defaults
| Variable | IS31FL3742A | IS31FL3743A | IS31FL3745 | IS31FL3746 |
|----------|-------------|-------------|------------|------------|
| `DRIVER_ADDR_1` | 0b0110000 | 0b0100000 | 0b0100000 | 0b1100000 |
| `ISSI_SSR_1` | 0x00 | 0x00 / 0x60 | 0x00 / 0xC0 | 0x00 |
| `ISSI_SSR_<2-4>` | 0x00 | 0x40 | 0x80 | 0x00 |
| `ISSI_CONFIGURATION` | 0x31 | 0x01 | 0x31 | 0x01 |
| `ISSI_PULLDOWNUP` | 0x55 | 0x33 | 0x33 | 0x33 |
| `ISSI_TEMP` | N/A | 0x00 | 0x00 | 0x00 |
| `ISSI_PWM_ENABLE` | N/A | N/A | N/A | 0x00 |
| `ISSI_PWM_SET` | 0x00 | N/A | N/A | 0x00 |
Here is an example using 2 drivers.
```c
#define DRIVER_ADDR_2 0b0100001
#define DRIVER_COUNT 2
#define DRIVER_1_LED_TOTAL 66
#define DRIVER_2_LED_TOTAL 42
#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 4 drivers are supported, but it would be trivial to support for more. Note that using a combination of different drivers is not supported. All drivers must be of the same model.
Define these arrays listing all the LEDs in your `<keyboard>.c`:
```c
const is31_led __flash g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, CS1_SW1, CS2_SW1, CS3_SW1},
....
}
```
Where `CSx_SWx` is the location of the LED in the matrix defined by the datasheet. The `driver` is the index of the driver you defined in your `config.h` (`0`, `1`, `2`, or `3` for now).
`ISSI_MANUAL_SCALING` is used to override the Scaling for individual LED's. By default they will be set as per `ISSI_SCAL_<colour>`. In `config.h` set how many LED's you want to manually set scaling for.
Eg `#define ISSI_MANUAL_SCALING 3`
Then Define the array listing all the LEDs you want to override in your `<keyboard>.c`:
```c
const is31_led __flash g_is31_scaling[ISSI_MANUAL_SCALING] = {
* LED Index
* | R scaling
* | | G scaling
* | | | B scaling
* | | | | */
{5, 120, 155, 167},
{9, 120, 155, 167},
....
}
```
Where LED Index is the position of the LED in the `g_is31_leds` array. The `scaling` value between 0 and 255 to be written to the Scaling Register.
---
### WS2812 :id=ws2812
@@ -252,6 +361,8 @@ Configure the hardware via your `config.h`:
#define DRIVER_LED_TOTAL 70
```
?> There are additional configuration options for ARM controllers that offer increased performance over the default bitbang driver. Please see [WS2812 Driver](ws2812_driver.md) for more information.
---
### APA102 :id=apa102
@@ -417,7 +528,9 @@ All RGB keycodes are currently shared with the RGBLIGHT system:
`RGB_MODE_PLAIN`, `RGB_MODE_BREATHE`, `RGB_MODE_RAINBOW`, and `RGB_MODE_SWIRL` are the only ones that are mapped properly. The rest don't have a direct equivalent, and are not mapped.
?> `RGB_*` keycodes cannot be used with functions like `tap_code16(RGB_HUD)` as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions-idfunctions) should be used instead.
?> `RGB_*` keycodes cannot be used with functions like `tap_code16(RGB_HUD)` as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions) should be used instead.
!> By default, if you have both the [RGB Light](feature_rgblight.md) and the RGB Matrix feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
## RGB Matrix Effects :id=rgb-matrix-effects
@@ -455,6 +568,7 @@ enum rgb_matrix_effects {
RGB_MATRIX_HUE_PENDULUM, // Hue shifts up a slight ammount in a wave to the right, then back to the left
RGB_MATRIX_HUE_WAVE, // Hue shifts up a slight ammount and then back down in a wave to the right
RGB_MATRIX_PIXEL_FRACTAL, // Single hue fractal filled keys pulsing horizontally out to edges
RGB_MATRIX_PIXEL_FLOW, // Pulsing RGB flow along LED wiring with random hues
RGB_MATRIX_PIXEL_RAIN, // Randomly light keys with random hues
#if define(RGB_MATRIX_FRAMEBUFFER_EFFECTS)
RGB_MATRIX_TYPING_HEATMAP, // How hot is your WPM!
@@ -510,6 +624,7 @@ You can enable a single effect by defining `ENABLE_[EFFECT_NAME]` in your `confi
|`#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_PIXEL_FRACTAL` |Enables `RGB_MATRIX_PIXEL_FRACTAL` |
|`#define ENABLE_RGB_MATRIX_PIXEL_FLOW` |Enables `RGB_MATRIX_PIXEL_FLOW` |
|`#define ENABLE_RGB_MATRIX_PIXEL_RAIN` |Enables `RGB_MATRIX_PIXEL_RAIN` |
?> These modes don't require any additional defines.
@@ -555,9 +670,7 @@ In order to change the delay of temperature decrease define
## Custom RGB Matrix Effects :id=custom-rgb-matrix-effects
By setting `RGB_MATRIX_CUSTOM_USER = yes` in `rules.mk`, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files.
To declare new effects, create a `rgb_matrix_user.inc` file in the user keymap directory or userspace folder.
By setting `RGB_MATRIX_CUSTOM_USER = yes` in `rules.mk`, new effects can be defined directly from your keymap or userspace, without having to edit any QMK core files. To declare new effects, create a `rgb_matrix_user.inc` file in the user keymap directory or userspace folder.
?> Hardware maintainers who want to limit custom effects to a specific keyboard can create a `rgb_matrix_kb.inc` file in the root of the keyboard directory, and add `RGB_MATRIX_CUSTOM_KB = yes` to the keyboard level `rules.mk`.
@@ -707,6 +820,7 @@ Where `28` is an unused index from `eeconfig.h`.
|`rgb_matrix_decrease_speed_noeeprom()` |Decrease the speed of the animations (not written to EEPROM) |
|`rgb_matrix_set_speed(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 |
|`rgb_matrix_set_speed_noeeprom(speed)` |Set the speed of the animations to the given value where `speed` is between 0 and 255 (not written to EEPROM) |
|`rgb_matrix_reload_from_eeprom()` |Reload the effect configuration (enabled, mode and color) from EEPROM |
### Change Color :id=change-color
|Function |Description |
@@ -810,6 +924,8 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
?> Split keyboards will require layer state data syncing with `#define SPLIT_LAYER_STATE_ENABLE`. See [Data Sync Options](feature_split_keyboard?id=data-sync-options) for more details.
#### Examples :id=indicator-examples
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).

View File

@@ -22,6 +22,8 @@ On keyboards with onboard RGB LEDs, it is usually enabled by default. If it is n
RGBLIGHT_ENABLE = yes
```
?> There are additional configuration options for ARM controllers that offer increased performance over the default WS2812 bitbang driver. Please see [WS2812 Driver](ws2812_driver.md) for more information.
For APA102 LEDs, add the following to your `rules.mk`:
```make
@@ -76,9 +78,10 @@ Changing the **Value** sets the overall brightness.<br>
|`RGB_MODE_RGBTEST` |`RGB_M_T` |Red, Green, Blue test animation mode |
|`RGB_MODE_TWINKLE` |`RGB_M_TW`|Twinkle animation mode |
!> By default, if you have both the RGB Light and the [RGB Matrix](feature_rgb_matrix.md) feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
?> `RGB_*` keycodes cannot be used with functions like `tap_code16(RGB_HUI)` as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions) should be used instead.
?> `RGB_*` keycodes cannot be used with functions like `tap_code16(RGB_HUI)` as they're not USB HID keycodes. If you wish to replicate similar behaviour in custom code within your firmware (e.g. inside `encoder_update_user()` or `process_record_user()`), the equivalent [RGB functions](#functions-idfunctions) should be used instead.
!> By default, if you have both the RGB Light and the [RGB Matrix](feature_rgb_matrix.md) feature enabled, these keycodes will work for both features, at the same time. You can disable the keycode functionality by defining the `*_DISABLE_KEYCODES` option for the specific feature.
## Configuration
@@ -203,7 +206,7 @@ const uint8_t RGBLED_GRADIENT_RANGES[] PROGMEM = {255, 170, 127, 85, 64};
## Lighting Layers
?> **Note:** Lighting Layers is an RGB Light feature, it will not work for RGB Matrix. See [RGB Matrix Indicators](feature_rgb_matrix.md?indicators) for details on how to do so.
?> **Note:** Lighting Layers is an RGB Light feature, it will not work for RGB Matrix. See [RGB Matrix Indicators](feature_rgb_matrix.md#indicators) for details on how to do so.
By including `#define RGBLIGHT_LAYERS` in your `config.h` file you can enable lighting layers. These make
it easy to use your underglow LEDs as status indicators to show which keyboard layer is currently active, or the state of caps lock, all without disrupting any animations. [Here's a video](https://youtu.be/uLGE1epbmdY) showing an example of what you can do.

View File

@@ -273,6 +273,14 @@ This enables transmitting the current OLED on/off status to the slave side of th
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.
```c
#define SPLIT_POINTING_ENABLE
```
This enables transmitting the pointing device status to the master side of the split keyboard. The purpose of this feature is to enable use pointing devices on the slave side.
!> There is additional required configuration for `SPLIT_POINTING_ENABLE` outlined in the [pointing device documentation](feature_pointing_device.md?id=split-keyboard-configuration).
### 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.

View File

@@ -243,7 +243,7 @@ Now, at the bottom of your `keymap.c` file, you'll need to add the following:
*
* How to figure out tap dance state: interrupted and pressed.
*
* Interrupted: If the state of a dance dance is "interrupted", that means that another key has been hit
* Interrupted: If the state of a dance is "interrupted", that means that another key has been hit
* under the tapping term. This is typically indicitive that you are trying to "tap" the key.
*
* Pressed: Whether or not the key is still being pressed. If this value is true, that means the tapping term

View File

@@ -16,7 +16,7 @@ For split keyboards using soft serial, the computed WPM score will be available
| `WPM_ALLOW_COUNT_REGRESSION` | _Not defined_ | If defined allows the WPM to be decreased when hitting Delete or Backspace |
| `WPM_UNFILTERED` | _Not defined_ | If undefined (the default), WPM values will be smoothed to avoid sudden changes in value |
| `WPM_SAMPLE_SECONDS` | `5` | This defines how many seconds of typing to average, when calculating WPM |
| `WPM_SAMPLE_PERIODS` | `50` | This defines how many sampling periods to use when calculating WPM |
| `WPM_SAMPLE_PERIODS` | `25` | This defines how many sampling periods to use when calculating WPM |
| `WPM_LAUNCH_CONTROL` | _Not defined_ | If defined, WPM values will be calculated using partial buffers when typing begins |
'WPM_UNFILTERED' is potentially useful if you're filtering data in some other way (and also because it reduces the code required for the WPM feature), or if reducing measurement latency to a minimum is important for you.

24
docs/flash_driver.md Normal file
View File

@@ -0,0 +1,24 @@
# FLASH Driver Configuration :id=flash-driver-configuration
The FLASH driver can be swapped out depending on the needs of the keyboard, or whether extra hardware is present.
Driver | Description
-----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
`FLASH_DRIVER = spi` | Supports writing to almost all NOR Flash chips. See the driver section below.
## SPI FLASH Driver Configuration :id=spi-flash-driver-configuration
Currently QMK supports almost all NOR Flash chips over SPI. As such, requires a working spi_master driver configuration. You can override the driver configuration via your config.h:
`config.h` override | Description | Default Value
-----------------------------------------------|--------------------------------------------------------------------------------------|-----------------
`#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN` | SPI Slave select pin in order to inform that the FLASH is currently being addressed | _none_
`#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR` | Clock divisor used to divide the peripheral clock to derive the SPI frequency | `8`
`#define EXTERNAL_FLASH_PAGE_SIZE` | The Page size of the FLASH in bytes, as specified in the datasheet | `256`
`#define EXTERNAL_FLASH_SECTOR_SIZE` | The sector size of the FLASH in bytes, as specified in the datasheet | `(4 * 1024)`
`#define EXTERNAL_FLASH_BLOCK_SIZE` | The block size of the FLASH in bytes, as specified in the datasheet | `(64 * 1024)`
`#define EXTERNAL_FLASH_SIZE` | The total size of the FLASH in bytes, as specified in the datasheet | `(512 * 1024)`
`#define EXTERNAL_FLASH_ADDRESS_SIZE` | The Flash address size in bytes, as specified in datasheet | `3`
!> All the above default configurations are based on MX25L4006E NOR Flash.

View File

@@ -25,6 +25,11 @@ Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer) / `:dfu` target in QMK (recommended command line)
```
dfu-programmer <mcu> erase --force
dfu-programmer <mcu> flash --force <filename>
dfu-programmer <mcu> reset
```
Flashing sequence:
@@ -73,8 +78,11 @@ BOOTLOADER = caterina
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [avrdude](https://www.nongnu.org/avrdude/) with the `avr109` programmer / `:avrdude` target in QMK (recommended command line)
* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
* [avrdude](https://www.nongnu.org/avrdude/) with the `avr109` programmer / `:avrdude` target in QMK (recommended command line)
```
avrdude -p <mcu> -c avr109 -P <serialport> -U flash:w:<filename>:i
```
Flashing sequence:
@@ -106,8 +114,11 @@ BOOTLOADER = halfkay
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [Teensy Loader Command Line](https://www.pjrc.com/teensy/loader_cli.html) / `:teensy` target in QMK (recommended command line)
* [Teensy Loader](https://www.pjrc.com/teensy/loader.html)
* [Teensy Loader Command Line](https://www.pjrc.com/teensy/loader_cli.html) / `:teensy` target in QMK (recommended command line)
```
teensy_loader_cli -v -mmcu=<mcu> <filename>
```
Flashing sequence:
@@ -133,8 +144,11 @@ BOOTLOADER = usbasploader
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [avrdude](https://www.nongnu.org/avrdude/) with the `usbasp` programmer / `:usbasp` target in QMK (recommended command line)
* [AVRDUDESS](https://github.com/zkemble/AVRDUDESS)
* [avrdude](https://www.nongnu.org/avrdude/) with the `usbasp` programmer / `:usbasp` target in QMK (recommended command line)
```
avrdude -p <mcu> -c usbasp -U flash:w:<filename>:i
```
Flashing sequence:
@@ -159,8 +173,11 @@ BOOTLOADER = bootloadhid
Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [bootloadHID CLI](https://www.obdev.at/products/vusb/bootloadhid.html) / `:bootloadhid` target in QMK (recommended command line)
* [HIDBootFlash](http://vusb.wikidot.com/project:hidbootflash)
* [bootloadHID CLI](https://www.obdev.at/products/vusb/bootloadhid.html) / `:bootloadhid` target in QMK (recommended command line)
```
bootloadHID -r <filename>
```
Flashing sequence:
@@ -232,6 +249,9 @@ Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-util](https://dfu-util.sourceforge.net/) / `:dfu-util` target in QMK (recommended command line)
```
dfu-util -a 0 -d 0483:DF11 -s 0x8000000:leave -D <filename>
```
Flashing sequence:
@@ -265,6 +285,9 @@ Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-util](https://dfu-util.sourceforge.net/) / `:dfu-util` target in QMK (recommended command line)
```
dfu-util -a 2 -d 1EAF:0003 -D <filename>
```
Flashing sequence:
@@ -286,6 +309,9 @@ Compatible flashers:
* [QMK Toolbox](https://github.com/qmk/qmk_toolbox/releases) (recommended GUI)
* [dfu-util](https://dfu-util.sourceforge.net/) / `:dfu-util` target in QMK (recommended command line)
```
dfu-util -a 0 -d 1C11:B007 -D <filename>
```
Flashing sequence:

View File

@@ -1,182 +0,0 @@
# Keyboards with AVR Processors
This page describes the support for for AVR processors in QMK. AVR processors include the atmega32u4, atmega32u2, at90usb1286, and other processors from Atmel Corporation. AVR processors are 8-bit MCUs that are designed to be easy to work with. The most common AVR processors in keyboards have on-board USB and plenty of GPIO for supporting large keyboard matrices. They are the most popular MCU for use in keyboards today.
If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_guidelines.md) to get a sense of how keyboards fit into QMK.
## 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 `qmk new-keyboard`:
```
$ qmk new-keyboard
Ψ Generating a new QMK keyboard directory
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...
Ψ 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.
## `readme.md`
This is where you'll describe your keyboard. Please follow the [Keyboard Readme Template](documentation_templates.md#keyboard-readmemd-template) when writing your `readme.md`. You're encouraged to place an image at the top of your `readme.md`, please use an external service such as [Imgur](https://imgur.com) to host the images.
## `<keyboard>.c`
This is where all the custom logic for your keyboard goes. Many keyboards do not need to put anything at all in here. You can learn more about writing custom logic in [Custom Quantum Functions](custom_quantum_functions.md).
## `<keyboard>.h`
This is the file you define your [Layout Macro(s)](feature_layouts.md) in. At minimum you should have a `#define LAYOUT` for your keyboard that looks something like this:
```c
#define LAYOUT( \
k00, k01, k02, \
k10, k11 \
) { \
{ k00, k01, k02 }, \
{ k10, KC_NO, k11 }, \
}
```
The first half of the `LAYOUT` pre-processor macro defines the physical arrangement of keys. The second half of the macro defines the matrix the switches are connected to. This allows you to have a physical arrangement of keys that differs from the wiring matrix.
Each of the `k__` variables needs to be unique, and typically they follow the format `k<row><col>`.
The physical matrix (the second half) must have a number of rows equaling `MATRIX_ROWS`, and each row must have exactly `MATRIX_COLS` elements in it. If you do not have this many physical keys you can use `KC_NO` to fill in the blank spots.
## `config.h`
The `config.h` file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list there. For a complete overview of available options see the [Config Options](config_options.md) page.
### Hardware Configuration
At the top of the `config.h` you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the `VENDOR_ID` as `0xFEED`. For the `PRODUCT_ID` you should pick a number that is not yet in use.
Do change the `MANUFACTURER` and `PRODUCT` lines to accurately reflect your keyboard.
```c
#define VENDOR_ID 0xFEED
#define PRODUCT_ID 0x6060
#define DEVICE_VER 0x0001
#define MANUFACTURER You
#define PRODUCT my_awesome_keyboard
```
?> Windows and macOS will display the `MANUFACTURER` and `PRODUCT` in the list of USB devices. `lsusb` on Linux instead prefers the values in the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html). By default, it will only use `MANUFACTURER` and `PRODUCT` if the list does not contain that `VENDOR_ID` / `PRODUCT_ID`. `sudo lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in.
### Keyboard Matrix Configuration
The next section of the `config.h` file deals with your keyboard's matrix. The first thing you should set is the matrix's size. This is usually, but not always, the same number of rows and columns as the physical key arrangement.
```c
#define MATRIX_ROWS 2
#define MATRIX_COLS 3
```
Once you've defined the size of your matrix you need to define which pins on your MCU are connected to rows and columns. To do so simply specify the names of those pins:
```c
#define MATRIX_ROW_PINS { D0, D5 }
#define MATRIX_COL_PINS { F1, F0, B0 }
#define UNUSED_PINS
```
The number of `MATRIX_ROW_PINS` entries must be the same as the number you assigned to `MATRIX_ROWS`, and likewise for `MATRIX_COL_PINS` and `MATRIX_COLS`. You do not have to specify `UNUSED_PINS`, but you can if you want to document what pins are open.
Finally, you can specify the direction your diodes point. This can be `COL2ROW` or `ROW2COL`.
```c
#define DIODE_DIRECTION COL2ROW
```
#### Direct Pin Matrix
To configure a keyboard where each switch is connected to a separate pin and ground instead of sharing row and column pins, use `DIRECT_PINS`. The mapping defines the pins of each switch in rows and columns, from left to right. Must conform to the sizes within `MATRIX_ROWS` and `MATRIX_COLS`, use `NO_PIN` to fill in blank spaces. Overrides the behaviour of `DIODE_DIRECTION`, `MATRIX_ROW_PINS` and `MATRIX_COL_PINS`.
```c
// #define MATRIX_ROW_PINS { D0, D5 }
// #define MATRIX_COL_PINS { F1, F0, B0 }
#define DIRECT_PINS { \
{ F1, E6, B0, B2, B3 }, \
{ F5, F0, B1, B7, D2 }, \
{ F6, F7, C7, D5, D3 }, \
{ B5, C6, B6, NO_PIN, NO_PIN } \
}
#define UNUSED_PINS
/* COL2ROW, ROW2COL */
//#define DIODE_DIRECTION
```
### Backlight Configuration
QMK supports backlighting on most GPIO pins. A select few of these can be driven by the MCU in hardware. For more details see the [Backlight Documentation](feature_backlight.md).
```c
#define BACKLIGHT_PIN B7
#define BACKLIGHT_LEVELS 3
#define BACKLIGHT_BREATHING
#define BREATHING_PERIOD 6
```
### Other Configuration Options
There are a lot of features that can be configured or tuned in `config.h`. You should see the [Config Options](config_options.md) page for more details.
## `rules.mk`
You use the `rules.mk` file to tell QMK what files to build and what features to enable. If you are building around an atmega32u4 you can largely leave these defaults alone. If you are using another MCU you may have to tweak some parameters.
### MCU Options
These options tell the build system what CPU to build for. Be very careful if you change any of these settings, you can render your keyboard inoperable.
```make
MCU = atmega32u4
F_CPU = 16000000
ARCH = AVR8
F_USB = $(F_CPU)
OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
```
### Bootloaders
The bootloader is a special section of your MCU that allows you to upgrade the code stored on the MCU. Think of it like a Rescue Partition for your keyboard.
#### Teensy Bootloader Example
```make
BOOTLOADER = halfkay
```
#### Atmel DFU Loader Example
```make
BOOTLOADER = atmel-dfu
```
#### Pro Micro Bootloader Example
```make
BOOTLOADER = caterina
```
### Build Options
There are a number of features that can be turned on or off in `rules.mk`. See the [Config Options](config_options.md#feature-options) page for a detailed list and description.

View File

@@ -87,6 +87,7 @@ The `config.h` files can also be placed in sub-folders, and the order in which t
* `keyboards/top_folder/sub_1/sub_2/config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/config.h`
* [`.build/objs_<keyboard>/src/info_config.h`](data_driven_config.md#add-code-to-generate-it) see [Data Driven Configuration](data_driven_config.md)
* `users/a_user_folder/config.h`
* `keyboards/top_folder/keymaps/a_keymap/config.h`
* `keyboards/top_folder/sub_1/sub_2/sub_3/sub_4/post_config.h`

View File

@@ -39,7 +39,6 @@
'/glossary': '/reference_glossary',
'/key_lock': '/feature_key_lock',
'/make_instructions': '/getting_started_make_guide',
'/porting_your_keyboard_to_qmk': '/hardware_avr',
'/space_cadet_shift': '/feature_space_cadet_shift',
'/getting_started_getting_help': '/support',
'/tap_dance': '/feature_tap_dance',

View File

@@ -6,17 +6,19 @@ QMK has a GPIO control abstraction layer which is microcontroller agnostic. This
The following functions provide basic control of GPIOs and are found in `platforms/<platform>/gpio.h`.
|Function |Description | Old AVR Examples | Old ChibiOS/ARM Examples |
|------------------------|--------------------------------------------------|-------------------------------------------------|-------------------------------------------------|
| `setPinInput(pin)` | Set pin as input with high impedance (High-Z) | `DDRB &= ~(1<<2)` | `palSetLineMode(pin, PAL_MODE_INPUT)` |
| `setPinInputHigh(pin)` | Set pin as input with builtin pull-up resistor | `DDRB &= ~(1<<2); PORTB \|= (1<<2)` | `palSetLineMode(pin, PAL_MODE_INPUT_PULLUP)` |
| `setPinInputLow(pin)` | Set pin as input with builtin pull-down resistor | N/A (Not supported on AVR) | `palSetLineMode(pin, PAL_MODE_INPUT_PULLDOWN)` |
| `setPinOutput(pin)` | Set pin as output | `DDRB \|= (1<<2)` | `palSetLineMode(pin, PAL_MODE_OUTPUT_PUSHPULL)` |
| `writePinHigh(pin)` | Set pin level as high, assuming it is an output | `PORTB \|= (1<<2)` | `palSetLine(pin)` |
| `writePinLow(pin)` | Set pin level as low, assuming it is an output | `PORTB &= ~(1<<2)` | `palClearLine(pin)` |
| `writePin(pin, level)` | Set pin level, assuming it is an output | `(level) ? PORTB \|= (1<<2) : PORTB &= ~(1<<2)` | `(level) ? palSetLine(pin) : palClearLine(pin)` |
| `readPin(pin)` | Returns the level of the pin | `_SFR_IO8(pin >> 4) & _BV(pin & 0xF)` | `palReadLine(pin)` |
| `togglePin(pin)` | Invert pin level, assuming it is an output | `PORTB ^= (1<<2)` | `palToggleLine(pin)` |
| Function | Description | Old AVR Examples | Old ChibiOS/ARM Examples |
|------------------------------|-----------------------------------------------------|-------------------------------------------------|--------------------------------------------------|
| `setPinInput(pin)` | Set pin as input with high impedance (High-Z) | `DDRB &= ~(1<<2)` | `palSetLineMode(pin, PAL_MODE_INPUT)` |
| `setPinInputHigh(pin)` | Set pin as input with builtin pull-up resistor | `DDRB &= ~(1<<2); PORTB \|= (1<<2)` | `palSetLineMode(pin, PAL_MODE_INPUT_PULLUP)` |
| `setPinInputLow(pin)` | Set pin as input with builtin pull-down resistor | N/A (Not supported on AVR) | `palSetLineMode(pin, PAL_MODE_INPUT_PULLDOWN)` |
| `setPinOutput(pin)` | Set pin as output (alias of `setPinOutputPushPull`) | `DDRB \|= (1<<2)` | `palSetLineMode(pin, PAL_MODE_OUTPUT_PUSHPULL)` |
| `setPinOutputPushPull(pin)` | Set pin as output, push/pull mode | `DDRB \|= (1<<2)` | `palSetLineMode(pin, PAL_MODE_OUTPUT_PUSHPULL)` |
| `setPinOutputOpenDrain(pin)` | Set pin as output, open-drain mode | N/A (Not implemented on AVR) | `palSetLineMode(pin, PAL_MODE_OUTPUT_OPENDRAIN)` |
| `writePinHigh(pin)` | Set pin level as high, assuming it is an output | `PORTB \|= (1<<2)` | `palSetLine(pin)` |
| `writePinLow(pin)` | Set pin level as low, assuming it is an output | `PORTB &= ~(1<<2)` | `palClearLine(pin)` |
| `writePin(pin, level)` | Set pin level, assuming it is an output | `(level) ? PORTB \|= (1<<2) : PORTB &= ~(1<<2)` | `(level) ? palSetLine(pin) : palClearLine(pin)` |
| `readPin(pin)` | Returns the level of the pin | `_SFR_IO8(pin >> 4) & _BV(pin & 0xF)` | `palReadLine(pin)` |
| `togglePin(pin)` | Invert pin level, assuming it is an output | `PORTB ^= (1<<2)` | `palToggleLine(pin)` |
## Advanced Settings :id=advanced-settings

View File

@@ -4,7 +4,7 @@ In order to flash a microcontroller over USB, it needs something called a bootlo
However, it can sometimes happen that the bootloader becomes corrupted and needs reflashing, or you may want to change the bootloader to another one. It's not possible to do this with the existing bootloader, because, of course, it is already running, and cannot overwrite itself. Instead, you will need to ISP flash the microcontroller.
There are several different kinds of bootloaders available for AVR microcontrollers. Most STM32 ARM-based microcontrollers already have a USB-capable bootloader in ROM, so generally do not need to be ISP flashed.
There are several different kinds of bootloaders available for AVR microcontrollers. Most STM32 ARM-based microcontrollers already have a USB-capable bootloader in ROM, so generally do not need to be ISP flashed. The one current exception is the [STM32F103](#flashing-stm32duino-bootloader).
## Hardware
@@ -260,3 +260,93 @@ For mass production purposes, it is possible to join the bootloader and QMK firm
4. Save it as a new file, for example `<keyboard>_<keymap>_production.hex`.
You can then ISP flash this combined firmware instead, which allows you to skip the extra step of flashing the QMK firmware over USB.
## Flashing STM32Duino Bootloader
As mentioned above, *most* supported STM32 devices already possess a USB DFU bootloader which cannot be overwritten, however the ROM bootloader in the STM32F103 used on the Bluepill is not USB capable. In this case an ST-Link V2 dongle is required to upload the STM32Duino bootloader to the device. These can be readily purchased for relatively cheap on eBay and other places.
This bootloader is a descendant of the Maple bootloader by Leaflabs, and is compatible with dfu-util.
### Software
To communicate with the ST-Link, you must install the following packages:
* **macOS:** `brew install stlink openocd`
* **Windows (MSYS2):** `pacman -S mingw-w64-x86_64-stlink mingw-w64-x86_64-openocd`
* **Linux:** will vary by distribution, but will likely be `stlink` and `openocd` through your particular package manager
Additionally, you may need to update the ST-Link's firmware with the [`STSW-LINK007`](https://www.st.com/en/development-tools/stsw-link007.html) application. Note you will be asked to provide your name and email address if you do not have an ST.com account (this does not create one).
Finally, the bootloader binary itself can be downloaded from [here](https://github.com/rogerclarkmelbourne/STM32duino-bootloader/blob/master/bootloader_only_binaries/generic_boot20_pc13.bin).
### Wiring
Connect the four-pin header on the end of the Bluepill to the matching pins on the ST-Link (the pinout will usually be printed on the side):
|ST-Link |Bluepill|
|-------------|--------|
|`GND` (6) |`GND` |
|`SWCLK` (2) |`DCLK` |
|`SWDIO` (4) |`DIO` |
|`3.3V` (8) |`3.3` |
### Flashing
Firstly, make sure both jumpers on the Bluepill are set to 0.
Check that the ST-Link can talk to the Bluepill by running `st-info --probe`:
```
Found 1 stlink programmers
version: V2J37S7
serial: 2C1219002B135937334D4E00
flash: 65536 (pagesize: 1024)
sram: 20480
chipid: 0x0410
descr: F1xx Medium-density
```
If the reported `chipid` is `0x0410`, everything is working. If it is `0x0000`, check your wiring, and try swapping the `SWDIO` and `SWCLK` pins, as some ST-Link dongles may have incorrect pinouts.
Next, run the following command:
```
st-flash --reset --format binary write <path-to-bootloader> 0x08000000
```
where `<path-to-bootloader>` is the path to the bootloader `.bin` file above. You can run this command from the directory you downloaded it to, so that you can simply pass in the filename.
If all goes well, you should get output similar to the following:
```
st-flash 1.7.0
2022-03-08T12:16:30 INFO common.c: F1xx Medium-density: 20 KiB SRAM, 64 KiB flash in at least 1 KiB pages.
file generic_boot20_pc13.bin md5 checksum: 333c30605e739ce9bedee5999fdaf81b, stlink checksum: 0x0008e534
2022-03-08T12:16:30 INFO common.c: Attempting to write 7172 (0x1c04) bytes to stm32 address: 134217728 (0x8000000)
2022-03-08T12:16:30 INFO common.c: Flash page at addr: 0x08000000 erased
2022-03-08T12:16:30 INFO common.c: Flash page at addr: 0x08000400 erased
2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08000800 erased
2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08000c00 erased
2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001000 erased
2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001400 erased
2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001800 erased
2022-03-08T12:16:31 INFO common.c: Flash page at addr: 0x08001c00 erased
2022-03-08T12:16:31 INFO common.c: Finished erasing 8 pages of 1024 (0x400) bytes
2022-03-08T12:16:31 INFO common.c: Starting Flash write for VL/F0/F3/F1_XL
2022-03-08T12:16:31 INFO flash_loader.c: Successfully loaded flash loader in sram
2022-03-08T12:16:31 INFO flash_loader.c: Clear DFSR
8/ 8 pages written
2022-03-08T12:16:31 INFO common.c: Starting verification of write complete
2022-03-08T12:16:31 INFO common.c: Flash written and verified! jolly good!
2022-03-08T12:16:31 WARN common.c: NRST is not connected
```
Otherwise, if you receive an `Unknown memory region` error, run the following command to unlock the STM32F103:
```
openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "init; reset halt; stm32f1x unlock 0; reset halt; exit"
```
Then re-plug the ST-Link and try again.
After all of this, unplug the Bluepill from the ST-Link and connect it to USB. It should now be ready to flash using dfu-util, the QMK CLI or Toolbox.

View File

@@ -59,7 +59,7 @@ $ qmk compile -km 66_iso
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk compile
Ψ Compiling keymap with make make gh60/satan:colemak
Ψ Compiling keymap with make gh60/satan:colemak
...
```
@@ -275,14 +275,14 @@ $ qmk kle2json -f kle.txt -f
Ψ Wrote out to info.json
```
## `qmk format-py`
## `qmk format-python`
このコマンドは `qmk_firmware` 内の python コードを整形します。
**使用法**:
```
qmk format-py
qmk format-python
```
## `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``format-py` サブコマンドを使うことができます。
nose2、flake8 および yapf を使ってコードをテスト、リントおよびフォーマットします。これらのテストを実行するために `pytest``format-python` サブコマンドを使うことができます。
### テストとリント
@@ -200,7 +200,7 @@ nose2、flake8 および yapf を使ってコードをテスト、リントお
### フォーマット
qmk format-py
qmk format-python
## フォーマットの詳細

View File

@@ -16,7 +16,7 @@ POINTING_DEVICE_ENABLE = yes
マウスレポートを操作するために、以下の関数を使うことができます:
* `pointing_device_get_report()` - ホストコンピュータに送信された情報を表す現在の report_mouse_t を返します。
* `pointing_device_set_report(report_mouse_t newMouseReport)` - ホストコンピュータに送信される report_mouse_t を上書き保存します。
* `pointing_device_set_report(report_mouse_t mouse_report)` - ホストコンピュータに送信される report_mouse_t を上書き保存します。
report_mouse_t (ここでは "mouseReport") が以下のプロパティを持つことを覚えておいてください:
@@ -34,7 +34,7 @@ report_mouse_t (ここでは "mouseReport") が以下のプロパティを持つ
さらに、デフォルトでは、`pointing_device_send()` はレポートが実際に変更された場合のみレポートを送信します。これにより、マウスレポートが継続的に送信されてホストシステムが起動されたままになることを防ぎます。この動作は、独自の `pointing_device_send()` 関数を作成することで変更できます。
また、`has_mouse_report_changed(new, old)` 関数を使って、レポートが変更されたかどうかを確認できます。(訳注:独自の `pointing_device_send()` 関数を作成する場合でも、その中で `has_mouse_report_changed(new, old)` 関数でチェックして、デフォルトの `pointing_device_send()` と類似の無駄なレポートの抑制をして、ホストシステムがスリープ状態に入れる余地を残すようにしておくのが良いでしょう。)
また、`has_mouse_report_changed(new_report, old_report)` 関数を使って、レポートが変更されたかどうかを確認できます。(訳注:独自の `pointing_device_send()` 関数を作成する場合でも、その中で `has_mouse_report_changed(new_report, old_report)` 関数でチェックして、デフォルトの `pointing_device_send()` と類似の無駄なレポートの抑制をして、ホストシステムがスリープ状態に入れる余地を残すようにしておくのが良いでしょう。)
以下の例では、カスタムキーを使ってマウスをクリックし垂直および水平方向に127単位スクロールし、リリースされた時にそれを全て元に戻します - なぜならこれは完全に便利な機能だからです。いいですか、以下はひとつの例です:

View File

@@ -219,11 +219,11 @@ See also: [Basic Keycodes](keycodes_basic.md)
See also: [Quantum Keycodes](quantum_keycodes.md#qmk-keycodes)
|Key |Aliases |Description |
|--------------|---------|-------------------------------------------------------|
|`RESET` | |Put the keyboard into bootloader mode for flashing |
|`DEBUG` | |Toggle debug mode |
|`EEPROM_RESET`|`EEP_RST`|Reinitializes the keyboard's EEPROM (persistent memory)|
|Key |Aliases |Description |
|-----------------|---------|-------------------------------------------------------|
|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory)|
## Audio Keys :id=audio-keys
@@ -283,9 +283,9 @@ See also: [Dynamic Macros](feature_dynamic_macros.md)
See also: [Grave Escape](feature_grave_esc.md)
|Key |Aliases |Description |
|-----------|---------|------------------------------------------------------------------|
|`GRAVE_ESC`|`KC_GESC`|Escape when pressed, <code>&#96;</code> when Shift or GUI are held|
|Key |Aliases |Description |
|-----------------|---------|------------------------------------------------------------------|
|`QK_GRAVE_ESCAPE`|`QK_GESC`|Escape when pressed, <code>&#96;</code> when Shift or GUI are held|
## Key Lock :id=key-lock
@@ -326,6 +326,7 @@ See also: [Magic Keycodes](keycodes_magic.md)
|----------------------------------|---------|--------------------------------------------------------------------------|
|`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_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap |
|`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 |

View File

@@ -6,6 +6,7 @@
|----------------------------------|---------|--------------------------------------------------------------------------|
|`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_TOGGLE_CONTROL_CAPSLOCK` |`CL_TOGG`|Toggle Caps Lock and Left Control swap |
|`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 |

View File

@@ -8,7 +8,7 @@ Unfortunately, these keycodes cannot be used in Mod-Taps or Layer-Taps, since an
Additionally, you may run into issues when using Remote Desktop Connection on Windows. Because these codes send shift very fast, Remote Desktop may miss the codes.
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab. In the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
## Keycodes

View File

@@ -132,11 +132,11 @@ The main part of this file is the `keymaps[]` definition. This is where you list
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
After this you'll find a list of LAYOUT() macros. A LAYOUT() is simply a list of keys to define a single layer. Typically you'll have one or more "base layers" (such as QWERTY, Dvorak, or Colemak) and then you'll layer on top of that one or more "function" layers. Due to the way layers are processed you can't overlay a "lower" layer on top of a "higher" layer.
After this you'll find the layer definitions. Typically you'll have one or more "base layers" (such as QWERTY, Dvorak, or Colemak) and then you'll layer on top of that one or more "function" layers. Due to the way layers are processed you can't overlay a "lower" layer on top of a "higher" layer.
`keymaps[][MATRIX_ROWS][MATRIX_COLS]` in QMK holds the 16 bit action code (sometimes referred as the quantum keycode) in it. For the keycode representing typical keys, its high byte is 0 and its low byte is the USB HID usage ID for keyboard.
> TMK from which QMK was forked uses `const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]` instead and holds the 8 bit keycode. Some keycode values are reserved to induce execution of certain action codes via the `fn_actions[]` array.
> TMK from which QMK was forked uses `const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS]` instead and holds the 8 bit keycode.
#### Base Layer
@@ -153,7 +153,9 @@ Here is an example of the Clueboard's base layer:
Some interesting things to note about this:
* From a C source point of view it's only a single array, but we have embedded whitespace to more easily visualize where each key is on the physical device.
* The layer is defined using the LAYOUT macro, traditionally defined in the keyboard's `.h` file.
* The LAYOUT macro takes a single list of keycodes, but we have written it in the C source using embedded whitespace and newlines to visualize where each key is on the physical device.
* The LAYOUT macro hides and handles the mapping to the hardware's key scan matrix.
* Plain keyboard scancodes are prefixed with KC_, while "special" keys are not.
* The upper left key activates custom function 0 (`F(0)`)
* The "Fn" key is defined with `MO(_FL)`, which moves to the `_FL` layer while that key is being held down.

View File

@@ -58,7 +58,7 @@ Currently, the `kc` argument of `MT()` is limited to the [Basic Keycode set](key
Expanding this would be complicated, at best. Moving to a 32-bit keycode would solve a lot of this, but would double the amount of space that the keymap matrix uses. And it could potentially cause issues, too. If you need to apply modifiers to your tapped keycode, [Tap Dance](feature_tap_dance.md#example-5-using-tap-dance-for-advanced-mod-tap-and-layer-tap-keys) can be used to accomplish this.
You may also run into issues when using Remote Desktop Connection on Windows. Because these keycodes send key events faster than a human, Remote Desktop could miss them.
To fix this, open Remote Desktop Connection, click on "Show Options", open the the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
To fix this, open Remote Desktop Connection, click on "Show Options", open the "Local Resources" tab, and in the keyboard section, change the drop down to "On this Computer". This will fix the issue, and allow the characters to work correctly.
It can also be mitigated by increasing [`TAP_CODE_DELAY`](config_options.md#behaviors-that-can-be-configured).
## Intercepting Mod-Taps

View File

@@ -1,6 +1,6 @@
# Building Your First Firmware
Now that you have setup your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware.
Now that you have set up your build environment you are ready to start building custom firmware. For this section of the guide we will bounce between 3 programs- your file manager, your text editor, and your terminal window. Keep all 3 open until you are done and happy with your keyboard firmware.
## Configure Your Build Environment Defaults (Optional)

View File

@@ -145,7 +145,7 @@ In most situations you will want to answer `y` to all of the prompts.
?>**Note on Debian, Ubuntu and their derivatives**:
It's possible, that you will get an error saying something like: `bash: qmk: command not found`.
This is due to a [bug](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=839155) Debian introduced with their Bash 4.4 release, which removed `$HOME/.local/bin` from the PATH. This bug was later fixed on Debian and Ubuntu.
Sadly, Ubuntu reitroduced this bug and is [yet to fix it](https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562).
Sadly, Ubuntu reintroduced this bug and is [yet to fix it](https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1588562).
Luckily, the fix is easy. Run this as your user: `echo 'PATH="$HOME/.local/bin:$PATH"' >> $HOME/.bashrc && source $HOME/.bashrc`
### ** FreeBSD **

View File

@@ -74,7 +74,7 @@ Once both plugins are installed, restart Eclipse as prompted.
## Build Your Keyboard
We will now change the default make target of the the project from `all` to the
We will now change the default make target of the project from `all` to the
specific keyboard and keymap combination we are working on,
e.g. `kinesis/kint36:stapelberg`. This way, project-wide actions like cleaning
and building the project will complete quickly, instead of taking a long time or

View File

@@ -15,7 +15,7 @@ The purpose of this page is to document how to set up VS Code for developing QMK
This guide covers how to configure everything needed on Windows and Ubuntu 18.04
# Set up VS Code
Before starting, you will want to make sure that you have all of the build tools set up, and QMK Firmware cloned. Head to the the [Newbs Getting Started Guide](newbs_getting_started.md) to get things set up, if you haven't already.
Before starting, you will want to make sure that you have all of the build tools set up, and QMK Firmware cloned. Head to the [Newbs Getting Started Guide](newbs_getting_started.md) to get things set up, if you haven't already.
## Windows

View File

@@ -17,7 +17,6 @@ As such, if you wish to override this API consider limiting use to writing to lo
| `config.h` override | Description | Default |
|-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|
| `#define EARLY_INIT_PERFORM_BOOTLOADER_JUMP` | Whether or not bootloader is to be executed during the early initialisation code of QMK. | `FALSE` |
| `#define STM32_BOOTLOADER_ADDRESS` | Relevant for single-bank STM32 MCUs, signifies the memory address to jump to bootloader. Consult [AN2606](https://www.st.com/content/st_com/en/search.html#q=an2606-t=resources-page=1) for the _System Memory_ address for your MCU. This value should be of the format `0x11111111`. | `<none>` |
| `#define STM32_BOOTLOADER_DUAL_BANK` | Relevant for dual-bank STM32 MCUs, signifies that a GPIO is to be toggled in order to enter bootloader mode. | `FALSE` |
| `#define STM32_BOOTLOADER_DUAL_BANK_GPIO` | Relevant for dual-bank STM32 MCUs, the pin to toggle when attempting to enter bootloader mode, e.g. `B8` | `<none>` |
| `#define STM32_BOOTLOADER_DUAL_BANK_POLARITY` | Relevant for dual-bank STM32 MCUs, the value to set the pin to in order to trigger charging of the RC circuit. e.g. `0` or `1`. | `0` |

View File

@@ -0,0 +1,163 @@
# Adding Your Keyboard to QMK
This page describes the support for [Compatible Microcontrollers](compatible_microcontrollers.md) in QMK.
If you have not yet you should read the [Keyboard Guidelines](hardware_keyboard_guidelines.md) to get a sense of how keyboards fit into QMK.
QMK has a number of features to simplify working with keyboards. For most, you don't have to write a single line of code. To get started, run `qmk new-keyboard`:
```
$ qmk new-keyboard
Ψ Generating a new QMK keyboard directory
Name Your Keyboard Project
For more infomation, see:
https://docs.qmk.fm/#/hardware_keyboard_guidelines?id=naming-your-keyboardproject
keyboard Name? mycoolkeeb
Attribution
Used for maintainer, copyright, etc
Your GitHub Username? [jsmith]
More Attribution
Used for maintainer, copyright, etc
Your Real Name? [John Smith]
Pick Base Layout
As a starting point, one of the common layouts can be used to bootstrap the process
Default Layout?
1. 60_ansi
...
50. tkl_iso
51. none of the above
Please enter your choice: [51]
What Powers Your Project
For more infomation, see:
https://docs.qmk.fm/#/compatible_microcontrollers
MCU?
1. atmega32u4
...
22. STM32F303
Please enter your choice: [12]
Ψ Created a new keyboard called mycoolkeeb.
Ψ To start working on things, `cd` into keyboards/mycoolkeeb,
Ψ or open the directory in your preferred text editor.
Ψ And build with qmk compile -kb mycoolkeeb -km default.
```
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.
## `readme.md`
This is where you'll describe your keyboard. Please follow the [Keyboard Readme Template](documentation_templates.md#keyboard-readmemd-template) when writing your `readme.md`. You're encouraged to place an image at the top of your `readme.md`, please use an external service such as [Imgur](https://imgur.com) to host the images.
## `info.json`
The `info.json` file is where you configure the hardware and feature set for your keyboard. There are a lot of options that can be placed in that file, too many to list here. For a complete overview of available options see the [Data Driven Configuration Options](reference_info_json.md) page.
### Hardware Configuration
At the top of the `info.json` you'll find USB related settings. These control how your keyboard appears to the Operating System. If you don't have a good reason to change you should leave the `usb.vid` as `0xFEED`. For the `usb.pid` you should pick a number that is not yet in use.
Do change the `manufacturer` and `keyboard_name` lines to accurately reflect your keyboard.
```json
"keyboard_name": "my_awesome_keyboard",
"maintainer": "You",
"usb": {
"vid": "0xFEED",
"pid": "0x0000",
"device_version": "1.0.0"
},
```
?> Windows and macOS will display the `manufacturer` and `keyboard_name` in the list of USB devices. `lsusb` on Linux instead prefers the values in the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html). By default, it will only use `manufacturer` and `keyboard_name` if the list does not contain that `usb.vid` / `usb.pid`. `sudo lsusb -v` will show the values reported by the device, and they are also present in kernel logs after plugging it in.
### Matrix Configuration
The next section of the `info` file deals with your keyboard's matrix. The first thing you should define is which pins on your MCU are connected to rows and columns. To do so simply specify the names of those pins:
```json
"matrix_pins": {
"cols": ["C1", "C2", "C3", "C4"],
"rows": ["D1", "D2", "D3", "D4"]
},
```
The size of the `matrix_pins.cols` and `matrix_pins.rows` arrays infer the size of the matrix (previously `MATRIX_ROWS` and `MATRIX_COLS`).
Finally, you can specify the direction your diodes point. This can be `COL2ROW` or `ROW2COL`.
```json
"diode_direction": "ROW2COL",
```
#### Direct Pin Matrix
To configure a keyboard where each switch is connected to a separate pin and ground instead of sharing row and column pins, use `matrix_pins.direct`. The mapping defines the pins of each switch in rows and columns, from left to right. The size of the `matrix_pins.direct` array infers the size of the matrix. Use `NO_PIN` to fill in blank spaces. Overrides the behaviour of `diode_direction`, `matrix_pins.cols` and `matrix_pins.rows`.
```json
"matrix_pins": {
"direct": [
["F1", "E6", "B0", "B2", "B3" ],
["F5", "F0", "B1", "B7", "D2" ],
["F6", "F7", "C7", "D5", "D3" ],
["B5", "C6", "B6", "NO_PIN", "NO_PIN"]
]
},
```
### Layout macros
Next is configuring Layout Macro(s). These define the physical arrangement of keys, and its position within the matrix that a switch are connected to. This allows you to have a physical arrangement of keys that differs from the wiring matrix.
```json
"layouts": {
"LAYOUT_ortho_4x4": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [1, 0], "x": 0, "y": 1 },
{ "matrix": [1, 1], "x": 1, "y": 1 },
{ "matrix": [1, 2], "x": 2, "y": 1 },
{ "matrix": [1, 3], "x": 3, "y": 1 },
{ "matrix": [2, 0], "x": 0, "y": 2 },
{ "matrix": [2, 1], "x": 1, "y": 2 },
{ "matrix": [2, 2], "x": 2, "y": 2 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [3, 0], "x": 0, "y": 3 },
{ "matrix": [3, 1], "x": 1, "y": 3 },
{ "matrix": [3, 2], "x": 2, "y": 3 },
{ "matrix": [3, 3], "x": 3, "y": 3 }
]
}
}
```
In the above example,
* `LAYOUT_ortho_4x4` defines the name of the layout macro
* It must conform to [hardware_keyboard_guidelines.md#ltkeyboard_namehgt]
* `"matrix": [0, 0]` defines the electrical position
## Additional Configuration
There are a lot of features that can be turned on or off, configured or tuned. Some of these have yet to be migrated over to [Data Driven Configuration](data_driven_config.md). The following sections cover the process for when an `info.json` option is unavailable.
### Configuration Options
For available options for `config.h`, you should see the [Config Options](config_options.md) page for more details.
### Build Options
For available options for `rules.mk`, see the [Config Options](config_options.md#feature-options) page for a detailed list and description.

View File

@@ -8,7 +8,7 @@ If there are any inconsistencies with these recommendations, you're best off [cr
- PR should be submitted using a non-`master` branch on the source repository
- this does not mean you target a different branch for your PR, rather that you're not working out of your own master branch
- if submitter _does_ use their own `master` branch, they'll be given a link to the ["how to git"](https://docs.qmk.fm/#/newbs_git_using_your_master_branch) page after merging -- (end of this document will contain the contents of the message)
- if submitter _does_ use their own `master` branch, they'll be given a link to the ["how to git"](newbs_git_using_your_master_branch.md) page after merging -- (end of this document will contain the contents of the message)
- newly-added directories and filenames must be lowercase
- this rule may be relaxed if upstream sources originally had uppercase characters (e.g. LUFA, ChibiOS, or imported files from other repositories etc.)
- if there is valid justification (i.e. consistency with existing core files etc.) this can be relaxed
@@ -50,7 +50,7 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- valid maintainer
- displays correctly in Configurator (press Ctrl+Shift+I to preview local file, turn on fast input to verify ordering)
- `readme.md`
- standard template should be present -- [link to template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/avr/readme.md)
- standard template should be present -- [link to template](https://github.com/qmk/qmk_firmware/blob/master/data/templates/keyboard/readme.md)
- flash command is present, and has `:flash` at end
- valid hardware availability link (unless handwired) -- private groupbuys are okay, but one-off prototypes will be questioned. If open-source, a link to files should be provided.
- clear instructions on how to reset the board into bootloader mode
@@ -76,9 +76,9 @@ https://github.com/qmk/qmk_firmware/pulls?q=is%3Apr+is%3Aclosed+label%3Akeyboard
- `<keyboard>.c`
- empty `xxxx_xxxx_kb()` or other weak-defined default implemented functions removed
- commented-out functions removed too
- `matrix_init_board()` etc. migrated to `keyboard_pre_init_kb()`, see: [keyboard_pre_init*](https://docs.qmk.fm/#/custom_quantum_functions?id=keyboard_pre_init_-function-documentation)
- prefer `CUSTOM_MATRIX = lite` if custom matrix used, allows for standard debounce, see [custom matrix 'lite'](https://docs.qmk.fm/#/custom_matrix?id=lite)
- prefer LED indicator [Configuration Options](https://docs.qmk.fm/#/feature_led_indicators?id=configuration-options) to custom `led_update_*()` implementations where possible
- `matrix_init_board()` etc. migrated to `keyboard_pre_init_kb()`, see: [keyboard_pre_init*](custom_quantum_functions.md?id=keyboard_pre_init_-function-documentation)
- prefer `CUSTOM_MATRIX = lite` if custom matrix used, allows for standard debounce, see [custom matrix 'lite'](custom_matrix.md?id=lite)
- prefer LED indicator [Configuration Options](feature_led_indicators.md?id=configuration-options) to custom `led_update_*()` implementations where possible
- `<keyboard>.h`
- `#include "quantum.h"` appears at the top
- `LAYOUT` macros should use standard definitions if applicable
@@ -111,13 +111,13 @@ Also, specific to ChibiOS:
- example: For an STM32L082KZ, given the similarity to an STM32L073RZ, you can use `BOARD = ST_NUCLEO64_L073RZ` in rules.mk
- QMK is migrating to not having custom board definitions if at all possible, due to the ongoing maintenance burden when upgrading ChibiOS
- New board definitions must not be embedded in a keyboard PR
- See _Core PRs_ below for the procedure for adding a new board to QMK
- See [Core PRs](#core-pr) below for the procedure for adding a new board to QMK
- if a board definition is unavoidable, `board.c` must have a standard `__early_init()` (as per normal ChibiOS board defs) and an empty `boardInit()`:
- see Arm/ChibiOS [early initialization](https://docs.qmk.fm/#/platformdev_chibios_earlyinit?id=board-init)
- see Arm/ChibiOS [early initialization](platformdev_chibios_earlyinit.md?id=board-init)
- `__early_init()` should be replaced by either `early_hardware_init_pre()` or `early_hardware_init_post()` as appropriate
- `boardInit()` should be migrated to `board_init()`
## Core PRs
## Core PRs :id=core-pr
- must now target `develop` branch, which will subsequently be merged back to `master` on the breaking changes timeline
- any new boards adding support for new hardware now requires a corresponding test board under `keyboards/handwired/onekey`

View File

@@ -8,8 +8,8 @@ On this page we have documented keycodes between `0x00FF` and `0xFFFF` which are
## QMK Keycodes :id=qmk-keycodes
|Key |Aliases |Description |
|--------------|---------|-------------------------------------------------------|
|`RESET` | |Put the keyboard into bootloader mode for flashing |
|`DEBUG` | |Toggle debug mode |
|`EEPROM_RESET`|`EEP_RST`|Reinitializes the keyboard's EEPROM (persistent memory)|
|Key |Aliases |Description |
|-----------------|---------|-------------------------------------------------------|
|`QK_BOOTLOADER` |`QK_BOOT`|Put the keyboard into bootloader mode for flashing |
|`QK_DEBUG_TOGGLE`|`DB_TOGG`|Toggle debug mode |
|`QK_CLEAR_EEPROM`|`EE_CLR` |Reinitializes the keyboard's EEPROM (persistent memory)|

View File

@@ -1,6 +1,6 @@
# List of Useful Core Functions To Make Your Keyboard Better
There are a lot of hidden functions in QMK that are incredible useful, or may add a bit of functionality that you've been wanting. Functions that are specific to certain features are not included here, as those will be on their respective feature page.
There are a lot of hidden functions in QMK that are incredibly useful, or may add a bit of functionality that you've been wanting. Functions that are specific to certain features are not included here, as those will be on their respective feature page.
## (OLKB) Tri Layers :id=olkb-tri-layers

View File

@@ -28,11 +28,11 @@ The `info.json` file is a JSON formatted dictionary with the following keys avai
* `layout_aliases`
* A dictionary containing layout aliases. The key is the alias and the value is a layout in `layouts` it maps to.
* `layouts`
* Physical Layout representations. See the [Layout Format](#layout_format) section for more detail.
* Physical Layout representations. See the [Layout Format](#layout-format) section for more detail.
* `matrix_pins`
* Configure the pins corresponding to columns and rows, or direct pins. See the [Matrix Pins](#matrix_pins) section for more detail.
* Configure the pins corresponding to columns and rows, or direct pins. See the [Matrix Pins](#matrix-pins) section for more detail.
* `rgblight`
* Configure the [RGB Lighting feature](feature_rgblight.md). See the [RGB Lighting](#rgb_lighting) section for more detail.
* Configure the [RGB Lighting feature](feature_rgblight.md). See the [RGB Lighting](#rgb-lighting) section for more detail.
* `usb`
* Configure USB VID, PID, and other parameters. See the [USB](#USB) section for more detail.
@@ -172,7 +172,7 @@ The following animations can be enabled:
### USB
Every USB keyboard needs to have its USB parmaters defined. At a minimum you need to set vid, pid, and device version.
Every USB keyboard needs to have its USB parameters defined. At a minimum you need to set the Vendor ID, Product ID, and device version.
Example:
@@ -181,7 +181,9 @@ Example:
"usb": {
"vid": "0xC1ED",
"pid": "0x23B0",
"device_ver": "0x0001"
"device_version": "1.0.0"
}
}
```
The device version is a BCD (binary coded decimal) value, in the format `MMmr`, so the below value would look like `0x0100` in the generated code. This also means the maximum valid values for each part are `99.9.9`, despite it being a hexadecimal value under the hood.

View File

@@ -34,7 +34,7 @@ Largest in size is "magic" -- the QMK magic keycodes -- which control things lik
If you've done all of that, and you don't want to disable features like RGB, Audio, OLEDs, etc, there are some additional options that you can add to your config.h that can help.
Starting with Lock Key support. If you have an Cherry MX Lock switch (lucky you!), you don't want to do this. But chances are, you don't. In that case, add this to your `config.h`:
Starting with Lock Key support. If you have a Cherry MX Lock switch (lucky you!), you don't want to do this. But chances are, you don't. In that case, add this to your `config.h`:
```c
#undef LOCKING_SUPPORT_ENABLE
#undef LOCKING_RESYNC_ENABLE
@@ -147,6 +147,7 @@ For RGB Matrix, these need to be explicitly enabled as well. To disable any that
#undef ENABLE_RGB_MATRIX_HUE_PENDULUM
#undef ENABLE_RGB_MATRIX_HUE_WAVE
#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
#undef ENABLE_RGB_MATRIX_PIXEL_RAIN
#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP

View File

@@ -126,6 +126,61 @@ The code which decides between the tap and hold actions of dual-role keys suppor
Note that until the tap-or-hold decision completes (which happens when either the dual-role key is released, or the tapping term has expired, or the extra condition for the selected decision mode is satisfied), key events are delayed and not transmitted to the host immediately. The default mode gives the most delay (if the dual-role key is held down, this mode always waits for the whole tapping term), and the other modes may give less delay when other keys are pressed, because the hold action may be selected earlier.
### Default Mode
Example sequence 1 (the `L` key is also mapped to `KC_RGHT` on layer 2):
```
TAPPING_TERM
+---------------|--------------------+
| +-------------|-------+ |
| | LT(2, KC_A) | | |
| +-------------|-------+ |
| | +--------------+ |
| | | KC_L | |
| | +--------------+ |
+---------------|--------------------+
```
The above sequence would send a `KC_RGHT`, since `LT(2, KC_A)` is held longer than the `TAPPING_TERM`.
---
Example sequence 2 (the `L` key is also mapped to `KC_RGHT` on layer 2):
```
TAPPING_TERM
+-----------------------------|------+
| +---------------+ | |
| | LT(2, KC_A) | | |
| +---------------+ | |
| +--------------+ | |
| | KC_L | | |
| +--------------+ | |
+-----------------------------|------+
```
The above sequence will not send `KC_RGHT` but `KC_A` `KC_L` instead, since `LT(2, KC_A)` is not held longer than the `TAPPING_TERM`.
---
Example sequence 3 (Mod Tap):
```
TAPPING_TERM
+---------------------------|--------+
| +-------------+ | |
| | SFT_T(KC_A) | | |
| +-------------+ | |
| +--------------+ | |
| | KC_X | | |
| +--------------+ | |
+---------------------------|--------+
```
Based previous examples, you might have expected the output of the above sequence to be `KC_A` `KC_X`
since `SFT_T(KC_A)` is NOT held longer than the `TAPPING_TERM`.
However, the actual output would be capital `X` (`SHIFT` + `x`) due to reasons
explained under [Ignore Mod Tap Interrupt](#ignore-mod-tap-interrupt).
### Permissive Hold
The “permissive hold” mode can be enabled for all dual-role keys by adding the corresponding option to `config.h`:
@@ -145,6 +200,18 @@ An example of a sequence which is affected by the “permissive hold” mode:
- `KC_L` Up
- `LT(2, KC_A)` Up
```
TAPPING_TERM
+---------------------------|--------+
| +----------------------+ | |
| | LT(2, KC_A) | | |
| +----------------------+ | |
| +--------------+ | |
| | KC_L | | |
| +--------------+ | |
+---------------------------|--------+
```
Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `PERMISSIVE_HOLD` option enabled, the Layer Tap key is considered as a layer switch if another key is tapped, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2). We could describe this sequence as a “nested press” (the modified key's key down and key up events are “nested” between the dual-role key's key down and key up events).
However, this slightly different sequence will not be affected by the “permissive hold” mode:
@@ -154,6 +221,18 @@ However, this slightly different sequence will not be affected by the “permiss
- `LT(2, KC_A)` Up
- `KC_L` Up
```
TAPPING_TERM
+---------------------------|--------+
| +-------------+ | |
| | LT(2, KC_A) | | |
| +-------------+ | |
| +--------------+ | |
| | KC_L | | |
| +--------------+ | |
+---------------------------|--------+
```
In the sequence above the dual-role key is released before the other key is released, and if that happens within the tapping term, the “permissive hold” mode will still choose the tap action for the dual-role key, and the sequence will be registered as `al` by the host. We could describe this as a “rolling press” (the two keys' key down and key up events behave as if you were rolling a ball across the two keys, first pressing each key down in sequence and then releasing them in the same order).
?> The `PERMISSIVE_HOLD` option also affects Mod Tap keys, but this may not be noticeable if you do not also enable the `IGNORE_MOD_TAP_INTERRUPT` option for those keys, because the default handler for Mod Tap keys also considers both the “nested press” and “rolling press” sequences like shown above as a modifier hold, not the tap action. If you do not enable `IGNORE_MOD_TAP_INTERRUPT`, the effect of `PERMISSIVE_HOLD` on Mod Tap keys would be limited to reducing the delay before the key events are made visible to the host.
@@ -198,6 +277,18 @@ An example of a sequence which is affected by the “hold on other key press”
- `LT(2, KC_A)` Up
- `KC_L` Up
```
TAPPING_TERM
+---------------------------|--------+
| +-------------+ | |
| | LT(2, KC_A) | | |
| +-------------+ | |
| +--------------+ | |
| | KC_L | | |
| +--------------+ | |
+---------------------------|--------+
```
Normally, if you do all this within the `TAPPING_TERM` (default: 200ms), this will be registered as `al` by the firmware and host system. With the `HOLD_ON_OTHER_KEY_PRESS` option enabled, the Layer Tap key is considered as a layer switch if another key is pressed, and the above sequence would be registered as `KC_RGHT` (the mapping of `L` on layer 2).
?> The `HOLD_ON_OTHER_KEY_PRESS` option also affects Mod Tap keys, but this may not be noticeable if you do not also enable the `IGNORE_MOD_TAP_INTERRUPT` option for those keys, because the default handler for Mod Tap keys also considers the “rolling press” sequence like shown above as a modifier hold, not the tap action. If you do not enable `IGNORE_MOD_TAP_INTERRUPT`, the effect of `HOLD_ON_OTHER_KEY_PRESS` on Mod Tap keys would be limited to reducing the delay before the key events are made visible to the host.
@@ -245,6 +336,18 @@ An example of a sequence which will be affected by the `IGNORE_MOD_TAP_INTERRUPT
- `SFT_T(KC_A)` Up
- `KC_X` Up
```
TAPPING_TERM
+---------------------------|--------+
| +-------------+ | |
| | SFT_T(KC_A) | | |
| +-------------+ | |
| +--------------+ | |
| | KC_X | | |
| +--------------+ | |
+---------------------------|--------+
```
Normally, this would send a capital `X` (`SHIFT`+`x`), even if the sequence is performed faster than the `TAPPING_TERM`. However, if the `IGNORE_MOD_TAP_INTERRUPT` option is enabled, the `SFT_T(KC_A)` key must be held longer than the `TAPPING_TERM` to register the hold action. A quick tap will output `ax` in this case, while a hold will still output a capital `X` (`SHIFT`+`x`).
However, if the `HOLD_ON_OTHER_KEY_PRESS` option is enabled in addition to `IGNORE_MOD_TAP_INTERRUPT`, the above sequence will again send a capital `X` (`SHIFT`+`x`) even if performed faster that the `TAPPING_TERM`. The difference from the default configuration is that by default the host will receive the key events only after the `SFT_T(KC_A)` key is released, but with the `HOLD_ON_OTHER_KEY_PRESS` option the host will start receiving key events when the `KC_X` key is pressed.
@@ -327,6 +430,18 @@ Holding and releasing a dual function key without pressing another key will resu
For instance, holding and releasing `LT(2, KC_SPC)` without hitting another key will result in nothing happening. With this enabled, it will send `KC_SPC` instead.
```
TAPPING_TERM
+-----------------|------------------+
| +---------------|-------+ |
| | LT(2, KC_SPC) | | |
| +---------------|-------+ |
| | |
| | |
| | |
+-----------------|------------------+
```
For more granular control of this feature, you can add the following to your `config.h`:
```c

View File

@@ -8,27 +8,22 @@ This document attempts to explain how the QMK firmware works from a very high le
## Startup
You can think of QMK as no different from any other computer program. It is started, performs its tasks, and then ends. The entry point for the program is the `main()` function, just like it is on any other C program. However, for a newcomer to QMK it can be confusing because the `main()` function appears in multiple places, and it can be hard to tell which one to look at.
You can think of QMK as no different from any other computer program. It is started and performs its tasks, but this program never finishes. Like other C programs, the entry point is the `main()` function. For QMK, the `main()` function is found in [`quantum/main.c`](https://github.com/qmk/qmk_firmware/blob/0.15.13/quantum/main.c#L55).
The reason for this is the different platforms that QMK supports. The most common platform is `lufa`, which runs on AVR processors such at the atmega32u4. We also support `chibios` and `vusb`.
If you browse through the `main()` function you'll find that it starts by initializing any hardware that has been configured (including USB to the host). The most common platform for QMK is `lufa`, which runs on AVR processors such as the atmega32u4. When compiled for that platform, it will invoke for example `platform_setup()` in [`platforms/avr/platform.c`](https://github.com/qmk/qmk_firmware/blob/0.15.13/platforms/avr/platform.c#L19) and `protocol_setup()` in [`tmk_core/protocol/lufa/lufa.c`](https://github.com/qmk/qmk_firmware/blob/0.15.13/tmk_core/protocol/lufa/lufa.c#L1066). It will use other implementations when compiled for other platforms like `chibios` and `vusb`. At first glance, it can look like a lot of functionality but most of the time the code will be disabled by `#define`s.
We'll focus on AVR processors for the moment, which use the `lufa` platform. You can find the `main()` function in [tmk_core/protocol/lufa/lufa.c](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/protocol/lufa/lufa.c#L1028). If you browse through that function you'll find that it initializes any hardware that has been configured (including USB to the host) and then it starts the core part of the program with a [`while(1)`](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/protocol/lufa/lufa.c#L1069). This is [The Main Loop](#the-main-loop).
The `main()` function will then start the core part of the program with a [`while (true)`](https://github.com/qmk/qmk_firmware/blob/0.15.13/quantum/main.c#L63). This is [The Main Loop](#the-main-loop).
## The Main Loop
This section of code is called "The Main Loop" because it's responsible for looping over the same set of instructions forever. This is where QMK dispatches out to the functions responsible for making the keyboard do everything it is supposed to do. At first glance it can look like a lot of functionality but most of the time the code will be disabled by `#define`'s.
This section of code is called "The Main Loop" because it's responsible for looping over the same set of instructions forever, without ever reaching the end. This is where QMK dispatches out to the functions responsible for making the keyboard do everything it is supposed to do.
```
keyboard_task();
```
This is where all the keyboard specific functionality is dispatched. The source code for `keyboard_task()` can be found in [tmk_core/common/keyboard.c](https://github.com/qmk/qmk_firmware/blob/e1203a222bb12ab9733916164a000ef3ac48da93/tmk_core/common/keyboard.c#L216), and it is responsible for detecting changes in the matrix and turning status LEDs on and off.
The main loop will call [`protocol_task()`](https://github.com/qmk/qmk_firmware/blob/0.15.13/quantum/main.c#L38), which in turn will call `keyboard_task()` in [`quantum/keyboard.c`](https://github.com/qmk/qmk_firmware/blob/0.15.13/quantum/keyboard.c#L377). This is where all the keyboard specific functionality is dispatched, and it is responsible for detecting changes in the matrix and turning status LEDs on and off.
Within `keyboard_task()` you'll find code to handle:
* [Matrix Scanning](#matrix-scanning)
* Mouse Handling
* Serial Link(s)
* Keyboard status LEDs (Caps Lock, Num Lock, Scroll Lock)
#### Matrix Scanning

View File

@@ -59,7 +59,7 @@ $ qmk compile -km 66_iso
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk compile
Ψ Compiling keymap with make make gh60/satan:colemak
Ψ Compiling keymap with make gh60/satan:colemak
...
```

View File

@@ -1,4 +1,4 @@
#include "adafruit_ble.h"
#include "bluefruit_le.h"
#include <stdio.h>
#include <stdlib.h>
@@ -16,20 +16,20 @@
// These are the pin assignments for the 32u4 boards.
// You may define them to something else in your config.h
// if yours is wired up differently.
#ifndef ADAFRUIT_BLE_RST_PIN
# define ADAFRUIT_BLE_RST_PIN D4
#ifndef BLUEFRUIT_LE_RST_PIN
# define BLUEFRUIT_LE_RST_PIN D4
#endif
#ifndef ADAFRUIT_BLE_CS_PIN
# define ADAFRUIT_BLE_CS_PIN B4
#ifndef BLUEFRUIT_LE_CS_PIN
# define BLUEFRUIT_LE_CS_PIN B4
#endif
#ifndef ADAFRUIT_BLE_IRQ_PIN
# define ADAFRUIT_BLE_IRQ_PIN E6
#ifndef BLUEFRUIT_LE_IRQ_PIN
# define BLUEFRUIT_LE_IRQ_PIN E6
#endif
#ifndef ADAFRUIT_BLE_SCK_DIVISOR
# define ADAFRUIT_BLE_SCK_DIVISOR 2 // 4MHz SCK/8MHz CPU, calculated for Feather 32U4 BLE
#ifndef BLUEFRUIT_LE_SCK_DIVISOR
# define BLUEFRUIT_LE_SCK_DIVISOR 2 // 4MHz SCK/8MHz CPU, calculated for Feather 32U4 BLE
#endif
#define SAMPLE_BATTERY
@@ -77,10 +77,10 @@ struct sdep_msg {
// information here.
enum queue_type {
QTKeyReport, // 1-byte modifier + 6-byte key report
QTConsumer, // 16-bit key code
QTKeyReport, // 1-byte modifier + 6-byte key report
QTConsumer, // 16-bit key code
#ifdef MOUSE_ENABLE
QTMouseMove, // 4-byte mouse report
QTMouseMove, // 4-byte mouse report
#endif
};
@@ -115,8 +115,8 @@ enum sdep_type {
SdepResponse = 0x20,
SdepAlert = 0x40,
SdepError = 0x80,
SdepSlaveNotReady = 0xFE, // Try again later
SdepSlaveOverflow = 0xFF, // You read more data than is available
SdepSlaveNotReady = 0xFE, // Try again later
SdepSlaveOverflow = 0xFF, // You read more data than is available
};
enum ble_cmd {
@@ -143,7 +143,7 @@ static bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool ver
// Send a single SDEP packet
static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) {
spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
spi_start(BLUEFRUIT_LE_CS_PIN, false, 0, BLUEFRUIT_LE_SCK_DIVISOR);
uint16_t timerStart = timer_read();
bool success = false;
bool ready = false;
@@ -157,7 +157,7 @@ static bool sdep_send_pkt(const struct sdep_msg *msg, uint16_t timeout) {
// Release it and let it initialize
spi_stop();
wait_us(SdepBackOff);
spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
spi_start(BLUEFRUIT_LE_CS_PIN, false, 0, BLUEFRUIT_LE_SCK_DIVISOR);
} while (timer_elapsed(timerStart) < timeout);
if (ready) {
@@ -190,7 +190,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
bool ready = false;
do {
ready = readPin(ADAFRUIT_BLE_IRQ_PIN);
ready = readPin(BLUEFRUIT_LE_IRQ_PIN);
if (ready) {
break;
}
@@ -198,7 +198,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
} while (timer_elapsed(timerStart) < timeout);
if (ready) {
spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
spi_start(BLUEFRUIT_LE_CS_PIN, false, 0, BLUEFRUIT_LE_SCK_DIVISOR);
do {
// Read the command type, waiting for the data to be ready
@@ -207,7 +207,7 @@ static bool sdep_recv_pkt(struct sdep_msg *msg, uint16_t timeout) {
// Release it and let it initialize
spi_stop();
wait_us(SdepBackOff);
spi_start(ADAFRUIT_BLE_CS_PIN, false, 0, ADAFRUIT_BLE_SCK_DIVISOR);
spi_start(BLUEFRUIT_LE_CS_PIN, false, 0, BLUEFRUIT_LE_SCK_DIVISOR);
continue;
}
@@ -233,7 +233,7 @@ static void resp_buf_read_one(bool greedy) {
return;
}
if (readPin(ADAFRUIT_BLE_IRQ_PIN)) {
if (readPin(BLUEFRUIT_LE_IRQ_PIN)) {
struct sdep_msg msg;
again:
@@ -244,7 +244,7 @@ static void resp_buf_read_one(bool greedy) {
dprintf("recv latency %dms\n", TIMER_DIFF_16(timer_read(), last_send));
}
if (greedy && resp_buf.peek(last_send) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
if (greedy && resp_buf.peek(last_send) && readPin(BLUEFRUIT_LE_IRQ_PIN)) {
goto again;
}
}
@@ -295,24 +295,26 @@ static bool ble_init(void) {
state.configured = false;
state.is_connected = false;
setPinInput(ADAFRUIT_BLE_IRQ_PIN);
setPinInput(BLUEFRUIT_LE_IRQ_PIN);
spi_init();
// Perform a hardware reset
setPinOutput(ADAFRUIT_BLE_RST_PIN);
writePinHigh(ADAFRUIT_BLE_RST_PIN);
writePinLow(ADAFRUIT_BLE_RST_PIN);
setPinOutput(BLUEFRUIT_LE_RST_PIN);
writePinHigh(BLUEFRUIT_LE_RST_PIN);
writePinLow(BLUEFRUIT_LE_RST_PIN);
wait_ms(10);
writePinHigh(ADAFRUIT_BLE_RST_PIN);
writePinHigh(BLUEFRUIT_LE_RST_PIN);
wait_ms(1000); // Give it a second to initialize
wait_ms(1000); // Give it a second to initialize
state.initialized = true;
return state.initialized;
}
static inline uint8_t min(uint8_t a, uint8_t b) { return a < b ? a : b; }
static inline uint8_t min(uint8_t a, uint8_t b) {
return a < b ? a : b;
}
static bool read_response(char *resp, uint16_t resplen, bool verbose) {
char *dest = resp;
@@ -424,9 +426,11 @@ bool at_command_P(const char *cmd, char *resp, uint16_t resplen, bool verbose) {
return at_command(cmdbuf, resp, resplen, verbose);
}
bool adafruit_ble_is_connected(void) { return state.is_connected; }
bool bluefruit_le_is_connected(void) {
return state.is_connected;
}
bool adafruit_ble_enable_keyboard(void) {
bool bluefruit_le_enable_keyboard(void) {
char resbuf[128];
if (!state.initialized && !ble_init()) {
@@ -498,16 +502,16 @@ static void set_connected(bool connected) {
}
}
void adafruit_ble_task(void) {
void bluefruit_le_task(void) {
char resbuf[48];
if (!state.configured && !adafruit_ble_enable_keyboard()) {
if (!state.configured && !bluefruit_le_enable_keyboard()) {
return;
}
resp_buf_read_one(true);
send_buf_send_one(SdepShortTimeout);
if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(ADAFRUIT_BLE_IRQ_PIN)) {
if (resp_buf.empty() && (state.event_flags & UsingEvents) && readPin(BLUEFRUIT_LE_IRQ_PIN)) {
// Must be an event update
if (at_command_P(PSTR("AT+EVENTSTATUS"), resbuf, sizeof(resbuf))) {
uint32_t mask = strtoul(resbuf, NULL, 16);
@@ -609,7 +613,7 @@ static bool process_queue_item(struct queue_item *item, uint16_t timeout) {
}
}
void adafruit_ble_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, uint8_t nkeys) {
void bluefruit_le_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, uint8_t nkeys) {
struct queue_item item;
bool didWait = false;
@@ -643,7 +647,7 @@ void adafruit_ble_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, uint8_t nk
}
}
void adafruit_ble_send_consumer_key(uint16_t usage) {
void bluefruit_le_send_consumer_key(uint16_t usage) {
struct queue_item item;
item.queue_type = QTConsumer;
@@ -655,7 +659,7 @@ void adafruit_ble_send_consumer_key(uint16_t usage) {
}
#ifdef MOUSE_ENABLE
void adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan, uint8_t buttons) {
void bluefruit_le_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan, uint8_t buttons) {
struct queue_item item;
item.queue_type = QTMouseMove;
@@ -671,9 +675,11 @@ void adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan,
}
#endif
uint32_t adafruit_ble_read_battery_voltage(void) { return state.vbat; }
uint32_t bluefruit_le_read_battery_voltage(void) {
return state.vbat;
}
bool adafruit_ble_set_mode_leds(bool on) {
bool bluefruit_le_set_mode_leds(bool on) {
if (!state.configured) {
return false;
}
@@ -689,7 +695,7 @@ bool adafruit_ble_set_mode_leds(bool on) {
}
// https://learn.adafruit.com/adafruit-feather-32u4-bluefruit-le/ble-generic#at-plus-blepowerlevel
bool adafruit_ble_set_power_level(int8_t level) {
bool bluefruit_le_set_power_level(int8_t level) {
char cmd[46];
if (!state.configured) {
return false;

View File

@@ -16,43 +16,43 @@ extern "C" {
#endif
/* Instruct the module to enable HID keyboard support and reset */
extern bool adafruit_ble_enable_keyboard(void);
extern bool bluefruit_le_enable_keyboard(void);
/* Query to see if the BLE module is connected */
extern bool adafruit_ble_query_is_connected(void);
extern bool bluefruit_le_query_is_connected(void);
/* Returns true if we believe that the BLE module is connected.
* This uses our cached understanding that is maintained by
* calling ble_task() periodically. */
extern bool adafruit_ble_is_connected(void);
extern bool bluefruit_le_is_connected(void);
/* Call this periodically to process BLE-originated things */
extern void adafruit_ble_task(void);
extern void bluefruit_le_task(void);
/* Generates keypress events for a set of keys.
* The hid modifier mask specifies the state of the modifier keys for
* this set of keys.
* Also sends a key release indicator, so that the keys do not remain
* held down. */
extern void adafruit_ble_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, uint8_t nkeys);
extern void bluefruit_le_send_keys(uint8_t hid_modifier_mask, uint8_t *keys, uint8_t nkeys);
/* Send a consumer usage.
* (milliseconds) */
extern void adafruit_ble_send_consumer_key(uint16_t usage);
extern void bluefruit_le_send_consumer_key(uint16_t usage);
#ifdef MOUSE_ENABLE
/* Send a mouse/wheel movement report.
* The parameters are signed and indicate positive or negative direction
* change. */
extern void adafruit_ble_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan, uint8_t buttons);
extern void bluefruit_le_send_mouse_move(int8_t x, int8_t y, int8_t scroll, int8_t pan, uint8_t buttons);
#endif
/* Compute battery voltage by reading an analog pin.
* Returns the integer number of millivolts */
extern uint32_t adafruit_ble_read_battery_voltage(void);
extern uint32_t bluefruit_le_read_battery_voltage(void);
extern bool adafruit_ble_set_mode_leds(bool on);
extern bool adafruit_ble_set_power_level(int8_t level);
extern bool bluefruit_le_set_mode_leds(bool on);
extern bool bluefruit_le_set_power_level(int8_t level);
#ifdef __cplusplus
}

View File

@@ -13,13 +13,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "outputselect.h"
#include "usb_util.h"
#if defined(PROTOCOL_LUFA)
# include "lufa.h"
#endif
#ifdef MODULE_ADAFRUIT_BLE
# include "adafruit_ble.h"
#ifdef BLUETOOTH_BLUEFRUIT_LE
# include "bluefruit_le.h"
#endif
uint8_t desired_output = OUTPUT_DEFAULT;
@@ -39,29 +36,23 @@ void set_output(uint8_t output) {
*/
__attribute__((weak)) void set_output_user(uint8_t output) {}
static bool is_usb_configured(void) {
#if defined(PROTOCOL_LUFA)
return USB_DeviceState == DEVICE_STATE_Configured;
#endif
}
/** \brief Auto Detect Output
*
* FIXME: Needs doc
*/
uint8_t auto_detect_output(void) {
if (is_usb_configured()) {
if (usb_connected_state()) {
return OUTPUT_USB;
}
#ifdef MODULE_ADAFRUIT_BLE
if (adafruit_ble_is_connected()) {
#ifdef BLUETOOTH_BLUEFRUIT_LE
if (bluefruit_le_is_connected()) {
return OUTPUT_BLUETOOTH;
}
#endif
#ifdef BLUETOOTH_ENABLE
return OUTPUT_BLUETOOTH; // should check if BT is connected here
return OUTPUT_BLUETOOTH; // should check if BT is connected here
#endif
return OUTPUT_NONE;

101
drivers/bluetooth/rn42.c Normal file
View File

@@ -0,0 +1,101 @@
/* Copyright 2021
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "report.h"
#include "uart.h"
#ifndef RN42_BAUD_RATE
# define RN42_BAUD_RATE 115200
#endif
// https://cdn.sparkfun.com/datasheets/Wireless/Bluetooth/bluetooth_cr_UG-v1.0r.pdf#G7.663734
static inline uint16_t rn42_consumer_usage_to_bitmap(uint16_t usage) {
switch (usage) {
case AC_HOME:
return 0x0001;
case AL_EMAIL:
return 0x0002;
case AC_SEARCH:
return 0x0004;
case AL_KEYBOARD_LAYOUT:
return 0x0008;
case AUDIO_VOL_UP:
return 0x0010;
case AUDIO_VOL_DOWN:
return 0x0020;
case AUDIO_MUTE:
return 0x0040;
case TRANSPORT_PLAY_PAUSE:
return 0x0080;
case TRANSPORT_NEXT_TRACK:
return 0x0100;
case TRANSPORT_PREV_TRACK:
return 0x0200;
case TRANSPORT_STOP:
return 0x0400;
case TRANSPORT_EJECT:
return 0x0800;
case TRANSPORT_FAST_FORWARD:
return 0x1000;
case TRANSPORT_REWIND:
return 0x2000;
case TRANSPORT_STOP_EJECT:
return 0x4000;
case AL_LOCAL_BROWSER:
return 0x8000;
default:
return 0;
}
}
void rn42_init(void) {
uart_init(RN42_BAUD_RATE);
}
void rn42_send_keyboard(report_keyboard_t *report) {
uart_write(0xFD);
uart_write(0x09);
uart_write(0x01);
uart_write(report->mods);
uart_write(0x00);
for (uint8_t i = 0; i < KEYBOARD_REPORT_KEYS; i++) {
uart_write(report->keys[i]);
}
}
void rn42_send_mouse(report_mouse_t *report) {
uart_write(0xFD);
uart_write(0x00);
uart_write(0x03);
uart_write(report->buttons);
uart_write(report->x);
uart_write(report->y);
uart_write(report->v); // should try sending the wheel v here
uart_write(report->h); // should try sending the wheel h here
uart_write(0x00);
}
void rn42_send_consumer(uint16_t data) {
static uint16_t last_data = 0;
if (data == last_data) return;
last_data = data;
uint16_t bitmap = rn42_consumer_usage_to_bitmap(data);
uart_write(0xFD);
uart_write(0x03);
uart_write(0x03);
uart_write(bitmap & 0xFF);
uart_write((bitmap >> 8) & 0xFF);
}

25
drivers/bluetooth/rn42.h Normal file
View File

@@ -0,0 +1,25 @@
/* Copyright 2021
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "report.h"
void rn42_init(void);
void rn42_send_keyboard(report_keyboard_t *report);
void rn42_send_mouse(report_mouse_t *report);
void rn42_send_consumer(uint16_t data);

View File

@@ -37,11 +37,17 @@ uint32_t eeprom_read_dword(const uint32_t *addr) {
return ret;
}
void eeprom_write_byte(uint8_t *addr, uint8_t value) { eeprom_write_block(&value, addr, 1); }
void eeprom_write_byte(uint8_t *addr, uint8_t value) {
eeprom_write_block(&value, addr, 1);
}
void eeprom_write_word(uint16_t *addr, uint16_t value) { eeprom_write_block(&value, addr, 2); }
void eeprom_write_word(uint16_t *addr, uint16_t value) {
eeprom_write_block(&value, addr, 2);
}
void eeprom_write_dword(uint32_t *addr, uint32_t value) { eeprom_write_block(&value, addr, 4); }
void eeprom_write_dword(uint32_t *addr, uint32_t value) {
eeprom_write_block(&value, addr, 4);
}
void eeprom_update_block(const void *buf, void *addr, size_t len) {
uint8_t read_buf[len];

View File

@@ -43,7 +43,7 @@
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
# include "timer.h"
# include "debug.h"
#endif // DEBUG_EEPROM_OUTPUT
#endif // DEBUG_EEPROM_OUTPUT
static inline void fill_target_address(uint8_t *buffer, const void *addr) {
uintptr_t p = (uintptr_t)addr;
@@ -91,7 +91,7 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
dprintf(" %02X", (int)(((uint8_t *)buf)[i]));
}
dprintf("\n");
#endif // DEBUG_EEPROM_OUTPUT
#endif // DEBUG_EEPROM_OUTPUT
}
void eeprom_write_block(const void *buf, void *addr, size_t len) {
@@ -122,7 +122,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
dprintf(" %02X", (int)(read_buf[i]));
}
dprintf("\n");
#endif // DEBUG_EEPROM_OUTPUT
#endif // DEBUG_EEPROM_OUTPUT
i2c_transmit(EXTERNAL_EEPROM_I2C_ADDRESS((uintptr_t)addr), complete_packet, EXTERNAL_EEPROM_ADDRESS_SIZE + write_length, 100);
wait_ms(EXTERNAL_EEPROM_WRITE_TIME);

View File

@@ -52,7 +52,9 @@
# define EXTERNAL_EEPROM_SPI_TIMEOUT 100
#endif
static bool spi_eeprom_start(void) { return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR); }
static bool spi_eeprom_start(void) {
return spi_start(EXTERNAL_EEPROM_SPI_SLAVE_SELECT_PIN, EXTERNAL_EEPROM_SPI_LSBFIRST, EXTERNAL_EEPROM_SPI_MODE, EXTERNAL_EEPROM_SPI_CLOCK_DIVISOR);
}
static spi_status_t spi_eeprom_wait_while_busy(int timeout) {
uint32_t deadline = timer_read32() + timeout;
@@ -80,7 +82,9 @@ static void spi_eeprom_transmit_address(uintptr_t addr) {
//----------------------------------------------------------------------------------------------------------------------
void eeprom_driver_init(void) { spi_init(); }
void eeprom_driver_init(void) {
spi_init();
}
void eeprom_driver_erase(void) {
#if defined(CONSOLE_ENABLE) && defined(DEBUG_EEPROM_OUTPUT)
@@ -135,7 +139,7 @@ void eeprom_read_block(void *buf, const void *addr, size_t len) {
dprintf(" %02X", (int)(((uint8_t *)buf)[i]));
}
dprintf("\n");
#endif // DEBUG_EEPROM_OUTPUT
#endif // DEBUG_EEPROM_OUTPUT
spi_stop();
}
@@ -192,7 +196,7 @@ void eeprom_write_block(const void *buf, void *addr, size_t len) {
dprintf(" %02X", (int)(uint8_t)(read_buf[i]));
}
dprintf("\n");
#endif // DEBUG_EEPROM_OUTPUT
#endif // DEBUG_EEPROM_OUTPUT
spi_write(CMD_WRITE);
spi_eeprom_transmit_address(target_addr);

View File

@@ -30,9 +30,13 @@ size_t clamp_length(intptr_t offset, size_t len) {
return len;
}
void eeprom_driver_init(void) { eeprom_driver_erase(); }
void eeprom_driver_init(void) {
eeprom_driver_erase();
}
void eeprom_driver_erase(void) { memset(transientBuffer, 0x00, TRANSIENT_EEPROM_SIZE); }
void eeprom_driver_erase(void) {
memset(transientBuffer, 0x00, TRANSIENT_EEPROM_SIZE);
}
void eeprom_read_block(void *buf, const void *addr, size_t len) {
intptr_t offset = (intptr_t)addr;

View File

@@ -21,5 +21,5 @@
*/
#ifndef TRANSIENT_EEPROM_SIZE
# include "eeconfig.h"
# define TRANSIENT_EEPROM_SIZE (((EECONFIG_SIZE + 3) / 4) * 4) // based off eeconfig's current usage, aligned to 4-byte sizes, to deal with LTO
# define TRANSIENT_EEPROM_SIZE (((EECONFIG_SIZE + 3) / 4) * 4) // based off eeconfig's current usage, aligned to 4-byte sizes, to deal with LTO
#endif

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