Compare commits

...
Author SHA1 Message Date
Joel Challis 936c341ef8 Update info.json 2022-03-05 20:54:51 +00: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
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
GompaandJoel Challis 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 731dbbe15155b3efe2ff9f5ad61c7d0cf529e837.
Separated into a single PR #16433.

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

This reverts commit e76dbd7762e06e0781ee004213878b1a5029fa98.

* 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 9b316c1c6a532f908f2ac430233089797ce7c794.

* 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
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
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 ChallisandSergey Vlasov 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 RodriguesandDrashna Jaelre 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
xiaoandxia0 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
jackandjack 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
evanmcookandJoel Challis 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 HerrewegheandWolf Van Herreweghe 7fb22706fd [Keyboard] Add sabre (#15964)
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2022-02-21 09:10:06 -08:00
66f9e4eaeandDrashna Jaelre 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 Petrikandzvecr 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
jackytrabbitandRyan 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
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
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
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
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
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
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 GromovandRyan 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
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
RyanandJoel Challis 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
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
peepeeteeandzvecr 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
peepeeteeandzvecr 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 BouwersandRyan 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 BrasselandRyan 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
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
MechMerlinandDrashna Jaelre 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
peepeeteeandDrashna Jaelre 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
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
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
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
MasterSpoonandXelus22 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 PowellandRyan 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
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
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
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 ChurzinandAlbert Y 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ł SzczepaniakandRyan 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 LickelandSergey Vlasov 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
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 MagantiandDrashna Jaelre 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
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 YandSergey Vlasov 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
Nick Brassel 1fffcbc298 Revert "[Core] Add Pixel Flow RGB matrix effect (#15829)" (#16209)
This reverts commit e8fa329073.
2022-02-05 05:57:21 +11:00
QMK Bot f2384d062b Merge remote-tracking branch 'origin/master' into develop 2022-02-04 18:56:47 +00:00
Albert YandSergey Vlasov e8fa329073 [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:55:51 +11: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
James Young 98916fd862 MTBKeys MTB60 Hotswap Layout Macro Refactor (#16194) 2022-02-04 09:46:21 -08:00
QMK Bot 5178f75475 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 16:00:17 +00:00
405c04e0d2 [Keyboard] Add Keyboards GL516s (#14950)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-02-04 07:59:38 -08:00
QMK Bot d966b39c5d Merge remote-tracking branch 'origin/master' into develop 2022-02-04 04:32:58 +00:00
James Young 1cb423c424 Mokey xox70hot: rename LAYOUT to LAYOUT_tkl_nofrow_ansi_tsangan (#16193) 2022-02-03 20:32:20 -08:00
QMK Bot 249280cac2 Merge remote-tracking branch 'origin/master' into develop 2022-02-04 03:45:30 +00:00
Nick Brassel 3403f5813c Point out that deferred execution needs to be enabled in rules.mk (#16196) 2022-02-04 03:44:51 +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
Richard 333dd5d48c Fix axis inversion (#16179) 2022-02-03 10:18:26 +00:00
Nick BrasselandRyan 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
Ryan 27e390777b Fix a couple of mismatched info.json layout names (#16164)
* Fix a couple of mismatched info.json layout names

* Fix layouts

* Clean up layouts
2022-02-02 21:08:48 +00:00
QMK Bot 24da0457f8 Merge remote-tracking branch 'origin/master' into develop 2022-02-02 16:22:19 +00:00
Nick Brassel 3897eaac30 Fixup line endings for kt60-M. 2022-02-03 03:19:08 +11: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
Ivan Gromov bf2b3f7907 [Keyboard] Add keyten kt60-M (#16150) 2022-02-01 21:05:23 -08:00
QMK Bot 9aed323aa0 Merge remote-tracking branch 'origin/master' into develop 2022-02-02 05:05:18 +00:00
Andre BraitandDrashna Jaelre 70c5915da8 [Keymap] Add MacOS layer (#16151)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-02-01 21:04:50 -08: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
joedinkle 50f55c61fd [Keyboard] Added keymaps for SPRH and update encoder (#16098) 2022-02-01 20:32:27 -08:00
QMK Bot 7d38aec3ac Merge remote-tracking branch 'origin/master' into develop 2022-02-02 04:31:44 +00:00
Ryan c9f88d7c67 qmk doctor: display qmk_firmware version tag (#16155) 2022-02-01 20:31:42 -08:00
Adrian Fleiszer 16ad8c0159 [Keyboard] Add YMDK sp64 VIA support (#16152) 2022-02-01 20:31:05 -08: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
Drashna Jaelre f2c9fa81de [Keyboard] enable rgb modes for jkb65 (#16159) 2022-01-31 18:58:29 -08: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
7b35dda31e [Keyboard] R2 version of jadookb/jkb65 (#16129)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-31 18:11:03 -08:00
QMK Bot 658d211804 Merge remote-tracking branch 'origin/master' into develop 2022-02-01 02:08:56 +00:00
Ben Allen 602472dbfa [Keyboard] ReadMe corrections for crkbd (#16149) 2022-01-31 18:08:27 -08:00
QMK Bot e4afd371dc Merge remote-tracking branch 'origin/master' into develop 2022-02-01 02:08:02 +00:00
Albert Y 68473e66b6 [Keyboard] Typo correction in ferris sweep readme (#16148) 2022-01-31 18:07:57 -08:00
Albert Y b56707a517 [Keyboard] Simplify handedness for cradio (#16147) 2022-01-31 18:07:33 -08:00
QMK Bot 97ee1c0aee Merge remote-tracking branch 'origin/master' into develop 2022-02-01 02:06:00 +00:00
Albert Y a2ef11bb00 [Docs] Add reference to data sync options for RGB (#16144) 2022-01-31 18:05:09 -08:00
QMK Bot d36c245400 Merge remote-tracking branch 'origin/master' into develop 2022-02-01 00:29:19 +00:00
takishimandtakishim f404ec329f Fixed a bug in pin assignment. (#16158)
Added original copyright notice.
Assign the tilde key to layer 1.

Co-authored-by: takishim <tadashi@kishimo.to>
2022-02-01 00:28:48 +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
Ryan 59f37bb710 Fix build failure for LW67, rename ansi keymap to default (#16154)
* Fix build failure for LW67, rename ansi keymap to default

* Fix keycode typos as well
2022-02-01 08:31:15 +11: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
1111ff604d [Keyboard] Add the proton c as a controller for the redox (#16106)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
Co-authored-by: xerootg <xerootg@github.com>
2022-01-31 11:40:13 -08:00
QMK Bot 781cdde288 Merge remote-tracking branch 'origin/master' into develop 2022-01-31 19:35:14 +00:00
James Young 59ebe28cd5 KeebsForAll FreebirdTKL Layout Macro Refactor (#16146) 2022-01-31 11:34:34 -08:00
QMK Bot d1e1f95975 Merge remote-tracking branch 'origin/master' into develop 2022-01-31 19:32:13 +00:00
LanewareandRyan 37093eb929 [Keyboard] Add LW67 keyboard (#16141)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-31 11:31:32 -08:00
QMK Bot 8116b2a15c Merge remote-tracking branch 'origin/master' into develop 2022-01-31 11:16:45 +00:00
James Young 7512e58cfe KapCave Arya: Fix QMK Configurator Implementation (#16145)
* move layout macro alias to info.json

* info.json: fix layout macro reference

* info.json: fix layout data

Original layout data was generated with rotation, which breaks the rendering.

* info.json: remove layout macro alias

It's not used anywhere, so no need to keep it.

* rules.mk: enable Community Layout support
2022-01-31 11:16:04 +00:00
QMK Bot 14c1bd3b93 Merge remote-tracking branch 'origin/master' into develop 2022-01-31 01:27:07 +00:00
James Young 4277dc3ac9 wilba.tech WT60-H3 Layout Macro Refactor (#16140)
* move ISO Enter argument to home row

Moves the ISO Enter key's argument to the home row to conform to QMK's standard for traditionally-staggered boards.

* update info.json data
2022-01-30 17:26:27 -08:00
QMK Bot 8ad59ec127 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 23:11:13 +00:00
James Young 2e13f7d9f0 Mechlovin Olly BB Touch-Up (#16137)
* fix keymap alignment

Both the `default` and `via` keymaps had misalignments on the top 3 layers, which was misleading as to which keycode was on which switch on those layers.

* fix layout macro reference in info.json

* friendly-format info.json, phase 1

Adds line breaks between keyboard rows.

* correct info.json key sequence

* bb.h: use XXX for KC_NO

* bb.h: add matrix diagram

* add LAYOUT_ansi_split_bs

Includes reference keymap.

* add LAYOUT_iso_split_bs

Includes reference keymap.

* info.json: remove meta key
2022-01-30 23:10:42 +00:00
QMK Bot 4297f0669b Merge remote-tracking branch 'origin/master' into develop 2022-01-30 23:10:15 +00:00
James Young c6a613ef7c gergoplex: add QMK Configurator data (#16138) 2022-01-30 23:09:46 +00:00
QMK Bot fc74d6b8d9 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 23:08:10 +00:00
Ryan bdca5132a4 Fave84H/87H: Fix stray closing brace in default keymap (#16136) 2022-01-30 15:07:40 -08: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
Drashna Jaelre 941b1d35b8 [Keymap] Add oled improvements and cnano keymap for drashna (#16133) 2022-01-30 13:20:33 -08:00
QMK Bot 1be1bebc04 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 19:29:29 +00:00
3555ee0555 [Keyboard] Add the FAve 87H (#15965)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2022-01-30 11:28:53 -08: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
Alin Marin Elena b0da230213 [Keyboard] add mlego/m65 oled revision (#15833) 2022-01-30 11:13:08 -08:00
QMK Bot b4f124c78c Merge remote-tracking branch 'origin/master' into develop 2022-01-30 19:06:54 +00:00
Sergey Vlasov 03b1d9ef1f Add a warning about USBtinyISP limitations to the ISP flashing guide (#15898) 2022-01-30 11:06:19 -08:00
QMK Bot 2d23516462 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 19:00:54 +00:00
Gigahawk b20bbc7152 [Keymap]: Create Gigahawk GMMK Pro keymap (#15934) 2022-01-30 11:00:22 -08:00
QMK Bot 56623a6224 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 18:59:30 +00:00
0200020162 [Keyboard] Small fixes to the Keybee65 (#15966)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2022-01-30 10:59:24 -08:00
5576f641ce [Keyboard] Add base FAve 84H firmware (#15967)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2022-01-30 10:58:58 -08: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
mmccoydandmmccoyd 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
peott-fr a78b80966b [Keymap] Adding Sunsetter keymap (#16126) 2022-01-30 10:52:36 -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
Christian Grumbein 62851b5abd [Keymap] Add hachetman layout for GMMK Pro (#16131) 2022-01-30 10:47:11 -08:00
Andrew Garver 7a81d5ee0d [Keyboard] added via keymap for ferris sweep (#16130) 2022-01-30 10:46:54 -08:00
QMK Bot 84c1fcef05 Merge remote-tracking branch 'origin/master' into develop 2022-01-30 18:36:17 +00:00
James Young 42ba4e8cae Cutie Club Giant Macro Pad: Update QMK Configurator Implementation (#16132) 2022-01-30 10:35:43 -08: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
James Young aee6ff5c08 Xelus Pachi: add info.json files; rename layout macros (#16123)
* xelus/pachi/mini_32u4: add info.json

* xelus/pachi/rev1: add info.json

* xelus/pachi/rgb/rev1: add info.json

* xelus/pachi/rgb/rev2: add info.json

* rename LAYOUT_ansi_tsangan to LAYOUT_tkl_ansi_tsangan

Rename `LAYOUT_ansi_tsangan` to `LAYOUT_tkl_ansi_tsangan` for the Pachi RGB revisions.
2022-01-29 23:11:50 -08:00
QMK Bot 749fa8b55f Merge remote-tracking branch 'origin/master' into develop 2022-01-29 23:30:10 +00:00
James Young 66c81ed82e Takashi Company Center x Enter: correct info.json key sequence (#16120)
* info.json: apply friendly formatting

* info.json: update labels for clarity

* info.json: correct key sequence
2022-01-29 23:29:42 +00:00
QMK Bot 02dff061db Merge remote-tracking branch 'origin/master' into develop 2022-01-29 23:29:28 +00:00
James Young e0de2b0279 Takashi Company QooLee: correct info.json key sequence (#16121)
* info.json: apply friendly formatting

* info.json: correct maintainer field

Fixes a typo.

* info.json: correct key sequence
2022-01-29 23:28:57 +00:00
QMK Bot b001d9383a Merge remote-tracking branch 'origin/master' into develop 2022-01-29 23:28:42 +00:00
James Young bfc691eaab Wuque Mammoth75x: refactor (#16122)
* info.json: apply/polish friendly formatting

* refactor LAYOUT_all macro

- move the argument/keycode for the right half of split Backspace next to the left half
- update QMK Configurator layout data

* update QMK Configurator layout data for the other macros

Moves the EncoderClick objects up, and offsets the arrow keys down 0.25u.
2022-01-29 23:28:14 +00:00
QMK Bot 8696d93e96 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 23:27:35 +00:00
James Young c2905437ea Cutie Club x Keebcats Denis: codebase touch-up and info.json update (#16124)
* denis.h: use QMK 3-character notation

* info.json: apply friendly formatting

* info.json: add missing layout trees

* info.json: fix key sequence on ISO layouts
2022-01-29 23:26:47 +00:00
QMK Bot c969d4ece3 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 21:29:50 +00:00
James Young cabdef8395 Studio Kestra Bourgeau: rename LAYOUT_all to LAYOUT_75_ansi_rwkl (#16119)
* rename LAYOUT_all to LAYOUT_75_ansi_rwkl

The only supported layout is 75% ANSI, with two modifier keys on the right of the Spacebar instead of three.

* info.json: use maintainer's GitHub username
2022-01-29 21:29:45 +00:00
James Young 8219472cc9 CK65: LAYOUT_65_iso compatibility (#16118)
* info.json: apply friendly formatting

* ck65.h: use QMK 3-character notation

* move Enter keycode/argument to home row

This commit makes the `LAYOUT` macro conformant to `LAYOUT_65_iso` in QMK.

* rename LAYOUT to LAYOUT_65_iso

* use QMK-native KC_TRNS alias in keymaps

Replaces instances of `KC_TRNS` with `_______` in keymaps.

* info.json: update maintainer field
2022-01-29 21:29:12 +00:00
QMK Bot 86bb162dd3 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 21:17:50 +00:00
Ryan 9482a097c8 Fix Cypher rev6 VIA keymap (#16117) 2022-01-29 21:17:18 +00:00
QMK Bot 67b001c737 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 18:50:19 +00:00
dd9bbd8d4a [Keyboard] Add the demiurge keyboard (#16074)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-29 10:49:54 -08:00
QMK Bot 6c380e0eb1 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 18:29:10 +00:00
d59c982d17 [Keyboard] add synthesis60 (#15864)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-29 10:28:38 -08:00
QMK Bot 38de0681ff Merge remote-tracking branch 'origin/master' into develop 2022-01-29 18:28:12 +00:00
Felipe Bastos 2100a7ca7b Move kbdpad_mk2 to kbdpad/mk2, add numpad layout to mk2.h (#15892) 2022-01-29 10:28:00 -08:00
Alex Grover 3307a8e057 [Keymap] Add media keys to default UT47.2 keymap (#15893) 2022-01-29 10:27:29 -08:00
QMK Bot d6abdda34f Merge remote-tracking branch 'origin/master' into develop 2022-01-29 16:06:50 +00:00
d48bff8342 [Docs] zh-cn documentation translate: hand-wire (#15666)
Co-authored-by: peepeetee <43021794+peepeetee@users.noreply.github.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2022-01-29 16:06:19 +00:00
QMK Bot d0faaa9c7c Merge remote-tracking branch 'origin/master' into develop 2022-01-29 14:28:24 +00:00
Joel Challis cc6017517d Planck/Preonic - Enable default encoder behaviour on configurator (#16104) 2022-01-29 14:28:13 +00:00
9e79f27547 [Docs] zh-cn document translate: IDE configuration (#15575)
Co-authored-by: peepeetee <43021794+peepeetee@users.noreply.github.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2022-01-29 14:27:57 +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
Cable Car DesignsandDrashna Jaelre 70b51dc1bf [Keyboard] add cypher rev6 (#14647)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-01-28 23:10:41 -08:00
QMK Bot 6991631385 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 07:07:29 +00:00
59502f930e [Keyboard] Added sandwich/keeb68 to keyboards (#15007)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-01-28 23:07:00 -08:00
QMK Bot 20fac523c7 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 07:05:20 +00:00
Chris BroekemaandRyan 002a1add8b [Keyboard] Add misterdeck 3d-printed handwired stream deck (#15556)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-28 23:04:42 -08:00
Ga68andGa68 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
IFo Hancroft 13e6517460 [Keymap] Further improvements to ifohancroft ErgoDox keymap (#15672) 2022-01-28 22:58:28 -08:00
QMK Bot aff9eafea5 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 06:43:15 +00:00
yiancarandyiancar 1ca636819f [Keyboard] Fix Nasu Indicators (#15878)
Co-authored-by: yiancar <yiancar@gmail.com>
2022-01-28 22:42:39 -08:00
QMK Bot fee5950a5c Merge remote-tracking branch 'origin/master' into develop 2022-01-29 03:28:29 +00:00
1af65a2248 [Keyboard] Add keyprez unicorn (#15998)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-01-28 19:28:00 -08:00
QMK Bot 720ccf9559 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 03:27:16 +00:00
Monksoffunk b2fcc923cb [Docs] Update Encoder docs about multiple encoders (#16036) 2022-01-28 19:26:42 -08:00
QMK Bot 2f5074cf32 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 01:35:09 +00:00
Gabriel Harel dcff1a34c7 Remove missing and trailing commas in info.json files. (#16088) 2022-01-28 17:34:38 -08:00
QMK Bot 46e2caea78 Merge remote-tracking branch 'origin/master' into develop 2022-01-29 00:19:53 +00:00
bd8e257f84 [Keyboard] Adds Elongate Revision Delta PCB support (#15498)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-28 16:19:11 -08:00
QMK Bot 51ee8965a7 Merge remote-tracking branch 'origin/master' into develop 2022-01-28 23:34:08 +00:00
wyethGRandDrashna Jaelre db56db2f79 [Keymap] Added personal 36 key layout for 40percentclub's nori (#15980)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-01-28 15:33:26 -08:00
QMK Bot 99478417ac Merge remote-tracking branch 'origin/master' into develop 2022-01-27 15:57:01 +00:00
Albert Y 0f0e90971b [Docs] OLED documentation edits (#15977)
* Clarify OLED_TIMEOUT

* Add a section on logo file location
2022-01-27 15:56:20 +00:00
QMK Bot 7c4992bce1 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 15:51:25 +00:00
Álvaro A. VolpatoandRyan d55337ba4d Add support for Mode SeventyFive (#16030)
* Initial M75H support

* Remove BSLS key

* Add M75S initial support

* Define DYNAMIC_KEYMAP_EEPROM_MAX_ADDR to allow VIA

* Add layer 1 for M75H

* Add layer 1 for M75H

* Fix layouts

* Add BOOTLOADER and remove BOOTLOADER address from rules.mk

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

Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-27 15:50:42 +00:00
QMK Bot 59f9703224 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 15:42:37 +00:00
p4yneandAlbert Y f39e65493e [Keyboard] fixed led_config: missing key, missing/wrong flags (#16048)
* fixed ledmap: missing key, missing/wrong flags

* Update keyboards/kprepublic/bm65hsrgb_iso/bm65hsrgb_iso.c

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>

* corrected c&p error user name in GPL header

Co-authored-by: Albert Y <76888457+filterpaper@users.noreply.github.com>
2022-01-27 15:41:47 +00:00
QMK Bot f25977bcd4 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 15:37:50 +00:00
KraXen72 b31f814e8c Fixes for slovak language-specific keycodes (#16019) 2022-01-27 15:36:43 +00:00
QMK Bot 2ab685565a Merge remote-tracking branch 'origin/master' into develop 2022-01-27 14:50:48 +00:00
Drashna Jaelre f6d3bede9a [Keyboard] Fix compilation issues for creatkeebs thera (#16071) 2022-01-27 14:50:04 +00:00
QMK Bot 5ee29dc000 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 14:49:24 +00:00
Damien Guard de3fdef2ca Mehkee96 LED state & count + transposed keys fixes (#16061)
* Fix transposed keys at top right of board.

* Correct LED on state

* Correct number of LEDs

* Default LED state is fine
2022-01-27 14:48:45 +00:00
QMK Bot 799de75b8b Merge remote-tracking branch 'origin/master' into develop 2022-01-27 05:16:34 +00:00
James Young a211887978 Keychron QMK Configurator Refactor (#16034) 2022-01-26 21:16:09 -08: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
James Young 52e12588c9 Krush65 Solder Refactor (#16065) 2022-01-26 21:13:07 -08:00
James Young 9e6874bd4d CK60: LAYOUT_60_iso compatibility (#16066) 2022-01-26 21:12:42 -08:00
QMK Bot 2df420f1f4 Merge remote-tracking branch 'origin/master' into develop 2022-01-27 05:02:08 +00:00
b39fc98b4d [Keyboard] Creatkeebs (#15766)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-26 21:01:33 -08: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
Ryan 8c56bfe854 CU65: Fix VIA keymap (#16062) 2022-01-26 22:01:11 +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
James Young 0a2a764155 Krush60 Solder Refactor (#16029)
* solder.h: add matrix diagram

* solder.h: remove unnecessary comments

* rework LAYOUT_60_iso to LAYOUT_60_isoenter_split_bs

True ISO layouts are not supported on this keyboard because the PCB lacks support for split Left Shift. Renames the `iso` to `isoenter` to specify this.

- denotes use of Split Backspace
- move Backslash keycode to home row

* info.json: remove trailing whitespace

* info.json: clean up

Sort the layout trees into the same order as `solder.h`, and remove the `LAYOUT_60_all` tree (doesn't exist in source).

* solder.h: align positional arguments

Helps me proof-read the layouts at a glance. No logic change.

* fix syntax errors in keymaps

* remove ISO layouts

As previously noted, ISO layouts are not supported due to the PCB's lack of support for split Left Shift.

* rename LAYOUT_60_ansi_tsangan_split_bs to LAYOUT_60_tsangan_hhkb

Also renames `60_tsangan_splt_bs` keymap to `60_tsangan_hhkb`.

* rename LAYOUT_60_ansi_tsangan to LAYOUT_60_ansi_tsangan_split_rshift

Also renames `60_tsangan` keymap to `60_ansi_tsangan_split_rshift`.

* rename LAYOUT_60_ansi_arrow_split_bs_7u_spc to LAYOUT_60_ansi_arrow_tsangan_split_bs

Also rename `60_ansi_arrow_splt_bs_7u` to `60_ansi_arrow_tsangan_split_bs`.

* rename LAYOUT_60_ansi_arrow_7u_spc to LAYOUT_60_ansi_arrow_tsangan

Also renames `60_ansi_arrow_7u` keymap to `60_ansi_arrow_tsangan`.

* rename keymaps based on layout macro used

Making this easier to track in my head while I work on it.

* info.json: fix syntax errors

* rename LAYOUT_60_ansi_split_bs_7u_spc to LAYOUT_60_ansi_tsangan_split_bs

- renames `60_ansi_split_bs_7u_spc` keymap to `60_ansi_tsangan_split_bs`
- removes `layout_aliases` entry from `info.json` (creates incompatible data conflict)

* rename LAYOUT_60_ansi_7u_spc to LAYOUT_60_ansi_tsangan

- renames `60_ansi_7u_spc` keymap to `60_ansi_tsangan`

* info.json: remove LAYOUT_60_ansi_tsangan layout_aliases entry

Causes an incompatible data conflict.

* add second layer to 60_ansi keymap

* update via keymap

Now matches the behaviour of the default keymap.

* fix syntax errors in keymaps, take 2

* add RGB and Navigation keycodes

Adds RGB and Navigation keycodes to the `60_isoenter_split_bs`, `default` and `via` keymaps.
2022-01-26 11:23:18 -08: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
Drashna Jaelre ca10e4d075 [Keyboard] Fix orientation issues for Ploopy pointing devices (#16035) 2022-01-25 13:42:54 +00:00
QMK Bot efbfd30318 Merge remote-tracking branch 'origin/master' into develop 2022-01-25 13:41:28 +00:00
Ryan 3e0ee6fb74 Fix joystick button off-by-one error (#16037) 2022-01-25 13:40:55 +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
RyanandJoel Challis 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
tofurky 6cc4e32e61 [Keyboard] Fix frosty_flake LED pin assignment (#16000)
4c080be seemed to swap the LED pins for the 20130602 and 20140521
variants. 20140521 is fine now, 20130602 untested but per the
schematics at https://deskthority.net/wiki/Costar_replacement_controllers
it seems correct.
2022-01-24 15:57:50 +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
0c3c34e589 RGB matrix effects definiton fix (#15930)
* RGB matrix effects definiton fix

* Move LTO to board rules & add some comments

* Whitespace fix

* Whitespace fix 2

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

* Whitespace fix 3

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

* Comment fix

Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>

Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2022-01-24 01:37:26 +00:00
QMK Bot 939006d2e5 Merge remote-tracking branch 'origin/master' into develop 2022-01-24 01:33:44 +00:00
Tobias Minn 0015f15f9a DZ60 - QMK Configurator fix for ISO DE Arrow layout (#15941) 2022-01-24 01:32:59 +00:00
QMK Bot 95321fbc2c Merge remote-tracking branch 'origin/master' into develop 2022-01-23 22:15:53 +00:00
Nick Brassel 7d6e15423b Add some clarity regarding new board definitions (#16018) 2022-01-23 22:15:09 +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
Olli c30bdcbca8 [Keymap] Remove Ergodox community layout “coderkun_neo2” (#16011) 2022-01-23 12:38:02 -08:00
HorrorTroll 812836e22f [Keyboard] Fixed RGB number for Devil68 Pro (#16003) 2022-01-23 12:37:17 -08: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
dnlsmy 1bc1b1b313 Update readme.md (#15989)
Spelling correction
2022-01-22 15:03:50 +00:00
QMK Bot 8863e1f696 Merge remote-tracking branch 'origin/master' into develop 2022-01-22 10:26:24 +00:00
57d116796a Add rgb matrix support for q2 of keychron. (#15946)
* Add new keyboard keychron_q1_rev_0101 for Keychron.

* Update keymaps of keychron_q1_rev_0100 and keychron_q1_rev_0102.

* Update keyboards/keychron/q1/rev_0101/rev_0101.h

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

* Update keymap.c

* Add new info.json.

* Update info.json

* Update keyboards/keychron/q1/rev_0101/keymaps/default/keymap.c

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

* Update keyboards/keychron/q1/rev_0101/rev_0101.c

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

* Update keyboards/keychron/q1/rev_0101/keymaps/via/keymap.c

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

* Update keyboards/keychron/q1/rev_0101/rev_0101.c

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

* Update keymap.c

* Update info.json

* Update all via keymaps keymaps of q1 series.  KC_TASK and KC_FLXP are now defined using the VIA user keycodes range so they can be renamed "TASK" and "TILE" as a shortName in VIA.

* Add keyboards keychron_q2 series.

* Update default keymaps of keychron_q2 series.

* Update rules.mk and MCU_LDSCRIPT specified as STM32L432xB.

* Update keyboards/keychron/q1/rev_0101/rev_0101.c

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

* Update config.h

* Update config.h

* Update config.h

* removed duplicated ifdef

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

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

* Update keyboards/keychron/q2/rev_0110/rules.mk

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

* Update keyboards/keychron/q2/rev_0110/rules.mk

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

* Update keyboards/keychron/q2/rev_0113/rules.mk

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

* Update keyboards/keychron/q2/rev_0111/rules.mk

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

* Update keyboards/keychron/q2/rev_0111/rules.mk

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

* Update keyboards/keychron/q2/rev_0112/rules.mk

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

* Update keyboards/keychron/q2/rev_0112/rules.mk

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

* Update keyboards/keychron/q2/rev_0113/rules.mk

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

* Update rev_0101.c

* Update rev_0101.

* Enable support for edit RGB lighting in VIA.

The updated design file at https://git.io/JyE0K includes only the
enabled RGB_MATRIX modes.

* Update q1.

* Add rgb matrix support for q2 of keychron.

* Update rule.mk.

* Delete comment block which is unwanted.

Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Cesar Rojas <cesar.fieoner@gmail.com>
Co-authored-by: lokher <lokher@gmail.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Adam Karim <adam@akarsoft.com>
2022-01-22 21:25:51 +11:00
QMK Bot 82c194f86c Merge remote-tracking branch 'origin/master' into develop 2022-01-22 06:16:20 +00:00
HorrorTroll 25cffa2617 [Keyboard] Add M63 RGB keyboard (#15887) 2022-01-21 22:16:16 -08:00
24eac9d3ce [Keyboard] Amend SuperLyra readme (#15942)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-21 22:15:46 -08: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
QMK Bot fa9afb9763 Format code according to conventions (#15986) 2022-01-22 06:11:51 +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
Rifaa SubektiandJoel Challis fc914e617e [Keyboard] add Yuri (#15874)
Co-authored-by: Joel Challis <git@zvecr.com>
2022-01-21 22:09:00 -08:00
QMK Bot e137e39911 Merge remote-tracking branch 'origin/master' into develop 2022-01-22 05:57:32 +00:00
Albert YandDrashna Jaelre 61246deec5 [Keyboard] Code consistency updates for CRKBD (#15779)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-01-21 21:57:03 -08:00
QMK Bot b91efb896d Merge remote-tracking branch 'origin/master' into develop 2022-01-22 05:55:41 +00:00
Charly Delay ef091d39d2 bastardkb/charybdis: add support for Charybdis (4x6 and 3x5) (#15333) 2022-01-21 21:55:04 -08:00
QMK Bot 72dc5d5862 Merge remote-tracking branch 'origin/master' into develop 2022-01-22 05:32:01 +00:00
HorrorTroll 814821727e [Keyboard] Move Handwired K552 into my folder name (#15973) 2022-01-21 21:31:27 -08: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
b131ebb8dd [Keyboard] Add The Boulevard keyboard (#15583)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-21 20:26:46 -08:00
Drashna Jael're 102cec8241 Merge remote-tracking branch 'origin/master' into develop 2022-01-21 20:11:30 -08:00
7ecb47958c [Keyboard] add fuji65 keyboard (#15765)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-21 19:53:53 -08:00
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
Drashna Jaelre b090ff03ed [Keymap] Drashna's OLED rewrite (#15981) 2022-01-21 19:36:52 -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
Albert Y 8901c9eca1 Add Atom editor suggestion (#15969) 2022-01-22 02:48:35 +11:00
QMK Bot 2f5c70e834 Merge remote-tracking branch 'origin/master' into develop 2022-01-21 14:18:11 +00:00
Gigahawk ad09160b03 docs: fix typo in led matrix docs (#15972) 2022-01-21 14:17:19 +00:00
QMK Bot be6a4745ae Merge remote-tracking branch 'origin/master' into develop 2022-01-21 01:30:48 +00:00
Wolf Van HerrewegheandWolf Van Herreweghe 94624d64ba Update keymap on the TS60 (#15963)
Co-authored-by: Wolf Van Herreweghe <wolfvh@getupgamesofficial.com>
2022-01-21 12:30:17 +11:00
QMK Bot ecfa4172d0 Merge remote-tracking branch 'origin/master' into develop 2022-01-20 23:20:58 +00:00
Gigahawk 2baca55cda docs: fix typo in rgblight docs (#15960) 2022-01-20 23:20:56 +00:00
QMK Bot c9866313a7 Merge remote-tracking branch 'origin/master' into develop 2022-01-20 23:20:26 +00:00
Ryan 682ccec853 Remove community-supported keyboards list from readme (#15957) 2022-01-20 23:20:24 +00:00
Ryan e7cd8c4806 Remove QMK_SUBPROJECT definitions in makefile (#15958) 2022-01-20 23:19:50 +00:00
QMK Bot edf9d33e61 Merge remote-tracking branch 'origin/master' into develop 2022-01-20 20:14:40 +00:00
Petr Viktorin be06ef6af5 [Docs] Fix typo in ADNS 9800 sensor name (#15956) 2022-01-20 12:14:09 -08:00
QMK Bot fe1f53ce8f Merge remote-tracking branch 'origin/master' into develop 2022-01-20 20:12:20 +00:00
Gigahawk 1a676c927f Add missing STM32F405 definition in qmk.constants (#15937) 2022-01-21 07:11:24 +11:00
QMK Bot 36b7a13be9 Merge remote-tracking branch 'origin/master' into develop 2022-01-20 17:25:31 +00:00
39a5ffd782 [Keyboard] add Plexus75_HE (#15634)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-20 09:24:51 -08: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
Andre Brait 6156e6da8d Small code improvements, fix KVM switch issues with GMMK Pro on andrebrait's keymap (#15943)
* Add LED table

* Make constants constant

* Disable Mousekey to fix issues with KVM

Fixes #15939

* Update GMMK/pro/ansi/andrebrait README
2022-01-19 20:53:21 +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
RyanandNick Brassel 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
Nick Brassel 91e50209e7 Fixup build. (#15931) 2022-01-19 11:21:08 +11:00
QMK Bot 3a01f51063 Merge remote-tracking branch 'origin/master' into develop 2022-01-19 00:19:22 +00:00
James Young 47f978e9cc Remove keyboard_folder instances from info.json files (#15932)
* remove `keyboard_folder` instance from caffeinated/serpent65

* remove `keyboard_folder` instances from dumbpad

* remove `keyboard_folder` instances from mlego directory

* remove `keyboard_folder` instance from neopad/rev1

* remove `keyboard_folder` instance from spaceman/pancake/rev2
2022-01-19 00:18:45 +00:00
QMK Bot b825af0728 Merge remote-tracking branch 'origin/master' into develop 2022-01-18 18:25:03 +00:00
f6a7f4d4ac update the Chinese translation based on the latest English version (#14924)
Co-authored-by: peepeetee <43021794+peepeetee@users.noreply.github.com>
Co-authored-by: Joy Lee <chang.li@westberrytech.com>
Co-authored-by: LitoMore <LitoMore@users.noreply.github.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2022-01-18 18:24:02 +00:00
QMK Bot 9a65cc39da Merge remote-tracking branch 'origin/master' into develop 2022-01-17 19:01:26 +00:00
moyi4681 8a3dfe2246 [Keyboard] fix odin rgb light error (#15914) 2022-01-17 11:00:48 -08:00
QMK Bot fb65f07832 Merge remote-tracking branch 'origin/master' into develop 2022-01-17 14:12:32 +00:00
Albert YandJoel Challis b8951a0458 Add LAYOUTS entry to rules.mk (#15900)
* Add layouts to rules.mk

* Remove excess settings.

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

Co-authored-by: Joel Challis <git@zvecr.com>
2022-01-17 14:11:58 +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
Nick Brassel d02be63000 Revert "update keyboard_aliases.json (#15649)" (#15903)
This reverts commit b24603ab7d.
2022-01-17 06:58:48 +11:00
QMK Bot 069e232bab Merge remote-tracking branch 'origin/master' into develop 2022-01-16 19:54:12 +00:00
peepeetee b24603ab7d update keyboard_aliases.json (#15649) 2022-01-17 06:53:43 +11: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
Bartosz Nowak 5380e6758c Fix dactyl manuform 6x6 LAYOUT_6x6_5_thumb rendering (#15891) 2022-01-15 20:23:09 +00:00
QMK Bot 02637ec350 Merge remote-tracking branch 'origin/master' into develop 2022-01-15 07:51:29 +00:00
Drashna Jaelre 7edfb4deff [Keyboard] Fix compilation issues for mechlovin hex4b (#15885) 2022-01-14 23:51:02 -08:00
QMK Bot 9cd2024814 Merge remote-tracking branch 'origin/master' into develop 2022-01-15 07:28:32 +00:00
Drashna Jaelre 5bad37cb56 [Bug] Remove config.h include in dynamic_keymap.c (#15886) 2022-01-15 18:28:29 +11:00
Paul James 922e29f16c [Keyboard] Add Rosaline (#15595) 2022-01-14 23:28:03 -08:00
QMK Bot b8dbebec2d Merge remote-tracking branch 'origin/master' into develop 2022-01-15 07:27:06 +00:00
HorrorTroll b2ea12aaa5 [Keyboard] Add Devil68 Pro (#15820) 2022-01-14 23:26:26 -08:00
QMK Bot f07ea255a9 Merge remote-tracking branch 'origin/master' into develop 2022-01-15 05:49:44 +00:00
GG 2e266c7ec1 [Keyboard] Fix encoder bug zoom65 and zoom65_litte (#15876) 2022-01-14 21:49:11 -08: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
Conor Burns f8870a4c8a [Keymap] added keymap conor with rgb layers (#15234) 2022-01-14 11:06:24 -08:00
QMK Bot 90f2a03895 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 18:58:43 +00:00
ca0f922e07 [Keyboard] Add Keychron_q1 rev_0101 and Keychron q2 series (#15025)
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: Cesar Rojas <cesar.fieoner@gmail.com>
Co-authored-by: lokher <lokher@gmail.com>
Co-authored-by: Adam Karim <adam@akarsoft.com>
2022-01-14 10:58:09 -08:00
QMK Bot 71a9384f49 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 14:48:10 +00:00
Ryan 9e92d8a905 Make note of upper limit for UC() (#15870) 2022-01-14 14:47:36 +00:00
QMK Bot cfc136f198 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 14:47:32 +00:00
Ryan 61f0292f11 Remove network drive mapping comment for WSL (#15871) 2022-01-14 14:46:47 +00:00
QMK Bot b7fb5f9987 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:42:48 +00:00
Ryan SmithandDrashna Jaelre fd4adbc0cc [keyboard] Adding Atlas_65 (#15839)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-01-13 20:42:11 -08:00
QMK Bot fba519116d Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:41:11 +00:00
e865cab48e [Keymap] ericgebhart keymap and userspace updates (#15727)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
Co-authored-by: Drashna Jael're <drashna@live.com>
2022-01-13 20:40:41 -08:00
QMK Bot a7e1de81ff Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:38:56 +00:00
asdfire1 0f110737db [Keyboard] Add VIA support for the Drop Alt (#15857) 2022-01-13 20:38:25 -08:00
QMK Bot 85743b9f32 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:38:08 +00:00
851cb7e406 [Keyboard] and CB87v2 and CB87RGB and fixed CB1800 and CB87 (#15824)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-13 20:37:40 -08:00
QMK Bot 7b75aa1818 Merge remote-tracking branch 'origin/master' into develop 2022-01-14 04:34:21 +00:00
Bartosz Nowak 5d51fd4015 [Keyboard] Fixing dactyl manuform 6x6 warnings (#15868) 2022-01-13 20:33:39 -08:00
QMK Bot 15d385a862 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 21:56:21 +00:00
Tuk Bredsdorff 8fe320baa6 Fix keymap.json macro example (#15567) 2022-01-13 21:55:48 +00:00
QMK Bot c93dc153f1 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 20:44:40 +00:00
peott-fr ae9feed566 Adding Quefrency keymap (#15852) 2022-01-13 20:43:40 +00:00
QMK Bot 66ef608726 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 19:58:56 +00:00
Drashna Jaelre 2fa43de6f6 [Keyboard] Fix xox70hot via layout (#15863) 2022-01-13 19:58:19 +00:00
QMK Bot 7cbada6902 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 19:03:21 +00:00
4bc9adbc64 [Keyboard] Add UM-A Keyboard (#15584)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: online <33636898+online@users.noreply.github.com>
2022-01-13 11:02:38 -08:00
QMK Bot c02be0012e Merge remote-tracking branch 'origin/master' into develop 2022-01-13 19:01:15 +00:00
b3c0548ed3 [Keymap] Lily58 : HELL0 NAVI. Interface (#15469)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-01-13 11:00:35 -08:00
QMK Bot 354eedae7a Merge remote-tracking branch 'origin/master' into develop 2022-01-13 18:59:54 +00:00
fOmey 8a6da095d2 [Keyboard] Atlantis AK81_VE support (#15392) 2022-01-13 10:59:16 -08:00
QMK Bot 0d88d277e4 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 17:20:41 +00:00
6770f77270 [Keyboard] HoodrowG PCB (#15474)
Co-authored-by: Julian <julianzabala1@gmail.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-13 09:20:29 -08:00
Ibnu Daru Aji 2f68e05884 [Keyboard] new layout for squiggle (#15683) 2022-01-13 09:19:51 -08: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
5c583851f9 [Keyboard] Add Dactyl Manuform 6x6_4 and Kinesis keyboards (#15475)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-13 09:18:20 -08:00
Lucas W ddc4c0d252 [Keymap] Kyria new custom keymap lw (#15729) 2022-01-13 09:17:54 -08:00
QMK Bot 3f5d47eae8 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 17:17:06 +00:00
Alin Marin Elena d1eac29354 [Keyboard] remove duplicate m65 (#15831) 2022-01-13 09:16:59 -08:00
QMK Bot 856f49cf48 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 17:16:47 +00:00
Alin Marin Elena 2c8098ea88 [Keyboard] move enum_layers in keymaps, in sync with the other mlego/m* (#15832) 2022-01-13 09:16:26 -08:00
QMK Bot 4f79b57774 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 17:16:06 +00:00
Reibl János Dániel a3af4b09b0 [Keymap] Misc userspace and keymap improvements (#15844) 2022-01-13 09:16:03 -08:00
Albert Y e2d1547f31 [Keyboard] Switch a_dux, cradio and ferris to split_3x5_2 (#15850) 2022-01-13 09:15:01 -08:00
QMK Bot 3058bf0f83 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 12:48:06 +00:00
Drashna Jaelre d0c8f2f822 [Keyboard] Fix Simpler6x boards (#15862)
* [Keyboard] Fix simpler64

* [Keyboard] Fix simpler61
2022-01-13 12:47:25 +00:00
QMK Bot 2b1f97dcc2 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 05:00:26 +00:00
Choi ByungyoonandDrashna Jaelre aa9577b371 [Keymap] Add personal keymap to GMMK Pro ANSI (#15314)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-01-12 20:59:45 -08: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
Albert Y 731072fc5c [Keyboard] Fix compile error caused by variable exclusion on Moonlander (#15860) 2022-01-12 18:38:34 -08:00
QMK Bot 69e4c18153 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 02:29:55 +00:00
Albert YandDasky 362a65510a [Docs] Move QMK newbs build environment guide to next section (#15386)
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2022-01-13 02:29:13 +00:00
QMK Bot 2609c49731 Merge remote-tracking branch 'origin/master' into develop 2022-01-13 02:14:13 +00:00
James Young 06b329cdb9 kbdfans/kbd67/mkiirgb/v4: remove duplicate definitions from config.h (#15858) 2022-01-12 18:13:35 -08: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
5f2b62528c [Keyboard] add Endless80 keyboard (#15022)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-12 15:06:02 -08:00
QMK Bot 8b188e060c Merge remote-tracking branch 'origin/master' into develop 2022-01-12 23:05:58 +00:00
f2a31b944d [Keyboard] Add KBIC65 keyboard (#15151)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Karl Berggren <berggren.karl+git@gmail.com>
Co-authored-by: spacefrogfeds <73514335+spacefrogfeds@users.noreply.github.com>
Co-authored-by: Karl Berggren <karber@raysearchlabs.com>
2022-01-12 15:05:19 -08: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
Kevin HartleyandRyan b79e329ab8 [Keymap] Planck Keymap: Inkwell (#14311)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-12 14:20:54 -08:00
QMK Bot 96209d7eba Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:16:17 +00:00
6d06e7ce84 [Keyboard] add AddOn macropad (#15841)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-12 14:15:27 -08:00
peepeeteeandkakunpc 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
4c8bb05dab [Keyboard] Add Simpler60 support (#15499)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-12 14:11:33 -08:00
QMK Bot 99706e038b Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:11:30 +00:00
9911ba51b0 [Keyboard] Add Signature65 (#15698)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-12 14:10:58 -08:00
QMK Bot cf954bbfd0 Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:10:48 +00:00
owlab-git 59ea420992 [Keyboard] Add OwLab Spring (#15614) 2022-01-12 14:10:16 -08:00
QMK Bot 6e516ee89f Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:10:08 +00:00
2c18dcc619 [Keyboard] Add Hex4B rev.2 PCB (#15811)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-12 14:09:33 -08:00
QMK Bot 42a49ba44f Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:09:11 +00:00
James Young ed15197967 NoPunIn10Did Kastenwagen touch-up (#15836) 2022-01-12 14:08:37 -08:00
QMK Bot 43d18321e3 Merge remote-tracking branch 'origin/master' into develop 2022-01-12 22:06:23 +00:00
c4b0a06c79 [Docs] Improve Handedness by EEPROM documentation (#15615)
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
Co-authored-by: filterpaper <filterpaper@localhost>
2022-01-12 14:05:45 -08:00
QMK Bot 58769a40de Merge remote-tracking branch 'origin/master' into develop 2022-01-12 01:08:02 +00:00
JayceFayne 93e55605d9 [Docs] fix typo and remove trailing whitespace (#15842) 2022-01-11 17:07:24 -08:00
Alabastard-64andDrashna Jaelre 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
Will Winder 1f618c8302 keyhive sofle rgb: fix configuration. (#15339)
* keyhive sofle rgb: fix configuration.

* Add Colemak-DH and cycle layer keycode.

* Fix indentation.

* Add PLACEHOLDER for better readability.

* Fix breaking changes.

* Just one colemak.

* PR Cleanup

* Use NO_PIN definition instead of C7
* Define animations individually
* Remove via json file and update documentation
* Reduce LED brightness, one of the animations caused a crash

* More PR feedback.

* Better credit.
* Disable NKRO.

* Cleanup RGB configuration.

* animations defined in keymap.

* Update keyboards/sofle/keyhive/readme.md

* PR Feedback.

* Update phrasing from template.

* Disable RGBLIGHT_ENABLE in keymap for better compatibility with default keymap.

* Set a default animation.

* Use default in keyboard readme.

* Update keyboards/sofle/keyhive/info.json

* Move via specific layout into via keymap.
2022-01-11 12:17:37 -08:00
QMK Bot 5e817664ad Merge remote-tracking branch 'origin/master' into develop 2022-01-11 18:09:11 +00:00
1fdc42155a [Keyboard] Carpolly (#15778)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-11 10:08:35 -08:00
QMK Bot fd98d78cd8 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 18:07:58 +00:00
dlgoodrandDrashna Jaelre 349ca4b7ff [Keyboard] handwire: 3dfoxc (#15739)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-01-11 10:07:51 -08:00
peepeetee 1df3711432 [Keyboard] AMJ84 (#15742) 2022-01-11 10:07:14 -08: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
Albert Y 3d63c814d3 Correct matrix effect name (#15816) 2022-01-11 09:57:25 -08:00
kb-elmo 3124dfc5cd [Keyboard] Add RGB matrix to CK60 (#15817) 2022-01-11 09:57:03 -08:00
QMK Bot aebf17b7e2 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 17:56:03 +00:00
0963140149 [Keymap] Jonavin keymap kastenwagen48 (#15825)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Jonavin <=>
2022-01-11 09:56:01 -08:00
Fredrik Larsen 052a59fc3b [Keyboard] Use correct callback in macro1 implementation (#15819) 2022-01-11 09:55:24 -08:00
QMK Bot 52acb7dcac Merge remote-tracking branch 'origin/master' into develop 2022-01-11 17:43:47 +00:00
Drashna Jaelre bda520198e [Keyboard] Fix KBD67 mark 2 v4 (#15835) 2022-01-11 09:42:58 -08: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
4c298a9dd5 [Keyboard] Add Alicia Cook keyboard (#11722)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: robby-hartana <robby@alumagubi.com>
2022-01-10 19:20:01 -08:00
QMK Bot 012db45bfb Merge remote-tracking branch 'origin/master' into develop 2022-01-11 03:15:35 +00:00
Alin Marin ElenaandJames Young 01e4d07de0 [m65] add via, new mcu gd32f303, stm32f401 weact support for encoder and led strip (#14381)
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-01-10 19:14:54 -08:00
QMK Bot 75bba4522d Merge remote-tracking branch 'origin/master' into develop 2022-01-11 03:12:50 +00:00
e2aee8f9bb [Keyboard] add kbd67mkiirgb v4 support (#15024)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-01-10 19:12:17 -08:00
QMK Bot 113b0f04bc Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:58:04 +00:00
Winston Durand c6ad202583 [keymap] Add massdrop/ctrl R167 keymap (#15585) 2022-01-10 17:57:20 -08:00
QMK Bot dff6f23a1a Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:48:23 +00:00
Alin Marin Elena 7275680364 [Keyboard] M60 simple 5x12 in lego keyboard (#15534)
* add m60 lego case, with stm32f401

* Update keyboards/mlego/m60/m60.h

* Update keyboards/mlego/m60/keymaps/default/keymap.c

* Update keyboards/mlego/m60/m60.h

* Update keyboards/mlego/m60/keymaps/via/keymap.c

* address the moving of enum in keymaps
2022-01-10 17:47:52 -08:00
QMK Bot 461f279883 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:44:04 +00:00
6823f01c10 [Keyboard] New kbd Navpad 1.0 (#15507)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: keyaki-namiki <28521374+keyaki-namiki@users.noreply.github.com>
2022-01-10 17:43:36 -08:00
QMK Bot 9b07108fbf Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:39:46 +00:00
jecassis 8920db2b57 [Keyboard] Add system76/launch_1 keyboard (#15395)
* WIP: virgo keyboard

* Finish layout

* Enable debugging and format

* Debug keypresses

* Add function layer

* Fix whitespace

* Fix some more whitespace

* Add Jeremy's map

* Add left split ortho 2U board

* Enabled extrakeys for volume & media control

* More work on split ortho 2U...
...but still not complete

* Finish default layout

* Fix many issues by renaming the keyboard

* Add right half as a keyboard

* Update config for right side

* WIP: Add split ortho 2U board

* WIP: Correct rules & config

* More work on split ortho

* More work on split ortho 2u

* Nearing completion on split ortho

* Remove left and right separate keyboards.
Split ortho 2U is complete and they are not needed.

* Add uglydense keyboard

* Rename directory for uglydense

* Swap right Fn and right ctrl keys

* Add jeremy's layout

* Add ian layout

* Add reset key, which is very useful for flashing.

* Add Levi's layout

* Update Levi's layout

* Fix Levi's Layout

* Fix Levi's layout again

* Add a README with some basic information

* Add keymap customization info to uglydense readme

* Make the readme make a little more sense.

* Make John a layout with left fn and left super swapped

* Update John's layout

* Add Carl's layout

* Add Sean's layout

* Add reset keys to all layouts

* Swap LALT & LGUI on default layout

* shpurk keyboard: initial commit

* Add nathaniel & shpurk layouts

* Update instructions to include necesarry dependencies

* Add Lrrr keyboard, ruler of Omicron Persei 8

* Update README for Lrrr

* Update Lrrr it uses Caterina bootloader
Also B1 wasn't working for Row 6, so I changed that to F6

* Swap RCTL & RALT

* Un-swap RCTL and RALT, making RCTL closer to right thumb

* Add printscreen to my layout

* Rename lrrr to Launch, enbiggen L-Shift to 2U

* Add layout files for Launch

* Rename launch to launch_1

* Add levi layout for ortho_split_2u

* Update carl keymap

* Add launch testboard

* Implement keyboard keycode reading using raw hid

* Enable dynamic keymap

* Add config support to launch_1

* Implement probe command, make logical key names match configurator

* Update logical key names again

* Add layout generator for keyboard configurator

* Add board name and version

* Add board name and version to test board

* Fix issues with compiling board and version commands

* Rename uglydense to launch_alpha_1 and launch_1 to launch_alpha_2

* Generate layouts for other launch prototypes

* Fix launch_alpha_1 logical names

* Add launch_beta_1

* Fix building production hex file with atmel-dfu bootloader

* Limit backlight brightness

* USB mux handling

* Allow repeat start

* Do USB MUX init before bootmagic

* Fixes for mux init

* Fix register write size for programmable function control

* Ensure bit shifts are correct

* Improve documentation

* Fix when i2c read ack condition happens

* Fix extra start in i2c_set

* Add ISP instructions

* Add fuse information

* Refactor

* Add RGB matrix support

* Fix RGB matrix

* Update Jeremy layout

* Enable audio controls

* Update Jeremy layout

* Ensure that n-key rollover is used

* Port changes to other launch boards

* Configuration values for starting HSV and speed (#7740)

* Define default HSV and speed for RGB matrix.

* Documentation for configuration values RGB_MATRIX_STARTUP_HUE, RGB_MATRIX_STARTUP_SAT and RGB_MATRIX_STARTUP_VAL.

* Document RGB_MATRIX_STARTUP_SPD.

* Preserve the ordering.

* Set default RGB mode, hue, and saturation

* Reduce AVR clock to 8MHz

* Update launch_beta_1 with new USB ID

* Update default LED mode

* Set default hue

* Disable RGB while suspended

* Add led value and color commands

* Add max value to CMD_LED_GET_VALUE

* Do not save custom mode to eeprom

* Add reset to bootloader command for Launch keyboard

* Rename launch_beta_1 to launch_1

* Enable LTO when compiling for launch_1

* Allow setting individual LED's

* Convert tabs to spaces

* Unlock on RESET keypress:
- Display unlock pattern
- Disable LED get/set functions
- Enable reset to bootloader function

* Reduce brightness of rainbow backdrop in unlock pattern

* Add hid commands for setting led matrix mode

This changes the color setting to not change the mode, and set the hue
and saturation for QMK effects.

* Fix `CMD_LED_GET_MODE`

* Add Levi's Launch layout

* Fix layer mistake in Levi's Launch layout

* Add matrix command

* Define default RGB matrix speed

* Add active_keys effect

* Move definition of RGB modes inside ifdef testing for custom RGB modes

* RGB parameters per layer

* fix: Call `system76_ec_rgb_layer` after setting mode

* Include layer 3 and 4 in default layout for launch_1

I added support for layer 3 and 4 to the Configurator, but it seems to
load bogus values.

`dynamic_keymap_reset()` has a comment saying:
```
// Reset the keymaps in EEPROM to what is in flash.
// All keyboards using dynamic keymaps should define a layout
// for the same number of layers as DYNAMIC_KEYMAP_LAYER_COUNT
```

Other keyboards seem to have default layouts that only list the first
two layers while setting `DYNAMIC_KEYMAP_LAYER_COUNT` to 4, but
whatever. This appears to make the Configurator behave as expected with
layer 3 and 4.

* Use EEPROM to store RGB parameters

* Add layer 2 and 3 to other keymaps

* Add LED_SAVE command

* Use eeprom_update_block to improve performance

* Revert "Configuration values for starting HSV and speed (#7740)"

This reverts commit de1f60fd370b4769336b8a707ee12657aee46412.

* Update launch_1 rules.mk for changes in Qmk

* WIP keycodes matching EC behavior

* Modify default layout to match design

* Apply updates to jeremy layout

* Improvements to RGB keycodes

* system76_ec: Add mode to disable layer backlight

* launch_1: Use `KC_NO` instead of `KC_TRNS` for default layout

* Revert "launch_1: Use `KC_NO` instead of `KC_TRNS` for default layout"

This reverts commit f71c5e7ac3cecbbb1a1f8934db1f329407fef041.

* Fix building bootloader

* Workaround for upstream orientation

* Custom USB IDs for USB hubs, disable USB hub feature controller

* Set USB mux orientation in a loop for one second

* Set mux orientation 100 times with 10 ms delay

* Update Jeremy's keymap

* Update Levi's Launch keymap

* Update flashing instructions and rewrite layout design instructions

* Update README.md

* Add a system76_ec command to disable input events

For testing purposes.

* Enable system76/launch_1 keyboard to work with QMK Firmware 0.15.3

 - Migrate system76/launch_1 from 0.7.103:
   - Explicitly enable used RGB matrix effects
   - Initialize flags field of `rgb_config_t` union/struct
   - Account for header and source file location changes
   - Update AVR platform makefile with Atmel DFU bootloader option
   - Update ATmega32U4 bootloader to latest from Microchip
 - Format C sources with ClangFormat
 - Format Markdown text with Prettier

* Remove System76 pre-release or test keyboards and keymaps

* Add licensing and replace guards in headers for system76/launch_1

* Remove options impact for system76/launch_1

* Revert AVR platform changes for `atmel-dfu` bootloader

* Update system76/launch_1 README

* Add system76/launch_1 information JSON file

* Replace `util/delay.h` timing abstractions in system76/launch_1

* Use I2C QMK abstractions in system76/launch_1

* Fully revert AVR platform changes for `atmel-dfu` bootloader

* Move `layouts.sh` into `keyboards/system76`

* Implement GitHub PR suggestions for system76/launch_1

* Make additional system76/launch_1 updates

* Implement minor system76/launch_1 change requests

* Add custom version of Bootmagic Lite and document fuse values for system76/launch_1

* Remove the RESET HID command from system76/launch_1

* Reorder `process_record_user` in system76/launch_1

* Add `post_rules.mk` to system76/launch_1

* Fix overlapping key in sytem76/launch_1
2022-01-10 17:39:10 -08:00
QMK Bot 8e1269617a Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:37:16 +00:00
da1a01b811 [Keyboard] Add Nebula65B (#15433)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
Co-authored-by: yiancar <yiancar@gmail.com>
2022-01-10 17:36:44 -08:00
QMK Bot 92ec98d5ce Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:33:20 +00:00
79a8b55af2 [Keyboard] add info.json for bongopad (#15355)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Joel Challis <git@zvecr.com>
2022-01-10 17:32:45 -08:00
QMK Bot d4e05f6df3 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:31:53 +00:00
6acfb61159 [Keyboard] TKC Candybar R3 (#15374)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: James Young <18669334+noroadsleft@users.noreply.github.com>
2022-01-10 17:31:16 -08:00
QMK Bot 0b9324f332 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:17:43 +00:00
Tobias Minn 951fa1020b DZ60 - ISO DE Arrow keymap + layout (#14221) 2022-01-10 17:17:11 -08:00
cedriklandCedrik Lussier 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
KhangandRyan 6a045e93f7 [Keymap] Add keebio/iris keymap (#14688)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-10 17:11:57 -08:00
QMK Bot 4b9f73d32e Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:10:03 +00:00
MewpandMewp c05d3eb365 [Keyboard] Fix suspend issues on ergodox_ez. (#15300)
Co-authored-by: Mewp <git@mewp.pl>
2022-01-10 17:09:15 -08:00
QMK Bot a760168722 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:09:14 +00:00
mechlovinandRyan ffebc0407c [Keyboard] Add Kay60 PCB (#15566)
Co-authored-by: Ryan <fauxpark@gmail.com>
2022-01-10 17:08:32 -08:00
QMK Bot c6277687b4 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 01:07:56 +00:00
rhmokey adaaee4edf [Keyboard] Add xox70hot (#15632) 2022-01-10 17:07:09 -08:00
QMK Bot 79f2fca1f9 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:58:16 +00:00
Alan Pocklington dce611bc9f [Keymap] AJP10304 layout, add Colemak-DHm layer (#15582) 2022-01-10 16:57:41 -08: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
adlainewson 069ef7eb9e [Docs] newbs_flashing.md: add link to build environment section (#15654) 2022-01-10 16:54:22 -08:00
Chuck Lauer Vose 101f504435 [Keyboard] Rename Laptreus to Shapeshifter4060 (#15655) 2022-01-10 16:53:54 -08:00
QMK Bot bc617d8ad1 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:53:34 +00:00
LucWandluc wastiaux dd4e48b4a2 [Keymap] dvorak 42 key layouts (Ergodox EZ / Atreus) updates (#15656)
Co-authored-by: luc wastiaux <luc.wastiaux@airpost.net>
2022-01-10 16:52:54 -08:00
QMK Bot a5a3918856 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:51:40 +00:00
Carlo Sala cb821b5f16 [Keymap] fix: moving keymap to rev1 folder (#15663) 2022-01-10 16:51:09 -08:00
QMK Bot 6ed4f51413 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:50:47 +00:00
Batın EryılmazandDrashna Jaelre 37ba5e4892 [Keymap] Add new The GMMK PRO keymap (#15664)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-01-10 16:50:12 -08: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
GG 19fe7dcaaa [Keyboard] Fixed bugs Wuque Mammoth Keyboard Series (#15700) 2022-01-10 16:49:19 -08:00
Matthew DewsandDrashna Jaelre 0fc1ae9e9c [Keyboard] handwired/dactyl_manuform: add 6x7 version (#15704)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2022-01-10 16:48:49 -08:00
QMK Bot 93149711f6 Merge remote-tracking branch 'origin/master' into develop 2022-01-11 00:45:05 +00:00
Albert Y ecc06a9700 [Keyboard] Simplify default keymap to Seniply (#15731) 2022-01-10 16:45:02 -08:00
Jordan Blackbourn cd12b54650 [Keyboard] Added via support for orthocode (#15777) 2022-01-10 16:44:18 -08: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
372c9102e2 [Keymap] Jonavin gmmk pro iso keymap (#15775)
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Jonavin <=>
2022-01-10 16:41:54 -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
Evelien Dekkers 53359ab2ee [Keyboard] Add Aves60 (#15770) 2022-01-10 15:06:19 -08:00
QMK Bot 20e16bbcc4 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 23:05:34 +00:00
James Young 590ec4ae04 add ortho_4x16 Community Layout (#15776) 2022-01-10 15:05:29 -08:00
Albert Y d9d8526ca2 [Keyboard] Update Cradio readme (#15784) 2022-01-10 15:04:54 -08: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
takishimandtakishim 0b32bddd65 [Keyboard] Add mikeneko65 keyboard (#15792)
Co-authored-by: takishim <tadashi@kishimo.to>
2022-01-10 15:02:12 -08:00
QMK Bot 1a4db497db Merge remote-tracking branch 'origin/master' into develop 2022-01-10 23:02:04 +00:00
Albert Y cfabc3b028 Add layout for split 3x5_2 (#15800) 2022-01-10 15:01:44 -08:00
FearlessSpiff 8f630c17b9 [Keymap] Add Fearless Spiff keymap for Mechwild Mercutio based on Bongocat and Jonavin (#15802) 2022-01-10 15:01:32 -08: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
Drashna Jaelre 9bcb33f0da [Keyboard] Fix compilation issues for Dygma Raise (#15810) 2022-01-10 15:00:08 -08:00
QMK Bot e014d9897d Merge remote-tracking branch 'origin/master' into develop 2022-01-10 23:00:06 +00:00
Drashna Jaelre 0284639913 [Keyboard] Fix compiled size for Kudox Full keyboard (#15809) 2022-01-10 14:59:51 -08:00
Drashna Jaelre e4f0c79413 [Keyboard] Enable RGB Matrix Animations on KBD67 mkIII ISO (#15808) 2022-01-10 14:59:33 -08: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
nopunin10did 2dd7242e99 [Keyboard] Kastenwagen 1840 and Kastenwagen 48 (#13565)
* cleaning up

* deleting to undelete

* Stub out defaults

* Jabberwocky firmware WIP

* Stubbing out keymap spacing

* Default keymap and layout updates

* start stubbing out JSON for configurator

* more WIP

* Update jabberwocky.h

* Add Readme

* Apply suggestions from code review

* Fix layout capitalization

* Updates to personal and default keymaps

* Add instructions for jumping the bootloader

* Update keyboards/nopunin10did/jabberwocky/rules.mk

* Add easier ctrl-alt-del to my keymap

* Start stubbing out KW firmware

* More firmware and keymap stuff

* Fix compile error

* Filling out other layers in default keymap

* Update layout JSON and finish default layouts

* Add rotary and LED code

* Add VIA support (first draft)

* Move VIA compatibility to VIA-specific branch

* Fix readme formatting

* Fix state count issue in LED code

* Fix an erroneous change to a Jabberwocky file

* Default LEDs to on.

* Apply suggestions from code review

* Delete kastenwagen.json

* Update keyboards/nopunin10did/kastenwagen/config.h

* Apply suggestions from code review

* Apply suggestions from noroadsleft code review

* Update image in the readme

* Split 1840 & 48 into two boards (part 1)

* Splitting into two keyboards (part 2)
2022-01-10 12:36:02 -08:00
QMK Bot 017c26c167 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 20:33:24 +00:00
TerryMathews 0e11f8ec20 [Keyboard] TKC California (#15124)
* CALIFORNIA: Initial support for TKC California

* update readme.md, info.json

* Update keyboards/tkc/california/rules.mk

* Update keyboards/tkc/california/rules.mk

* Update keyboards/tkc/california/readme.md

* Update keyboards/tkc/california/rules.mk

* Update keyboards/tkc/california/info.json
2022-01-10 12:32:46 -08:00
QMK Bot 0b4afdf35b Merge remote-tracking branch 'origin/master' into develop 2022-01-10 20:16:17 +00:00
Alin Marin Elena f423837ed2 [Keyboard] M48 12x4 lego ortholinear keyboard (#15536) 2022-01-10 12:15:28 -08:00
QMK Bot 371fc8c062 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 19:06:34 +00:00
moyi4681 23ba884fa0 [Keyboard] add dz64rgb support (#15553)
* add dz64rgb support

* Update keyboards/dztech/dz64rgb/dz64rgb.c

* Update keyboards/dztech/dz64rgb/rules.mk

* Update keyboards/dztech/dz64rgb/dz64rgb.c

* Update keyboards/dztech/dz64rgb/rules.mk

* Update keyboards/dztech/dz64rgb/rules.mk

* Update keyboards/dztech/dz64rgb/rules.mk
2022-01-10 11:05:53 -08:00
QMK Bot d52dca47e8 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 19:00:14 +00:00
moyi4681 50d46b5003 [Keyboard] add kbd75rgb support (#15552)
* add kbd75rgb support

* Update keyboards/kbdfans/kbd75rgb/config.h

* Update keyboards/kbdfans/kbd75rgb/rules.mk

* Update keyboards/kbdfans/kbd75rgb/rules.mk

* Update keymap.c

* Update keymap.c

* Update readme.md

* Update keyboards/kbdfans/kbd75rgb/config.h

* Update keyboards/kbdfans/kbd75rgb/config.h

* Update keyboards/kbdfans/kbd75rgb/config.h

* Update keyboards/kbdfans/kbd75rgb/rules.mk

* Update keyboards/kbdfans/kbd75rgb/rules.mk

* Update keyboards/kbdfans/kbd75rgb/keymaps/default/keymap.c

* Update keyboards/kbdfans/kbd75rgb/keymaps/default/keymap.c

* Update keyboards/kbdfans/kbd75rgb/keymaps/default/keymap.c

* Update keyboards/kbdfans/kbd75rgb/keymaps/default/keymap.c

* Update keyboards/kbdfans/kbd75rgb/rules.mk
2022-01-10 10:59:42 -08: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
Albert YandNick Brassel 8a4fae3b32 [Docs] Recommend the use of RGB matrix functions for code (#15744)
* Recommend the use of functions instead of keycodes

* Commit suggested review

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

Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-01-11 03:23:28 +11:00
Albert YandNick Brassel 63d3ad155a [Docs] Recommend the use of RGB light functions for code (#15745)
* Recommend the use of functions instead of keycodes

* Commit suggested revision

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

Co-authored-by: Nick Brassel <nick@tzarc.org>
2022-01-11 03:23:07 +11:00
QMK Bot b4b636112e Merge remote-tracking branch 'origin/master' into develop 2022-01-10 10:34:22 +00:00
Christoph Rehmann 2e19d0d7d1 [Keyboard] Add Buzzard support (#15493)
* add buzzerd

(untested, WIP)

* configured linear actuator and fixed keymap

* configuration tweaks and added custom keymap

* add custom tapping term for home row mod

* added readme

* remove ionide folder

* added scroll function to trackpoint

* keymap reworked

* using one shot shift and removed dynamic macros

* reworked default keymap

* adapted to latest qmk changes

* remove caps word from default keymap

* use provided coding guidelines

* use get_highest_layer in favour  of biton32

* fixed formatting

* remove unnecessary define statement
2022-01-10 02:33:48 -08:00
QMK Bot 5491385f3d Merge remote-tracking branch 'origin/master' into develop 2022-01-10 10:33:15 +00:00
Bartosz Nowak d7eb09949d [Keyboard] Add keymap and settings for dactyl_manuform 6x6_5 thumb (#15526)
* Add dactyl manu 6x6 with stm32 support and 5thumb cluster

* Add review changes

* Add license to new files

* Fix enums for custom keymap

* Readme update

* Fix readme to follow one from template

* Add missing licence to files

* Update keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk

* Update keyboards/handwired/dactyl_manuform/6x6/blackpill_f411/rules.mk

* Remove readme from onekey keyboard

* Make separate macro for 5thumb
2022-01-10 02:31:51 -08:00
QMK Bot 437dad1b0e Merge remote-tracking branch 'origin/master' into develop 2022-01-10 10:22:38 +00:00
HorrorTroll f59cbfb75c [Keyboard] Added Handwired Redragon K552 Kumara (RGB) (#14004)
* Added Handwired Redragon K552 with default and via keymaps

* Resolve some request changes, and change the cols pin to a better one.

* Resolved request changes

* Added OLED support and resolve request change

* Increase polling rate to 1000hz

* Update font for OLED, and change logo

* Added LED Underglow support

* Add personal custom keymap

* Nit some line, to get better way to look on code

* Refactor everything and solved some issue.

* Resolved issue
2022-01-10 02:21:53 -08:00
QMK Bot 13a44b1fff Merge remote-tracking branch 'origin/master' into develop 2022-01-10 09:26:59 +00:00
Dmitry Nosachev c5728aebee Add Teensy2.0++ revision and VIA keymap to handwired/sono1 (#15296)
* teensy2.0pp revision, via support

* updated documentation

* Update keyboards/handwired/sono1/t2pp/rules.mk
2022-01-10 01:26:06 -08:00
QMK Bot 89260bab86 Merge remote-tracking branch 'origin/master' into develop 2022-01-10 09:14:12 +00:00
Gianluca D'Abrosca d9e5a5f2db [Keymap] bongocat_wpm_responsive for lily58 (#14922)
* Adding the keymap of the wpm responsive bongocat

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/config.h

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Adding the License

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/rules.mk

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c

* Update keyboards/lily58/keymaps/bongocat_wpm_responsive/keymap.c
2022-01-10 01:13:35 -08: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 Sevanderandprecondition 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
DaskyandNick Brassel 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
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
vectorstormandTrevor Powell 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, BScandRaoul Rubien 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
xiaoandRyan 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
6094 changed files with 120736 additions and 30212 deletions

No files matched your search

+4
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
+12 -13
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
+4 -4
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:
+4 -4
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: |
+1 -1
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
+3 -3
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
+39 -96
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.'
+47 -2
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
@@ -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
File renamed without changes.
@@ -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
@@ -158,7 +169,7 @@ 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)
@@ -384,8 +395,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
@@ -425,8 +438,7 @@ OUTPUTS := $(KEYMAP_OUTPUT) $(KEYBOARD_OUTPUT)
$(KEYMAP_OUTPUT)_SRC := $(SRC)
$(KEYMAP_OUTPUT)_DEFS := $(OPT_DEFS) \
-DQMK_KEYBOARD=\"$(KEYBOARD)\" -DQMK_KEYBOARD_H=\"$(QMK_KEYBOARD_H)\" \
-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\" \
-DQMK_SUBPROJECT -DQMK_SUBPROJECT_H -DQMK_SUBPROJECT_CONFIG_H
-DQMK_KEYMAP=\"$(KEYMAP)\" -DQMK_KEYMAP_H=\"$(KEYMAP).h\" -DQMK_KEYMAP_CONFIG_H=\"$(KEYMAP_PATH)/config.h\"
$(KEYMAP_OUTPUT)_INC := $(VPATH) $(EXTRAINCDIRS)
$(KEYMAP_OUTPUT)_CONFIG := $(CONFIG_H)
$(KEYBOARD_OUTPUT)_SRC := $(PLATFORM_SRC)
@@ -448,7 +460,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
@@ -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
+4 -3
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)
@@ -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
@@ -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)))
+77
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)),)
+8 -2
View File
@@ -87,6 +87,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 +98,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
+1 -1
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
+2
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"},
+636 -2
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'
},
@@ -344,15 +356,24 @@
'mechlovin/hannah65/mechlovin9': {
target: 'mechlovin/mechlovin9/rev1'
},
'mechlovin/hex4b': {
target: 'mechlovin/hex4b/rev1'
},
'melgeek/z70ultra': {
target: 'melgeek/z70ultra/rev1'
},
'mechlovin/hannah65': {
target: 'mechlovin/hannah65/rev1'
},
minim: {
target: 'matthewdias/minim'
},
model01: {
target: 'keyboardio/model01'
},
model_v: {
target: 'matthewdias/model_v'
},
m0lly: {
target: 'tkc/m0lly'
},
@@ -495,6 +516,9 @@
'tokyo60': {
target: 'tokyokeyboard/tokyo60'
},
'txuu': {
target: 'matthewdias/txuu'
},
underscore33: {
target: 'underscore33/rev1'
},
@@ -547,7 +571,7 @@
target: 'xelus/valor/rev1'
},
yd60mq: {
target: 'yd60mq/12led'
target: 'ymdk/yd60mq/12led'
},
ymd75: {
target: 'ymd75/rev1'
@@ -560,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'
}
}
+38 -4
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,
+7 -5
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"},
+6 -1
View File
@@ -53,5 +53,10 @@
"type": "string",
"description": "asdf"
}
}
},
"required": [
"keyboard",
"layout",
"layers"
]
}
-4
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"
@@ -1,22 +0,0 @@
// Copyright %(YEAR)s %(YOUR_NAME)s (@%(USER_NAME)s)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[_BASE] = LAYOUT(
KC_A, KC_1, MO(_FN),
KC_TAB, KC_SPC
),
[_FN] = LAYOUT(
_______, _______, _______,
RESET, XXXXXXX
)
};
@@ -1 +0,0 @@
# The default keymap for %(KEYBOARD)s
+20
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
+25
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
}
}
@@ -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).
+1
View File
@@ -0,0 +1 @@
# This file intentionally left blank
+489
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))
+7 -6
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)
+2 -2
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.
+9 -8
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?
+1
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
+2 -2
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`
+2 -2
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
+15 -2
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
+4 -7
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`
+1 -1
View File
@@ -43,7 +43,7 @@ Keycode Entry is accomplished in one of 3 ways:
## Step 5: Save Your Keymap for Future Changes
When you're satisfied with your keymap or just want to work on it later, press the `Export Keymap` button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the `Import Keymap` button.
When you're satisfied with your keymap or just want to work on it later, press the `Download this QMK Keymap JSON File` button. It will save your keymap to your computer. You can then load this .json file in the future by pressing the `Upload a QMK Keymap JSON File` button.
!> **CAUTION:** This is not the same type of .json file used for kbfirmware.com or any other tool. If you try to use this for those tools, or the .json from those tools with QMK Configurator, you will encounter problems.
+2 -2
View File
@@ -109,7 +109,7 @@ Before opening a pull request, you can preview your changes if you have set up t
or if you only have Python 3 installed:
python3 -m http.server 8936
python3 -m http.server 8936 --directory docs
and navigating to `http://localhost:8936/`.
@@ -165,4 +165,4 @@ To maintain a clear vision of how things are laid out in QMK we try to plan out
# What Does the Code of Conduct Mean for Me?
Our [Code of Conduct](https://github.com/qmk/qmk_firmware/blob/master/CODE_OF_CONDUCT.md) means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.
Our [Code of Conduct](https://qmk.fm/coc/) means that you are responsible for treating everyone on the project with respect and courtesy regardless of their identity. If you are the victim of any inappropriate behavior or comments as described in our Code of Conduct, we are here for you and will do the best to ensure that the abuser is reprimanded appropriately, per our code.
+1 -1
View File
@@ -408,7 +408,7 @@ The `val` is the value of the data that you want to write to EEPROM. And the `e
### Deferred Execution :id=deferred-execution
QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers.
QMK has the ability to execute a callback after a specified period of time, rather than having to manually manage timers. To enable this functionality, set `DEFERRED_EXEC_ENABLE = yes` in rules.mk.
#### Deferred executor callbacks
+1 -1
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:
+1 -1
View File
@@ -7,7 +7,7 @@ There are different styles of Easy Maker available depending on your needs:
* [Direct Pin](https://config.qmk.fm/#/?filter=ez_maker/direct) - Connect a single switch to a single pin
* Direct Pin + Backlight (Coming Soon) - Like Direct Pin but dedicates a single pin to [Backlight](feature_backlight.md) control
* Direct Pin + Numlock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED
* Direct Pin + Capslock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Numlock LED
* Direct Pin + Capslock (Coming Soon) - Like Direct Pin but dedicates a single pin to the Capslock LED
* Direct Pin + Encoder (Coming Soon) - Like Direct Pin but uses 2 pins to add a single rotary encoder
## Quickstart
+5 -5
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
+39 -3
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
+1
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.
+5 -2
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:
@@ -132,7 +132,10 @@ The A an B lines of the encoders should be wired directly to the MCU, and the C/
## Multiple Encoders
Multiple encoders may share pins so long as each encoder has a distinct pair of pins.
Multiple encoders may share pins so long as each encoder has a distinct pair of pins when the following conditions are met:
- using detent encoders
- pads must be high at the detent stability point which is called 'default position' in QMK
- no more than two encoders sharing a pin can be turned at the same time
For example you can support two encoders using only 3 pins like this
```
+5 -5
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
+2 -5
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.
+2 -1
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.
+5 -5
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.
+1 -1
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:
+104 -1
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
@@ -333,7 +436,7 @@ Where `28` is an unused index from `eeconfig.h`.
If you want to set custom indicators, such as an LED for Caps Lock, or layer indication, you can use the `led_matrix_indicators_kb` or `led_matrix_indicators_user` function for that:
```c
void led_matrix_indicators_kb(void) {
led_matrix_set_color(index, value);
led_matrix_set_value(index, value);
}
```
+3 -3
View File
@@ -40,13 +40,13 @@ 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
{
"keyboard": "handwired/my_macropad",
"keymap": "my_keymap",
"host_layout": "dvorak",
"host_language": "dvorak",
"macros": [
["Hello, World!"]
],
@@ -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
+10 -10
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 keymap’s `config.h` file:
To use combined speed mode, you must at least define `MK_COMBINED` in your keymap’s `config.h` file:
```c
#define MK_COMBINED
+3 -1
View File
@@ -84,6 +84,8 @@ static void render_logo(void) {
}
```
?> The default font file is located at `drivers/oled/glcdfont.c` and its location can be overwritten with the `OLED_FONT_H` configuration option. Font file content can be edited with external tools such as [Helix Font Editor](https://helixfonteditor.netlify.app/) and [Logo Editor](https://joric.github.io/qle/).
## Buffer Read Example
For some purposes, you may need to read the current state of the OLED display
buffer. The `oled_read_raw` function can be used to safely read bytes from the
@@ -162,7 +164,7 @@ These configuration options should be placed in `config.h`. Example:
|`OLED_FONT_END` |`223` |The ending character index for custom fonts |
|`OLED_FONT_WIDTH` |`6` |The font width |
|`OLED_FONT_HEIGHT` |`8` |The font height (untested) |
|`OLED_TIMEOUT` |`60000` |Turns off the OLED screen after 60000ms of keyboard inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
|`OLED_TIMEOUT` |`60000` |Turns off the OLED screen after 60000ms of screen update inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
|`OLED_FADE_OUT` |*Not defined* |Enables fade out animation. Use together with `OLED_TIMEOUT`. |
|`OLED_FADE_OUT_INTERVAL` |`0` |The speed of fade out animation, from 0 to 15. Larger values are slower. |
|`OLED_SCROLL_TIMEOUT` |`0` |Scrolls the OLED screen after 0ms of OLED inactivity. Helps reduce OLED Burn-in. Set to 0 to disable. |
+154 -30
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
@@ -30,7 +30,7 @@ The ADNS 5050 sensor uses a serial type protocol for communication, and requires
The CPI range is 125-1375, in increments of 125. Defaults to 500 CPI.
### ADSN 9800 Sensor
### ADNS 9800 Sensor
To use the ADNS 9800 sensor, add this to your `rules.mk`
@@ -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,7 +238,7 @@ 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. |
@@ -196,6 +246,21 @@ void pointing_device_driver_set_cpi(uint16_t cpi) {}
| `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. |
| `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
@@ -274,3 +339,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);
}
```
=======
+122 -3
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,6 +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) 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
@@ -454,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!
@@ -509,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.
@@ -554,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`.
@@ -706,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 |
@@ -809,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).
@@ -848,6 +965,8 @@ void rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
}
```
!> RGB indicators on split keyboards will require state information synced to the slave half (e.g. `#define SPLIT_LAYER_STATE_ENABLE`). See [data sync options](feature_split_keyboard.md#data-sync-options) for more details.
#### Indicators without RGB Matrix Effect
If you want to just use RGB indicators without RGB matrix effect, it is not possible to disable the latter because toggling RGB off will disable everything. You can workaround it with solid effect and colors off using this init function:
+9 -3
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,11 @@ 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.
!> 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
Your RGB lighting can be configured by placing these `#define`s in your `config.h`:
@@ -202,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.
@@ -322,6 +326,8 @@ void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
```
would turn the layer 0 (or 1) on and off again three times when `DEBUG` is pressed.
!> Lighting layers on split keyboards will require layer state synced to the slave half (e.g. `#define SPLIT_LAYER_STATE_ENABLE`). See [data sync options](feature_split_keyboard.md#data-sync-options) for more details.
### Overriding RGB Lighting on/off status
Normally lighting layers are not shown when RGB Lighting is disabled (e.g. with `RGB_TOG` keycode). If you would like lighting layers to work even when the RGB Lighting is otherwise off, add `#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF` to your `config.h`.
@@ -344,7 +350,7 @@ If you need to change your RGB lighting in code, for example in a macro to chang
### Low level Functions
|Function |Description |
|--------------------------------------------|-------------------------------------------|
|`rgblight_set()` |Flash out led buffers to LEDs |
|`rgblight_set()` |Flush out led buffers to LEDs |
|`rgblight_set_clipping_range(pos, num)` |Set clipping Range. see [Clipping Range](#clipping-range) |
Example:
+23 -8
View File
@@ -130,14 +130,17 @@ To enable this method, add the following to your `config.h` file:
#define EE_HANDS
```
However, you'll have to flash the EEPROM files for the correct hand to each controller. You can do this manually, or there are targets for avrdude and dfu to do this, while flashing the firmware:
Next, you will have to flash the EEPROM files once for the correct hand to the controller on each halve. You can do this manually with the following bootloader targets while flashing the firmware:
* `:avrdude-split-left`
* `:avrdude-split-right`
* `:dfu-split-left`
* `:dfu-split-right`
* `:dfu-util-split-left`
* `:dfu-util-split-right`
* AVR controllers with the Caterina bootloader (e.g. Pro Micro):
* `:avrdude-split-left`
* `:avrdude-split-right`
* AVR controllers with the stock Amtel DFU or DFU compatible bootloader (e.g. Elite-C):
* `:dfu-split-left`
* `:dfu-split-right`
* ARM controllers with a DFU compatible bootloader (e.g. Proton-C):
* `:dfu-util-split-left`
* `:dfu-util-split-right`
Example:
@@ -145,9 +148,13 @@ Example:
make crkbd:default:avrdude-split-left
```
?> ARM controllers using `dfu-util` will require an EEPROM reset after setting handedness. This can be done using the `EEP_RST` keycode or [Bootmagic Lite](feature_bootmagic.md). Controllers using emulated EEPROM will always require handedness parameter when flashing the firmware.
?> [QMK Toolbox]() can also be used to flash EEPROM handedness files. Place the controller in bootloader mode and select menu option Tools -> EEPROM -> Set Left/Right Hand
This setting is not changed when re-initializing the EEPROM using the `EEP_RST` key, or using the `eeconfig_init()` function. However, if you reset the EEPROM outside of the firmware's built in options (such as flashing a file that overwrites the `EEPROM`, like how the [QMK Toolbox]()'s "Reset EEPROM" button works), you'll need to re-flash the controller with the `EEPROM` files.
You can find the `EEPROM` files in the QMK firmware repo, [here](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common).
You can find the `EEPROM` files in the QMK firmware repo, [here](https://github.com/qmk/qmk_firmware/tree/master/quantum/split_common).
#### Handedness by `#define`
@@ -266,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.
+1 -1
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
+1 -1
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
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.
+30 -4
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:
-182
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.
+1
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`
-1
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',
+13 -11
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
+22 -2
View File
@@ -57,13 +57,33 @@ To use a Teensy 2.0 as an ISP flashing tool, you will first need to load a [spec
!> Note that the `B0` pin on the Teensy should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Teensy to the `RESET` on the keyboard.
### SparkFun PocketAVR / USBtinyISP / USBasp
### SparkFun PocketAVR / USBtinyISP
[SparkFun PocketAVR](https://www.sparkfun.com/products/9825)
[Adafruit USBtinyISP](https://www.adafruit.com/product/46)
!> SparkFun PocketAVR and USBtinyISP **DO NOT support** AVR chips with more than 64 KiB of flash (e.g., the AT90USB128 series). This limitation is mentioned on the [shop page for SparkFun PocketAVR](https://www.sparkfun.com/products/9825) and in the [FAQ for USBtinyISP](https://learn.adafruit.com/usbtinyisp/f-a-q#faq-2270879). If you try to use one of these programmers with AT90USB128 chips, you will get verification errors from `avrdude`, and the bootloader won't be flashed properly (e.g., see the [issue #3286](https://github.com/qmk/qmk_firmware/issues/3286)).
**AVRDUDE Programmer**: `usbtiny`
**AVRDUDE Port**: `usb`
#### Wiring
|ISP |Keyboard|
|---------|--------|
|`VCC` |`VCC` |
|`GND` |`GND` |
|`RST` |`RESET` |
|`SCLK` |`SCLK` |
|`MOSI` |`MOSI` |
|`MISO` |`MISO` |
### USBasp
[Thomas Fischl's USBasp](https://www.fischl.de/usbasp/)
**AVRDUDE Programmer**: `usbtiny` / `usbasp`
**AVRDUDE Programmer**: `usbasp`
**AVRDUDE Port**: `usb`
#### Wiring
+3 -3
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`
+2 -2
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
## フォーマットの詳細
+10 -9
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 |
@@ -763,7 +764,7 @@ See also: [Unicode Support](feature_unicode.md)
|Key |Aliases |Description |
|----------------------|---------|----------------------------------------------------------------|
|`UC(c)` | |Send Unicode code point `c` |
|`UC(c)` | |Send Unicode code point `c`, up to `0x7FFF` |
|`X(i)` | |Send Unicode code point at index `i` in `unicode_map` |
|`XP(i, j)` | |Send Unicode code point at index `i`, or `j` if Shift/Caps is on|
|`UNICODE_MODE_FORWARD`|`UC_MOD` |Cycle through selected input modes |
+1
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 |
+1 -1
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
+5 -3
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.
+1 -1
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
+16 -2
View File
@@ -1,6 +1,20 @@
# 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)
You can configure your build environment to set the defaults and make working with QMK less tedious. Let's do that now!
Most people new to QMK only have 1 keyboard. You can set this keyboard as your default with the `qmk config` command. For example, to set your default keyboard to `clueboard/66/rev4`:
qmk config user.keyboard=clueboard/66/rev4
?> The keyboard option is the path relative to the keyboard directory, the above example would be found in `qmk_firmware/keyboards/clueboard/66/rev4`. If you're unsure you can view a full list of supported keyboards with `qmk list-keyboards`.
You can also set your default keymap name. Most people use their GitHub username like the keymap name from the previous steps:
qmk config user.keymap=<github_username>
## Create a New Keymap
@@ -45,7 +59,7 @@ When your changes to the keymap are complete you will need to build the firmware
qmk compile
If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard and/or keymap:
If you did not configure defaults for your environment, or you have multiple keyboards, you can specify a keyboard and/or keymap:
qmk compile -kb <keyboard> -km <keymap>
+1 -1
View File
@@ -96,7 +96,7 @@ This has been made pretty simple compared to what it used to be. When you are re
qmk flash
If you have not configured your keyboard/keymap name in the CLI, or you have multiple keyboards, you can specify the keyboard and keymap:
If you did not configure your keyboard/keymap name in the CLI according to the [Configure your build environment](newbs_getting_started.md) section, or you have multiple keyboards, you can specify the keyboard and keymap:
qmk flash -kb <my_keyboard> -km <my_keymap>
+1 -17
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 **
@@ -182,22 +182,6 @@ Checking file size of clueboard_66_rev3_default.hex
* The firmware size is fine - 26356/28672 (2316 bytes free)
```
## 5. Configure Your Build Environment (Optional)
You can configure your build environment to set the defaults and make working with QMK less tedious. Let's do that now!
Most people new to QMK only have 1 keyboard. You can set this keyboard as your default with the `qmk config` command. For example, to set your default keyboard to `clueboard/66/rev4`:
qmk config user.keyboard=clueboard/66/rev4
You can also set your default keymap name. Most people use their GitHub username here, and we recommend that you do too.
qmk config user.keymap=<github_username>
The keyboard can now be compiled without arguments using the following command after creating your keymap in the next section:
qmk compile
# Creating Your Keymap
You are now ready to create your own personal keymap! Move on to [Building Your First Firmware](newbs_building_firmware.md) for that.
+1
View File
@@ -20,6 +20,7 @@ Not sure which text editor to use?
Editors specifically made for code:
* [Sublime Text](https://www.sublimetext.com/)
* [VS Code](https://code.visualstudio.com/)
* [Atom](https://atom.io/)
### Git resources
+2 -2
View File
@@ -11,7 +11,7 @@ Using an IDE such as Eclipse provides many advantages over a plain text editor,
* static code analysis
* many other tools such as debugging, code formatting, showing call hierarchies etc.
The purpose of the is page is to document how to set-up Eclipse for developing AVR software, and working on the QMK code base.
The purpose of this page is to document how to set-up Eclipse for developing AVR software, and working on the QMK code base.
Note that this set-up has been tested on Ubuntu 16.04 only for the moment.
@@ -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
+1 -1
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
-1
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` |
+163
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.
+10 -8
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
@@ -110,15 +110,17 @@ Also, specific to ChibiOS:
- a lot of the time, an equivalent Nucleo board can be used with a different flash size or slightly different model in the same family
- 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](#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 support for new hardware now requires a corresponding test board under `keyboards/handwired/onekey`
- any new boards adding support for new hardware now requires a corresponding test board under `keyboards/handwired/onekey`
- for new MCUs, a new "child" keyboard should be added that targets your newly-added MCU, so that builds can be verified
- for new hardware support such as display panels, core-side matrix implementations, or other peripherals, an associated keymap should be provided
- if an existing keymap exists that can leverage this functionality this may not be required (e.g. a new RGB driver chip, supported by the `rgb` keymap) -- consult with the QMK Collaborators on Discord to determine if there is sufficient overlap already
+5 -5
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)|
+4 -2
View File
@@ -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.
+19 -18
View File
@@ -1,16 +1,16 @@
# Squeezing the most out of AVR
AVR is severely resource-constrained, and as QMK continues to grow, it is approaching a point where support for AVR may need to be moved to legacy status as newer development is unable to fit into those constraints.
AVR is severely resource-constrained, and as QMK continues to grow, it is approaching a point where support for AVR may need to be moved to legacy status as newer development is unable to fit into those constraints.
However, if you need to reduce the compiled size of your firmware, there are a number of options to do so.
However, if you need to reduce the compiled size of your firmware, there are a number of options to do so.
## `rules.mk` Settings
First and foremost is enabling link time optimization. To do so, add this to your rules.mk:
First and foremost is enabling link time optimization. To do so, add this to your rules.mk:
```make
LTO_ENABLE = yes
```
This will cause the final step to take longer, but should get you a smaller compiled size. This also disables Action Functions, and Action Macros, both of which are deprecated.
This will get you the most savings, in most situations.
This will cause the final step to take longer, but should get you a smaller compiled size. This also disables Action Functions, and Action Macros, both of which are deprecated.
This will get you the most savings, in most situations.
From there, disabling extraneous systems will help -- e.g.:
```make
@@ -19,7 +19,7 @@ COMMAND_ENABLE = no
MOUSEKEY_ENABLE = no
EXTRAKEY_ENABLE = no
```
This disables some of the functionality that you may not need. But note that extrakeys disables stuff like the media keys and system volume control.
This disables some of the functionality that you may not need. But note that extrakeys disables stuff like the media keys and system volume control.
If that isn't enough to get your firmware down to size, then there are some additional features that you can disable:
```make
@@ -27,19 +27,19 @@ SPACE_CADET_ENABLE = no
GRAVE_ESC_ENABLE = no
MAGIC_ENABLE = no
```
These features are enabled by default, but may not be needed. Double check to make sure, though.
Largest in size is "magic" -- the QMK magic keycodes -- which control things like NKRO toggling, GUI and ALT/CTRL swapping, etc. Disabling it will disable those functions.
These features are enabled by default, but may not be needed. Double check to make sure, though.
Largest in size is "magic" -- the QMK magic keycodes -- which control things like NKRO toggling, GUI and ALT/CTRL swapping, etc. Disabling it will disable those functions.
## `config.h` Settings
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.
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
```
Oneshots. If you're not using these, you can disable the feature by adding this to your `config.h`:
Oneshots. If you're not using these, you can disable the feature by adding this to your `config.h`:
```c
#define NO_ACTION_ONESHOT
```
@@ -49,7 +49,7 @@ The same with tapping keys (mod tap, layer tap, etc)
```
## Audio Settings
If you're using the Audio feature, by default that includes the music mode feature. This tranlates matrix positions into notes. It's neat for sure, but most likely, you're not using it. You can disable it by adding this to your `config.h`:
If you're using the Audio feature, by default that includes the music mode feature. This tranlates matrix positions into notes. It's neat for sure, but most likely, you're not using it. You can disable it by adding this to your `config.h`:
```c
#define NO_MUSIC_MODE
```
@@ -60,7 +60,7 @@ MUSIC_ENABLE = no
## Layers
There are also some options for layers, that can reduce the firmware size. All of these settngs are for your `config.h`.
There are also some options for layers, that can reduce the firmware size. All of these settings are for your `config.h`.
You can limit the number of layers that the firmware uses -- if you're using less than 8 layers in total:
```c
@@ -93,7 +93,7 @@ into this:
oled_write_P(PSTR("WPM: "), false);
oled_write(get_u8_str(get_current_wpm(), ' '), false);
```
which outputs `WPM: 5`. Or this:
which outputs `WPM: 5`. Or this:
```c
// NEW CODE
oled_write_P(PSTR("WPM: "), false);
@@ -103,7 +103,7 @@ which outputs `WPM: 005`.
## RGB Settings
If you're using RGB on your board, both RGB Light (Underglow) and RGB Matrix (per key RGB) now require defines to enable different animations -- some keyboards enable a lot of animations by default, so you can generally gain back some space by disabling specific animations if you don't use them.. For RGB Light you can disable these in your keymap's `config.h`:
If you're using RGB on your board, both RGB Light (Underglow) and RGB Matrix (per key RGB) now require defines to enable different animations -- some keyboards enable a lot of animations by default, so you can generally gain back some space by disabling specific animations if you don't use them. For RGB Light you can disable these in your keymap's `config.h`:
```c
#undef RGBLIGHT_ANIMATIONS
#undef RGBLIGHT_EFFECT_BREATHING
@@ -118,7 +118,7 @@ If you're using RGB on your board, both RGB Light (Underglow) and RGB Matrix (pe
#undef RGBLIGHT_EFFECT_TWINKLE
```
For RGB Matrix, these need to be explicitly enabled as well. To disable any that were enabled by the keyboard, add one or more of these to your keymap's `config.h`:
For RGB Matrix, these need to be explicitly enabled as well. To disable any that were enabled by the keyboard, add one or more of these to your keymap's `config.h`:
```c
#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
@@ -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
@@ -168,7 +169,7 @@ For RGB Matrix, these need to be explicitly enabled as well. To disable any that
# Final Thoughts
If you've done all of this, and your firmware is still too large, then it's time. It's time to consider making the switch to ARM. Unfortunately, right now is the worst possible time for that, due to the silicon shortage, and supply chain issues. Getting an ARM chip is difficult, at best, and significantly overpriced, at worst.
If you've done all of this, and your firmware is still too large, then it's time. It's time to consider making the switch to ARM. Unfortunately, right now is the worst possible time for that, due to the silicon shortage, and supply chain issues. Getting an ARM chip is difficult, at best, and significantly overpriced, at worst.
-- Drashna
That said, there are a number of Pro Micro replacements with ARM controllers:
@@ -176,5 +177,5 @@ That said, there are a number of Pro Micro replacements with ARM controllers:
* [Bonsai C](https://github.com/customMK/Bonsai-C) (Open Source, DIY/PCBA)
* [Raspberry Pi 2040](https://www.sparkfun.com/products/18288) (not currently supported, no ETA)
There are other, non-Pro Micro compatible boards out there. The most popular being:
There are other, non-Pro Micro compatible boards out there. The most popular being:
* [WeAct Blackpill F411](https://www.aliexpress.com/item/1005001456186625.html) (~$6 USD)
+5 -10
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
+28 -17
View File
@@ -1,31 +1,42 @@
# QMK机械键盘固件
# Quantum Mechanical Keyboard固件
[![当前版本](https://img.shields.io/github/tag/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/tags)
[![异议](https://img.shields.io/discord/440868230475677696.svg)](https://discord.gg/Uq7gcHh)
[![文档状态](https://img.shields.io/badge/docs-ready-orange.svg)](https://docs.qmk.fm)
[![GitHub贡献者](https://img.shields.io/github/contributors/qmk/qmk_firmware.svg)](https://github.com/qmk/qmk_firmware/pulse/monthly)
[![GitHub分支](https://img.shields.io/github/forks/qmk/qmk_firmware.svg?style=social&label=Fork)](https://github.com/qmk/qmk_firmware/)
<!---
original document: 0.15.12:docs/README.md
git diff 0.15.12 HEAD -- docs/README.md | cat
-->
## 什么是 QMK 固件?
QMK (*Quantum Mechanical Keyboard*) 是一个社区维护的开源软件,包括 QMK 固件, QMK 工具箱, qmk.fm网站, 和这些文档。QMK 固件是一个基于[tmk\_keyboard](https://github.com/tmk/tmk_keyboard)的键盘固件,它在爱特梅尔AVR微控制器实现一些有用的功能,确切地说, 是在 [OLKB product line](https://olkb.com), 在 [ErgoDox EZ](https://www.ergodox-ez.com) 键盘, 和 [Clueboard product line](https://clueboard.co/). 上。它被移植到使用ChibiOS的ARM芯片上. 它可以在飞线键盘或定制PCB键盘中发挥功能.
QMK (*Quantum Mechanical Keyboard*) 是一个社区维护的用于开发计算机输入设备的开源软件。社区专注像键盘,鼠标,MIDI设备的各种电子输入设备。社区内的核心小组成员维护[QMK固件](https://github.com/qmk/qmk_firmware),[QMK配置器](https://config.qmk.fm)(QMK Configurator),[QMK工具箱](https://github.com/qmk/qmk_toolbox)(QMK Toolbox),[qmk.fm](https://qmk.fm),并与各位社区成员维护这份文档。
## 如何得到它
## 如何入门
如果你打算贡献布局, 键盘, 或者其他QMK特性, 一下是最简单的方法:[从GitHub获得repo分支](https://github.com/qmk/qmk_firmware#fork-destination-box), 并克隆你的repo到本地进行编辑,推送,然后从你的分支打开 [Pull Request](https://github.com/qmk/qmk_firmware/pulls).
<div class="flex-container">
此外, 你也可以直接下载 ([zip](https://github.com/qmk/qmk_firmware/zipball/master), [tar](https://github.com/qmk/qmk_firmware/tarball/master)), 或者从git克隆 (`git@github.com:qmk/qmk_firmware.git`), 或 https (`https://github.com/qmk/qmk_firmware.git`).
?> **基础方式** [QMK配置器](zh-cn/newbs_building_firmware_configurator.md) <br>
用户友好的图形界面工具,无需具备编程知识基础。
## 如何编译
?> **进阶方式** [基于源代码](zh-cn/newbs.md) <br>
功能更强大,但门槛较高。
在你能编译之前, 你需要[部署环境](zh-cn/getting_started_build_tools.md) 用于 AVR or/and ARM 开发。完成后, 你可以使用 `make` 命令来编译一个键盘和布局使用以下命令:
</div>
make planck/rev4:default
## 个性化定制
这将建立 `planck`的`rev4` 修订版本并使用 `default`布局。并非所有键盘都有修订版本 (也叫做子项目或文件夹),在此情况下,修订版本可以省略,如下:
QMK提供了很多功能,对应着很多可供浏览的配套文档。大部分功能都是通过修改[键映射](zh-cn/keymap.md)及[键码](zh-cn/keycodes.md)实现的。
make preonic:default
## 需要帮助?
## 如何定制
请查阅[寻求帮助页面](zh-cn/support.md)以了解如何获取QMK使用方法的帮助。
QMK 有许多 [特性](zh-cn/features.md)来探索,也有很多 [参考文档](https://docs.qmk.fm) 供您发掘。你可以通过修改 [布局](zh-cn/keymap.md)和[键码](zh-cn/keycodes.md)来利用许多特性。
## 回馈社区
有多种回馈社区的方法,最简单的方法是开始使用QMK并向你的朋友们推荐它。
* 可以在我们的论坛及聊天室进行互助:
* [/r/olkb](https://www.reddit.com/r/olkb/)
* [Discord服务器](https://discord.gg/Uq7gcHh)
* 点击页面下方的“Edit This Page”,可以对文档提供贡献。
* [将这份文档翻译为你的语言](zh-cn/translating.md)
* [上报bug](https://github.com/qmk/qmk_firmware/issues/new/choose)
* [发起Pull Request](zh-cn/contributing.md)
+185 -125
View File
@@ -1,133 +1,193 @@
* [完全菜鸟指南](zh-cn/newbs.md)
<!--for translators, see first: zh-cn/reference_glossary.md#terms-of-zh-cn-translate -->
* 新手教程
* [介绍](zh-cn/newbs.md)
* [入门](zh-cn/newbs_getting_started.md)
* [构建你的第一个固件](zh-cn/newbs_building_firmware.md)
* [刷新固件](zh-cn/newbs_flashing.md)
* [测试和调试](zh-cn/newbs_testing_debugging.md)
* [Git最佳实践](zh-cn/newbs_git_best_practices.md)
* [使用你分叉(fork)的主分支(master)](zh-cn/newbs_git_using_your_master_branch.md)
* [解决合并冲突](zh-cn/newbs_git_resolving_merge_conflicts.md)
* [重新同步一个分支](zh-cn/newbs_git_resynchronize_a_branch.md)
* [学习资源](zh-cn/newbs_learn_more_resources.md)
* [构建第一个固件](zh-cn/newbs_building_firmware.md)
* [刷写固件](zh-cn/newbs_flashing.md)
* [寻求帮助](zh-cn/support.md)
* [其它资源](zh-cn/newbs_learn_more_resources.md)
* [QMK大纲](zh-cn/syllabus.md)
* [QMK基础](zh-cn/README.md)
* [QMK简介](zh-cn/getting_started_introduction.md)
* [QMK命令行工具](zh-cn/cli.md)
* [QMK命令行工具配置](zh-cn/cli_configuration.md)
* [向QMK贡献代码](zh-cn/contributing.md)
* [如何使用GitHub](zh-cn/getting_started_github.md)
* [获得帮助](zh-cn/getting_started_getting_help.md)
* [非兼容性修改](zh-cn/breaking_changes.md)
* [我的PR已经被标记为非兼容性修改](zh-cn/breaking_changes_instructions.md)
* [2019年8月30日](zh-cn/ChangeLog/20190830.md)
* [问题与解答](zh-cn/faq.md)
* [一般问题](zh-cn/faq_general.md)
* [构建/编译](zh-cn/faq_build.md)
* [调试/故障排除](zh-cn/faq_debug.md)
* [布局](zh-cn/faq_keymap.md)
* [Zadig驱动安装](zh-cn/driver_installation_zadig.md)
* 详细指南
* [安装构建工具](zh-cn/getting_started_build_tools.md)
* [vagrant指南](zh-cn/getting_started_vagrant.md)
* [构建/编译指南](zh-cn/getting_started_make_guide.md)
* [刷新固件](zh-cn/flashing.md)
* [定制功能](zh-cn/custom_quantum_functions.md)
* [布局概述](zh-cn/keymap.md)
* [硬件](zh-cn/hardware.md)
* [兼容的单片机](zh-cn/compatible_microcontrollers.md)
* [AVR处理器](zh-cn/hardware_avr.md)
* [驱动](zh-cn/hardware_drivers.md)
* 参考
* [键盘指南](zh-cn/hardware_keyboard_guidelines.md)
* [配置选项](zh-cn/config_options.md)
* [键码](zh-cn/keycodes.md)
* [代码书写规范 - C](zh-cn/coding_conventions_c.md)
* [代码书写规范 - Python](zh-cn/coding_conventions_python.md)
* [文档书写规范](zh-cn/documentation_best_practices.md)
* [文档模板](zh-cn/documentation_templates.md)
* FAQ
* [常规FAQ](zh-cn/faq_general.md)
* [构建/编译QMK](zh-cn/faq_build.md)
* [QMK问题排查](zh-cn/faq_misc.md)
* [调试QMK](zh-cn/faq_debug.md)
* [键映射FAQ](zh-cn/faq_keymap.md)
* [充分利用AVR的存储空间](zh-cn/squeezing_avr.md)
* [术语表](zh-cn/reference_glossary.md)
* [单元测试](zh-cn/unit_testing.md)
* [实用函数](zh-cn/ref_functions.md)
* [配置器支持](zh-cn/reference_configurator_support.md)
* [info.json 格式](zh-cn/reference_info_json.md)
* [Python 命令行开发](zh-cn/cli_development.md)
* [特性](zh-cn/features.md)
* [基本键码](zh-cn/keycodes_basic.md)
* [US ANSI控制码](zh-cn/keycodes_us_ansi_shifted.md)
* [量子键码](zh-cn/quantum_keycodes.md)
* [高级键码](zh-cn/feature_advanced_keycodes.md)
* [音频](zh-cn/feature_audio.md)
* [自动shift](zh-cn/feature_auto_shift.md)
* [背光](zh-cn/feature_backlight.md)
* [蓝牙](zh-cn/feature_bluetooth.md)
* [热改键](zh-cn/feature_bootmagic.md)
* [组合](zh-cn/feature_combo)
* [命令](zh-cn/feature_command.md)
* [消抖 API](zh-cn/feature_debounce_type.md)
* [拨动开关](zh-cn/feature_dip_switch.md)
* [动态宏指令](zh-cn/feature_dynamic_macros.md)
* [编码器](zh-cn/feature_encoders.md)
* [重音号Esc复合键](zh-cn/feature_grave_esc.md)
* [触摸反馈](zh-cn/feature_haptic_feedback.md)
* [HD44780 LCD控制器](zh-cn/feature_hd44780.md)
* [自锁键](zh-cn/feature_key_lock.md)
* [布局](zh-cn/feature_layouts.md)
* [前导键](zh-cn/feature_leader_key.md)
* [LED阵列](zh-cn/feature_led_matrix.md)
* [宏指令](zh-cn/feature_macros.md)
* [鼠标键](zh-cn/feature_mouse_keys.md)
* [OLED驱动](zh-cn/feature_oled_driver.md)
* [一键功能](zh-cn/one_shot_keys.md)
* [指针设备](zh-cn/feature_pointing_device.md)
* [PS/2鼠标](zh-cn/feature_ps2_mouse.md)
* [RGB灯光](zh-cn/feature_rgblight.md)
* [RGB矩阵](zh-cn/feature_rgb_matrix.md)
* [空格候补换挡](zh-cn/feature_space_cadet.md)
* [分体键盘](zh-cn/feature_split_keyboard.md)
* [速录机](zh-cn/feature_stenography.md)
* [换手](zh-cn/feature_swap_hands.md)
* [多击键](zh-cn/feature_tap_dance.md)
* [终端](zh-cn/feature_terminal.md)
* [热敏打印机](zh-cn/feature_thermal_printer.md)
* [Unicode](zh-cn/feature_unicode.md)
* [用户空间](zh-cn/feature_userspace.md)
* [速度键](zh-cn/feature_velocikey.md)
* 配置器(Configurator)
* [总览](zh-cn/newbs_building_firmware_configurator.md)
* [入门](zh-cn/configurator_step_by_step.md)
* [问题排查](zh-cn/configurator_troubleshooting.md)
* [框架](zh-cn/configurator_architecture.md)
* QMK API
* [总览](zh-cn/api_overview.md)
* [API文档](zh-cn/api_docs.md)
* [键盘支持](zh-cn/reference_configurator_support.md)
* [添加默认键映射](zh-cn/configurator_default_keymaps.md)
* 制造和定制者指南
* [手工连线指南](zh-cn/hand_wire.md)
* [ISP刷新指南](zh-cn/isp_flashing_guide.md)
* [ARM调试指南](zh-cn/arm_debugging.md)
* [ADC设备](zh-cn/adc_driver.md)
* [I2C设备](zh-cn/i2c_driver.md)
* [SPI设备](zh-cn/spi_driver.md)
* [WS2812设备](zh-cn/ws2812_driver.md)
* [EEPROM设备](zh-cn/eeprom_driver.md)
* [GPIO控制](zh-cn/internals_gpio_control.md)
* [自定义键盘矩阵](zh-cn/custom_matrix.md)
* [Proton C转换](zh-cn/proton_c_conversion.md)
* CLI
* [总览](zh-cn/cli.md)
* [配置](zh-cn/cli_configuration.md)
* [命令](zh-cn/cli_commands.md)
* [Tab补全](zh-cn/cli_tab_complete.md)
* 深入了解
* [键盘工作原理](zh-cn/how_keyboards_work.md)
* [深入了解QMK](zh-cn/understanding_qmk.md)
* 使用QMK
* 导览
* [功能定制](zh-cn/custom_quantum_functions.md)
* [利用Zadig安装驱动](zh-cn/driver_installation_zadig.md)
* [极简式制作](zh-cn/easy_maker.md)
* [键映射总览](zh-cn/keymap.md)
* 开发环境
* [Docker指南](zh-cn/getting_started_docker.md)
* [Vagrant指南](zh-cn/getting_started_vagrant.md)
* 刷写(Flashing)
* [刷写](zh-cn/flashing.md)
* [刷写ATmega32A (ps2avrgb)](zh-cn/flashing_bootloadhid.md)
* IDE
* [在Eclipse中使用QMK](zh-cn/other_eclipse.md)
* [在VSCode中使用QMK](zh-cn/other_vscode.md)
* Git最佳实践
* [介绍](zh-cn/newbs_git_best_practices.md)
* [你自己的副本](zh-cn/newbs_git_using_your_master_branch.md)
* [冲突合并](zh-cn/newbs_git_resolving_merge_conflicts.md)
* [基于你的分支修复](zh-cn/newbs_git_resynchronize_a_branch.md)
* 键盘组装
* [飞线指南](zh-cn/hand_wire.md)
* [ISP刷写指南](zh-cn/isp_flashing_guide.md)
* 其他话题
* [使用Eclipse开发QMK](zh-cn/other_eclipse.md)
* [使用VSCode开发QMK](zh-cn/other_vscode.md)
* [支持](zh-cn/getting_started_getting_help.md)
* [翻译QMK文档](zh-cn/translating.md)
* 键码入门
* [键码汇总](zh-cn/keycodes.md)
* [基础键码](zh-cn/keycodes_basic.md)
* [语言特定的键码](zh-cn/reference_keymap_extras.md)
* [修饰键](zh-cn/feature_advanced_keycodes.md)
* [原子键码](zh-cn/quantum_keycodes.md)
* [Magic键码](zh-cn/keycodes_magic.md)
* QMK 内构 (正在编写)
* [定义](zh-cn/internals_defines.md)
* [输入回调寄存器](zh-cn/internals_input_callback_reg.md)
* [Midi设备](zh-cn/internals_midi_device.md)
* [Midi设备配置过程](zh-cn/internals_midi_device_setup_process.md)
* [Midi工具库](zh-cn/internals_midi_util.md)
* [发送函数](zh-cn/internals_send_functions.md)
* [Sysex工具](zh-cn/internals_sysex_tools.md)
<!--fromen:20200126-6:03AM(GMT+8)-->
<!--cn:20200211-11:04AM(GMT+8)-->
* 键码进阶
* [指令](zh-cn/feature_command.md)
* [动态宏](zh-cn/feature_dynamic_macros.md)
* [Grave Escape](zh-cn/feature_grave_esc.md)
* [前导键](zh-cn/feature_leader_key.md)
* [Mod-Tap](zh-cn/mod_tap.md)
* [宏](zh-cn/feature_macros.md)
* [鼠标键](zh-cn/feature_mouse_keys.md)
* [Space Cadet Shift](zh-cn/feature_space_cadet.md)
* [US ANSI上档键值](zh-cn/keycodes_us_ansi_shifted.md)
* 软件特性
* [自动Shift](zh-cn/feature_auto_shift.md)
* [组合键](zh-cn/feature_combo.md)
* [防抖API](zh-cn/feature_debounce_type.md)
* [按键锁定](zh-cn/feature_key_lock.md)
* [按键重定义](zh-cn/feature_key_overrides.md)
* [层](zh-cn/feature_layers.md)
* [粘滞键](zh-cn/one_shot_keys.md)
* [光标设备](zh-cn/feature_pointing_device.md)
* [原生HID](zh-cn/feature_rawhid.md)
* [Sequencer](zh-cn/feature_sequencer.md)
* [换手](zh-cn/feature_swap_hands.md)
* [一键多用](zh-cn/feature_tap_dance.md)
* [点按配置](zh-cn/tap_hold.md)
* [终端](zh-cn/feature_terminal.md)
* [Unicode](zh-cn/feature_unicode.md)
* [用户空间](zh-cn/feature_userspace.md)
* [WPM计算](zh-cn/feature_wpm.md)
* 硬件特性
* 显示
* [HD44780 LCD控制器](zh-cn/feature_hd44780.md)
* [ST7565 LCD驱动](zh-cn/feature_st7565.md)
* [OLED驱动](zh-cn/feature_oled_driver.md)
* 灯效
* [背光](zh-cn/feature_backlight.md)
* [LED矩阵](zh-cn/feature_led_matrix.md)
* [RGB灯光](zh-cn/feature_rgblight.md)
* [RGB矩阵](zh-cn/feature_rgb_matrix.md)
* [音频](zh-cn/feature_audio.md)
* [蓝牙](zh-cn/feature_bluetooth.md)
* [Bootmagic Lite](zh-cn/feature_bootmagic.md)
* [自定义矩阵](zh-cn/custom_matrix.md)
* [Digitizer](zh-cn/feature_digitizer.md)
* [拨动开关(DIP Switch)](zh-cn/feature_dip_switch.md)
* [编码器(旋钮)](zh-cn/feature_encoders.md)
* [触摸反馈](zh-cn/feature_haptic_feedback.md)
* [摇杆](zh-cn/feature_joystick.md)
* [LED指示](zh-cn/feature_led_indicators.md)
* [MIDI](zh-cn/feature_midi.md)
* [Proton C转换](zh-cn/proton_c_conversion.md)
* [PS/2鼠标](zh-cn/feature_ps2_mouse.md)
* [分体式键盘](zh-cn/feature_split_keyboard.md)
* [速记](zh-cn/feature_stenography.md)
* [热敏打印机](zh-cn/feature_thermal_printer.md)
* [Velocikey](zh-cn/feature_velocikey.md)
* QMK开发
* [PR Checklist](zh-cn/pr_checklist.md)
* 打破兼容的改动
* [总览](zh-cn/breaking_changes.md)
* [我的PR已打上标记](zh-cn/breaking_changes_instructions.md)
* [近期的变更日志(Changelog)](zh-cn/ChangeLog/20210529.md "QMK v0.13.0 - 2021 May 29")
* [更早期的不兼容改动](zh-cn/breaking_changes_history.md)
* C语言开发
* [ARM调试指引](zh-cn/arm_debugging.md)
* [AVR处理器](zh-cn/hardware_avr.md)
* [C编码规范](zh-cn/coding_conventions_c.md)
* [兼容的微处理器](zh-cn/compatible_microcontrollers.md)
* [驱动](zh-cn/hardware_drivers.md)
* [ADC驱动](zh-cn/adc_driver.md)
* [Audio驱动](zh-cn/audio_driver.md)
* [I2C驱动](zh-cn/i2c_driver.md)
* [SPI驱动](zh-cn/spi_driver.md)
* [WS2812驱动](zh-cn/ws2812_driver.md)
* [EEPROM驱动](zh-cn/eeprom_driver.md)
* [串口驱动](zh-cn/serial_driver.md)
* [UART驱动](zh-cn/uart_driver.md)
* [操控GPIO](zh-cn/internals_gpio_control.md)
* [键盘开发指引](zh-cn/hardware_keyboard_guidelines.md)
* Python开发
* [编码规范](zh-cn/coding_conventions_python.md)
* [QMK CLI开发](zh-cn/cli_development.md)
* 配置器开发
* QMK API
* [开发环境](zh-cn/api_development_environment.md)
* [架构总览](zh-cn/api_development_overview.md)
* 硬件平台开发
* Arm/ChibiOS
* [选择MCU](zh-cn/platformdev_selecting_arm_mcu.md)
* [启动引导](zh-cn/platformdev_chibios_earlyinit.md)
* QMK参考信息
* [参与到QMK](zh-cn/contributing.md)
* [翻译QMK文档](zh-cn/translating.md)<!--but should we translate this? currently keep it fallback-->
* [配置](zh-cn/config_options.md)
* [数据驱动配置](zh-cn/data_driven_config.md)
* [Make指引](zh-cn/getting_started_make_guide.md)
* [编写文档的最佳实践](zh-cn/documentation_best_practices.md)
* [文档模板](zh-cn/documentation_templates.md)
* [贡献配列到社区](zh-cn/feature_layouts.md)
* [单元测试](zh-cn/unit_testing.md)
* [常用函数](zh-cn/ref_functions.md)
* [info.json参考资料](zh-cn/reference_info_json.md)
* 深入了解
* [键盘工作原理](zh-cn/how_keyboards_work.md)
* [键盘矩阵原理](zh-cn/how_a_matrix_works.md)
* [了解QMK](zh-cn/understanding_qmk.md)
* QMK内部细节 (编辑中)
* [定义](zh-cn/internals_defines.md)
* [输入回调的注册](zh-cn/internals_input_callback_reg.md)
* [Midi设备](zh-cn/internals_midi_device.md)
* [Midi设备驱动流程](zh-cn/internals_midi_device_setup_process.md)
* [Midi辅助功能](zh-cn/internals_midi_util.md)
* [发送函数](zh-cn/internals_send_functions.md)
* [Sysex工具](zh-cn/internals_sysex_tools.md)
<!--fromen:20211014-12:00(GMT+8) commit 04cf161aa01fd433b5dae69d9fd31569ed5dca59-->
+73
View File
@@ -0,0 +1,73 @@
# QMK API
<!---
original document: 0.15.12:docs/api_docs.md
git diff 0.15.12 HEAD -- docs/api_docs.md | cat
-->
本章节详述了QMK API的使用方法,若您是应用开发者,使用这套API可以实现[QMK](https://qmk.fm)键盘固件的编译支持。
## 总览
本服务提供了一套用于编译自定义键映射的异步API,通过POST方式发送JSON参数到API,定期检查执行状态,待固件编译完成后,即可下载生成的固件文件和固件的源文件(如果需要的话)。
#### 荷载JSON参数示例:
```json
{
"keyboard": "clueboard/66/rev2",
"keymap": "my_awesome_keymap",
"layout": "LAYOUT_all",
"layers": [
["KC_GRV","KC_1","KC_2","KC_3","KC_4","KC_5","KC_6","KC_7","KC_8","KC_9","KC_0","KC_MINS","KC_EQL","KC_GRV","KC_BSPC","KC_PGUP","KC_TAB","KC_Q","KC_W","KC_E","KC_R","KC_T","KC_Y","KC_U","KC_I","KC_O","KC_P","KC_LBRC","KC_RBRC","KC_BSLS","KC_PGDN","KC_CAPS","KC_A","KC_S","KC_D","KC_F","KC_G","KC_H","KC_J","KC_K","KC_L","KC_SCLN","KC_QUOT","KC_NUHS","KC_ENT","KC_LSFT","KC_NUBS","KC_Z","KC_X","KC_C","KC_V","KC_B","KC_N","KC_M","KC_COMM","KC_DOT","KC_SLSH","KC_RO","KC_RSFT","KC_UP","KC_LCTL","KC_LGUI","KC_LALT","KC_MHEN","KC_SPC","KC_SPC","KC_HENK","KC_RALT","KC_RCTL","MO(1)","KC_LEFT","KC_DOWN","KC_RIGHT"],
["KC_ESC","KC_F1","KC_F2","KC_F3","KC_F4","KC_F5","KC_F6","KC_F7","KC_F8","KC_F9","KC_F10","KC_F11","KC_F12","KC_TRNS","KC_DEL","BL_STEP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","_______","KC_TRNS","KC_PSCR","KC_SLCK","KC_PAUS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_LEFT","KC_PGDN","KC_RGHT"],
["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","RESET","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(2)","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","MO(1)","KC_TRNS","KC_TRNS","KC_TRNS"]
]
}
```
如上可见,荷载参数里有用于生成固件文件的所有键盘信息。每一个层定义都包含了与键盘 `LAYOUT` 宏定义一致的QMK键码列表数据,若该键盘有多个支持的 `LAYOUT` 宏定义,也可以指定使用的是哪一个。
## 提交一个编译job
若要将键映射配置编译成固件文件,仅需将JSON参数通过POST发送至 `/v1/compile` 节点。下面的示例中我们假设JSON荷载参数已存放在 `json_data` 文件中。
```
$ curl -H "Content-Type: application/json" -X POST -d "$(< json_data)" https://api.qmk.fm/v1/compile
{
"enqueued": true,
"job_id": "ea1514b3-bdfc-4a7b-9b5c-08752684f7f6"
}
```
## 检查状态
键映射配置提交后,可以简单地通过 HTTP GET 请求来查询job状态:
```
$ curl https://api.qmk.fm/v1/compile/ea1514b3-bdfc-4a7b-9b5c-08752684f7f6
{
"created_at": "Sat, 19 Aug 2017 21:39:12 GMT",
"enqueued_at": "Sat, 19 Aug 2017 21:39:12 GMT",
"id": "f5f9b992-73b4-479b-8236-df1deb37c163",
"status": "running",
"result": null
}
```
这份信息告诉我们编译job已经提交到队列中且正在执行。job的状态有5种:
* **failed(失败)**: 编译服务出现问题。
* **finished(完成)**: 编译已完成,`result` 字段中保存了编译结果。
* **queued(排队中)**: 键映射job在等待可用的编译服务器。
* **running(执行中)**: 编译进行中,应当很快就会结束。
* **unknown(未知)**: 出现了较严重的错误,请给我们[提交一个bug](https://github.com/qmk/qmk_compiler/issues).
## 确认编译产出
编译job完成后请查看 `result` 字段,该字段下保存了如下信息项的哈希表数据:
* `firmware_binary_url`: 用于刷写的固件文件URL列表
* `firmware_keymap_url`: `keymap.c` 文件URL列表
* `firmware_source_url`: 完整的固件源代码URL列表
* `output`: 编译job的stdout及stderr输出信息,所有错误信息都会在这里。
+20
View File
@@ -0,0 +1,20 @@
# QMK API
<!---
original document: 0.15.12:docs/api_overview.md
git diff 0.15.12 HEAD -- docs/api_overview.md | cat
-->
QMK API提供了一套可用于Web及GUI工具可用的异步API,用于实现将任何[QMK](https://qmk.fm/)支持的键盘的键映射方案进行编译。已有的键映射模板支持所有的QMK键码并且不需要额外的C代码需求。键盘的维护团队可以提供新的模板来启用更多功能的支持。
## App开发者
若您是一位意愿将这套API引入您的程序中的移动端App开发者,请参阅[API使用指引](zh-cn/api_docs.md)。
## 键盘维护团队
若您希望强化您维护的键盘方案在QMK编译API中的支持,请参阅[键盘支持](zh-cn/reference_configurator_support.md)。
## 后端开发者
若您对这套API系统本身感兴趣,请参阅[开发环境](zh-cn/api_development_environment.md)搭建环境并继续深入探索[架构总览](zh-cn/api_development_overview.md)。
+43
View File
@@ -0,0 +1,43 @@
# QMK CLI :id=qmk-cli
<!---
original document: 0.15.12:docs/cli.md
git diff 0.15.12 HEAD -- docs/cli.md | cat
-->
## 总览 :id=overview
QMK CLI可以让构建QMK键盘的过程更轻松一些,我们已提供的一批指令可用于简化及流式化地处理一些常见工作,如获取并编译QMK固件,创建新的键映射等。
### 依赖项 :id=requirements
QMK依赖Python 3.6或更高版本。我们已经尽力缩减依赖项,但在[`requirements.txt`](https://github.com/qmk/qmk_firmware/blob/master/requirements.txt)中的依赖项是需安装的包。在安装QMK CLI时这些依赖项也会自动完成安装。
### 通过 Homebrew 安装(macOS 及部分 Linux) :id=install-using-homebrew
若已安装[Homebrew](https://brew.sh),可以按如下方法安装QMK:
```
brew install qmk/qmk/qmk
export QMK_HOME='~/qmk_firmware' # 可选,指定 `qmk_firmware` 的路径
qmk setup # 拉取 `qmk/qmk_firmware` 并选择性地配置构建环境
```
### 通过 pip 安装 :id=install-using-easy_install-or-pip
未在以上列出的操作系统可以手动安装QMK。首先确认已安装Python 3.6(或更高版本)及 pip,然后通过如下指令安装QMK:
```
python3 -m pip install qmk
export QMK_HOME='~/qmk_firmware' # 可选,指定 `qmk_firmware` 的路径
qmk setup # 拉取 `qmk/qmk_firmware` 并选择性地配置构建环境
```
### 其它操作系统的安装包 :id=packaging-for-other-operating-systems
我们正在寻求可以制作维护更多操作系统下可用的 `qmk` 安装包的开发者,若您愿意为您的操作系统制作安装包,请遵循如下指引:
* 当该系统下的最佳实践与本指引冲突时,请遵循系统的最佳实践方案
* 但请在注释中列明此处违反这份指引的原因
* 在 virtualenv 下安装
* 指引用户去设置 `QMK_HOME` 环境变量,使得固件源文件拉取路径不再是默认的 `~/qmk_firmware`
+503
View File
@@ -0,0 +1,503 @@
# QMK CLI 命令
<!---
original document: 0.15.12:docs/cli_commands.md
git diff 0.15.12 HEAD -- docs/cli_commands.md | cat
-->
# 用户命令
## `qmk compile`
该命令用于在指定目录下编译固件,可用于构建<https://config.qmk.fm>导出的JSON数据,代码库中的键映射,或是当前目录下的键盘。
该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
**用于配置器导出的数据时**:
```
qmk compile [-c] <configuratorExport.json>
```
**用于键映射时**:
```
qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] -kb <keyboard_name> -km <keymap_name>
```
**在键盘目录下时**:
须在存在默认键映射的键盘目录下执行,或是在键盘的键映射子目录下,否则须指定参数 `--keymap <keymap_name>`
```
qmk compile
```
**构建所有支持该键映射的键盘时**:
```
qmk compile -kb all -km <keymap_name>
```
**示例**:
```
$ qmk config compile.keymap=default
$ cd ~/qmk_firmware/keyboards/planck/rev6
$ qmk compile
Ψ Compiling keymap with make planck/rev6:default
...
```
指定键映射参数时
```
$ cd ~/qmk_firmware/keyboards/clueboard/66/rev4
$ qmk compile -km 66_iso
Ψ Compiling keymap with make clueboard/66/rev4:66_iso
...
```
位于键盘目录下时
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk compile
Ψ Compiling keymap with make gh60/satan:colemak
...
```
**在配列目录下时**:
必须是在 `qmk_firmware/layouts/` 下的键映射目录下。
```
qmk compile -kb <keyboard_name>
```
**示例**:
```
$ cd ~/qmk_firmware/layouts/community/60_ansi/mechmerlin-ansi
$ qmk compile -kb dz60
Ψ Compiling keymap with make dz60:mechmerlin-ansi
...
```
**并行编译**:
在编译时添加 `-j`/`--parallel` 开关可能有助于加快编译速度。
```
qmk compile -j <num_jobs> -kb <keyboard_name>
```
`num_jobs` 用于指定并行的job上限,将其设置为0可以实现无限制的并行编译。
```
qmk compile -j 0 -kb <keyboard_name>
```
## `qmk flash` :id=qmk-flash
该命令与 `qmk compile` 类似,但额外地可以指定bootloader。bootloader参数是可选的,默认会指定为 `:flash`。可通过 `-bl <bootloader>` 来指定bootloader。请查阅[刷写固件](zh-cn/flashing.md)指引以深入了解可用的bootloader信息。
该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
**用于配置器导出的数据时**:
```
qmk flash [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>] <configuratorExport.json>
```
**用于键映射时**:
```
qmk flash -kb <keyboard_name> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]
```
**列出所有bootloader**
```
qmk flash -b
```
## `qmk config`
该命令用于配置QMK功能,完整的 `qmk config` 文档参见[CLI配置](zh-cn/cli_configuration.md)。
**使用方法**:
```
qmk config [-ro] [config_token1] [config_token2] [...] [config_tokenN]
```
## `qmk cd`
该命令会启动一个新的 shell 会话并定位到 `qmk_firmware` 所在目录。
须留意如果你已经位于 `QMK_HOME` 下的某个位置(比如 `keyboards/` 目录中),该指令不会生效。
若要退回到原来的 shell 会话,只需要执行 `exit`。
**使用方法**:
```
qmk cd
```
## `qmk console`
该命令用于连接键盘终端并展示调试信息。仅当键盘固件通过 `CONSOLE_ENABLE=yes` 编译时有效。
**用法**:
```
qmk console [-d <pid>:<vid>[:<index>]] [-l] [-n] [-t] [-w <seconds>]
```
**示例**:
连接到所有可用的键盘并输出终端信息:
```
qmk console
```
列出所有设备:
```
qmk console -l
```
仅输出 clueboard/66/rev3 键盘的信息:
```
qmk console -d C1ED:2370
```
仅输出第二把 clueboard/66/rev3 键盘的信息:
```
qmk console -d C1ED:2370:2
```
输出时间戳及VID:PID以替代键盘名:
```
qmk console -n -t
```
屏蔽bootloader的消息:
```
qmk console --no-bootloaders
```
## `qmk doctor`
该命令用以检查你的开发环境并对发现的潜在的构建及刷写问题进行提醒,如果您乐意,它也可以修复其中大部分问题。
**用法**:
```
qmk doctor [-y] [-n]
```
**示例**:
检查开发环境中的问题并提示是否修复:
qmk doctor
检查开发环境中的问题并自动进行修复:
qmk doctor -y
检查开发环境中的问题,仅生成报告:
qmk doctor -n
## `qmk format-json`
将JSON文件格式化为(尽量)便于阅读的形式。会自动分辨JSON结构类型(info.json还是keymap.json),必要时也可以通过 `--format` 指定。
**用法**:
```
qmk format-json [-f FORMAT] <json_file>
```
## `qmk info`
展示QMK中的键盘及键映射信息,该命令用来获取键盘信息,输出配列,展示底层按键矩阵,及格式化地输出键映射JSON数据。
**用法**:
```
qmk info [-f FORMAT] [-m] [-l] [-km KEYMAP] [-kb KEYBOARD]
```
该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
**示例**:
输出键盘的基础信息:
qmk info -kb planck/rev5
输出键盘的矩阵信息:
qmk info -kb ergodox_ez -m
输出键盘的键映射JSON数据:
qmk info -kb clueboard/california -km default
## `qmk json2c`
从QMK配置器导出的数据中生成 keymap.c 文件
Creates a keymap.c from a QMK Configurator export.
**用法**:
```
qmk json2c [-o OUTPUT] filename
```
## `qmk c2json`
从 keymap.c 文件中生成 keymap.json
**注意:** 解析C代码文件并不容易,该命令有可能无法对你的键映射文件生效,不使用C预处理代码有时可以解决问题。
**用法**:
```
qmk c2json -km KEYMAP -kb KEYBOARD [-q] [--no-cpp] [-o OUTPUT] filename
```
## `qmk lint`
检查键盘及键映射数据并提示出常见错误与问题,以及不符合模板规范的地方。
**用法**:
```
qmk lint [-km KEYMAP] [-kb KEYBOARD] [--strict]
```
该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
**示例**:
基本的lint检查:
qmk lint -kb rominronin/katana60/rev2
## `qmk list-keyboards`
该命令可以列出 `qmk_firmware` 中所有的键盘
**用法**:
```
qmk list-keyboards
```
## `qmk list-keymaps`
该命令可以列出指定键盘(及指定版本)下的所有键映射。
该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
**用法**:
```
qmk list-keymaps -kb planck/ez
```
## `qmk new-keyboard`
该命令可基于现有模板创建出新的键盘定义。
对于未给出的参数,会提示你输入,若未传入 `-u` 参数且 .gitconfig 中设置了 `user.name`,则会提示你使用该值作为默认用户名。
**用法**:
```
qmk new-keyboard [-kb KEYBOARD] [-t {avr,ps2avrgb}] -u USERNAME
```
## `qmk new-keymap`
该命令可基于键盘已有的默认键映射创建新的键映射。
该命令会尝试感知目录路径,当你在键盘或键映射目录下执行时,KEYBOARD及KEYMAP参数将被自动填入。
**用法**:
```
qmk new-keymap [-kb KEYBOARD] [-km KEYMAP]
```
## `qmk clean`
该命令会清理 `.build` 目录,若传入 `--all` 开关,在 `qmk_firmware` 下的所有.hex及.bin文件也会一并删除。
**用法**:
```
qmk clean [-a]
```
---
# 面向开发者的命令
## `qmk format-text`
该命令会重新格式化并统一文件的换行符。
代码库下所有的文件须使用Unix换行符(LF)。
若你在**Windows**下进行开发,必须确保文件中的换行符是正确的,才能让你的PR被允许合入。
```
qmk format-text
```
## `qmk format-c`
该命令会使用clang-format来格式化C代码。
不带参数地执行该命令以用来格式化核心代码相关的改动,默认会通过 `git diff` 来检查 `origin/master`, 可以通过 `-b <分支名>` 来改变检查的分支。
带着 `-a` 开关执行命令会格式化所有的核心代码,也可以在命令行中传入文件名来指定格式化某个文件。
**用以处理指定文件时**:
```
qmk format-c [file1] [file2] [...] [fileN]
```
**用以处理所有的核心代码时**:
```
qmk format-c -a
```
**用以处理 origin/master 下的所有改动时**:
```
qmk format-c
```
**用以处理指定分支下的所有改动时**:
```
qmk format-c -b branch_name
```
## `qmk generate-compilation-database`
**用法**:
```
qmk generate-compilation-database [-kb KEYBOARD] [-km KEYMAP]
```
创建新 `compile_commands.json` 文件。
你的IDE/编辑器是否使用了“编程语言本地服务器”(language server)且 _总是_ 无法找到全部的包含文件(include files)?是不是很讨厌红色的波浪线?想不想让你的编辑器看得懂 `#include QMK_KEYBOARD_H`?你需要的是一个[编译数据库](https://clang.llvm.org/docs/JSONCompilationDatabase.html)!而 QMK 可以帮助你构建出一个。
该命令需要知道你在构建的是哪个键盘及键映射,它使用与 `qmk compile` 命令一样的选项:参数、当前目录以及配置文件。
**示例:**
```
$ cd ~/qmk_firmware/keyboards/gh60/satan/keymaps/colemak
$ qmk generate-compilation-database
Ψ Making clean
Ψ Gathering build instructions from make -n gh60/satan:colemak
Ψ Found 50 compile commands
Ψ Writing build database to /Users/you/src/qmk_firmware/compile_commands.json
```
现在可以打开你的开发环境并享受没有波浪线的日子了。
## `qmk docs`
该命令会在本地启动一个HTTP服务,从而你可以浏览及改进文档,默认端口号为8936,使用 `-b`/`--browser` 开关可以让该命令自动通过默认浏览器打开链接地址。
**用法**:
```
qmk docs [-b] [-p PORT]
```
## `qmk generate-docs`
该命令可以在本地生成QMK文档,用以文档的常规浏览使用,或进行文档改进工作。可以使用类似[serve](https://www.npmjs.com/package/serve)这样的工具来浏览生成的文档文件。
**用法**:
```
qmk generate-docs
```
## `qmk generate-rgb-breathe-table`
该命令可以生成用于[RGB灯光](zh-cn/feature_rgblight.md)的呼吸效果的查询表(LUT)头文件。将该文件命名为 `rgblight_breathe_table.h` 并放入键盘或键映射目录下,可以覆盖替换 `quantum/rgblight/` 下的默认LUT。
**用法**:
```
qmk generate-rgb-breathe-table [-q] [-o OUTPUT] [-m MAX] [-c CENTER]
```
## `qmk kle2json`
该命令可以将KLE原始数据转换成QMK配置器的JSON数据,可接受的输入可以是文件绝对路径,或当前目录下的文件名。若 `info.json` 文件存在,默认不会进行覆盖,通过指定 `-f` 或 `--force` 开关可以允许覆盖。
**用法**:
```
qmk kle2json [-f] <filename>
```
**示例**:
```
$ qmk kle2json kle.txt
☒ File info.json already exists, use -f or --force to overwrite.
```
```
$ qmk kle2json -f kle.txt -f
Ψ Wrote out to info.json
```
## `qmk format-python`
该命令可以对 `qmk_firmware` 下的python代码进行格式化。
**用法**:
```
qmk format-python
```
## `qmk pytest`
该命令会执行python测试框架,在你更改了python代码后,应确保该命令可以成功执行。
**用法**:
```
qmk pytest
```
**示例**:
执行全部的测试套件:
qmk pytest
执行指定的测试用例组:
qmk pytest -t qmk.tests.test_cli_commands
执行单个测试用例:
qmk pytest -t qmk.tests.test_cli_commands.test_c2json
qmk pytest -t qmk.tests.test_qmk_path
+126
View File
@@ -0,0 +1,126 @@
# QMK CLI 配置
<!---
original document: 0.15.12:docs/cli_configuration.md
git diff 0.15.12 HEAD -- docs/cli_configuration.md | cat
-->
本文详述了 `qmk config` 功能及作用。
# 介绍
QMK CLI的配置系统是一套键/值(key/value)数据系统,每个键由一个子指令和一个参数名组成,通过点号(英文句号)分隔。这使得配置项可以简单直接地映射到命令行参数上。
## 简单示例
作为一个示例,对于指令 `qmk compile --keyboard clueboard/66/rev4 --keymap default`
其存在两个命令行参数,可以通过如下方式从配置中读取:
* `compile.keyboard`
* `compile.keymap`
可以这样设置:
```
$ qmk config compile.keyboard=clueboard/66/rev4 compile.keymap=default
compile.keyboard: None -> clueboard/66/rev4
compile.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
现在每次执行 `qmk compile` 时都不需要指定键盘及键映射参数了。
## 设置用户级的默认配置
当你需要在多个命令中使用一致的配置项时,比如很多命令都需要的 `--keyboard` 参数,相比于每次执行命令都去指定该参数值,你可以直接设置用户级的配置值,即可将该配置用于所有的命令。
示例:
```
$ qmk config user.keyboard=clueboard/66/rev4 user.keymap=default
user.keyboard: None -> clueboard/66/rev4
user.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
# CLI文档 (`qmk config`)
`qmk config` 命令可以管理配置数据。当不带额外参数执行时,会输出所有已有配置。存在参数时这些参数将被视为配置项参数,其格式须满足如下形式且无空格分隔:
<subcommand|general|default>[.<key>][=<value>]
## 设置配置值
在配置项的键后加 = 号进行值的设置,配置项的键必须是 `<section>.<key>` 的完整形式。
举例:
```
$ qmk config default.keymap=default
default.keymap: None -> default
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
## 读取配置值
可以读取整个配置文件、单独配置键或是一整个配置系列,也可以同时指定读取多个配置项。
### 全量配置读取示例
qmk config
### 单系列配置读取示例
qmk config compile
### 单配置项读取示例
qmk config compile.keyboard
### 多配置项读取示例
qmk config user compile.keyboard compile.keymap
## 删除配置值
将配置值设置为 `None` 即可删除该配置值。
示例:
```
$ qmk config default.keymap=None
default.keymap: default -> None
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
## 批量操作
一个指令中可以合并执行多个读写操作,将依序进行执行输出:
```
$ qmk config compile default.keymap=default compile.keymap=None
compile.keymap=skully
compile.keyboard=clueboard/66_hotswap/gen1
default.keymap: None -> default
compile.keymap: skully -> None
Ψ Wrote configuration to '/Users/example/Library/Application Support/qmk/qmk.ini'
```
# 用户配置相关的配置项
| 配置项 | 默认值 | 描述 |
|-------|-------|------|
| user.keyboard | None | 键盘路径(举例:`clueboard/66/rev4`) |
| user.keymap | None | 键盘名称(举例:`default`) |
| user.name | None | 用户的Github用户名 |
# 所有配置项
| 配置项 | 默认值 | 描述 |
|-------|-------|------|
| compile.keyboard | None | 键盘路径(举例:`clueboard/66/rev4`) |
| compile.keymap | None | 键盘名称(举例:`default`) |
| hello.name | None | 执行时展示的欢迎信息 |
| new_keyboard.keyboard | None | 键盘路径(举例:`clueboard/66/rev4`) |
| new_keyboard.keymap | None | 键盘名称(举例:`default`) |
+32
View File
@@ -0,0 +1,32 @@
# QMK Tab补全
<!---
original document: 0.15.12:docs/cli_tab_complete.md
git diff 0.15.12 HEAD -- docs/cli_tab_complete.md | cat
-->
在使用Bash 4.2及更高版本、Zsh或FiSH时,可以启用QMK CLI的Tab补全功能,可以实现对 `qmk` 参数中的开关、键盘、文件等参数的自动补全。
## 设置
有以下几种启用Tab补全的方法。
### 仅当前用户生效
将以下内容添加到文件 `.profile` 或 `.bashrc` 的末尾:
source ~/qmk_firmware/util/qmk_tab_complete.sh
若你的 `qmk_firmware` 存放在其它路径,以上路径也需要调整。
### 系统级的符号关联
若想让所有本地用户都可以实现Tab补全,可以按如下方法添加符号连接到 `qmk_tab_complete.sh` 脚本:
`ln -s ~/qmk_firmware/util/qmk_tab_complete.sh /etc/profile.d/qmk_tab_complete.sh`
### 系统级的脚本拷贝
有时符号连接的方案无效,可以改用拷贝文件到指定位置的方案。但须留意该Tab补全脚本可能会不定时更新,你需要定期重新拷贝一次该脚本。
cp util/qmk_tab_complete.sh /etc/profile.d
+66
View File
@@ -0,0 +1,66 @@
# QMK配置器框架
<!---
original document: 0.15.12:docs/configurator_architecture.md
git diff 0.15.12 HEAD -- docs/configurator_architecture.md | cat
-->
本章节提供了QMK配置器前端技术框架信息,若你对QMK配置器前端工程本身感兴趣,可以从[QMK配置器](https://github.com/qmk/qmk_configurator)代码库开始。
# 总览
![QMK配置器技术框架图](./../configurator_diagram.svg)
# 详述
QMK配置器基于[单页面框架](https://en.wikipedia.org/wiki/Single-page_application)实现,供使用者创建兼容QMK键盘的自定义键映射方案。键映射方案可以导出为JSON格式的数据,也可以编译出可通过[QMK工具箱](https://github.com/qmk/qmk_toolbox)刷写到键盘中的固件文件。
配置器从“键盘元数据仓库(Keyboard Metadata store)”获取键盘元数据,编译请求通过QMK API提交,编译产出放在S3兼容的数据仓库[Digital Ocean空间](https://www.digitalocean.com/products/spaces/)中。
## 配置器前端
地址:<https://config.qmk.fm>
[配置器前端](https://config.qmk.fm)会编译并产出一些静态文件并通过Github Pages托管,每当[QMK配置器 `master`](https://github.com/qmk/qmk_configurator)分支收到推送的提交时都会触发。可以通过[QMK配置器 actions页面](https://github.com/qmk/qmk_configurator/actions/workflows/build.yml)查看这些job的状态。
## 键盘元数据
地址:<https://keyboards.qmk.fm>
每当[qmk_firmware](https://github.com/qmk/qmk_firmware)仓库中的键盘定义变化时,会生成JSON格式的键盘元数据,并上传到指定空间用于配置器生成每种键盘的UI展现。可以在[QMK固件 actions页面](https://github.com/qmk/qmk_firmware/actions/workflows/api.yml)查看相关job的状态。如果你是QMK开发团队成员(Collaborator),可以使用 `workflow_dispatch` 事件触发器来手动执行该job。
## QMK API
地址:<http://api.qmk.fm>
QMK API接受 `keymap.json` 文件输入并进行编译,这和你在 `qmk compile` 和 `qmk flash` 中使用的文件一样。当 `keymap.json` 文件被提交后,浏览器中的页面将定时查看job状态(每2秒一次,有时更久一些)直到job完成。最终产出的JSON描述信息里包含了键映射方案的源文件,及编译出的二进制的可下载链接地址。
为遵循GPL协议,QMK API会确保源文件及编译产出总是同时提供的。
API有3种非异常的回应状态-
1. 编译job排队中
2. 编译job执行中
3. 编译job已完成
### 编译job排队中
此状态表明[QMK编译器](#QMK编译器)节点还未选中该job,在配置器页面此时会显示“等待一个可用的烤炉(Waiting for an oven)”。
### 编译job执行中
此状态说明编译job已经在执行中,配置器页面会显示为“烤制中”(Baking)。
### 编译job已完成
此状态说明编译job已经执行完毕,输出的JSON格式的状态信息里有源文件及编译产出的二进制文件的下载链接项。
## Redis/RQ
QMK API通过Redis队列分发job到可用的[QMK编译器](#QMK编译器)节点。接收到的 `keymap.json` 文件先送到RQ队列,而 `qmk_compiler` 节点则从中拉取执行。
## QMK编译器
[QMK编译器](https://github.com/qmk/qmk_compiler)负责执行 `keymap.json` 文件的实际编译工作。它的工作逻辑是先拉取有请求的 `qmk_firmware` 分支代码,执行 `qmk compile keymap.json`,最后上传源文件及二进制产出到Digital Ocean空间中。
当用户需要下载源代码/二进制文件时,API会给出重定向后的已鉴权地址链接。
+198
View File
@@ -0,0 +1,198 @@
# 向QMK配置器中添加默认键映射 :id=adding-default-keymaps
<!---
original document: 0.15.12:docs/configurator_default_keymaps.md
git diff 0.15.12 HEAD -- docs/configurator_default_keymaps.md | cat
-->
本章节描述了如何向QMK配置器中添加一款键盘的默认键映射
## 技术信息 :id=technical-information
QMK配置器使用JSON作为键映射的本地文件格式。我们尽力确保其行为与在 `qmk_firmware` 中 执行 `make <keyboard>:default` 时一致。
该目录下的键映射需要定义四个键值对:
* `keyboard` (字符串)
* 键盘名称,与执行 `make` 进行编译时使用的一致(如 `make 1upkeyboards/1up60rgb:default`)。
* `keymap` (字符串)
* 应设置为 `default`.
* `layout` (字符串)
* 默认键映射应使用的配列宏定义。
* `layers` (数组)
* 键映射数据。此键下的每行元素对应一个层定义,层定义中包含该层的键码组成信息。
额外地,大部分键映射中还有一个 `commit` 项,该项并不是QMK配置器后端服务API所需,而是用于告知配置器维护者这份JSON键映射数据来源于代码库中的哪个版本的键映射。该值为 `qmk_firmware` 代码库中最后一次修改键盘默认 `keymap.c` 文件提交的commit的SHA标记。该SHA值的获取方式是拉取[`qmk/qmk_firmware` 库的 `master`分支](https://github.com/qmk/qmk_firmware/tree/master/)后,执行 `git log -1 --pretty=oneline -- keyboards/<keyboard>/keymaps/default/keymap.c`(若键盘有什么问题且存在 `keymap.json` 文件,则用之作为替代),执行结果应类似于:
```
f14629ed1cd7c7ec9089604d64f29a99981558e8 Remove/migrate action_get_macro()s from default keymaps (#5625)
```
本例中,`f14629ed1cd7c7ec9089604d64f29a99981558e8` 即应为 `commit` 的值。
## 示例 :id=example
若某人想添加H87a Hineybush键盘的默认键映射方案,应到 `qmk_firmware` 下H87a的默认键映射下执行上述 `git log` 命令:
```
user ~/qmk_firmware (master)
$ git log -1 --pretty=oneline master -- keyboards/hineybush/h87a/keymaps/default/keymap.c
ef8878fba5d3786e3f9c66436da63a560cd36ac9 Hineybush h87a lock indicators (#8237)
```
在我们获取了commit哈希值后,还需要键映射定义(为加强可读性进行了编辑处理):
```c
...
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_all(
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SLCK, KC_PAUS,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_TRNS, KC_UP,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[1] = LAYOUT_all(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, BL_TOGG, BL_DEC, BL_INC,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY, KC_MNXT, KC_VOLD,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
};
```
默认键映射使用了 `LAYOUT_all` 宏,最后其会成为 `layout` 项的值。编译为QMK配置器的JSON键映射数据后,输出文件应为:
```json
{
"keyboard": "hineybush/h87a",
"keymap": "default",
"commit": "ef8878fba5d3786e3f9c66436da63a560cd36ac9",
"layout": "LAYOUT_all",
"layers": [
[
"KC_ESC", "KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_F7", "KC_F8", "KC_F9", "KC_F10", "KC_F11", "KC_F12", "KC_PSCR", "KC_SLCK", "KC_PAUS",
"KC_GRV", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0", "KC_MINS", "KC_EQL", "KC_BSPC", "KC_BSPC", "KC_INS", "KC_HOME", "KC_PGUP",
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_LBRC", "KC_RBRC", "KC_BSLS", "KC_DEL", "KC_END", "KC_PGDN",
"KC_CAPS", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT", "KC_NUHS", "KC_ENT",
"KC_LSFT", "KC_NUBS", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT", "KC_TRNS", "KC_UP",
"KC_LCTL", "KC_LGUI", "KC_LALT", "KC_SPC", "KC_RALT", "MO(1)", "KC_RGUI", "KC_RCTL", "KC_LEFT", "KC_DOWN", "KC_RGHT"
],
[
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RGB_TOG", "RGB_MOD", "RGB_HUD", "RGB_HUI", "RGB_SAD", "RGB_SAI", "RGB_VAD", "RGB_VAI", "BL_TOGG", "BL_DEC", "BL_INC",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_VOLU",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "RESET", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_MPLY", "KC_MNXT", "KC_VOLD",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
]
]
}
```
`layers` 数组中的空白区域不影响键映射功能,仅为了方便阅读。
## 附加说明 :id=caveats
### 层定义只能通过序号进行引用 :id=layer-references
QMK中常见的一种做法是通过一系列 `#define` 或 `enum` 类型声明来对层定义进行命名:
```c
enum layer_names {
_BASE,
_MEDIA,
_FN
};
```
对于C代码来讲可行,但对于配置器来讲,你*必须*使用层序号 - 上例中的`MO(_FN)` 应使用 `MO(2)`。
### 不支持任何形式的定制化代码 :id=custom-code
需要在 keymap.c 文件中添加函数代码的功能,如Tap Dance或是Unicode,都*完全*无法在配置器中构建。即便是在 `qmk_firmware` 代码库中在键盘定义中设置了 `TAP_DANCE_ENABLE = yes`,也只会导致*任何*固件构建在配置器中行不通。这是由API及JSON格式的键映射数据同时造成的限制。
### 对自定义键码的不完全支持 :id=custom-keycodes
仅有一个方案可以支持自定义键码:若自定义键码的逻辑实现是在 qmk_firmware 下的键盘定义中完成的,而非在键映射中,那么这个键码*可以*在配置器中使用且*可以*编译运行。(因此,)相对于在 `keymap.c` 中使用如下代码段:
```c
enum custom_keycodes {
MACRO_1 = SAFE_RANGE,
MACRO_2,
MACRO_3
};
...
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
case MACRO_1:
if (record->event.pressed) {
SEND_STRING("This is macro #1.");
}
return false;
case MACRO_2:
if (record->event.pressed) {
SEND_STRING("This is macro #2.");
}
return false;
case MACRO_3:
if (record->event.pressed) {
SEND_STRING("This is macro #3.");
}
return false;
}
return true;
};
```
... 请将键码的 `enum` 定义块添加到键盘的头文件(`<keyboard.h>`)中,例如(留意 `enum` 在这里命名为 `keyboard_keycodes`):
```c
enum keyboard_keycodes {
MACRO_1 = SAFE_RANGE,
MACRO_2,
MACRO_3,
NEW_SAFE_RANGE // 重要!
};
```
... 之后在 `<keyboard>.c` 中的 `process_record_kb()` 代码逻辑应为:
```c
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
switch(keycode) {
case MACRO_1:
if (record->event.pressed) {
SEND_STRING("This is macro #1.");
}
return false;
case MACRO_2:
if (record->event.pressed) {
SEND_STRING("This is macro #2.");
}
return false;
case MACRO_3:
if (record->event.pressed) {
SEND_STRING("This is macro #3.");
}
return false;
}
return process_record_user(keycode, record);
};
```
注意最后的 `process_record_user()` 调用,若用户需要添加自定义键码到键映射中,须使用 `NEW_SAFE_RANGE` 替代 `SAFE_RANGE`,而其定义来自于上面键盘层定义中。
## 更多资料 :id=additional-reading
为了让QMK配置器支持你的键盘,你的键盘定义必须存在于 `qmk_firmware` 代码库的 `master` 分支中。相关操作指引,请参见[在QMK配置器中支持你的键盘](zh-cn/reference_configurator_support.md).
Loaded 100 of 6094 files, more files were not shown because too many files have changed in this diff. Show more