Compare commits

..

216 Commits

Author SHA1 Message Date
Zach White 69e5e15ccc use unix lineendings even on windows 2021-01-08 17:21:55 -08:00
Zach White 543e663c68 more robust key label parsing 2021-01-07 21:11:57 -08:00
Zach White 0177fbd65b rearrange to more reliably detect urls 2021-01-07 20:42:37 -08:00
Zach White 7f398eea50 make flake8 happy 2021-01-03 17:31:46 -08:00
Zach White df85940a47 add a note about additional layouts 2021-01-03 15:23:27 -08:00
Zach White cd1cfb7c36 Document the new kle2json 2021-01-03 15:18:00 -08:00
Zach White 2ee52e43a7 remove extraneous options 2021-01-03 15:18:00 -08:00
Zach White 63472dfde7 add support for fetching KLE over http 2021-01-03 15:18:00 -08:00
Zach White 2040fe3d8a add support for generating a keymap 2021-01-03 15:18:00 -08:00
Zach White 88cfd3554a add support for writing a default keymap with 2 layers 2021-01-03 15:18:00 -08:00
Zach White 0f8b34771d build an info.json from KLE 2021-01-03 15:18:00 -08:00
Nick Brassel 34446b79d7 Split up QWIIC_ENABLE to use QWIIC_DRIVERS as well, with yes/no for enable flag. (#11426) 2021-01-04 08:45:43 +11:00
QMK Bot b7d4a9dc25 Merge remote-tracking branch 'origin/master' into develop 2021-01-03 20:31:41 +00:00
QMK Bot 1f8acb7619 Merge remote-tracking branch 'origin/master' into develop 2021-01-03 20:30:50 +00:00
Nick Brassel 271c0cf136 Merge remote-tracking branch 'upstream/master' into develop 2021-01-03 15:26:43 +11:00
Nick Brassel e8e090aced Remove handwired/bluepill. (#11415) 2021-01-03 13:29:19 +11:00
Nick Brassel 7456e6c776 ChibiOS conf migrations... take 4 (#11413)
* ChibiOS conf upgrade for cannonkeys/tsukuyomi

 cannonkeys/tsukuyomi - 7beddc74b03d652481198843a178177de5da3ddb

* ChibiOS conf upgrade for misterknife/knife66_iso

 misterknife/knife66_iso - f2dd6e6c54258ae9d09a88215b36fba34947fc23

* ChibiOS conf upgrade for mode/eighty

 mode/eighty/m80h - 4bbbee01a89a5b4ab5f4de36e0dd2044cf54a698
 mode/eighty/m80s - 6de4a1affab4ed8f08423eb511393ed797e3ea77
2021-01-03 13:17:34 +11:00
Zach White 11bd98f684 Fix broken keyboards (#11412)
* Fix a couple errors

* add a dependency for the generated headers
2021-01-03 13:08:17 +11:00
Zach White f27d8d9448 Fix compiling on develop (#11409) 2021-01-02 21:05:56 +01:00
QMK Bot f12000a1b6 Merge remote-tracking branch 'origin/master' into develop 2021-01-02 17:28:05 +00:00
QMK Bot 266343666f Merge remote-tracking branch 'origin/master' into develop 2021-01-02 08:46:59 +00:00
Joshua Diamond e190872b82 Improved Language Specific Keycodes for US International and Extended Layouts (#11307)
Co-authored-by: Ryan <fauxpark@gmail.com>
2021-01-02 15:54:48 +11:00
QMK Bot 8e68003b28 Merge remote-tracking branch 'origin/master' into develop 2021-01-02 01:39:21 +00:00
QMK Bot d8a9974a41 Merge remote-tracking branch 'origin/master' into develop 2021-01-02 01:36:46 +00:00
QMK Bot 7ecbc83e71 Merge remote-tracking branch 'origin/master' into develop 2021-01-02 00:45:16 +00:00
QMK Bot ddfb558591 Merge remote-tracking branch 'origin/master' into develop 2021-01-01 23:27:44 +00:00
QMK Bot 5209576828 Merge remote-tracking branch 'origin/master' into develop 2021-01-01 23:26:27 +00:00
QMK Bot f410dfa091 Merge remote-tracking branch 'origin/master' into develop 2021-01-01 23:16:33 +00:00
QMK Bot 428eb5faad Merge remote-tracking branch 'origin/master' into develop 2021-01-01 23:05:35 +00:00
QMK Bot e45a2af683 Merge remote-tracking branch 'origin/master' into develop 2021-01-01 18:09:02 +00:00
QMK Bot d288f2f5da Merge remote-tracking branch 'origin/master' into develop 2021-01-01 16:32:49 +00:00
QMK Bot 5fe3de3153 Merge remote-tracking branch 'origin/master' into develop 2021-01-01 14:59:27 +00:00
QMK Bot 39bd151472 Merge remote-tracking branch 'origin/master' into develop 2021-01-01 14:57:27 +00:00
QMK Bot 8a2a39ed06 Merge remote-tracking branch 'origin/master' into develop 2021-01-01 13:53:22 +00:00
QMK Bot 7b83bb188a Merge remote-tracking branch 'origin/master' into develop 2021-01-01 13:43:06 +00:00
fauxpark e3da93e658 Merge remote-tracking branch 'upstream/master' into develop 2021-01-01 05:09:50 +11:00
QMK Bot da8423ca97 Merge remote-tracking branch 'origin/master' into develop 2020-12-31 15:00:40 +00:00
QMK Bot 42cdba8680 Merge remote-tracking branch 'origin/master' into develop 2020-12-31 14:53:38 +00:00
QMK Bot e319d501f7 Merge remote-tracking branch 'origin/master' into develop 2020-12-31 12:59:26 +00:00
QMK Bot 633d2cb648 Merge remote-tracking branch 'origin/master' into develop 2020-12-31 06:21:45 +00:00
Zach White 47b9b11009 Configure keyboard matrix from info.json (#10817)
* Make parameters from info.json available to the build system

* move all clueboard settings to info.json

* code formatting

* make flake8 happy

* make flake8 happy

* make qmk lint happy

* Add support for specifying led indicators in json

* move led indicators to the clueboard info.json

* Apply suggestions from code review

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

* add missing docstring

Co-authored-by: Erovia <Erovia@users.noreply.github.com>
2020-12-30 10:27:37 -08:00
QMK Bot f231f24dda Merge remote-tracking branch 'origin/master' into develop 2020-12-30 16:35:16 +00:00
QMK Bot b51cc6d67a Merge remote-tracking branch 'origin/master' into develop 2020-12-30 15:45:24 +00:00
QMK Bot d5c89c8ed5 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 14:02:54 +00:00
QMK Bot f801c69c75 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 09:59:32 +00:00
QMK Bot 78b12dee89 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 09:06:36 +00:00
QMK Bot a8ac486555 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 04:12:32 +00:00
QMK Bot a63db4b179 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 03:56:14 +00:00
QMK Bot 09eb6381a9 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 03:41:33 +00:00
QMK Bot ade1a34cc8 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 03:26:45 +00:00
QMK Bot c989da4cfd Merge remote-tracking branch 'origin/master' into develop 2020-12-30 03:22:16 +00:00
siggie0815 1b3504e329 Update ADB impelemtation in TMK Core (#11168)
* Update ADB impelmentation in tmk_core to recent version.

Pcked from tmk_keyboard repository revision: 48d696443857512d45f9a7329e0dd0a76345860f

* Restore convenient ADB functions used in QMK port.

* Do cformat.
2020-12-29 19:18:16 -08:00
QMK Bot 9410b15ac9 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 02:21:31 +00:00
QMK Bot 163e47c29d Merge remote-tracking branch 'origin/master' into develop 2020-12-30 02:06:23 +00:00
QMK Bot ed94fe28bf Merge remote-tracking branch 'origin/master' into develop 2020-12-30 01:49:49 +00:00
QMK Bot 5e9b002808 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 01:46:45 +00:00
QMK Bot 154bf92b5b Merge remote-tracking branch 'origin/master' into develop 2020-12-30 01:28:05 +00:00
QMK Bot aae0e12385 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 01:14:12 +00:00
QMK Bot e3ce3d6e30 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 01:07:23 +00:00
QMK Bot dae6249efa Merge remote-tracking branch 'origin/master' into develop 2020-12-30 00:58:48 +00:00
Aldehir Rojas 4f2f21dc05 Rewrite APA102 support (#10894)
* Rewrite APA102 support

The APA102 source was broken by commit 16a15c1cfc as it did not include the
quantum header. This commit addresses that, as well as other issues with
transferring bytes over the SPI interface, i.e. it was not setting the
clock pin back to low after sending a bit.

The deviation when sending the end frame is kept, but updated to the
latest from the referenced project.

Finally, these changes expose the global LED brightness parameter
of the APA102. Brightness values are configurable through
`APA102_DEFAULT_BRIGHTNESS` and `APA102_MAX_BRIGHTNESS`.

* Fix typo in led brightness extern

* Move driver out of AVR directory and add delay for ARM

* Experimental APA102 support on AVR and ARM

Co-authored-by: Alde Rojas <hello@alde.io>

* Refactor apa102_send_byte() calls to a loop

* Implement io_wait function for ARM

* Move APA102 drivers to own directory, fix copyright notice

* Add APA102 keymap to handwired/onekey

* Simplify RGBLIGHT_ENABLE/DRIVER option handling

Co-authored-by: Mikkel Jeppesen <2756925+Duckle29@users.noreply.github.com>
2020-12-30 00:28:49 +00:00
QMK Bot 7dd99f2b22 Merge remote-tracking branch 'origin/master' into develop 2020-12-30 00:06:16 +00:00
QMK Bot e29b9e32bb Merge remote-tracking branch 'origin/master' into develop 2020-12-30 00:03:43 +00:00
QMK Bot 599043e7ff Merge remote-tracking branch 'origin/master' into develop 2020-12-29 23:44:18 +00:00
QMK Bot 79265fc2c0 Merge remote-tracking branch 'origin/master' into develop 2020-12-29 23:24:24 +00:00
QMK Bot 871d99e659 Merge remote-tracking branch 'origin/master' into develop 2020-12-29 22:14:33 +00:00
QMK Bot 25109f79f1 Merge remote-tracking branch 'origin/master' into develop 2020-12-29 22:13:29 +00:00
QMK Bot 9634c72d7e Merge remote-tracking branch 'origin/master' into develop 2020-12-29 21:45:35 +00:00
QMK Bot 8609fe8f46 Merge remote-tracking branch 'origin/master' into develop 2020-12-29 21:14:06 +00:00
QMK Bot 77185961dc Merge remote-tracking branch 'origin/master' into develop 2020-12-29 20:52:21 +00:00
QMK Bot 7ee3eb50b0 Merge remote-tracking branch 'origin/master' into develop 2020-12-29 19:46:58 +00:00
QMK Bot 525be128c9 Merge remote-tracking branch 'origin/master' into develop 2020-12-29 19:42:43 +00:00
QMK Bot 7b7763469b Merge remote-tracking branch 'origin/master' into develop 2020-12-29 19:35:24 +00:00
QMK Bot 9748b6b847 Merge remote-tracking branch 'origin/master' into develop 2020-12-29 16:33:06 +00:00
QMK Bot d1b9a7e1bd Merge remote-tracking branch 'origin/master' into develop 2020-12-29 04:06:42 +00:00
QMK Bot 8ea2650ab2 Merge remote-tracking branch 'origin/master' into develop 2020-12-28 20:27:33 +00:00
QMK Bot 99d6349978 Merge remote-tracking branch 'origin/master' into develop 2020-12-27 17:37:04 +00:00
QMK Bot 0c5be869ff Merge remote-tracking branch 'origin/master' into develop 2020-12-27 16:56:40 +00:00
QMK Bot 0b37c0dfa0 Merge remote-tracking branch 'origin/master' into develop 2020-12-26 04:56:43 +00:00
QMK Bot ffd7e44e5a Merge remote-tracking branch 'origin/master' into develop 2020-12-26 04:53:57 +00:00
QMK Bot 6c366ccf6a Merge remote-tracking branch 'origin/master' into develop 2020-12-25 23:00:57 +00:00
QMK Bot a4866b31d6 Merge remote-tracking branch 'origin/master' into develop 2020-12-25 17:38:46 +00:00
QMK Bot f1a67c42a0 Merge remote-tracking branch 'origin/master' into develop 2020-12-25 14:45:00 +00:00
QMK Bot c6aa9c4ad7 Merge remote-tracking branch 'origin/master' into develop 2020-12-25 14:42:41 +00:00
QMK Bot f83eefba37 Merge remote-tracking branch 'origin/master' into develop 2020-12-25 14:39:30 +00:00
George Mao 73dfc2b368 [Keyboard] Refactor Jacky's boards (Bear65 and S7 Elephant) (#10528) 2020-12-24 14:53:16 -08:00
Jan Christoph Ebersbach 010271d6ea Implement kinetic mouse movement algorithm (#6739)
* Implement kinetic mouse movement algorithm

* Adjust mouse wheel speed

* Remove unused math.h include

* Wrap mouse_timer definition in ifdef

* Replace double space by single space

* Clarify documentation of kinetic mouse speed

Co-Authored-By: lf <software@lfcode.ca>

* Clarify documentation of kinetic mouse speed

Co-Authored-By: lf <software@lfcode.ca>

* Remove superfluous definition of speed

* fix(variable): remove unused variable

Co-authored-by: lf <software@lfcode.ca>
2020-12-24 14:12:19 -08:00
QMK Bot 4551e57d64 Merge remote-tracking branch 'origin/master' into develop 2020-12-24 13:33:55 +00:00
QMK Bot 7771e544ac Merge remote-tracking branch 'origin/master' into develop 2020-12-24 02:37:19 +00:00
QMK Bot 5437c0af6e Merge remote-tracking branch 'origin/master' into develop 2020-12-24 01:08:27 +00:00
QMK Bot 45bace1328 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 17:00:38 +00:00
QMK Bot a0af5eb307 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 09:22:59 +00:00
QMK Bot 363957f919 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 07:26:03 +00:00
QMK Bot 524da962d3 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 06:37:37 +00:00
QMK Bot d6de97b116 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 06:28:28 +00:00
QMK Bot 7c95e5ef3e Merge remote-tracking branch 'origin/master' into develop 2020-12-23 06:24:07 +00:00
QMK Bot 83d73b5407 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 06:01:26 +00:00
QMK Bot f971934dab Merge remote-tracking branch 'origin/master' into develop 2020-12-23 05:59:58 +00:00
QMK Bot 3656644c35 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 05:53:47 +00:00
QMK Bot bdc3578e29 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 05:35:04 +00:00
QMK Bot 19fd0108d3 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 04:02:16 +00:00
QMK Bot 529dad88dd Merge remote-tracking branch 'origin/master' into develop 2020-12-23 02:50:49 +00:00
QMK Bot b02c694992 Merge remote-tracking branch 'origin/master' into develop 2020-12-23 00:45:29 +00:00
QMK Bot dc6b0d3548 Merge remote-tracking branch 'origin/master' into develop 2020-12-22 21:05:31 +00:00
QMK Bot 1c04608b0a Merge remote-tracking branch 'origin/master' into develop 2020-12-22 20:33:41 +00:00
QMK Bot 47db2d3062 Merge remote-tracking branch 'origin/master' into develop 2020-12-22 19:29:09 +00:00
QMK Bot 286ab6d53f Merge remote-tracking branch 'origin/master' into develop 2020-12-22 19:28:03 +00:00
Sendy Aditya Suryana 3b06ab51e5 [Keyboard] Add Pix (#11154)
* Add nakal4x keyboard firmware

* Fix VIA config

* Setup OLED

* Rename to pix

* Rename via.json to info.json

* Update keyboards/sendyyeah/pix/config.h

remove obsolete value as suggested by drashna

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

* Add GPL Like license header

* Remove unused bootloader list

* Change URL

* Update readme

* Delete via info.json

* Add GPL2+ license header on via keymap

* Update keyboards/sendyyeah/pix/rules.mk

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

* Update keyboards/sendyyeah/pix/keymaps/default/glcdfont.c

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

* Add GPL2+ license header on via keymap

* Add image

* Remove local drivers

* Remove unused method on keymap files

* Change project name on keymap readme files

* Update keyboards/sendyyeah/pix/rules.mk

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

* Update keyboards/sendyyeah/pix/readme.md

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

* Update keyboards/sendyyeah/pix/keymaps/default/glcdfont.c

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

* Update keyboards/sendyyeah/pix/keymaps/default/keymap.c

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

* Update keyboards/sendyyeah/pix/keymaps/via/keymap.c

Co-authored-by: Sendy Aditya Suryana <sendy.suryana@go-jek.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
2020-12-22 11:20:09 -08:00
QMK Bot 3dde354736 Merge remote-tracking branch 'origin/master' into develop 2020-12-22 18:40:06 +00:00
QMK Bot 824175e69c Merge remote-tracking branch 'origin/master' into develop 2020-12-22 18:11:31 +00:00
QMK Bot 603d5fbeb1 Merge remote-tracking branch 'origin/master' into develop 2020-12-22 17:52:34 +00:00
QMK Bot 325179eb63 Merge remote-tracking branch 'origin/master' into develop 2020-12-22 17:40:46 +00:00
QMK Bot 96a5e560d7 Merge remote-tracking branch 'origin/master' into develop 2020-12-22 17:23:53 +00:00
QMK Bot 71fcfb3cb5 Merge remote-tracking branch 'origin/master' into develop 2020-12-22 09:15:10 +00:00
QMK Bot 8f867c1bef Merge remote-tracking branch 'origin/master' into develop 2020-12-21 14:39:10 +00:00
QMK Bot 37bb69686c Merge remote-tracking branch 'origin/master' into develop 2020-12-21 14:35:14 +00:00
QMK Bot 210e614d2a Merge remote-tracking branch 'origin/master' into develop 2020-12-21 12:30:13 +00:00
Nick Brassel 296a6cf4ea ChibiOS conf migrations... take 3 (#11261)
* Add SPI1 DMA stream definitions.

* ChibiOS conf upgrade for acheron/lasgweloth

 acheron/lasgweloth - 3bedb0fe1f1b542b4d90daeaeab8905cd9ee992c

* ChibiOS conf upgrade for box75

 box75 - ff91bacf5cec0b42df02967eb0ecbf4bd1b56928

* ChibiOS conf upgrade for geekboards/macropad_v2

 geekboards/macropad_v2 - 1c205720d47f7e636173064b1aef1637860a9134

* ChibiOS conf upgrade for iron180

 iron180 - 867929d78361a50e34671e4e167cafd927d8982b

* ChibiOS conf upgrade for technika

 technika - cb9295b90980eb8dfdc63d6031533edbb344c045
2020-12-21 15:02:38 +11:00
QMK Bot c8cd2caeac Merge remote-tracking branch 'origin/master' into develop 2020-12-21 02:12:40 +00:00
QMK Bot d7385676bc Merge remote-tracking branch 'origin/master' into develop 2020-12-20 14:46:35 +00:00
QMK Bot aee1798476 Merge remote-tracking branch 'origin/master' into develop 2020-12-20 08:09:09 +00:00
QMK Bot 24e827ee1f Merge remote-tracking branch 'origin/master' into develop 2020-12-20 02:28:28 +00:00
QMK Bot 8cb52b2048 Merge remote-tracking branch 'origin/master' into develop 2020-12-19 21:15:16 +00:00
QMK Bot 32f53c0671 Merge remote-tracking branch 'origin/master' into develop 2020-12-19 18:47:05 +00:00
QMK Bot d11116f734 Merge remote-tracking branch 'origin/master' into develop 2020-12-19 18:43:32 +00:00
QMK Bot 35e684d1ff Merge remote-tracking branch 'origin/master' into develop 2020-12-19 00:43:05 +00:00
QMK Bot 45a1a3239d Merge remote-tracking branch 'origin/master' into develop 2020-12-18 20:57:00 +00:00
QMK Bot d66c14b71e Merge remote-tracking branch 'origin/master' into develop 2020-12-18 20:18:55 +00:00
QMK Bot 06f9297f94 Merge remote-tracking branch 'origin/master' into develop 2020-12-18 17:29:08 +00:00
Ryan 115b60b0e1 Fix duplicate I2C_KEYMAP_START define (#11237) 2020-12-17 15:49:24 +00:00
fauxpark 7797070b37 Merge remote-tracking branch 'upstream/master' into develop 2020-12-18 02:15:28 +11:00
QMK Bot 973057cfe4 Merge remote-tracking branch 'origin/master' into develop 2020-12-17 09:51:19 +00:00
QMK Bot e58f69ea6a Merge remote-tracking branch 'origin/master' into develop 2020-12-17 06:47:47 +00:00
QMK Bot 1bd9570ece Merge remote-tracking branch 'origin/master' into develop 2020-12-17 06:45:50 +00:00
QMK Bot 398f67290c Merge remote-tracking branch 'origin/master' into develop 2020-12-17 06:44:20 +00:00
QMK Bot ddc27c2935 Merge remote-tracking branch 'origin/master' into develop 2020-12-17 05:56:48 +00:00
QMK Bot 41bf5505eb Merge remote-tracking branch 'origin/master' into develop 2020-12-17 05:45:49 +00:00
QMK Bot 4352416d77 Merge remote-tracking branch 'origin/master' into develop 2020-12-17 05:28:22 +00:00
QMK Bot cb3dff5c3f Merge remote-tracking branch 'origin/master' into develop 2020-12-17 05:26:37 +00:00
QMK Bot 4631e4ef8e Merge remote-tracking branch 'origin/master' into develop 2020-12-17 05:25:34 +00:00
QMK Bot 45fa5416ab Merge remote-tracking branch 'origin/master' into develop 2020-12-17 05:22:14 +00:00
Casey Webster 5e2b53541b Add modifier state to the split keyboard transport (#10400)
* Add modifier state to the split transport

This adds modifier state to the i2c and serial transport for split
keyboards.  The purpose of this is to allow e.g. displaying modifier
state on the slave side of a split keyboard on an oled.  This adds one
byte to the data transferred between halves.

This also fixes a missing ifdef guard for BLACKLIGHT_ENABLE.

Break modifiers into real/weak/oneshot

Fix incorrect slave serial mod setting

Fix typo in serial weal mod setter

Fix build errors for the I2C code that I introduced

Code cleanup and formatting per project preferences

Correctly get oneshot mods

Fix missing braces

Remove unneeded ifdef guard

Make the added state transport optional

Add documentation for the new define to enable this feature

Fix stray grave mark

* Fix error introduced in conflict resolution
2020-12-17 16:21:26 +11:00
QMK Bot 9c205d4a29 Merge remote-tracking branch 'origin/master' into develop 2020-12-16 23:00:55 +00:00
QMK Bot 4f431e8a90 Merge remote-tracking branch 'origin/master' into develop 2020-12-16 21:03:23 +00:00
QMK Bot 13b31938ce Merge remote-tracking branch 'origin/master' into develop 2020-12-16 17:48:32 +00:00
QMK Bot a5dd5bfd26 Merge remote-tracking branch 'origin/master' into develop 2020-12-16 17:37:30 +00:00
QMK Bot 2e0f2025bd Merge remote-tracking branch 'origin/master' into develop 2020-12-16 03:27:52 +00:00
QMK Bot 416dea2c54 Merge remote-tracking branch 'origin/master' into develop 2020-12-16 03:25:18 +00:00
QMK Bot 55f681a723 Merge remote-tracking branch 'origin/master' into develop 2020-12-15 17:27:06 +00:00
QMK Bot c1b8b811ed Merge remote-tracking branch 'origin/master' into develop 2020-12-15 11:14:52 +00:00
QMK Bot 9a04739b98 Merge remote-tracking branch 'origin/master' into develop 2020-12-14 22:27:09 +00:00
QMK Bot ac0ad5ad17 Merge remote-tracking branch 'origin/master' into develop 2020-12-14 19:13:38 +00:00
QMK Bot 6c8ed21022 Merge remote-tracking branch 'origin/master' into develop 2020-12-13 21:47:56 +00:00
QMK Bot 25a1cb5a15 Merge remote-tracking branch 'origin/master' into develop 2020-12-13 18:51:35 +00:00
QMK Bot 11ee2736bd Merge remote-tracking branch 'origin/master' into develop 2020-12-12 18:19:43 +00:00
QMK Bot d7e285a4d9 Merge remote-tracking branch 'origin/master' into develop 2020-12-11 19:00:42 +00:00
QMK Bot 6873c4cf91 Merge remote-tracking branch 'origin/master' into develop 2020-12-11 13:49:45 +00:00
QMK Bot a023484d64 Merge remote-tracking branch 'origin/master' into develop 2020-12-11 12:50:39 +00:00
QMK Bot fdfcce57e1 Merge remote-tracking branch 'origin/master' into develop 2020-12-11 02:46:19 +00:00
QMK Bot ed76f4394f Merge remote-tracking branch 'origin/master' into develop 2020-12-10 19:03:17 +00:00
QMK Bot f77f715aa2 Merge remote-tracking branch 'origin/master' into develop 2020-12-10 17:02:28 +00:00
QMK Bot 15373c8367 Merge remote-tracking branch 'origin/master' into develop 2020-12-10 14:47:20 +00:00
QMK Bot f743ff2256 Merge remote-tracking branch 'origin/master' into develop 2020-12-10 14:31:52 +00:00
QMK Bot b8b8a294d3 Merge remote-tracking branch 'origin/master' into develop 2020-12-10 02:08:06 +00:00
QMK Bot 5e04ed9f53 Merge remote-tracking branch 'origin/master' into develop 2020-12-09 17:29:35 +00:00
QMK Bot 5689df7490 Merge remote-tracking branch 'origin/master' into develop 2020-12-09 08:56:17 +00:00
QMK Bot cc14d32941 Merge remote-tracking branch 'origin/master' into develop 2020-12-09 08:04:32 +00:00
fauxpark 95c39b3727 Merge remote-tracking branch 'upstream/master' into develop 2020-12-09 18:21:45 +11:00
Nick Brassel eb3964bd57 ChibiOS conf migration: dekunukem/duckypad (#11123) 2020-12-08 15:05:11 +11:00
QMK Bot cf0ae2abe8 Merge remote-tracking branch 'origin/master' into develop 2020-12-07 19:39:49 +00:00
QMK Bot 7222210454 Merge remote-tracking branch 'origin/master' into develop 2020-12-07 19:08:02 +00:00
QMK Bot 07502a28f7 Merge remote-tracking branch 'origin/master' into develop 2020-12-07 18:15:16 +00:00
QMK Bot 0e65e9ad51 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 20:04:55 +00:00
QMK Bot 7fba37db06 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 19:57:57 +00:00
QMK Bot 4acfa14df1 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 19:18:04 +00:00
QMK Bot 354262dfe9 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 18:57:23 +00:00
QMK Bot 41a76cd810 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 18:12:30 +00:00
QMK Bot b36e32a676 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 17:38:05 +00:00
QMK Bot e31671ece0 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 12:54:36 +00:00
QMK Bot 3aa2c122e1 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 06:39:15 +00:00
QMK Bot 688b8df982 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 06:32:11 +00:00
QMK Bot d62e367280 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 06:31:03 +00:00
Jesper Jensen 63d06655e6 gcc 10 compatibility for Drop alt (#9485)
* Split dmac_desc declaration and definition

According to the official documentation[1] gcc 10 is more strict about
correct extern usage.

I've had to move the definition of dmac_desc and dmac_desc_wb from
i2c_master.h to the corresponding .c file. This could be an issue if
anyone includes the i2c_master.h file without liking with the object
file.

[1]: https://gcc.gnu.org/gcc-10/porting_to.html

* Remove the keymap_config definition from keymaps

The keymap_config def was conflicting with the one found in
tmk_core/common/magic.c. Declaring it extern in magic.c breaks a bunch
of keyboard that rely on that declaration (like the ergodox). Instead
I've removed the one found in the keymap.c of the massdrop alt.

The same change will have to be made to other keyboards.
2020-12-06 17:24:49 +11:00
QMK Bot 7043561459 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 06:18:31 +00:00
QMK Bot e199fb6190 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 06:16:19 +00:00
QMK Bot 5cfbfc2c52 Merge remote-tracking branch 'origin/master' into develop 2020-12-06 06:11:48 +00:00
QMK Bot 2c121b3d8e Merge remote-tracking branch 'origin/master' into develop 2020-12-06 01:54:14 +00:00
QMK Bot bb79fbaccf Merge remote-tracking branch 'origin/master' into develop 2020-12-06 01:50:41 +00:00
QMK Bot af8697c85b Merge remote-tracking branch 'origin/master' into develop 2020-12-05 21:48:41 +00:00
QMK Bot 351f258bed Merge remote-tracking branch 'origin/master' into develop 2020-12-05 11:15:47 +00:00
QMK Bot 15200bd8f5 Merge remote-tracking branch 'origin/master' into develop 2020-12-05 10:14:47 +00:00
Nick Brassel f1fef16e4d ChibiOS upgrade: keyboard conf migrations (phase 1) (#10418)
* ChibiOS conf upgrade for acheron/arctic

 acheron/arctic - 8d3d233f15bf5d396e29abb94f943a89b0b828d1

* ChibiOS conf upgrade for acheron/austin

 acheron/austin - beabc6204533de80704684de9ff7790895f319e1

* ChibiOS conf upgrade for acheron/keebspcb

 acheron/keebspcb - e14a96e99aab54aefebc1d3d24d64b0082db7842

* ChibiOS conf upgrade for aeboards/ext65/rev2

 aeboards/ext65/rev2 - 0b97daef994903585be2768b6aaffc4da97ec617

* ChibiOS conf upgrade for ai03/vega

 ai03/vega - 7e5f208278309681fd1db8b2629890b813fdf938

* ChibiOS conf upgrade for at_at/660m

 at_at/660m - e30393b6546454f9939c1187aa9c6539f1ef76c1

* ChibiOS conf upgrade for bt66tech/bt66tech60

 bt66tech/bt66tech60 - a7f4e8a224132830447d12c92d146997f9b56b7d

* ChibiOS conf upgrade for cannonkeys/an_c

 cannonkeys/an_c - e7320dc09377fdad749e382b3986f2241633214b

* ChibiOS conf upgrade for cannonkeys/atlas

 cannonkeys/atlas - 063a8eaea7e68607b725ad06777c49d34686b433

* ChibiOS conf upgrade for cannonkeys/chimera65

 cannonkeys/chimera65 - 01ce66c862a5cd98183b10e992939a55038779bc

* ChibiOS conf upgrade for cannonkeys/db60

 cannonkeys/db60 - 45636d0b3cf951cef51a5b19678e2da549efd14f

* ChibiOS conf upgrade for cannonkeys/devastatingtkl

 cannonkeys/devastatingtkl - 709e0155c421991fad283d38c28f850320ed4730

* ChibiOS conf upgrade for cannonkeys/instant60

 cannonkeys/instant60 - 7e530e10794183d684a328f01b9b0743907440c7

* ChibiOS conf upgrade for cannonkeys/instant65

 cannonkeys/instant65 - c8de288708d0586337cb7137ae54d97e1ddc90a6

* ChibiOS conf upgrade for cannonkeys/iron165

 cannonkeys/iron165 - 3a3c0273e227fd15ab3527e4aa557b94d0b69248

* ChibiOS conf upgrade for cannonkeys/obliterated75

 cannonkeys/obliterated75 - cdf834802ae77b1bbd4876eb8c34c19a83ad95cd

* ChibiOS conf upgrade for cannonkeys/ortho48

 cannonkeys/ortho48 - 3432ff13c83a6358eca44b37f72b18882eeda699

* ChibiOS conf upgrade for cannonkeys/ortho60

 cannonkeys/ortho60 - 95be42a23798cc8f9b04175d4892b712d871a52d

* ChibiOS conf upgrade for cannonkeys/ortho75

 cannonkeys/ortho75 - e1149893fd01e853124808b45d521b61a7638eb9

* ChibiOS conf upgrade for cannonkeys/practice60

 cannonkeys/practice60 - 6e4da87f0a766cf2665e9b4aa8e3ab33017cf745

* ChibiOS conf upgrade for cannonkeys/practice65

 cannonkeys/practice65 - c436c06829123503073b3a9c5a1c0acfc2dbe2e5

* ChibiOS conf upgrade for cannonkeys/rekt1800

 cannonkeys/rekt1800 - 43e8e21b62531534afeaa241f4c683fbdb60a8e0

* ChibiOS conf upgrade for cannonkeys/satisfaction75

 cannonkeys/satisfaction75 - 28ff9a8a11ad1de9d09ec85fab2af906b7c27d6a

* ChibiOS conf upgrade for cannonkeys/savage65

 cannonkeys/savage65 - 53eaefae56020b536d4934686506d5d1fe51b6e0

* ChibiOS conf upgrade for cannonkeys/tmov2

 cannonkeys/tmov2 - 8b1ced8ff7dc368afa268104cd5192bb1bfc8a1c

* ChibiOS conf upgrade for chavdai40

 chavdai40/rev1 - b166af66b084077764b705c9428725cde0b0ce51
 chavdai40/rev2 - 0048c8ec8c28f1dfa5d1a37348524899595d8325

* ChibiOS conf upgrade for cheshire/curiosity

 cheshire/curiosity - f1636e53638ce2e798070e6e622fd88a08982d5a

* ChibiOS conf upgrade for clueboard/60

 clueboard/60 - bb5057d4a2976b6530fe2e345a4153de2f7c042d

* ChibiOS conf upgrade for clueboard/66_hotswap/gen1

 clueboard/66_hotswap/gen1 - 03fe10f4de7b67e5f1cf0a7d576f82676adf4261

* ChibiOS conf upgrade for clueboard/66/rev4

 clueboard/66/rev4 - 878e38a34f97b32d9d109a6d98f98bc385d84864

* ChibiOS conf upgrade for coarse/cordillera

 coarse/cordillera - 5cae5c643e96d03bddcbb73e76e225ea5f82fef3

* ChibiOS conf upgrade for converter/siemens_tastatur

 converter/siemens_tastatur - 48f82cd227836878967dfa0fe0411f7d877a124c

* ChibiOS conf upgrade for ergodox_infinity

 ergodox_infinity - 8df21d6129eef47d7a5ced92715e5bdbfb0151e5

* ChibiOS conf upgrade for function96

 function96 - deecdcdca34c88058f820f0e2bc9f112458c85c5

* ChibiOS conf upgrade for generic_panda/panda65_01

 generic_panda/panda65_01 - 8522d8107edcf71758f3be7298c0bc18fa7f6706

* ChibiOS conf upgrade for hadron/ver3

 hadron/ver3 - 632af7727b767720c699abdff770edc9682928ee

* ChibiOS conf upgrade for handwired/ck4x4

 handwired/ck4x4 - a4cb9b5b8c3a162083677b14b105edbc1bca2baf

* ChibiOS conf upgrade for handwired/co60/rev6

 handwired/co60/rev6 - be1688eeabd83a7f576d9e4e23e24d56b8dc251b

* ChibiOS conf upgrade for handwired/co60/rev7

 handwired/co60/rev7 - d196c5772859ddee695bda5b0e9f0944a0f350f8

* ChibiOS conf upgrade for handwired/onekey/blackpill_f401

 handwired/onekey/blackpill_f401 - 8387bfd56888fc1605d293dc0071b4ec94b23991

* ChibiOS conf upgrade for handwired/onekey/blackpill_f411

 handwired/onekey/blackpill_f411 - 855efdb2f60c384edf64773c0f4ff4b7ea8ae4c9

* ChibiOS conf upgrade for handwired/onekey/bluepill

 handwired/onekey/bluepill - 60d8555b174dbdabae196a4cc5eccfee4bdd9529

* ChibiOS conf upgrade for handwired/onekey/stm32f0_disco

 handwired/onekey/stm32f0_disco - 9bc12e29f5a4e4b9ec0f34987559e5e11de4bb48

* ChibiOS conf upgrade for handwired/onekey/teensy_32

 handwired/onekey/teensy_32 - 17459dd8e71b3a33270037878bdbd04151af196b

* ChibiOS conf upgrade for handwired/onekey/teensy_lc

 handwired/onekey/teensy_lc - 3a9aed4681c287176efe31c988340ca43ad27a9d

* ChibiOS conf upgrade for handwired/pill60/blackpill_f401

 handwired/pill60/blackpill_f401 - 5b652354ae957e86e211dcef29f8f27320b31180

* ChibiOS conf upgrade for handwired/pill60/blackpill_f411

 handwired/pill60/blackpill_f411 - 580255c171e95b5bca53b14a13ae018a73d18414

* ChibiOS conf upgrade for handwired/pill60/bluepill

 handwired/pill60/bluepill - 29109b54137ea94ac266c604991cff87516689ff

* ChibiOS conf upgrade for handwired/riblee_f401

 handwired/riblee_f401 - dc68c31d7ca8ae0fad7e7ad8bdd63406155ff363

* ChibiOS conf upgrade for handwired/riblee_f411

 handwired/riblee_f411 - cf0fadff4c98d41cf9bdddbe1ead15c79be941b9

* ChibiOS conf upgrade for handwired/steamvan/rev1

 handwired/steamvan/rev1 - 743b395ac87b918b6be4614c9e120e80a9f049d4

* ChibiOS conf upgrade for handwired/t111

 handwired/t111 - 99b61ae5692ee4b2101673d1a896cd7a5831bcfa

* ChibiOS conf upgrade for handwired/twadlee/tp69

 handwired/twadlee/tp69 - 3ab2753c40e947a726ece6c825493ebc87ecf20e

* ChibiOS conf upgrade for handwired/z150

 handwired/z150 - 78808b0c8671e2386b9ba65dbd647d613d92f253

* ChibiOS conf upgrade for hs60/v2

 hs60/v2/ansi - 7bcd152c269803de8f96416ba26e939c0420ceae
 hs60/v2/hhkb - d77f393d2811bd104b05c4530bf1083d75856b7a
 hs60/v2/iso - 5d3d20de919fca3b64cb7548cad46e8d35d7cc04

* ChibiOS conf upgrade for infinity60

 infinity60 - dbcbb2f58ee499252b0879d68d9beec08a8433bc

* ChibiOS conf upgrade for k_type

 k_type - 492f476177da95495442d1e173391e3c17324a70

* ChibiOS conf upgrade for keebio/bdn9/rev2

 keebio/bdn9/rev2 - 4dbb5d606b3d9060ad01a437978220fe0f1fc5b2

* ChibiOS conf upgrade for keebio/choconum

 keebio/choconum - 1521e634088a30114cd12b7b6bbd2cca5331c822

* ChibiOS conf upgrade for keebwerk/mega

 keebwerk/mega/ansi - 10e32718c7bfff2f6bd8dd2159a15bef0f4acbf9

* ChibiOS conf upgrade for misterknife/knife66

 misterknife/knife66 - cf2f3d26103036d79bf7fcec204e13899e33fbe3

* ChibiOS conf upgrade for nack

 nack - ba7f421d5670e672c5c14fd5f80c0f86447c1468

* ChibiOS conf upgrade for nebula12

 nebula12 - aedb11fa894dc19513462f054a9fa00f5c195adc

* ChibiOS conf upgrade for nebula68

 nebula68 - 6bed6afb2fd84ef9069b757f1d1e87fc1cbe290c

* ChibiOS conf upgrade for nemui

 nemui - 86ed80ea8565d7d0f39512a9032cc5e1b306fcff

* ChibiOS conf upgrade for nk65

 nk65 - 75b2484741a96dcbff14e94c44443bb33ad73dce

* ChibiOS conf upgrade for nk87

 nk87 - f719a739a3d2c0969c79c1ace5fe9a7d6f05cc22

* ChibiOS conf upgrade for peiorisboards/ixora

 peiorisboards/ixora - b5adf1090fb4c6278d8990ce9132727a13ca3cd7

* ChibiOS conf upgrade for phoenix

 phoenix - 21bfb14c52451899dadf545b78a8e88b22a420f0

* ChibiOS conf upgrade for polilla

 polilla - 3ba5f326b268362c9aba570b1510e1c61009ba96

* ChibiOS conf upgrade for primekb/meridian

 primekb/meridian - df266e25c682a8ed3318faa186805683014ccec4

* ChibiOS conf upgrade for projectkb/alice

 projectkb/alice - eee7210f618588b2c5c6367c8a0318427d09da52

* ChibiOS conf upgrade for projectkb/signature87

 projectkb/signature87 - 617430e601981f0bb5fbcce42eee53107d5161b8

* ChibiOS conf upgrade for ramonimbao/squishy65

 ramonimbao/squishy65 - 88e4cd3db8db61ccf9daed5405cf5eeb32f8043e

* ChibiOS conf upgrade for ramonimbao/wete

 ramonimbao/wete - f0e90d943d8749e802b6bba619ce943b568a7f65

* ChibiOS conf upgrade for rart/rartlice

 rart/rartlice - f7a6b58e6cadd4102fcf5f89d054d1fbdc5809d0

* ChibiOS conf upgrade for retro_75

 retro_75 - 34c7b291fb2443bf8cb69fb9ee676190c736bf00

* ChibiOS conf upgrade for rocketboard_16

 rocketboard_16 - 24e6503a7a5259934a80dd96dd37d3281b4240d3

* ChibiOS conf upgrade for satt/vision

 satt/vision - c926d6433d8b2dc1d74623184255016bdd36ae22

* ChibiOS conf upgrade for tkc/candybar

 tkc/candybar/lefty - 2f269cbed5dcec61bb0c7904a46436f110dc0ae1
 tkc/candybar/righty - 9b1448b2ccbcf8a4d1e5ad74d8ad5933003ee9a2

* ChibiOS conf upgrade for tkc/godspeed75

 tkc/godspeed75 - 2cfed58d44a7eef8f341ff24e0136511e03aa78d

* ChibiOS conf upgrade for tkw/stoutgat/v2/f411

 tkw/stoutgat/v2/f411 - b094651ec61c79099de3e6e4991319816ac464c1

* ChibiOS conf upgrade for viktus/styrka

 viktus/styrka - f3f678ea55126c9965f24da6fffc9bbbd8b24aa9

* ChibiOS conf upgrade for vinta

 vinta - e5403dc6bbf47f35a53cf43b1b1d130f05552f16

* ChibiOS conf upgrade for westfoxtrot/prophet

 westfoxtrot/prophet - 0e4d6987ffa6430720804e7bc1502ab6c3dcb879

* ChibiOS conf upgrade for whitefox

 whitefox - 5ca6de6fb09d8c2cfa996b65732fcd55391053ff

* ChibiOS conf upgrade for wolfmarkclub/wm1

 wolfmarkclub/wm1 - 2d8294e29b08f5af5406988a284483d1694ed36c

* ChibiOS conf upgrade for xelus/kangaroo

 xelus/kangaroo - f9697ba27d4e6c36a1cfd9e2657eac35dfa3be99

* ChibiOS conf upgrade for xelus/trinityxttkl

 xelus/trinityxttkl - a457601b446ea9b4e9e28d2ba304a4bcdb934257

* ChibiOS conf upgrade for xelus/valor_frl_tkl

 xelus/valor_frl_tkl - 27ec14b9ee0e5cb2d026af500d16b17d4c2885e2

* ChibiOS conf upgrade for zoo/wampus

 zoo/wampus - 926487c1f50c1c5eb0608ca7dc1184881d54d35e

* ChibiOS conf upgrade for zvecr/split_blackpill

 zvecr/split_blackpill - 02f4393d01e0a70c94af48fa979ff0229732e8ca

* ChibiOS conf upgrade for zvecr/zv48/f401

 zvecr/zv48/f401 - 8b1766a24f943b9b0ba756c6fe340ba69d5e14e3

* ChibiOS conf upgrade for zvecr/zv48/f411

 zvecr/zv48/f411 - 09ba645092eb7f3d41da0d5e6727f2f4f97033c0
2020-12-05 21:13:58 +11:00
QMK Bot 684773f2d4 Merge remote-tracking branch 'origin/master' into develop 2020-12-05 06:01:27 +00:00
QMK Bot e1ced62836 Merge remote-tracking branch 'origin/master' into develop 2020-12-05 05:46:31 +00:00
QMK Bot fac5e3b540 Merge remote-tracking branch 'origin/master' into develop 2020-12-04 11:03:51 +00:00
QMK Bot 64b395cb3a Merge remote-tracking branch 'origin/master' into develop 2020-12-04 05:00:10 +00:00
QMK Bot dc1eebb566 Merge remote-tracking branch 'origin/master' into develop 2020-12-04 02:22:34 +00:00
QMK Bot 024b3bd0dd Merge remote-tracking branch 'origin/master' into develop 2020-12-04 02:17:51 +00:00
QMK Bot 7a6e7d87cc Merge remote-tracking branch 'origin/master' into develop 2020-12-04 02:09:45 +00:00
Nick Brassel 4444f3cc55 Disable almost all ChibiOS subsystems in default configs (#11111)
* Disable almost all ChibiOS subsystems.

* Modify ChibiOS config updater script to fixup mcuconf include, use develop as base instead of master.

* Add default early-init bootloader to F042/F072.

* Back to 100k freq.
2020-12-04 10:45:39 +11:00
QMK Bot 7e2ba2784e Merge remote-tracking branch 'origin/master' into develop 2020-12-03 20:03:01 +00:00
QMK Bot ed2bb46658 Merge remote-tracking branch 'origin/master' into develop 2020-12-03 19:39:14 +00:00
Nick Brassel 87291437bd Add board specific to Proton-C, with usual defaults turned on. (#10976)
- Set all other ChibiOS defaults to 'off', when not targeting Proton-C
- Modified all existing F303 boards to point at the QMK_PROTON_C to ensure repeatable binary output
- Modified version.h generation so that SKIP_VERSION=yes generates the same output
2020-12-03 13:04:28 +11:00
QMK Bot 777a30cb42 Merge remote-tracking branch 'origin/master' into develop 2020-12-02 19:24:26 +00:00
QMK Bot de44fdbaf2 Merge remote-tracking branch 'origin/master' into develop 2020-12-02 02:01:06 +00:00
QMK Bot b5adf4d9e9 Merge remote-tracking branch 'origin/master' into develop 2020-12-01 22:28:42 +00:00
QMK Bot 0892741b10 Merge remote-tracking branch 'origin/master' into develop 2020-12-01 20:41:13 +00:00
XScorpion2 a8d0ec0749 [Split] Sync Timer feature (#10997)
A timer that is kept in sync between the halves of a split keyboard
2020-12-01 10:04:42 -08:00
QMK Bot 9c03a89596 Merge remote-tracking branch 'origin/master' into develop 2020-12-01 11:49:57 +00:00
QMK Bot a4da9c47c8 Merge remote-tracking branch 'origin/master' into develop 2020-12-01 11:37:38 +00:00
QMK Bot 58a5193a2b Merge remote-tracking branch 'origin/master' into develop 2020-12-01 11:25:08 +00:00
QMK Bot 0abf4647e3 Merge remote-tracking branch 'origin/master' into develop 2020-11-30 21:03:46 +00:00
QMK Bot 9a0a2dce41 Merge remote-tracking branch 'origin/master' into develop 2020-11-30 20:19:59 +00:00
QMK Bot 4a5388a2b6 Merge remote-tracking branch 'origin/master' into develop 2020-11-30 19:20:22 +00:00
James Young 3cc7d22732 Branch point for 2021 Feb 27 Breaking Change 2020-11-30 03:29:39 -08:00
XScorpion2 990d5189d1 Configurable serial usart timeout (#11057) 2020-11-30 03:29:35 -08:00
993 changed files with 21113 additions and 172442 deletions
+2 -2
View File
@@ -501,8 +501,8 @@ endef
%:
# Check if we have the CMP tool installed
cmp $(ROOT_DIR)/Makefile $(ROOT_DIR)/Makefile >/dev/null 2>&1; if [ $$? -gt 0 ]; then printf "$(MSG_NO_CMP)"; exit 1; fi;
# Ensure that bin/qmk works. This will be a failing check after the next develop merge
if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; fi
# Ensure that bin/qmk works.
if ! bin/qmk hello 1> /dev/null 2>&1; then printf "$(MSG_PYTHON_MISSING)"; exit 1; fi
# Check if the submodules are dirty, and display a warning if they are
ifndef SKIP_GIT
if [ ! -e lib/chibios ]; then git submodule sync lib/chibios && git submodule update --depth 50 --init lib/chibios; fi
+32 -5
View File
@@ -90,13 +90,16 @@ ifneq ("$(wildcard $(KEYBOARD_PATH_1)/rules.mk)","")
include $(KEYBOARD_PATH_1)/rules.mk
endif
MAIN_KEYMAP_PATH_1 := $(KEYBOARD_PATH_1)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_2 := $(KEYBOARD_PATH_2)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_3 := $(KEYBOARD_PATH_3)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_4 := $(KEYBOARD_PATH_4)/keymaps/$(KEYMAP)
MAIN_KEYMAP_PATH_5 := $(KEYBOARD_PATH_5)/keymaps/$(KEYMAP)
# Pull in rules from info.json
INFO_RULES_MK = $(shell bin/qmk generate-rules-mk --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/rules.mk)
include $(INFO_RULES_MK)
# Check for keymap.json first, so we can regenerate keymap.c
include build_json.mk
@@ -136,9 +139,7 @@ ifeq ($(strip $(CTPC)), yes)
endif
ifeq ($(strip $(CONVERT_TO_PROTON_C)), yes)
TARGET := $(TARGET)_proton_c
include platforms/chibios/GENERIC_STM32_F303XC/configs/proton_c.mk
OPT_DEFS += -DCONVERT_TO_PROTON_C
include platforms/chibios/QMK_PROTON_C/convert_to_proton_c.mk
endif
ifneq ($(FORCE_LAYOUT),)
@@ -292,6 +293,32 @@ ifneq ("$(wildcard $(KEYMAP_PATH)/config.h)","")
CONFIG_H += $(KEYMAP_PATH)/config.h
endif
# Pull in stuff from info.json
INFO_JSON_FILES :=
ifneq ("$(wildcard $(KEYBOARD_PATH_1)/info.json)","")
INFO_JSON_FILES += $(KEYBOARD_PATH_1)/info.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_2)/info.json)","")
INFO_JSON_FILES += $(KEYBOARD_PATH_2)/info.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_3)/info.json)","")
INFO_JSON_FILES += $(KEYBOARD_PATH_3)/info.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_4)/info.json)","")
INFO_JSON_FILES += $(KEYBOARD_PATH_4)/info.json
endif
ifneq ("$(wildcard $(KEYBOARD_PATH_5)/info.json)","")
INFO_JSON_FILES += $(KEYBOARD_PATH_5)/info.json
endif
CONFIG_H += $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h
$(KEYBOARD_OUTPUT)/src/info_config.h: $(INFO_JSON_FILES)
bin/qmk generate-config-h --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/info_config.h
$(KEYBOARD_OUTPUT)/src/layouts.h: $(INFO_JSON_FILES)
bin/qmk generate-layouts --quiet --keyboard $(KEYBOARD) --output $(KEYBOARD_OUTPUT)/src/layouts.h
# project specific files
SRC += $(KEYBOARD_SRC) \
$(KEYMAP_C) \
@@ -366,7 +393,7 @@ all:
echo "skipped" >&2
endif
build: elf cpfirmware
build: $(KEYBOARD_OUTPUT)/src/info_config.h $(KEYBOARD_OUTPUT)/src/layouts.h elf cpfirmware
check-size: build
check-md5: build
objs-size: build
+38 -8
View File
@@ -154,18 +154,38 @@ else
endif
endif
RGBLIGHT_ENABLE ?= no
VALID_RGBLIGHT_TYPES := WS2812 APA102 custom
ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
RGBLIGHT_DRIVER ?= custom
endif
ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
POST_CONFIG_H += $(QUANTUM_DIR)/rgblight_post_config.h
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight.c
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
ifeq ($(strip $(RGBLIGHT_CUSTOM_DRIVER)), yes)
OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
RGBLIGHT_DRIVER ?= WS2812
ifeq ($(filter $(RGBLIGHT_DRIVER),$(VALID_RGBLIGHT_TYPES)),)
$(error RGBLIGHT_DRIVER="$(RGBLIGHT_DRIVER)" is not a valid RGB type)
else
POST_CONFIG_H += $(QUANTUM_DIR)/rgblight_post_config.h
OPT_DEFS += -DRGBLIGHT_ENABLE
SRC += $(QUANTUM_DIR)/color.c
SRC += $(QUANTUM_DIR)/rgblight.c
CIE1931_CURVE := yes
RGB_KEYCODES_ENABLE := yes
endif
ifeq ($(strip $(RGBLIGHT_DRIVER)), WS2812)
WS2812_DRIVER_REQUIRED := yes
endif
ifeq ($(strip $(RGBLIGHT_DRIVER)), APA102)
APA102_DRIVER_REQUIRED := yes
endif
ifeq ($(strip $(RGBLIGHT_DRIVER)), custom)
OPT_DEFS += -DRGBLIGHT_CUSTOM_DRIVER
endif
endif
@@ -243,6 +263,11 @@ endif
WS2812_DRIVER_REQUIRED := yes
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), APA102)
OPT_DEFS += -DAPA102
APA102_DRIVER_REQUIRED := yes
endif
ifeq ($(strip $(RGB_MATRIX_CUSTOM_KB)), yes)
OPT_DEFS += -DRGB_MATRIX_CUSTOM_KB
endif
@@ -345,6 +370,11 @@ ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
endif
endif
ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes)
COMMON_VPATH += $(DRIVER_PATH)/apa102
SRC += apa102.c
endif
ifeq ($(strip $(VISUALIZER_ENABLE)), yes)
CIE1931_CURVE := yes
endif
+1
View File
@@ -22,6 +22,7 @@
* QMK API
* [Overview](api_overview.md)
* [API Documentation](api_docs.md)
* [KLE To info.json](kle2json_guide.md)
* [Keyboard Support](reference_configurator_support.md)
* [Adding Default Keymaps](configurator_default_keymaps.md)
+16 -8
View File
@@ -308,24 +308,32 @@ qmk generate-rgb-breathe-table [-q] [-o OUTPUT] [-m MAX] [-c CENTER]
## `qmk kle2json`
This command allows you to convert from raw KLE data to QMK Configurator JSON. It accepts either an absolute file path, or a file name in the current directory. By default it will not overwrite `info.json` if it is already present. Use the `-f` or `--force` flag to overwrite.
This command allows you to convert [Keyboard-Layout-Editor.com](http://keyboard-layout-editor.com) layouts into `info.json` layouts. It will also create a `keymap.json` file for your layout. This saves a lot of time when setting up a new keyboard.
To use this command your KLE will need to follow a specific format. See [KLE To info.json](kle2json_guide.md) for more details.
**Usage**:
```
qmk kle2json [-f] <filename>
qmk kle2json -kb <keyboard> [-km KEYMAP] [-l LAYOUT] <filename-or-kle-id>
```
**Examples**:
```
$ qmk kle2json kle.txt
☒ File info.json already exists, use -f or --force to overwrite.
```
With only a KLE id:
```
$ qmk kle2json -f kle.txt -f
Ψ Wrote out to info.json
$ qmk kle2json -kb clueboard/new60 70aaa4bed76d0b2f67fd165641239552
Ψ Wrote file keyboards/clueboard/new60/info.json
Ψ Wrote file keyboards/clueboard/new60/keymaps/default/keymap.json
```
With a full URL:
```
$ qmk kle2json -kb clueboard/new60 'http://www.keyboard-layout-editor.com/#/gists/70aaa4bed76d0b2f67fd165641239552'
Ψ Wrote file keyboards/clueboard/new60/info.json
Ψ Wrote file keyboards/clueboard/new60/keymaps/default/keymap.json
```
## `qmk pyformat`
+27 -1
View File
@@ -42,6 +42,7 @@ In your keymap you can use the following keycodes to map key presses to mouse ac
Mouse keys supports three different modes to move the cursor:
* **Accelerated (default):** Holding movement keys accelerates the cursor until it reaches its maximum speed.
* **Kinetic:** Holding movement keys accelerates the cursor with its speed following a quadratic curve until it reaches its maximum speed.
* **Constant:** Holding movement keys moves the cursor at constant speeds.
* **Combined:** Holding movement keys accelerates the cursor until it reaches its maximum speed, but holding acceleration and movement keys simultaneously moves the cursor at constant speeds.
@@ -56,7 +57,8 @@ 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 |
|`MOUSEKEY_INTERVAL` |50 |Time between cursor movements in milliseconds |
|`MOUSEKEY_MOVE_DELTA` |5 |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 |
@@ -73,6 +75,30 @@ Tips:
Cursor acceleration uses the same algorithm as the X Window System MouseKeysAccel feature. You can read more about it [on Wikipedia](https://en.wikipedia.org/wiki/Mouse_keys).
### Kinetic Mode
This is an extension of the accelerated mode. The kinetic mode uses a quadratic curve on the cursor speed which allows precise movements at the beginning and allows to cover large distances by increasing cursor speed quickly thereafter. You can adjust the cursor and scrolling acceleration using the following settings in your keymaps `config.h` file:
|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_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 |
|`MOUSEKEY_ACCELERATED_SPEED` |3000 |Accelerated cursor speed |
|`MOUSEKEY_WHEEL_INITIAL_MOVEMENTS` |16 |Initial number of movements of the mouse wheel |
|`MOUSEKEY_WHEEL_BASE_MOVEMENTS` |32 |Maximum number of movements at which acceleration stops |
|`MOUSEKEY_WHEEL_ACCELERATED_MOVEMENTS`|48 |Accelerated wheel movements |
|`MOUSEKEY_WHEEL_DECELERATED_MOVEMENTS`|8 |Decelerated wheel movements |
Tips:
* The smoothness of the cursor movement depends on the `MOUSEKEY_INTERVAL` setting. The shorter the interval is set the smoother the movement will be. Setting the value too low makes the cursor unresponsive. Lower settings are possible if the micro processor is fast enough. For example: At an interval of `8` milliseconds, `125` movements per second will be initiated. With a base speed of `1000` each movement will move the cursor by `8` pixels.
* Mouse wheel movements are implemented differently from cursor movements. While it's okay for the cursor to move multiple pixels at once for the mouse wheel this would lead to jerky movements. Instead, the mouse wheel operates at step size `1`. Setting mouse wheel speed is done by adjusting the number of wheel movements per second.
### Constant mode
In this mode you can define multiple different speeds for both the cursor and the mouse wheel. There is no acceleration. `KC_ACL0`, `KC_ACL1` and `KC_ACL2` change the cursor and scroll speed to their respective setting.
+22
View File
@@ -129,6 +129,28 @@ Configure the hardware via your `config.h`:
---
### APA102 :id=apa102
There is basic support for APA102 based addressable LED strands. To enable it, add this to your `rules.mk`:
```makefile
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = APA102
```
Configure the hardware via your `config.h`:
```c
// The pin connected to the data pin of the LEDs
#define RGB_DI_PIN D7
// The pin connected to the clock pin of the LEDs
#define RGB_CI_PIN D6
// The number of LEDs connected
#define DRIVER_LED_TOTAL 70
```
---
From this point forward the configuration is the same for all the drivers. The `led_config_t` struct provides a key electrical matrix to led index lookup table, what the physical position of each LED is on the board, and what type of key or usage the LED if the LED represents. Here is a brief example:
```c
+18 -11
View File
@@ -10,6 +10,7 @@ Currently QMK supports the following addressable LEDs (however, the white LED in
* WS2811, WS2812, WS2812B, WS2812C, etc.
* SK6812, SK6812MINI, SK6805
* APA102
These LEDs are called "addressable" because instead of using a wire per color, each LED contains a small microchip that understands a special protocol sent over a single wire. The chip passes on the remaining data to the next LED, allowing them to be chained together. In this way, you can easily control the color of the individual LEDs.
@@ -21,11 +22,19 @@ On keyboards with onboard RGB LEDs, it is usually enabled by default. If it is n
RGBLIGHT_ENABLE = yes
```
At minimum you must define the data pin your LED strip is connected to, and the number of LEDs in the strip, in your `config.h`. If your keyboard has onboard RGB LEDs, and you are simply creating a keymap, you usually won't need to modify these.
For APA102 LEDs, add the following to your `rules.mk`:
```make
RGBLIGHT_ENABLE = yes
RGBLIGHT_DRIVER = APA102
```
At minimum you must define the data pin your LED strip is connected to, and the number of LEDs in the strip, in your `config.h`. For APA102 LEDs, you must also define the clock pin. If your keyboard has onboard RGB LEDs, and you are simply creating a keymap, you usually won't need to modify these.
|Define |Description |
|---------------|---------------------------------------------------------------------------------------------------------|
|`RGB_DI_PIN` |The pin connected to the data pin of the LEDs |
|`RGB_CI_PIN` |The pin connected to the clock pin of the LEDs (APA102 only) |
|`RGBLED_NUM` |The number of LEDs connected |
|`RGBLED_SPLIT` |(Optional) For split keyboards, the number of LEDs connected on each half directly wired to `RGB_DI_PIN` |
@@ -187,8 +196,6 @@ 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.
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.
@@ -370,14 +377,14 @@ rgblight_sethsv(HSV_GREEN, 2); // led 2
|`rgblight_increase_hue_noeeprom()` |Increase the hue for effect range LEDs. This wraps around at maximum hue (not written to EEPROM) |
|`rgblight_decrease_hue()` |Decrease the hue for effect range LEDs. This wraps around at minimum hue |
|`rgblight_decrease_hue_noeeprom()` |Decrease the hue for effect range LEDs. This wraps around at minimum hue (not written to EEPROM) |
|`rgblight_increase_sat()` |Increase the saturation for effect range LEDs. This stops at maximum saturation |
|`rgblight_increase_sat_noeeprom()` |Increase the saturation for effect range LEDs. This stops at maximum saturation (not written to EEPROM) |
|`rgblight_decrease_sat()` |Decrease the saturation for effect range LEDs. This stops at minimum saturation |
|`rgblight_decrease_sat_noeeprom()` |Decrease the saturation for effect range LEDs. This stops at minimum saturation (not written to EEPROM) |
|`rgblight_increase_val()` |Increase the value for effect range LEDs. This stops at maximum value |
|`rgblight_increase_val_noeeprom()` |Increase the value for effect range LEDs. This stops at maximum value (not written to EEPROM) |
|`rgblight_decrease_val()` |Decrease the value for effect range LEDs. This stops at minimum value |
|`rgblight_decrease_val_noeeprom()` |Decrease the value for effect range LEDs. This stops at minimum value (not written to EEPROM) |
|`rgblight_increase_sat()` |Increase the saturation for effect range LEDs. This wraps around at maximum saturation |
|`rgblight_increase_sat_noeeprom()` |Increase the saturation for effect range LEDs. This wraps around at maximum saturation (not written to EEPROM) |
|`rgblight_decrease_sat()` |Decrease the saturation for effect range LEDs. This wraps around at minimum saturation |
|`rgblight_decrease_sat_noeeprom()` |Decrease the saturation for effect range LEDs. This wraps around at minimum saturation (not written to EEPROM) |
|`rgblight_increase_val()` |Increase the value for effect range LEDs. This wraps around at maximum value |
|`rgblight_increase_val_noeeprom()` |Increase the value for effect range LEDs. This wraps around at maximum value (not written to EEPROM) |
|`rgblight_decrease_val()` |Decrease the value for effect range LEDs. This wraps around at minimum value |
|`rgblight_decrease_val_noeeprom()` |Decrease the value for effect range LEDs. This wraps around at minimum value (not written to EEPROM) |
|`rgblight_sethsv(h, s, v)` |Set effect range LEDs to the given HSV value where `h`/`s`/`v` are between 0 and 255 |
|`rgblight_sethsv_noeeprom(h, s, v)` |Set effect range LEDs to the given HSV value where `h`/`s`/`v` are between 0 and 255 (not written to EEPROM) |
+10
View File
@@ -181,6 +181,16 @@ If you're having issues with serial communication, you can change this value, as
* **`4`**: about 26kbps
* **`5`**: about 20kbps
```c
#define SPLIT_MODS_ENABLE
```
This enables transmitting modifier state (normal, weak and oneshot) to the non
primary side of the split keyboard. This adds a few bytes of data to the split
communication protocol and may impact the matrix scan speed when enabled.
The purpose of this feature is to support cosmetic use of modifer state (e.g.
displaying status on an OLED screen).
### Hardware Configuration Options
There are some settings that you may need to configure, based on how the hardware is set up.
+1 -1
View File
@@ -77,7 +77,7 @@ Do change the `MANUFACTURER` and `PRODUCT` lines to accurately reflect your keyb
#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.
?> Windows and macOS will display the `MANUFACTURER` and `PRODUCT` in the list of USB devices. `lsusb` on Linux instead takes these from the list maintained by the [USB ID Repository](http://www.linux-usb.org/usb-ids.html) by default. `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
-1
View File
@@ -103,7 +103,6 @@
* [DIP スイッチ](ja/feature_dip_switch.md)
* [エンコーダ](ja/feature_encoders.md)
* [触覚フィードバック](ja/feature_haptic_feedback.md)
* [LED インジケータ](ja/feature_led_indicators.md)
* [Proton C 変換](ja/proton_c_conversion.md)
* [PS/2 マウス](ja/feature_ps2_mouse.md)
* [分割キーボード](ja/feature_split_keyboard.md)
+103 -3
View File
@@ -1,8 +1,8 @@
# キーボードの挙動をカスタマイズする方法
<!---
original document: 0.10.52:docs/custom_quantum_functions.md
git diff 0.10.52 HEAD -- docs/custom_quantum_functions.md | cat
original document: 0.10.33:docs/custom_quantum_functions.md
git diff 0.10.33 HEAD -- docs/custom_quantum_functions.md | cat
-->
多くの人にとって、カスタムキーボードはボタンの押下をコンピュータに送信するだけではありません。単純なボタンの押下やマクロよりも複雑なことを実行できるようにしたいでしょう。QMK にはコードを挿入したり、機能を上書きしたり、様々な状況でキーボードの挙動をカスタマイズできるフックがあります。
@@ -93,6 +93,106 @@ keyrecord_t record {
}
```
# LED 制御
QMK は HID 仕様で定義された5つの LED の読み取りメソッドを提供します:
* Num Lock
* Caps Lock
* Scroll Lock
* Compose
* Kana
ロック LED の状態を取得するには2つの方法があります:
* `bool led_update_kb(led_t led_state)` あるいは `_user(led_t led_state)` を実装する、または
* `led_t host_keyboard_led_state()` を呼び出す
!> `host_keyboard_led_state()``led_update_user()` が呼ばれる前に新しい値を既に反映している場合があります。
LED の状態を `uint8_t` として提供する2つの非推奨の関数があります:
* `uint8_t led_set_kb(uint8_t usb_led)``_user(uint8_t usb_led)`
* `uint8_t host_keyboard_leds()`
## `led_update_user()`
この関数はこれら5つの LED のいずれかの状態が変化すると呼ばれます。LED の状態を構造体のパラメータとして受け取ります。
慣例により、`led_update_kb()` にそのコードを実行するようフックさせるために `led_update_user()` から `true` を返し、`led_update_kb()` でコードを実行したくない場合は `false` を返します。
以下はいくつかの例です:
- レイヤー表示のような何かのために LED を使うために LED を上書きする
- `_kb()` 関数を実行したくないので、`false` を返します。これはレイヤーの挙動を上書きするためです。
- LED がオンあるいはオフになった時に音楽を再生する。
- `_kb` 関数を実行したいので、`true` を返します。これはデフォルトの LED の挙動に追加されます。
?> `led_set_*` 関数は `bool` の代わりに `void` を返すため、キーボードの LED 制御を上書きすることができません。従って、代わりに `led_update_*` を使うことをお勧めします。
### `led_update_kb()` の実装例
```c
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
// writePin は 1 でピンを high に、0 で low に設定します。
// この例では、ピンは反転していて、
// low/0 は LED がオンになり、high/1 は LED がオフになります。
// この挙動は、LED がピンと VCC の間にあるか、ピンと GND の間にあるかどうかに依存します。
writePin(B0, !led_state.num_lock);
writePin(B1, !led_state.caps_lock);
writePin(B2, !led_state.scroll_lock);
writePin(B3, !led_state.compose);
writePin(B4, !led_state.kana);
}
return res;
}
```
### `led_update_user()` の実装例
この不完全な例は Caps Lock がオンまたはオフになった場合に音を再生します。また LED の状態を保持する必要があるため、`true` を返します。
```c
#ifdef AUDIO_ENABLE
float caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
float caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND);
#endif
bool led_update_user(led_t led_state) {
#ifdef AUDIO_ENABLE
static uint8_t caps_state = 0;
if (caps_state != led_state.caps_lock) {
led_state.caps_lock ? PLAY_SONG(caps_on) : PLAY_SONG(caps_off);
caps_state = led_state.caps_lock;
}
#endif
return true;
}
```
### `led_update_*` 関数のドキュメント
* キーボード/リビジョン: `bool led_update_kb(led_t led_state)`
* キーマップ: `bool led_update_user(led_t led_state)`
## `host_keyboard_led_state()`
最後に受信した LED の状態を `led_t` として取得するためにこの関数を呼びます。これは、`led_update_*` の外部から、例えば [`matrix_scan_user()`](#matrix-scanning-code) の中で LED の状態を読み取るのに便利です。
## 物理的な LED の状態の設定
一部のキーボードの実装は、物理的な LED の状態を設定するための便利なメソッドを提供しています。
### Ergodox キーボード
Ergodox の実装は、個々の LED をオンあるいはオフにするために `ergodox_right_led_1`/`2`/`3_on`/`off()` と、インデックスによってそれらをオンあるいはオフにするために `ergodox_right_led_on`/`off(uint8_t led)` を提供します。
さらに、LED の明度を指定することができます。全ての LED に同じ明度を指定するなら `ergodox_led_all_set(uint8_t n)` を使い、個別の LED の明度を指定するなら `ergodox_right_led_1`/`2`/`3_set(uint8_t n)` を使い、LED のインデックスを指定して明度を指定するには `ergodox_right_led_set(uint8_t led, uint8_t n)` を使います。
Ergodox キーボードは、最低の明度として `LED_BRIGHTNESS_LO` を、最高の輝度(これはデフォルトです)として `LED_BRIGHTNESS_HI` も定義しています。
# キーボードの初期化コード
キーボードの初期化プロセスには幾つかのステップがあります。何をしたいかによって、どの関数を使うべきかに影響します。
@@ -247,7 +347,7 @@ layer_state_t layer_state_set_user(layer_state_t state) {
}
```
特定のレイヤーの状態を確認するには、`IS_LAYER_ON_STATE(state, layer)``IS_LAYER_OFF_STATE(state, layer)` マクロを使います。
特定のレイヤーの状態を確認するには、 `IS_LAYER_ON_STATE(state, layer)``IS_LAYER_OFF_STATE(state, layer)` マクロを使います。
`layer_state_set_*` 関数の外では、グローバルなレイヤー状態を確認するために `IS_LAYER_ON(layer)``IS_LAYER_OFF(layer)` マクロを使えます。
-119
View File
@@ -1,119 +0,0 @@
# LED インジケータ
<!---
original document: 0.10.52:docs/feature_led_indicators.md
git diff 0.10.52 HEAD -- docs/feature_led_indicators.md | cat
-->
QMK は HID 仕様で定義された5つの LED の読み取りメソッドを提供します:
* Num Lock
* Caps Lock
* Scroll Lock
* Compose
* Kana
ロック LED の状態を取得するには3つの方法があります:
* `config.h` で設定オプションを指定する
* `bool led_update_kb(led_t led_state)` あるいは `_user(led_t led_state)` を実装する、または
* `led_t host_keyboard_led_state()` を呼び出す
!> `host_keyboard_led_state()``led_update_user()` が呼ばれる前に新しい値を既に反映している場合があります。
LED の状態を `uint8_t` として提供する2つの非推奨の関数があります:
* `uint8_t led_set_kb(uint8_t usb_led)``_user(uint8_t usb_led)`
* `uint8_t host_keyboard_leds()`
## 設定オプション
インジケータを設定するには、`config.h` で以下の `#define` をします:
| 定義 | 既定値 | 説明 |
|-----------------------|------------|----------------------------------|
| `LED_NUM_LOCK_PIN` | *定義なし* | `Num Lock` LED を制御するピン |
| `LED_CAPS_LOCK_PIN` | *定義なし* | `Caps Lock` LED を制御するピン |
| `LED_SCROLL_LOCK_PIN` | *定義なし* | `Scroll Lock` LED を制御するピン |
| `LED_COMPOSE_PIN` | *定義なし* | `Compose` LED を制御するピン |
| `LED_KANA_PIN` | *定義なし* | `Kana` LED を制御するピン |
| `LED_PIN_ON_STATE` | `1` | LED が "オン" の時のインジケータピンの状態 - high の場合は`1`、low の場合は`0` |
独自のキーボードを設計しているわけではない限り、通常は上記の設定オプションを変更する必要はありません。
## `led_update_*()`
設定オプションが十分な柔軟性を提供しない場合は、提供される API フックにより LED の挙動の独自の制御ができます。これらの関数はこれら5つの LED のいずれかの状態が変化すると呼ばれます。LED の状態を構造体のパラメータとして受け取ります。
慣例により、`led_update_kb()` にそのコードを実行するようフックさせるために `led_update_user()` から `true` を返し、`led_update_kb()` でコードを実行したくない場合は `false` を返します。
以下はいくつかの例です:
- レイヤー表示のような何かのために LED を使うために LED を上書きする
- `_kb()` 関数を実行したくないので、`false` を返します。これはレイヤーの挙動を上書きするためです。
- LED がオンあるいはオフになった時に音楽を再生する。
- `_kb` 関数を実行したいので、`true` を返します。これはデフォルトの LED の挙動に追加されます。
?> `led_set_*` 関数は `bool` の代わりに `void` を返すため、キーボードの LED 制御を上書きすることができません。従って、代わりに `led_update_*` を使うことをお勧めします。
### `led_update_kb()` の実装例
```c
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if(res) {
// writePin は 1 でピンを high に、0 で low に設定します。
// この例では、ピンは反転していて、
// low/0 は LED がオンになり、high/1 は LED がオフになります。
// この挙動は、LED がピンと VCC の間にあるか、ピンと GND の間にあるかどうかに依存します。
writePin(B0, !led_state.num_lock);
writePin(B1, !led_state.caps_lock);
writePin(B2, !led_state.scroll_lock);
writePin(B3, !led_state.compose);
writePin(B4, !led_state.kana);
}
return res;
}
```
### `led_update_user()` の実装例
この不完全な例は Caps Lock がオンまたはオフになった場合に音を再生します。また LED の状態を保持する必要があるため、`true` を返します。
```c
#ifdef AUDIO_ENABLE
float caps_on[][2] = SONG(CAPS_LOCK_ON_SOUND);
float caps_off[][2] = SONG(CAPS_LOCK_OFF_SOUND);
#endif
bool led_update_user(led_t led_state) {
#ifdef AUDIO_ENABLE
static uint8_t caps_state = 0;
if (caps_state != led_state.caps_lock) {
led_state.caps_lock ? PLAY_SONG(caps_on) : PLAY_SONG(caps_off);
caps_state = led_state.caps_lock;
}
#endif
return true;
}
```
### `led_update_*` 関数のドキュメント
* キーボード/リビジョン: `bool led_update_kb(led_t led_state)`
* キーマップ: `bool led_update_user(led_t led_state)`
## `host_keyboard_led_state()`
最後に受信した LED の状態を `led_t` として取得するためにこの関数を呼びます。これは、`led_update_*` の外部から、例えば [`matrix_scan_user()`](#matrix-scanning-code) の中で LED の状態を読み取るのに便利です。
## 物理的な LED の状態の設定
一部のキーボードの実装は、物理的な LED の状態を設定するための便利なメソッドを提供しています。
### Ergodox キーボード
Ergodox の実装は、個々の LED をオンあるいはオフにするために `ergodox_right_led_1`/`2`/`3_on`/`off()` と、インデックスによってそれらをオンあるいはオフにするために `ergodox_right_led_on`/`off(uint8_t led)` を提供します。
さらに、LED の明度を指定することができます。全ての LED に同じ明度を指定するなら `ergodox_led_all_set(uint8_t n)` を使い、個別の LED の明度を指定するなら `ergodox_right_led_1`/`2`/`3_set(uint8_t n)` を使い、LED のインデックスを指定して明度を指定するには `ergodox_right_led_set(uint8_t led, uint8_t n)` を使います。
Ergodox キーボードは、最低の明度として `LED_BRIGHTNESS_LO` を、最高の輝度(これはデフォルトです)として `LED_BRIGHTNESS_HI` も定義しています。
-74
View File
@@ -1,74 +0,0 @@
# Raw HID
<!---
original document: 0.10.47:docs/feature_rawhid.md
git diff 0.10.47 HEAD -- docs/feature_rawhid.md | cat
-->
Raw HID は、HID インタフェースを介して QMK とホストコンピュータ間の双方向通信を可能にします。これには、キーマップをその場で切り替えたり、RGB LED の色とモードを変更したりなど、多くの潜在的な使用方法があります。
キーボードで raw HID を機能させるには、2つの主要なコンポーネントがあります。
## キーボードファームウェア
ファームウェアの実装はとても簡単です。
`rules.mk` に以下を追加します:
```make
RAW_ENABLE = yes
```
`keymap.c``"raw_hid.h"` を include し、以下を実装します:
```C
void raw_hid_receive(uint8_t *data, uint8_t length) {
// ここにコードを書きます。data はホストから受信したパケットです。
}
```
`"raw_hid.h"` ヘッダは、キーボードからホストにパケットを送信できる `void raw_hid_send(uint8_t *data, uint8_t length);` も宣言します。例として、全てのデータをホストに返すことで、ホストアプリケーションを構築する時のデバッグに使うこともできます。
```C
void raw_hid_receive(uint8_t *data, uint8_t length) {
raw_hid_send(data, length);
}
```
`raw_hid_receive` はホストから最大長 `RAW_EPSIZE` の可変サイズのパケットを受信することができます。一方、`raw_hid_send` はパケットを厳密に `RAW_EPSIZE` の長さで送信するため、長さ `RAW_EPSIZE` のデータを使う必要があります。
ホスト側での作業を進める前に、raw 対応のファームウェアを書き込むようにしてください。
## ホスト (Windows/macOS/Linux)
これは幾つかの掘り下げが必要になるため、より複雑な部分です。
ホストコンピュータを raw HID を使ってキーボードに接続するには、キーボードについての4つの情報が必要です。
1. Vendor ID
2. Product ID
3. Usage Page
4. Usage
前半の2つは、キーボードのメインディレクトリにあるキーボードの `config.h` で、`VENDOR_ID``PRODUCT_ID` で簡単に見つかります。
後半の2つは、キーボードのメインディレクトリにあるキーボードの `config.h` で、値を再定義することで上書きすることができます: `#define RAW_USAGE_PAGE 0xFF60``#define RAW_USAGE_ID 0x61`
デフォルトでは、**Usage Page** は `0xFF60` で、**Usage** は `0x61` です。
### ホストの構築
独自に作成したくない場合は、利用可能な HID 実装ライブラリがある任意の言語を使ってホストを構築することができます。人気のある言語でよく使われるライブラリは以下の通りです:
* Node: [node-hid](https://github.com/node-hid/node-hid)。
* C: [hidapi](https://github.com/libusb/hidapi)。
* Java: [purejavahidapi](https://github.com/nyholku/purejavahidapi) と [hid4java](https://github.com/gary-rowe/hid4java)。
* Python: [pyhidapi](https://pypi.org/project/hid/)。
これは完全なクロスプラットフォームのリストではありませんが、最初に始めるのに十分なはずです。raw HID を使うための特別な要件は無いため、どの HID ライブラリでも動作するはずです。
これで、キーボードへの HID インタフェースを開くために必要な4つの情報全てが揃いました。必要なのは、ライブラリの利用可能な関数を使って ID パラメータを使ってデバイスを開くことだけです。
Vendor ID と Product ID はデバイスを開くために実際には必要ないことに注意してください。それらは接続した多くの HID デバイスから特定のデバイスをフィルターするためだけに使われます。多くのライブラリでは、代わりに製品名と製造元名を使ってデバイスを開くオプションがあります。`node-hid` が代表的な例です。これは USB ハブが組み込まれているデバイスや、同じ製品名または同じ製造元の複数のインタフェースがある特別な HID インタフェースで問題になります。Product ID と Vendor ID を合わせると単一のインタフェースの固有名を作成できるため、この問題を防げます。したがって、ライブラリで必要が無い場合でも、この問題を防ぐためにそれらを使うことをお勧めします。
ただし、Vendor ID や Product ID と異なり、Usage Page と Usage は通信を成功させるために必要です。
言うまでもなく、使っているライブラリに関係なく、終了したらインタフェースを必ず閉じる必要があります。オペレーティングシステムと特定の環境によっては、明示的に接続が閉じられていない場合、後で他のクライアントまたは同じクライアントの他のインスタンスに接続しなおした時に問題が発生する可能性があります。
+1
View File
@@ -51,6 +51,7 @@ Proton C には1つのオンボード LED(C13)しかなく、デフォルトで
```
MCU = STM32F303
BOARD = QMK_PROTON_C
```
次の変数が存在する場合は削除します。
+62
View File
@@ -0,0 +1,62 @@
# KLE To info.json
This page describes how to create a [Keyboard Layout Editor](http://keyboard-layout-editor.com) layout that works with `qmk kle2json`. You will also be able to use the same KLE layout to create VIA support for your keyboard.
## Overview
QMK uses `info.json` to store metadata about the keyboard including the matrix pins, row and column configuration, and keyboard layout. You can encode some of this data into a KLE layout and then convert that to `info.json`, which saves you time and headaches creating files from scratch.
Our reference layout is here: <http://www.keyboard-layout-editor.com/#/gists/70aaa4bed76d0b2f67fd165641239552>
Keep that open in a separate window so that you can refer to it while reading this document.
## Layout Structure
The first thing you should notice is that the main layout for the keyboard is in the middle. This is the default layout. Around the sides you'll find layout options. These are groups of keys that can replace specific keys in the default layout. More on that later.
## Anatomy of a Key
Every key in KLE has 12 labels- top left, top center, top right, center left, center, center right, bottom left, bottom center, bottom right, front left, front center, front right. We do not use all 12 labels, but we do some of them.
The labels we use are below:
| | | |
|-|-|-|
| **Matrix** | (unused) | (unused) |
| **Keycode** | (unused) | (unused) |
| (unused) | (unused) | **Option Group** |
| **Option Name** | (unused) | (unused) |
### Matrix
This is the location of the key in the keyboard matrix. It should be two whole numbers separated by a comma representing row and column. For example, the top left location of the keyboard is usually `0,0`, to the right of that key is `0,1`, below that key is `1,0`, and so on.
### Keycode
This is the default keycode for layer 0. You should supply this now even if you won't use the generated keymap because QMK will make greater use of it in the future.
### Option Group
This identifies what Layout Options (if any) this key is part of. If this value is empty the key is not part of any Layout Options.
The value is two whole numbers separated by a comma. The first number is the Layout Option Group Number, which identifies the specific Layout Option this key is associated with. The second number is the specific Layout Option Choice this key is associated with.
### Option Name
This identifies the name for each Option Group Choice. This will be used in the future to automatically build layouts from each option. All keys with the same Option Group identifier should have the same Option Name.
## Running qmk kle2json
Once you have built your KLE layout you are ready to convert it to `info.json`. Start by clicking `Sign In with GitHub` on Keyboard Layout Editor. Once you have signed in you can click `Save` to save your KLE. Once it's saved grab the URL from the bar, it should end end in `/#/gists/<long_number>`.
To use the reference layout as an example, I could update the keyboard `clueboard/60` from that KLE using this command:
```shell
qmk kle2json -kb clueboard/60 -l LAYOUT_60_ansi 'http://www.keyboard-layout-editor.com/#/gists/70aaa4bed76d0b2f67fd165641239552'
```
It will fetch the KLE, generate a new `LAYOUT_60_ansi`, and either add a new layout or change the existing layout to match.
## Adding more layouts
At the current time QMK only supports the base layout. Layout Options are allowed for VIA compatibility purposes and will be implemented in QMK at a later date. For now we recommend you create a KLE for each layout you want to support in QMK and call `qmk kle2json` once per layout to set up the info.json.
+2 -17
View File
@@ -41,19 +41,6 @@ We've tried to make QMK as easy to set up as possible. You only have to prepare
### ** Windows **
QMK maintains a Bundle of MSYS2, the CLI and all necessary dependencies. It also provides a handy `QMK MSYS` terminal shortcut to boot you directly into the correct environment.
#### Prerequisites
You will need to install `QMK MSYS`. The latest release is available at https://msys.qmk.fm/.
Alternatively, if you'd like to manually install msys2, the following section will walk you through the process.
<details>
<summary>Manual Install</summary>
?> Ignore the following steps if you use `QMK MSYS`.
#### Prerequisites
You will need to install MSYS2, Git and Python. Follow the installation instructions on https://www.msys2.org.
@@ -72,8 +59,6 @@ Install the QMK CLI by running:
python3 -m pip install qmk
</details>
### ** macOS **
QMK maintains a Homebrew tap and formula which will automatically install the CLI and all necessary dependencies.
@@ -116,9 +101,9 @@ On Arch-based distros you can install the CLI from the official repositories (NO
sudo pacman -S qmk
You can also try the `qmk-git` package from AUR:
You can also try the `qmk` package from AUR:
yay -S qmk-git
yay -S qmk
### ** FreeBSD **
+1
View File
@@ -44,6 +44,7 @@ To use the Proton C natively, without having to specify `CTPC=yes`, you need to
```
MCU = STM32F303
BOARD = QMK_PROTON_C
```
Remove these variables if they exist:
+132 -17
View File
@@ -19,8 +19,20 @@ The `info.json` file is a JSON formatted dictionary with the following keys avai
* Width of the board in Key Units
* `height`
* Height of the board in Key Units
* `debounce`
* How many milliseconds (ms) to wait for debounce to happen. (Default: 5)
* `diode_direction`
* The direction diodes face. See [`DIRECT_PINS` in the hardware configuration](https://docs.qmk.fm/#/config_options?id=hardware-options) for more details.
* `layout_aliases`
* A dictionary containing layout aliases. The key is the alias and the value is a layout in `layouts` it maps to.
* `layouts`
* Physical Layout representations. See the next section for more detail.
* Physical Layout representations. See the [Layout Format](#layout_format) section for more detail.
* `matrix_pins`
* Configure the pins corresponding to columns and rows, or direct pins. See [Matrix Pins](#matrix_pins) for more detail.
* `rgblight`
* Configure the [RGB Lighting feature](feature_rgblight.md). See the [RGB Lighting](#rgb_lighting) section for more detail.
* `usb`
* Configure USB VID, PID, and other parameters. See [USB](#USB) for more detail.
### Layout Format
@@ -49,25 +61,128 @@ All key positions and rotations are specified in relation to the top-left corner
* The width of the key, in Key Units. Ignored if `ks` is provided. Default: `1`
* `h`
* The height of the key, in Key Units. Ignored if `ks` is provided. Default: `1`
* `r`
* How many degrees clockwise to rotate the key.
* `rx`
* The absolute position of the point to rotate the key around in the horizontal axis. Default: `x`
* `ry`
* The absolute position of the point to rotate the key around in the vertical axis. Default: `y`
* `ks`
* Key Shape: define a polygon by providing a list of points, in Key Units.
* **Important**: These are relative to the top-left of the key, not absolute.
* Example ISO Enter: `[ [0,0], [1.5,0], [1.5,2], [0.25,2], [0.25,1], [0,1], [0,0] ]`
* `label`
* What to name this position in the matrix.
* This should usually be the same name as what is silkscreened on the PCB at this location.
* This should usually correspond to the keycode for the first layer of the default keymap.
* `matrix`
* A 2 item list describing the row and column location for this key.
## How is the Metadata Exposed?
### Matrix Pins
This metadata is primarily used in two ways:
Currently QMK supports connecting switches either directly to GPIO pins or via a switch matrix. At this time you can not combine these, they are mutually exclusive.
* To allow web-based configurators to dynamically generate UI
* To support the new `make keyboard:keymap:qmk` target, which bundles this metadata up with the firmware to allow QMK Toolbox to be smarter.
#### Switch Matrix
Configurator authors can see the [QMK Compiler](https://docs.api.qmk.fm/using-the-api) docs for more information on using the JSON API.
Most keyboards use a switch matrix to connect keyswitches to the MCU. You can define your pin columns and rows to configure your switch matrix. When defining switch matrices you should also define your `diode_direction`.
Example:
```json
{
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["F4", "E6", "B1", "D2"],
"rows": ["B0", "D3", "D5", "D4", "D6"]
}
}
```
#### Direct Pins
Direct pins are when you connect one side of the switch to GND and the other side to a GPIO pin on your MCU. No diode is required, but there is a 1:1 mapping between switches and pins.
When specifying direct pins you need to arrange them in nested arrays. The outer array consists of rows, while the inner array is a text string corresponding to a pin. You can use `null` to indicate an empty spot in the matrix.
Example:
```json
{
"matrix_pins": {
"direct": [
["A10", "A9"],
["A0", "B8"],
[null, "B11"],
["B9", "A8"],
["A7", "B1"],
[null, "B2"]
]
}
```
### RGB Lighting
This section controls the legacy WS2812 support in QMK. This should not be confused with the RGB Matrix feature, which can be used to control both WS2812 and ISSI RGB LEDs.
The following items can be set. Not every value is required.
* `led_count`
* The number of LEDs in your strip
* `pin`
* The GPIO pin that your LED strip is connected to
* `animations`
* A dictionary that lists enabled and disabled animations. See [RGB Light Animations](#rgb_light_animations) below.
* `sleep`
* Set to `true` to enable lighting during host sleep
* `split`
* Set to `true` to enable synchronization functionality between split halves
* `split_count`
* For split keyboards, the number of LEDs on each side
* `max_brightness`
* (0-255) What the maxmimum brightness (value) level is
* `hue_steps`
* How many steps of adjustment to have for hue
* `saturation_steps`
* How many steps of adjustment to have for saturation
* `brightness_steps`
* How many steps of adjustment to have for brightness (value)
Example:
```json
{
"rgblight": {
"led_count": 4,
"pin": "F6",
"hue_steps": 10,
"saturation_steps": 17,
"brightness_steps": 17,
"animations": {
"all": true
}
}
}
```
#### RGB Light Animations
The following animations can be enabled:
| Key | Description |
|-----|-------------|
| `all` | Enable all additional animation modes. |
| `alternating` | Enable alternating animation mode. |
| `breathing` | Enable breathing animation mode. |
| `christmas` | Enable christmas animation mode. |
| `knight` | Enable knight animation mode. |
| `rainbow_mood` | Enable rainbow mood animation mode. |
| `rainbow_swirl` | Enable rainbow swirl animation mode. |
| `rgb_test` | Enable RGB test animation mode. |
| `snake` | Enable snake animation mode. |
| `static_gradient` | Enable static gradient mode. |
| `twinkle` | Enable twinkle animation mode. |
### USB
Every USB keyboard needs to have its USB parmaters defined. At a minimum you need to set vid, pid, and device version.
Example:
```json
{
"usb": {
"vid": "0xC1ED",
"pid": "0x23B0",
"device_ver": "0x0001"
}
}
```
+2
View File
@@ -18,7 +18,9 @@ To use these, simply `#include` the corresponding [header file](https://github.c
|Dutch (Belgium) |`keymap_belgian.h` |
|English (Ireland) |`keymap_irish.h` |
|English (UK) |`keymap_uk.h` |
|English (US Extended) |`keymap_us_extended.h` |
|English (US International) |`keymap_us_international.h` |
|English (US International, Linux)|`keymap_us_international_linux.h`|
|Estonian |`keymap_estonian.h` |
|Finnish |`keymap_finnish.h` |
|French |`keymap_french.h` |
+1
View File
@@ -60,6 +60,7 @@ Configure the hardware via your config.h:
// 5: about 19200 baud
#define SERIAL_USART_DRIVER SD1 // USART driver of TX pin. default: SD1
#define SERIAL_USART_TX_PAL_MODE 7 // Pin "alternate function", see the respective datasheet for the appropriate values for your MCU. default: 7
#define SERIAL_USART_TIMEOUT 100 // USART driver timeout. default 100
```
You must also enable the ChibiOS `SERIAL` feature:
+151
View File
@@ -0,0 +1,151 @@
/* Copyright 2020 Aldehir Rojas
* Copyright 2017 Mikkel (Duckle29)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "apa102.h"
#include "quantum.h"
#ifndef APA102_NOPS
# if defined(__AVR__)
# define APA102_NOPS 0 // AVR at 16 MHz already spends 62.5 ns per clock, so no extra delay is needed
# elif defined(PROTOCOL_CHIBIOS)
# include "hal.h"
# if defined(STM32F0XX) || defined(STM32F1XX) || defined(STM32F3XX) || defined(STM32F4XX) || defined(STM32L0XX)
# define APA102_NOPS (100 / (1000000000L / (STM32_SYSCLK / 4))) // This calculates how many loops of 4 nops to run to delay 100 ns
# else
# error("APA102_NOPS configuration required")
# define APA102_NOPS 0 // this just pleases the compile so the above error is easier to spot
# endif
# endif
#endif
#define io_wait \
do { \
for (int i = 0; i < APA102_NOPS; i++) { \
__asm__ volatile("nop\n\t" \
"nop\n\t" \
"nop\n\t" \
"nop\n\t"); \
} \
} while (0)
#define APA102_SEND_BIT(byte, bit) \
do { \
writePin(RGB_DI_PIN, (byte >> bit) & 1); \
io_wait; \
writePinHigh(RGB_CI_PIN); \
io_wait; \
writePinLow(RGB_CI_PIN); \
io_wait; \
} while (0)
uint8_t apa102_led_brightness = APA102_DEFAULT_BRIGHTNESS;
void static apa102_start_frame(void);
void static apa102_end_frame(uint16_t num_leds);
void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness);
void static apa102_send_byte(uint8_t byte);
void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds) {
LED_TYPE *end = start_led + num_leds;
apa102_start_frame();
for (LED_TYPE *led = start_led; led < end; led++) {
apa102_send_frame(led->r, led->g, led->b, apa102_led_brightness);
}
apa102_end_frame(num_leds);
}
// Overwrite the default rgblight_call_driver to use apa102 driver
void rgblight_call_driver(LED_TYPE *start_led, uint8_t num_leds) { apa102_setleds(start_led, num_leds); }
void static apa102_init(void) {
setPinOutput(RGB_DI_PIN);
setPinOutput(RGB_CI_PIN);
writePinLow(RGB_DI_PIN);
writePinLow(RGB_CI_PIN);
}
void apa102_set_brightness(uint8_t brightness) {
if (brightness > APA102_MAX_BRIGHTNESS) {
apa102_led_brightness = APA102_MAX_BRIGHTNESS;
} else if (brightness < 0) {
apa102_led_brightness = 0;
} else {
apa102_led_brightness = brightness;
}
}
void static apa102_send_frame(uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness) {
apa102_send_byte(0b11100000 | brightness);
apa102_send_byte(blue);
apa102_send_byte(green);
apa102_send_byte(red);
}
void static apa102_start_frame(void) {
apa102_init();
for (uint16_t i = 0; i < 4; i++) {
apa102_send_byte(0);
}
}
void static apa102_end_frame(uint16_t num_leds) {
// This function has been taken from: https://github.com/pololu/apa102-arduino/blob/master/APA102.h
// and adapted. The code is MIT licensed. I think thats compatible?
//
// The data stream seen by the last LED in the chain will be delayed by
// (count - 1) clock edges, because each LED before it inverts the clock
// line and delays the data by one clock edge. Therefore, to make sure
// the last LED actually receives the data we wrote, the number of extra
// edges we send at the end of the frame must be at least (count - 1).
//
// Assuming we only want to send these edges in groups of size K, the
// C/C++ expression for the minimum number of groups to send is:
//
// ((count - 1) + (K - 1)) / K
//
// The C/C++ expression above is just (count - 1) divided by K,
// rounded up to the nearest whole number if there is a remainder.
//
// We set K to 16 and use the formula above as the number of frame-end
// bytes to transfer. Each byte has 16 clock edges.
//
// We are ignoring the specification for the end frame in the APA102
// datasheet, which says to send 0xFF four times, because it does not work
// when you have 66 LEDs or more, and also it results in unwanted white
// pixels if you try to update fewer LEDs than are on your LED strip.
uint16_t iterations = (num_leds + 14) / 16;
for (uint16_t i = 0; i < iterations; i++) {
apa102_send_byte(0);
}
apa102_init();
}
void static apa102_send_byte(uint8_t byte) {
APA102_SEND_BIT(byte, 7);
APA102_SEND_BIT(byte, 6);
APA102_SEND_BIT(byte, 5);
APA102_SEND_BIT(byte, 4);
APA102_SEND_BIT(byte, 3);
APA102_SEND_BIT(byte, 2);
APA102_SEND_BIT(byte, 1);
APA102_SEND_BIT(byte, 0);
}
@@ -1,10 +1,5 @@
/*
* light weight WS2812 lib include
*
* Version 2.3 - Nev 29th 2015
* Author: Tim (cpldcpu@gmail.com)
*
* Please do not change this file! All configuration is handled in "ws2812_config.h"
/* Copyright 2020 Aldehir Rojas
* Copyright 2017 Mikkel (Duckle29)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -22,24 +17,25 @@
#pragma once
#include <avr/io.h>
#include <avr/interrupt.h>
#include "color.h"
#ifndef APA102_DEFAULT_BRIGHTNESS
# define APA102_DEFAULT_BRIGHTNESS 31
#endif
#define APA102_MAX_BRIGHTNESS 31
extern uint8_t apa102_led_brightness;
/* User Interface
*
* Input:
* ledarray: An array of GRB data describing the LED colors
* number_of_leds: The number of LEDs to write
* pinmask (optional): Bitmask describing the output bin. e.g. _BV(PB0)
* start_led: An array of GRB data describing the LED colors
* num_leds: The number of LEDs to write
*
* The functions will perform the following actions:
* - Set the data-out pin as output
* - Send out the LED data
* - Wait 50<EFBFBD>s to reset the LEDs
*/
void apa102_setleds(LED_TYPE *ledarray, uint16_t number_of_leds);
void apa102_setleds_pin(LED_TYPE *ledarray, uint16_t number_of_leds, uint8_t pinmask);
void apa102_setleds_rgbw(LED_TYPE *ledarray, uint16_t number_of_leds);
void apa102_setleds(LED_TYPE *start_led, uint16_t num_leds);
void apa102_set_brightness(uint8_t brightness);
-96
View File
@@ -1,96 +0,0 @@
/*
* APA102 lib V1.0a
*
* Controls APA102 RGB-LEDs
* Author: Mikkel (Duckle29 on GitHub)
*
* Dec 22th, 2017 v1.0a Initial Version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "apa102.h"
#include <avr/interrupt.h>
#include <avr/io.h>
#include <util/delay.h>
#include "debug.h"
// Setleds for standard RGB
void inline apa102_setleds(LED_TYPE *ledarray, uint16_t leds) { apa102_setleds_pin(ledarray, leds, _BV(RGB_DI_PIN & 0xF), _BV(RGB_CLK_PIN & 0xF)); }
void static inline apa102_setleds_pin(LED_TYPE *ledarray, uint16_t leds, uint8_t pinmask_DI, uint8_t pinmask_CLK) {
setPinOutput(RGB_DI_PIN);
setPinOutput(RGB_CLK_PIN);
apa102_send_array((uint8_t *)ledarray, leds)
}
void apa102_send_array(uint8_t *data, uint16_t leds) { // Data is struct of 3 bytes. RGB - leds is number of leds in data
apa102_start_frame();
while (leds--) {
apa102_send_frame(0xFF000000 | (data->b << 16) | (data->g << 8) | data->r);
data++;
}
apa102_end_frame(leds);
}
void apa102_send_frame(uint32_t frame) {
for (uint32_t i = 0xFF; i > 0;) {
apa102_send_byte(frame & i);
i = i << 8;
}
}
void apa102_start_frame() { apa102_send_frame(0); }
void apa102_end_frame(uint16_t leds) {
// This function has been taken from: https://github.com/pololu/apa102-arduino/blob/master/APA102.h
// and adapted. The code is MIT licensed. I think thats compatible?
// We need to send some more bytes to ensure that all the LEDs in the
// chain see their new color and start displaying it.
//
// The data stream seen by the last LED in the chain will be delayed by
// (count - 1) clock edges, because each LED before it inverts the clock
// line and delays the data by one clock edge. Therefore, to make sure
// the last LED actually receives the data we wrote, the number of extra
// edges we send at the end of the frame must be at least (count - 1).
// For the APA102C, that is sufficient.
//
// The SK9822 only updates after it sees 32 zero bits followed by one more
// rising edge. To avoid having the update time depend on the color of
// the last LED, we send a dummy 0xFF byte. (Unfortunately, this means
// that partial updates of the beginning of an LED strip are not possible;
// the LED after the last one you are trying to update will be black.)
// After that, to ensure that the last LED in the chain sees 32 zero bits
// and a rising edge, we need to send at least 65 + (count - 1) edges. It
// is sufficent and simpler to just send (5 + count/16) bytes of zeros.
//
// We are ignoring the specification for the end frame in the APA102/SK9822
// datasheets because it does not actually ensure that all the LEDs will
// start displaying their new colors right away.
apa102_send_byte(0xFF);
for (uint16_t i = 0; i < 5 + leds / 16; i++) {
apa102_send_byte(0);
}
}
void apa102_send_byte(uint8_t byte) {
uint8_t i;
for (i = 0; i < 8; i++) {
writePin(RGB_DI_PIN, !!(byte & (1 << (7 - i))));
writePinHigh(RGB_CLK_PIN);
}
}
+8 -5
View File
@@ -58,7 +58,10 @@
# error invalid SELECT_SOFT_SERIAL_SPEED value
#endif
#define TIMEOUT 100
#ifndef SERIAL_USART_TIMEOUT
# define SERIAL_USART_TIMEOUT 100
#endif
#define HANDSHAKE_MAGIC 7
static inline msg_t sdWriteHalfDuplex(SerialDriver* driver, uint8_t* data, uint8_t size) {
@@ -201,21 +204,21 @@ int soft_serial_transaction(int index) {
sdClear(&SERIAL_USART_DRIVER);
// First chunk is always transaction id
sdWriteTimeout(&SERIAL_USART_DRIVER, &sstd_index, sizeof(sstd_index), TIME_MS2I(TIMEOUT));
sdWriteTimeout(&SERIAL_USART_DRIVER, &sstd_index, sizeof(sstd_index), TIME_MS2I(SERIAL_USART_TIMEOUT));
uint8_t sstd_index_shake = 0xFF;
// Which we always read back first so that we can error out correctly
// - due to the half duplex limitations on return codes, we always have to read *something*
// - without the read, write only transactions *always* succeed, even during the boot process where the slave is not ready
res = sdReadTimeout(&SERIAL_USART_DRIVER, &sstd_index_shake, sizeof(sstd_index_shake), TIME_MS2I(TIMEOUT));
res = sdReadTimeout(&SERIAL_USART_DRIVER, &sstd_index_shake, sizeof(sstd_index_shake), TIME_MS2I(SERIAL_USART_TIMEOUT));
if (res < 0 || (sstd_index_shake != (sstd_index ^ HANDSHAKE_MAGIC))) {
dprintf("serial::usart_shake NO_RESPONSE\n");
return TRANSACTION_NO_RESPONSE;
}
if (trans->initiator2target_buffer_size) {
res = sdWriteTimeout(&SERIAL_USART_DRIVER, trans->initiator2target_buffer, trans->initiator2target_buffer_size, TIME_MS2I(TIMEOUT));
res = sdWriteTimeout(&SERIAL_USART_DRIVER, trans->initiator2target_buffer, trans->initiator2target_buffer_size, TIME_MS2I(SERIAL_USART_TIMEOUT));
if (res < 0) {
dprintf("serial::usart_transmit NO_RESPONSE\n");
return TRANSACTION_NO_RESPONSE;
@@ -223,7 +226,7 @@ int soft_serial_transaction(int index) {
}
if (trans->target2initiator_buffer_size) {
res = sdReadTimeout(&SERIAL_USART_DRIVER, trans->target2initiator_buffer, trans->target2initiator_buffer_size, TIME_MS2I(TIMEOUT));
res = sdReadTimeout(&SERIAL_USART_DRIVER, trans->target2initiator_buffer, trans->target2initiator_buffer_size, TIME_MS2I(SERIAL_USART_TIMEOUT));
if (res < 0) {
dprintf("serial::usart_receive NO_RESPONSE\n");
return TRANSACTION_NO_RESPONSE;
+5 -4
View File
@@ -1,16 +1,17 @@
ifneq ($(strip $(QWIIC_ENABLE)),)
ifeq ($(strip $(QWIIC_ENABLE)),yes)
COMMON_VPATH += $(DRIVER_PATH)/qwiic
OPT_DEFS += -DQWIIC_ENABLE
SRC += qwiic.c
QUANTUM_LIB_SRC += i2c_master.c
endif
ifneq ($(filter JOYSTIIC, $(QWIIC_ENABLE)),)
ifneq ($(filter JOYSTIIC, $(QWIIC_DRIVERS)),)
OPT_DEFS += -DQWIIC_JOYSTIIC_ENABLE
SRC += joystiic.c
endif
ifneq ($(filter MICRO_OLED, $(QWIIC_ENABLE)),)
ifneq ($(filter MICRO_OLED, $(QWIIC_DRIVERS)),)
OPT_DEFS += -DQWIIC_MICRO_OLED_ENABLE
SRC += micro_oled.c
endif
endif
@@ -1,5 +1,6 @@
# MCU name
MCU = STM32F303
BOARD = QMK_PROTON_C
## Features
CONSOLE_ENABLE = yes
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+18 -166
View File
@@ -1,176 +1,28 @@
/*
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#ifndef _MCUCONF_H_
#define _MCUCONF_H_
/*
* STM32F0xx drivers configuration.
* The following settings override the default settings present in
* the various device driver implementation headers.
* Note that the settings for each driver only have effect if the whole
* driver is enabled in halconf.h.
/* Copyright 2020 QMK
*
* IRQ priorities:
* 3...0 Lowest...Highest.
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* DMA priorities:
* 0...3 Lowest...Highest.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define STM32F0xx_MCUCONF
// #define STM32F070xB
/*
* HAL driver system settings.
* This file was auto-generated by:
* `qmk chibios-confupdate -i keyboards/acheron/arctic/mcuconf.h -r platforms/chibios/GENERIC_STM32_F072XB/configs/mcuconf.h`
*/
#define STM32_NO_INIT FALSE
#define STM32_PVD_ENABLE FALSE
#define STM32_PLS STM32_PLS_LEV0
#define STM32_HSI_ENABLED TRUE
#define STM32_HSI14_ENABLED TRUE
#define STM32_HSI48_ENABLED FALSE
#define STM32_LSI_ENABLED TRUE
#define STM32_HSE_ENABLED FALSE
#define STM32_LSE_ENABLED FALSE
#define STM32_SW STM32_SW_PLL
#define STM32_PLLSRC STM32_PLLSRC_HSI_DIV2
#define STM32_PREDIV_VALUE 1
#define STM32_PLLMUL_VALUE 12
#define STM32_HPRE STM32_HPRE_DIV1
#define STM32_PPRE STM32_PPRE_DIV1
#define STM32_ADCSW STM32_ADCSW_HSI14
#define STM32_ADCPRE STM32_ADCPRE_DIV4
#define STM32_MCOSEL STM32_MCOSEL_NOCLOCK
#define STM32_ADCPRE STM32_ADCPRE_DIV4
#define STM32_ADCSW STM32_ADCSW_HSI14
#define STM32_USBSW STM32_USBSW_HSI48
#define STM32_CECSW STM32_CECSW_HSI
#define STM32_I2C1SW STM32_I2C1SW_HSI
#define STM32_USART1SW STM32_USART1SW_PCLK
#define STM32_RTCSEL STM32_RTCSEL_LSI
/*
* ADC driver system settings.
*/
#define STM32_ADC_USE_ADC1 FALSE
#define STM32_ADC_ADC1_DMA_PRIORITY 2
#define STM32_ADC_IRQ_PRIORITY 2
#define STM32_ADC_ADC1_DMA_IRQ_PRIORITY 2
#pragma once
/*
* EXT driver system settings.
*/
#define STM32_EXT_EXTI0_1_IRQ_PRIORITY 3
#define STM32_EXT_EXTI2_3_IRQ_PRIORITY 3
#define STM32_EXT_EXTI4_15_IRQ_PRIORITY 3
#define STM32_EXT_EXTI16_IRQ_PRIORITY 3
#define STM32_EXT_EXTI17_IRQ_PRIORITY 3
#include_next <mcuconf.h>
/*
* GPT driver system settings.
*/
#define STM32_GPT_USE_TIM1 FALSE
#define STM32_GPT_USE_TIM2 FALSE
#define STM32_GPT_USE_TIM3 FALSE
#define STM32_GPT_USE_TIM14 FALSE
#define STM32_GPT_TIM1_IRQ_PRIORITY 2
#define STM32_GPT_TIM2_IRQ_PRIORITY 2
#define STM32_GPT_TIM3_IRQ_PRIORITY 2
#define STM32_GPT_TIM14_IRQ_PRIORITY 2
#undef STM32_I2C_USE_DMA
#define STM32_I2C_USE_DMA FALSE
/*
* I2C driver system settings.
*/
#define STM32_I2C_USE_I2C1 FALSE
#define STM32_I2C_USE_I2C2 FALSE
#define STM32_I2C_BUSY_TIMEOUT 50
#define STM32_I2C_I2C1_IRQ_PRIORITY 3
#define STM32_I2C_I2C2_IRQ_PRIORITY 3
#define STM32_I2C_USE_DMA FALSE
#define STM32_I2C_I2C1_DMA_PRIORITY 1
#define STM32_I2C_I2C2_DMA_PRIORITY 1
#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 7)
#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 6)
#define STM32_I2C_DMA_ERROR_HOOK(i2cp) osalSysHalt("DMA failure")
/*
* ICU driver system settings.
*/
#define STM32_ICU_USE_TIM1 FALSE
#define STM32_ICU_USE_TIM2 FALSE
#define STM32_ICU_USE_TIM3 FALSE
#define STM32_ICU_TIM1_IRQ_PRIORITY 3
#define STM32_ICU_TIM2_IRQ_PRIORITY 3
#define STM32_ICU_TIM3_IRQ_PRIORITY 3
/*
* PWM driver system settings.
*/
#define STM32_PWM_USE_ADVANCED FALSE
#define STM32_PWM_USE_TIM1 FALSE
#define STM32_PWM_USE_TIM2 FALSE
#define STM32_PWM_USE_TIM3 FALSE
#define STM32_PWM_TIM1_IRQ_PRIORITY 3
#define STM32_PWM_TIM2_IRQ_PRIORITY 3
#define STM32_PWM_TIM3_IRQ_PRIORITY 3
/*
* SERIAL driver system settings.
*/
#define STM32_SERIAL_USE_USART1 FALSE
#define STM32_SERIAL_USE_USART2 FALSE
#define STM32_SERIAL_USART1_PRIORITY 3
#define STM32_SERIAL_USART2_PRIORITY 3
/*
* SPI driver system settings.
*/
#define STM32_SPI_USE_SPI1 FALSE
#define STM32_SPI_USE_SPI2 FALSE
#define STM32_SPI_SPI1_DMA_PRIORITY 1
#define STM32_SPI_SPI2_DMA_PRIORITY 1
#define STM32_SPI_SPI1_IRQ_PRIORITY 2
#define STM32_SPI_SPI2_IRQ_PRIORITY 2
#define STM32_SPI_SPI2_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 4)
#define STM32_SPI_SPI2_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 5)
#define STM32_SPI_DMA_ERROR_HOOK(spip) osalSysHalt("DMA failure")
/*
* ST driver system settings.
*/
#define STM32_ST_IRQ_PRIORITY 2
#define STM32_ST_USE_TIMER 2
/*
* UART driver system settings.
*/
#define STM32_UART_USE_USART1 FALSE
#define STM32_UART_USE_USART2 FALSE
#define STM32_UART_USART1_IRQ_PRIORITY 3
#define STM32_UART_USART2_IRQ_PRIORITY 3
#define STM32_UART_USART1_DMA_PRIORITY 0
#define STM32_UART_USART2_DMA_PRIORITY 0
#define STM32_UART_DMA_ERROR_HOOK(uartp) osalSysHalt("DMA failure")
/*
* USB driver system settings.
*/
#define STM32_USB_USE_USB1 TRUE
#define STM32_USB_LOW_POWER_ON_SUSPEND FALSE
#define STM32_USB_USB1_LP_IRQ_PRIORITY 3
#endif /* _MCUCONF_H_ */

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