diff --git a/docs/ChangeLog/20210228.md b/docs/ChangeLog/20210228.md new file mode 100644 index 00000000000..57a29a4f468 --- /dev/null +++ b/docs/ChangeLog/20210228.md @@ -0,0 +1,813 @@ +#### Include stdbool.h in uart.h ([#11728](https://github.com/qmk/qmk_firmware/pull/11728)) + +Include stdbool.h in uart.h to fix compiler errors. + +##### Issues Fixed or Closed by This PR + +* Travis CI errors +#### ChibiOS conf migrations... take 12 ([#11689](https://github.com/qmk/qmk_firmware/pull/11689)) + +Config migrations for the newest batch of boards merged from `master` into `develop`. + +sha1sums all match. + +``` + durgod/k320 - 168c88d401381d9a29166d3b07967e6f0752532d +``` +#### Update list of MCUs in keyboard.jsonschema to mirror qmk.constants.py ([#11688](https://github.com/qmk/qmk_firmware/pull/11688)) + +Mirroring checked values between python and jsonschema. +#### Backport ChibiOS Audio changes from ZSA ([#11687](https://github.com/qmk/qmk_firmware/pull/11687)) + +Should disable the pins for audio when not in use (playing notes). Added due to issues found with the Planck EZ. + +##### Issues Fixed or Closed by This PR + +* Issues found on planck ez. +#### Remove duplicated housekeeping call from `arm_atsam` ([#11672](https://github.com/qmk/qmk_firmware/pull/11672)) + + + +Patch for https://github.com/qmk/qmk_firmware/pull/10530#discussion_r549612205 + +##### Issues Fixed or Closed by This PR + +None +#### ChibiOS conf migrations... take 11 ([#11646](https://github.com/qmk/qmk_firmware/pull/11646)) + +Final pass on all configs, now that the defaults have correctly been set. + +sha1sums all match. + +``` + acheron/arctic - 2aedbe9103fff6c37e596c33c9ed337957647368 + acheron/austin - c2f4e3b7fc9f1c3d64f47d139bc58367afeca1b7 + acheron/keebspcb - 1ba976e409732bfa5c0487dd33e20bec06852ce4 + acheron/lasgweloth - 01a2e70d0d86de0ff05d0b898a6e3b4428ee1581 + aeboards/ext65/rev2 - 3c9a45cafb4ed6d9672aaff4548b105193633a87 + ai03/vega - 1bd0dfccb99baa69bacd2d55f2bfa72019b8bf80 + akegata_denki/device_one - a013823188660f5fca37c5763f160f8646aed7a7 + at_at/660m - 9999583e8bec2772046132a22818482d24e18c84 + box75 - 1126206109a942237eea96f3a9608e3c9ed55f8e + bt66tech/bt66tech60 - b69120638a8b2c86c008fd0592be918383d8a454 + cannonkeys/an_c - c755f6caaccbe2b30d95661a3d441b836534c29f + cannonkeys/atlas - 1a18c55492a834b82715516ea4cd4d3d94508743 + cannonkeys/chimera65 - 6bf226ef353da9106c381a8ac95a9b90529327e5 + cannonkeys/db60 - 07e3246f8e3adc5b6918809e6a5aa1ad064b9a09 + cannonkeys/devastatingtkl - 907d258e29eb7e35b1f868c1ea6148bfd1e3a3f2 + cannonkeys/instant60 - ac876ff6746b08839a3936dd4126b52683b763f4 + cannonkeys/instant65 - 3b8c89ec5fecbdb35cccb00c45e64a798528dbda + cannonkeys/iron165 - 0814ec4067d9857b0134e38384f272cf7172fb03 + cannonkeys/obliterated75 - 0f376e5d9a232c62e9c60f8fdc81d12732352ddc + cannonkeys/onyx - d35134ebe09046b91ab176035d3742d80b23ed8e + cannonkeys/ortho48 - 828dbfbb013ff4fefe75044b3c9fd31fec5e95a1 + cannonkeys/ortho60 - 2aca4dd4234e0dac828f5fa15ae5b3bc3c0605dc + cannonkeys/ortho75 - 4af8aaaded0ff53e9c01473f5968cc169f268647 + cannonkeys/practice60 - e01df551d9483eeb3f825fcc453317fe65f674b5 + cannonkeys/practice65 - 156163789d4c96cdd4787895788c1d02a2367f5c + cannonkeys/rekt1800 - 15882afb6373dea3e5f7ed13c19744ee2463f3bf + cannonkeys/sagittarius - f49fee611ffcc02cb3dc7f249fc8c83f136907b9 + cannonkeys/satisfaction75 - 2c9fbbea3a38820774f6ff436ef51017b545475a + cannonkeys/savage65 - ddd764be363c46f3e9b1a16151bd02d8f66b2dd4 + cannonkeys/tmov2 - 7af36cd2a42015838b77697624e90008ffa72778 + cannonkeys/tsukuyomi - a120bea5dacb2cd6f143458cece46d2860ea196d + cheshire/curiosity - 93d8fe3b7a8e028d4b015941ee71b50afe86bc8a + coarse/cordillera - 7d986d3f534786f302cbf74a5e6b7e51ffe60093 + converter/siemens_tastatur - 3f79f1467bbc56f284aceafd76ab5c6a1cbb68f4 + cutie_club/borsdorf - f8c6015b7aacfd5edef4f22f719eea30660005e7 + dekunukem/duckypad - d9c162d0867d3925cca2e653a3a3870eac2d23d2 + ebastler/isometria_75/rev1 - 2ecdd00b8c6cc794a7014747185b88374d5766c0 + ergodox_infinity - 76736c701db22e890764481c25bd38badf32a1cf + ergodox_stm32 - a7bdb0b7822617ca0f9d316a082874ac0fef5964 + function96 - 1b9e394a86dab24b85d160afe9281b5e7652afe2 + geekboards/macropad_v2 - de261e46a42cc7b7ff793e26200669f94b1dbb18 + generic_panda/panda65_01 - 592d2443033875e0309506aa8cb5212389054458 + handwired/ck4x4 - 9d7d4af7f2d787afd638e976334cd37c490040d7 + handwired/onekey/blackpill_f401 - c9257a30203b3a0e5aa18b35e07281fcd043ab5d + handwired/onekey/blackpill_f411 - dfccc2c6b245cfb561faba60c9f3fc7af8c3db30 + handwired/onekey/bluepill - 393f4b94e9a0fbc9cd00de1acde346ad72250b4a + handwired/onekey/stm32f0_disco - d827881f9bed09fd41c7c4e9d066e96b6643a099 + handwired/onekey/teensy_32 - dd90f6c823da80ba43afa41249a2bdbbab98b04c + handwired/onekey/teensy_lc - 34596f2eeb62403cce532d20cf893ebd77fe2d05 + handwired/pill60/blackpill_f401 - 20bbccb5058085076357f4fa956eede2c0af86e8 + handwired/pill60/blackpill_f411 - e03a4c3ec3b9ba65b8067126a039a8eb2cd10e51 + handwired/pill60/bluepill - 2fb721fb4376cde2067eed1c0c8acbf3bf5851c3 + handwired/riblee_f401 - 2823cd98d64c91b146dae343a32176d51772952b + handwired/riblee_f411 - 5cf7589c9a11c4ed14e7d28676ac836fbb07d013 + handwired/sono1 - d972acee03efb4917fc42f7d72c0a416b67ebd4a + handwired/t111 - f947c1d59025fe04e7d7b999d80e20277be4366c + handwired/twadlee/tp69 - 48ab62464ba1f2651f4468cbec7c6058e3b8c158 + handwired/z150 - 35e85696845e965d7f2dcdb372ed20c17d42c2bb + hub20 - f094036a182169b5a73f89f09f2ccaa3e5fc9e7e + iron180 - 5efb6f21c848b3c964795d9debddceac7628933d + jm60 - dbbdbe8b27b3c1d0a25981b2f75728d163d5d299 + keebio/bdn9/rev2 - 0031632523dddfc8f7b3a02cf9c5990ebbb3856d + keebio/choconum - 4484ef6936a497610ca5ae4d378bc07b2bc1b1c7 + matrix/m20add - 6068aeff5b14c26de8838180f4397800abe9f1aa + matrix/noah - fcde175fb1d3f5bf0716ac5a880c2cc9ab4bbf7f + misterknife/knife66 - e7f3ceffb94fb8e680da2af27fa7cb1a0a52b699 + misterknife/knife66_iso - ee027db939c098f908f70f02ffa9cc3952139f70 + nebula12 - 2f3a25b6675dcd0fabe75e7bb63038d3cac19610 + nemui - 4030faa372512f766fd747876cb28176302453f9 + nibiria/stream15 - fd7b09affa208403099ef9bff1b756fac0d4f918 + nightingale_studios/hailey - 496a44b2f789cc59a6110c7c1c41d57e59c722be + planck/rev6 - 6fb8f0bc21b4ab774ce3d339fdf6f25d96059f10 + primekb/meridian - 8021ed99e8bdf92faab806780186cc924dd59e50 + projectkb/alice - ad7678d475a14c54f28b62d1c1b15f5b4c4448bc + projectkb/signature87 - de61338b0a5c477f39c000df8117dd3017c2643d + ramonimbao/squishy65 - 2ea1a8b18c39d0e193bbbf5836191874d3aafc53 + ramonimbao/wete - a80b3b309f06566adcdf20234d81c1d5aa599b00 + rart/rartlice - c8c80c302428d62bb8b08e3185509a233a94f5f0 + retro_75 - 7434e266bba43ded8ca1ff75d77faa506473ca91 + rocketboard_16 - 1182a8730a84b58eba5a470286b6db6134d36f54 + satt/vision - c85a28a8d7e321511a17a7e7084d0a7876d1779a + technika - 7c59de348f0ec5f6ac9e260806a87aaf16fbafa2 + tkc/godspeed75 - e447b39dca393736fbf289049699d5b4748bb8c6 + tkw/stoutgat/v2/f411 - 58e9b909379ad107affbff0508e3923264b75426 + viktus/styrka - 36bf0921be79a8b037fdc25343584574a312be60 + westfoxtrot/prophet - 80036c8f986c8d3261d6b0748d2057eccab6430b + whitefox - c9eccac0196c3e2e2ea6c90d3036283a3eabff2c + wolfmarkclub/wm1 - 0d22a426255b829a7805bd6a3ff927198b1e31b4 + xelus/kangaroo - fdb1ffb66f4841f662e968929f058d4fd403c97e + xelus/trinityxttkl - a9641e5b39b7bb38351b9109f0f381837b2e8e79 + xelus/valor_frl_tkl - 6c3b577852736a68727ec319c30712b3088e65cd + xiaomi/mk02 - 4c1406ebfee73551a844ef7ab29fc5788d7e875c + zoo/wampus - 930c903e85478e220a235f45593c03512c66bc2a + zvecr/split_blackpill - c0e3e1583262e4cb0ebfe2efa6356ed6c5c957ca + +``` +#### UART driver refactor ([#11637](https://github.com/qmk/qmk_firmware/pull/11637)) + +Moves the existing `uart.[ch]` driver to `drivers/`, and adds a ChibiOS counterpart (which may need some QA from someone more versed in the ARM side of things). + +It would also be good to get some `puts()` and `gets()` implementations added, if possible. And I'm not really sure what to do with `uart_available()` on ARM. + +##### Issues Fixed or Closed by This PR + +* +#### Enforce memory allocator for ChibiOS builds with allocating debounce algorithms ([#11630](https://github.com/qmk/qmk_firmware/pull/11630)) + +Using one of the alternate debounce algorithms requires a memory allocator. +ChibiOS allows you to disable said memory allocator. + +This puts some compile-time checks to enforce that the allocator has been enabled -- during testing with it set to FALSE, the keyboard would run and function correctly from a visible standpoint, but no keypresses would register. The fun part was, if the slave side had a firmware that had an allocator enabled, the master would still report keypresses on the slave, but not itself! +#### Fix up comments showing how to execute config migration ([#11621](https://github.com/qmk/qmk_firmware/pull/11621)) + +Looks like an older version of the migration command had a different name. Fixes up the comments as well as the generator to ensure consistency. +#### ChibiOS enable memory allocations ([#11620](https://github.com/qmk/qmk_firmware/pull/11620)) + +ChibiOS config consolidation inadvertently disabled memory allocations, so any malloc calls (such as for debounce algorithms) would fail. Typing would not function! +#### ChibiOS conf migrations... take 10 ([#11617](https://github.com/qmk/qmk_firmware/pull/11617)) + +Config migrations and custom board removals for the last batch of boards left outstanding in the repository. + +sha1sums all match. + +``` + akegata_denki/device_one - 0d9f891416decbbb533c6c1147632ef7c55a2d9f + chavdai40/rev1 - 06bca6ec34948c8005e73254299488cdba3429f8 + chavdai40/rev2 - f55650a8d7aa755eb72564e95a144910dd902a73 + ergodox_stm32 - 04433b80e4cd231c15163ace77428db72b5483ad + jm60 - a127e6cfccad74ed1a9e47e9213dc41cf0d26f1d + matrix/m20add - e2e556dad666ed9b1eea09e46d0eb14e19bda8b8 + matrix/noah - c6fd3caf0b7d444085283d4f0a9204ab283d5202 +``` +#### Leftover early initialisation conversions ([#11615](https://github.com/qmk/qmk_firmware/pull/11615)) + +This brings the last batch of stragglers over to use the early initialisation code. +#### Switch to nano specs on ChibiOS builds - Round 2 ([#11607](https://github.com/qmk/qmk_firmware/pull/11607)) + + +With #11573, this could be worth another try... maybe (#9044 for the previous iteration). +#### Fixup builds on develop branch. ([#11600](https://github.com/qmk/qmk_firmware/pull/11600)) + +Fixes failing builds on develop after the change to the default set of enabled ChibiOS peripherals. +#### ChibiOS conf migrations... take 9 ([#11598](https://github.com/qmk/qmk_firmware/pull/11598)) + +Config migrations for the newest batch of boards merged from `master` into `develop`. +This batch includes the list of boards which still contain their own board definitions. + +sha1sums all match. + +``` + akegata_denki/device_one - 0d9f891416decbbb533c6c1147632ef7c55a2d9f + ergodox_stm32 - 72aeab1612ef73555a73dd60d005e671a90d7e2f + jm60 - cc75e97727fadd939be4bdf7fa3714320465d3ef + matrix/m20add - b0dee0b4e8c0a94d55fea51c8699972f15483209 + matrix/noah - 57a1c09cd24716863ce862e0b9cbca2a9c6fcebf + nibiria/stream15 - 610b151b02f5cac681c65fbd3f94a12312f99b82 + xiaomi/mk02 - f92fcee777acc159c0af268e88b751fd1e33f74f +``` +#### Keep track of encoder activity ([#11595](https://github.com/qmk/qmk_firmware/pull/11595)) + +Addition to the "last matrix activity" PR, this time around it keeps track of encoder activity too. + +Adds four new APIs: +```c +uint32_t last_input_activity_time(void); // Timestamp of the last matrix or encoder activity +uint32_t last_input_activity_elapsed(void); // Number of milliseconds since the last matrix or encoder activity + +uint32_t last_encoder_activity_time(void); // Timestamp of the last encoder activity +uint32_t last_encoder_activity_elapsed(void); // Number of milliseconds since the last encoder activity +``` + +Tested on the Djinn rev1. +#### `qmk cformat` ([#11594](https://github.com/qmk/qmk_firmware/pull/11594)) + +Execution of `qmk cformat` against `develop`. +#### ChibiOS conf migrations... take 8 ([#11588](https://github.com/qmk/qmk_firmware/pull/11588)) + +Config migrations for the newest batch of boards merged from `master` into `develop`. + +sha1sums all match. + +``` + hub20 - 089b49b233c4e9b8ab643c6b338c91f5c3136e32 +``` +#### Fix user keymaps that aren't compiling ([#11584](https://github.com/qmk/qmk_firmware/pull/11584)) + +A number of user keymaps don't compile. I've been compiling `all:all` a lot lately so having these cleaned up will help me a lot. +#### Remove QMK_KEYBOARD_CONFIG_H ([#11576](https://github.com/qmk/qmk_firmware/pull/11576)) + + +Given that all `config.h` files are automatically injected as part of the build process, this PR removes `QMK_KEYBOARD_CONFIG_H` which only functions some of the time. +#### Adds AT90USB162 support ([#11570](https://github.com/qmk/qmk_firmware/pull/11570)) + +Adds support for the AT90USB162. + +After my previous PR failure I hope this one is smoother. I've ran `make all:default` and there are failures with some boards but they appear to happen on develop as well. I've compiled and flashed AT90USB162, ATmega32u4 and STM32F401 boards using this branch. + +I've added preliminary support into spi_master, uart and serial but I've not tested these features but the registers, bits and pins line up with the datasheet. I've been able to test the changes to backlight_avr on a couple of accessible pins with hardware pwm. I'm a little unsure about the edit I've made to the max eeprom address in dynamic_keymap.c as it doesn't make an exception for the 16u2? + +The MCU has no ADCs or support for I2C. I found a [datasheet](http://ww1.microchip.com/downloads/en/AppNotes/doc8224.pdf) while creating a the first pull request stating the ATmega16u2 is functional equivalent to the AT90USB162 which lines up with the edits I've made. + +I'm expecting to have missed something but hopefully not too much. + +Edit: +For context this is to port existing hardware to QMK, I appreciate there's not likely going to be much call for this MCU. Any who thanks for your help and time. + + +##### Issues Fixed or Closed by This PR + +* +#### Keep track of last matrix activity ([#11552](https://github.com/qmk/qmk_firmware/pull/11552)) + +Re-submission of #10730 -- there was a logic issue that only seemed to manifest on some AVR builds. +@daskygit has graciously performed the investigation on their end, as I was unable to reproduce. + +This PR adds support for recording the last time matrix activity was detected. +Two new APIs have been added: +```c +uint32_t last_matrix_activity_time(void); // Timestamp of the last matrix activity +uint32_t last_matrix_activity_elapsed(void); // Number of milliseconds since the last matrix activity +``` + +These values are compatible with normal matrix scanning, as well as split_common. +#### Remove duplicate manufacturer definitions ([#11544](https://github.com/qmk/qmk_firmware/pull/11544)) + +Now that the integration between info.json and config.h is tighter we should define these variables in only one place. I chose to leave this in `config.h` under the principle of least surprise. +#### Process info.json rules ahead of userspace rules ([#11542](https://github.com/qmk/qmk_firmware/pull/11542)) + +Fixes the import order so that keyboard-level vars don't overwrite userspace. +#### ChibiOS conf migrations... take 7 ([#11529](https://github.com/qmk/qmk_firmware/pull/11529)) + +Config migrations for the newest batch of boards merged from `master` into `develop`. + +sha1sums all match. + +``` + alpine65 - 91e88b87653234a9023f4ad98913a6ea52c8b3fb + cannonkeys/onyx - 2adf507afd4e288761a675de9cfbb6e34c540e29 + ck60i - 98be5d22a3cd1b38d92e080f32c4795260db181b + cutie_club/borsdorf - 81734ebf770ab731ca8dcfac6fce5574e948890e +``` +#### Allow post_config.h to be implemented in userspace ([#11519](https://github.com/qmk/qmk_firmware/pull/11519)) + +Allow `post_config.h` to be defined in userspace directories. + +At present, we pay attention to it in keyboard and keymap directories, but not in the userspace. +#### ChibiOS conf migrations... take 6 ([#11504](https://github.com/qmk/qmk_firmware/pull/11504)) + +Config migrations for the newest batch of boards merged from `master` into `develop`. + +sha1sums all match. + +``` + cannonkeys/sagittarius - 953626d1b87574290016ed09caaf5e3fa7b73189 + evolv - c2f56a35ef1d11b002f9306ed2814ac0447e68c4 +``` +#### Document how to add data driven configurations ([#11502](https://github.com/qmk/qmk_firmware/pull/11502)) + +This describes how to add configuration values to info.json so they work in the build system as well. +#### ChibiOS 20.3.2 ([#11495](https://github.com/qmk/qmk_firmware/pull/11495)) + +The long-awaited upgrade to ChibiOS 20.3.2. + +``` +------------------------------- +Successful builds: 121 +Warning builds: 21 +Failing builds: 0 +------------------------------- +``` +#### Add support for specifying BOARD in info.json ([#11492](https://github.com/qmk/qmk_firmware/pull/11492)) + +`BOARD` was added while I was working on my data driven qmk project. This adds support for specifying it in info.json like everything else. +#### Another round of develop fixing ([#11473](https://github.com/qmk/qmk_firmware/pull/11473)) + +Somehow these things broke even though my last PR was compiling clean. +#### Disable ChibiOS subsystems repo-wide. ([#11449](https://github.com/qmk/qmk_firmware/pull/11449)) + +Disables a bunch of unused ChibiOS subsystems across the repository. +File checksums do change, as things like condvars aren't being imported into the build any more. +#### Fix compiling squiggle/rev1 ([#11448](https://github.com/qmk/qmk_firmware/pull/11448)) + +The structure for squiggle/rev1 was incorrect and needed to be fixed. +#### Fix compiling treadstone32/rev1 ([#11447](https://github.com/qmk/qmk_firmware/pull/11447)) + +The structure for treadstone32/rev1 was incorrect and needed to be fixed. +#### Fix up build dependencies. ([#11435](https://github.com/qmk/qmk_firmware/pull/11435)) + +Fixes up build dependencies so that the generated files are correctly made available previous to compiling any object files. +#### Fix broken keyboards on develop ([#11427](https://github.com/qmk/qmk_firmware/pull/11427)) + +A few keyboards were broken by my info.json work. + +##### Issues Fixed or Closed by This PR + +* +#### Split up QWIIC makefile variables to have _ENABLE and _DRIVERS ([#11426](https://github.com/qmk/qmk_firmware/pull/11426)) + +As per the description, this splits up `QWIIC_ENABLE=` to both `QWIIC_ENABLE=yes/no` and `QWIIC_DRIVERS=`. +This is broken on `develop` since the addition of `qmk generate-rules-mk`. +#### AVR weak bootloader_jump ([#11418](https://github.com/qmk/qmk_firmware/pull/11418)) + +Allows for a custom implementation of bootloader_jump() for non-standard bootloaders on AVR. + +This allows for a cleaner override compared to catching RESET in process_record_* and implementing bootmagic_lite(). + +#### Remove handwired/bluepill. ([#11415](https://github.com/qmk/qmk_firmware/pull/11415)) + +As discussed, remove legacy code. +#### ChibiOS conf migrations... take 5 ([#11414](https://github.com/qmk/qmk_firmware/pull/11414)) + +Config migrations for the newest batch of boards merged from `master` into `develop`. + +sha1sums all match. + +``` + handwired/sono1 - cca23170d69383fd0fc4b21bdfacb32ee57e1305 +``` +#### ChibiOS conf migrations... take 4 ([#11413](https://github.com/qmk/qmk_firmware/pull/11413)) + +Config migrations for the newest batch of boards merged from `master` into `develop`. + +sha1sums all match. + +``` + cannonkeys/tsukuyomi - 7beddc74b03d652481198843a178177de5da3ddb + misterknife/knife66_iso - f2dd6e6c54258ae9d09a88215b36fba34947fc23 + mode/eighty/m80h - 4bbbee01a89a5b4ab5f4de36e0dd2044cf54a698 + mode/eighty/m80s - 6de4a1affab4ed8f08423eb511393ed797e3ea77 +``` +#### Fix broken keyboards ([#11412](https://github.com/qmk/qmk_firmware/pull/11412)) + +My recent PR broke a few keyboards, this addresses the breakage. +#### Fix compiling on develop ([#11409](https://github.com/qmk/qmk_firmware/pull/11409)) + +A merging error led to uncompilable keyboards. +#### Refine twinkle to be smoother (use breathing curve) ([#11350](https://github.com/qmk/qmk_firmware/pull/11350)) + +This pull request updates the RGB Lighting "Twinkle" effect to be smoother, similar to the "Breathing" effect. To do this, the Twinkle code has been updated to use the same table that the Breathing uses (but "stretched" mathematically), and the default cycle intervals & twinkle life have been adjusted. There are also some changes to make the effect look nicer when lower brightness settings are configured. + +To avoid bloat, I've done some minor refactoring so that Twinkle and Breathe can share some code. There is no significant impact on either firmware size, or on matrix scan rate. Nevertheless, since this is change to an effect that folks may have customized, I am targeting the develop branch. +#### Improved Language Specific Keycodes for US International and Extended Layouts ([#11307](https://github.com/qmk/qmk_firmware/pull/11307)) + +This pull request improves a corner of the Language Specific Keycodes: + +- Improvement for the **US International** keyboard layout [aka _`xkb:us:intl:eng` - English (US, international with dead keys)_] + - Support for more symbols added + - Fixed some confusion between dead-key accents and standalone counterparts (`US_DGRV` vs. `US_GRV`, `US_DTIL` vs. `US_TILD`, etc.) + - Adds `sendstring_us_international.h` that will (if included) make `send_char()` / `send_string()` work correctly when the host is configured for this keyboard +- Adds support for **US Extended** keyboard layout [aka _`xkb:us:altgr-intl:eng` - English (international AltGr dead keys)_] +- Adds support in `send_char()` / `send_string()` for ASCII characters that can only be entered by typing a dead key followed by a space. + +I've targeted this at the `develop` branch, because: +- The change to `send_char()` increases firmware size slightly (by about 62 bytes) for all keyboards. +- The changes in `keymap_us_international.h` make it more correct, but may break keymaps that depend on it (although I note, there doesn't seem to be anything in the `qmk/qmk_firmware` tree that uses it at present). +#### ChibiOS conf migrations... take 3 ([#11261](https://github.com/qmk/qmk_firmware/pull/11261)) + +Config migrations for the newest batch of boards merged from `master` into `develop`. + +sha1sums all match. + +``` + acheron/lasgweloth - 3bedb0fe1f1b542b4d90daeaeab8905cd9ee992c + box75 - ff91bacf5cec0b42df02967eb0ecbf4bd1b56928 + geekboards/macropad_v2 - 1c205720d47f7e636173064b1aef1637860a9134 + iron180 - 867929d78361a50e34671e4e167cafd927d8982b + technika - cb9295b90980eb8dfdc63d6031533edbb344c045 +``` +#### Fix duplicate I2C_KEYMAP_START define ([#11237](https://github.com/qmk/qmk_firmware/pull/11237)) + +And moved the sync timer define to match its placement in the struct. + +##### Issues Fixed or Closed by This PR + +* +#### Update ADB impelemtation in TMK Core ([#11168](https://github.com/qmk/qmk_firmware/pull/11168)) + +The ADB protocol implementation enables the ADB-USB converter in QMK. However it was ported from TMK some time ago and not updated since then. This is what this PR does. The updated and more complete ADB implementation is needed in order to enable some features on older Apple keyborads: + +- automatic detection of ISO keyboards and swapping key codes accordingly [see](https://github.com/tmk/tmk_keyboard/issues/35) +- enable right modifier keys on AEK keyboards [see](https://geekhack.org/index.php?topic=14290.msg736664#msg736664) and [this](https://deskthority.net/viewtopic.php?t=254) + +I tested the changes with an Arduino Pro Micro and my AEK II and M0116 keyboards, both in ISO layout. Some testing with the ANSI versions might be needed. Also, I could not test how JIS versions of the keyboards are affected by these changes. I assume not at all, as they do not swap key codes. + + + +##### Issues Fixed or Closed by This PR + +* +#### Remove unused `action_get_macro()` usages in user keymaps & layouts ([#11165](https://github.com/qmk/qmk_firmware/pull/11165)) + +This is all the `action_get_macro()` functions that either define no macro handlers, or do but which are not referenced anywhere in the keymap as `M()` keycodes or in `fn_actions`. There are still a ton of keymaps to be converted over to `process_record_user()`. + +Also removes "the old way" macro documentation. + +##### Issues Fixed or Closed by This PR + +* +#### [Keyboard] Add Pix ([#11154](https://github.com/qmk/qmk_firmware/pull/11154)) + + +Add Pix keyboard, a single row macropad with Encoder and OLED Screen, can be mounted under your monitor + +![IMG20201208141526](https://user-images.githubusercontent.com/3537856/101459293-a4da0400-396a-11eb-94f6-adfb68b50fe7.jpg) + +##### Issues Fixed or Closed by This PR + +* +#### ChibiOS conf migration: dekunukem/duckypad ([#11123](https://github.com/qmk/qmk_firmware/pull/11123)) + +Same as other conf migrations, sha1sum matches: `0014c2a10913fad7b71f5fc8a0d6adb6b3c4b128` + +```sh +make -j$(nproc) dekunukem/duckypad:default COMMAND_ENABLE=no SKIP_VERSION=yes SKIP_GIT=yes +``` +#### Disable almost all ChibiOS subsystems in default configs ([#11111](https://github.com/qmk/qmk_firmware/pull/11111)) + +Disables most ChibiOS subsystems, or using ChibiOS-supplied default values where appropriate. +No config migration has occurred yet, so nothing is using these files.... yet. + +Also moves out the configuration files from the F4x1 blackpills, such that they're actually part of the keyboards in question. + +All F4's built, compared against develop, using sha1sum to validate binary reproducibility: +``` + handwired/onekey/blackpill_f401:default - 8387bfd56888fc1605d293dc0071b4ec94b23991 + handwired/onekey/blackpill_f411:default - 855efdb2f60c384edf64773c0f4ff4b7ea8ae4c9 + handwired/pill60/blackpill_f401:default - 5b652354ae957e86e211dcef29f8f27320b31180 + handwired/pill60/blackpill_f411:default - 580255c171e95b5bca53b14a13ae018a73d18414 + handwired/riblee_f401:default - dc68c31d7ca8ae0fad7e7ad8bdd63406155ff363 + handwired/riblee_f411:default - cf0fadff4c98d41cf9bdddbe1ead15c79be941b9 + matrix/m20add:default - 2bad5fc486e640a97d7197d03caf8762d36dc1b0 + matrix/noah:default - e52979ce61a24594346cd7031ffd3f788ab423e7 + phoenix:default - 21bfb14c52451899dadf545b78a8e88b22a420f0 + tkw/stoutgat/v2/f411:default - b094651ec61c79099de3e6e4991319816ac464c1 + zvecr/zv48/f401:default - 8b1766a24f943b9b0ba756c6fe340ba69d5e14e3 + zvecr/zv48/f411:default - 09ba645092eb7f3d41da0d5e6727f2f4f97033c0 +``` + +Running `make all-chibios:default`: +``` +------------------------------- +Successful builds: 147 +Skipped builds: 1110 +Warning builds: 9 +Failing builds: 0 +------------------------------- +``` +#### Use the schema to eliminate custom code ([#11108](https://github.com/qmk/qmk_firmware/pull/11108)) + + +#### Validate our JSON data using json_schema ([#11101](https://github.com/qmk/qmk_firmware/pull/11101)) + +This builds on #10817, and should be merged after that one. +#### Sync Timer feature ([#10997](https://github.com/qmk/qmk_firmware/pull/10997)) + +Added a sync_timer set of apis that will keep their value in sync across split common keyboards. This helps keeps led animation effects in sync when run in split modes (RGBLIGHT_SPLIT or the upcoming RGB_MATRIX_SPLIT). This PR is targeting the development branch as this is a change to the Transport code which will require users to flash both master and slave halves. + +~~Spent quite a bit of time poking at RGBLIGHT fixing the hitching of the previous attempts at a sync timer. Solved all the hitching, but it still does not stay in sync as well as I would like (when RGBLIGHT_SPLIT_NO_ANIMATION_SYNC is defined) due to how animation ticks are handled in RGBLIGHT. So while it's using the sync timer, it's not any better than what it was before. Additionally an option to disable the sync timer and fall back to normal timer is possible using the #define DISABLE_SYNC_TIMER~~ + +All hitching for RGBLIGHT with sync_timer has been fixed. Additionally RGBLIGHT now stays in sync with RGBLIGHT_SPLIT_NO_ANIMATION_SYNC defined Only remaining issue: boot / startup time hitching causes the animations to start out of sync. So there needs to be an initial sync event to get them lined up. RGBLIGHT_SPLIT_NO_ANIMATION_SYNC not defined still fixes this. + +Note: In testing, this was used in conjunction with https://github.com/qmk/qmk_firmware/pull/10996 + +##### Issues Fixed or Closed by This PR + +* +#### Configuration minimisation (phase 1) ([#10976](https://github.com/qmk/qmk_firmware/pull/10976)) + +ChibiOS configuration files are used in order to enable or disable access to certain subsystems in order to provide support for things such as audio or I2C/SPI -- as per standard Proton-C. In the past, Proton-C has provided a "config-less" setup, which provided these configuration files and turned on all the required subsystems in order to support them. + +These configuration files were moved to a common area, and effectively enable subsystems like SPI, PWM or DAC, regardless of whether they're targeting F303, with or without a Proton-C. + +This PR modifies the way F303's are built, allowing for a build target of a board called `QMK_PROTON_C` -- this contains the usual fully-fledged configurations, and disables the majority of the subsystems on the `GENERIC_STM32_F303XC` board. + +All F303-targeting keyboards have been migrated across to the `QMK_PROTON_C` board in this PR, specifically to validate that SHA-1 checksums match what's currently on the `develop` branch: +``` +1upkeyboards/sweet16/v2/proton_c:default - 8c01a546f9101a1306fedc501f375ba167364572 + acheron/shark:default - ee3d9ab5285a62d6764db984f5fce29a072823cc + atreus:ridingqwerty - 2a32c64e54f743aea3d2662526213ca1224a2d16 + boston_meetup/2019:default - d17230c17f6f3b791272d01825b78a6e531f0450 + c39:drashna - b75040aa31fdb4ae663973c6d2d1194ddf5addb4 + ckeys/thedora:default - e62922bc5dac220d4287070859140f97b831def2 + clueboard/60:default - bb5057d4a2976b6530fe2e345a4153de2f7c042d + clueboard/66/rev4:default - 878e38a34f97b32d9d109a6d98f98bc385d84864 + clueboard/66_hotswap/gen1:default - 03fe10f4de7b67e5f1cf0a7d576f82676adf4261 + clueboard/california:default - b10e51183dd1f5891faeef3e44ec325cb4e194fa + dztech/dz60rgb/v1:default - eade21047afb40d903e548c38ab4671d956282c2 + dztech/dz60rgb_ansi/v1:default - 61e275467ce256a1f5d2a719aad642c6c7b3a6b2 + dztech/dz60rgb_wkl/v1:default - 6858c2c8fa322d23932402ca761e9c37ff3dedc0 + dztech/dz65rgb/v1:default - d7543c7be51c9932624b455fd71d3a1e45537469 + hadron/ver3:default - 632af7727b767720c699abdff770edc9682928ee + handwired/co60/rev6:default - be1688eeabd83a7f576d9e4e23e24d56b8dc251b + handwired/co60/rev7:default - d196c5772859ddee695bda5b0e9f0944a0f350f8 + handwired/d48:default - 24c4e7fee59ceed78400091e3134239ad5b8c662 + handwired/ddg_56:default - c65d1eeb891795edc889e7e84dce5fe098471dc4 + handwired/floorboard:default - 8b007072e49f461fdcd818b7f95a4da0c6c053b4 + handwired/onekey/proton_c:default - 076611ec2a181ab20e6f418b1e72240b625e366a + handwired/onekey/pytest:default - d12db66a81cd0d4afb96e026f8b2a95ca77ee176 + handwired/selene:default - fdba0edd6ce2526adf1a7ae9eb3b07fd20f6076f + handwired/sick_pad:default - 3cf8b00dd8bfb0c26ba601d58d5fce28298f912e + handwired/steamvan/rev1:default - 743b395ac87b918b6be4614c9e120e80a9f049d4 + handwired/wulkan:default - 629359dae610138096e09daaba3556209b4107ef + hs60/v2/ansi:default - 7bcd152c269803de8f96416ba26e939c0420ceae + hs60/v2/hhkb:default - d77f393d2811bd104b05c4530bf1083d75856b7a + hs60/v2/iso:default - 5d3d20de919fca3b64cb7548cad46e8d35d7cc04 + kbdfans/kbd67/mkiirgb/v1:default - 15877ecb90c9c7ed2823bf4637c69edd2a8bc45b + keebio/bdn9:codecoffeecode - 2b2844e60da163b5dc0d190c7aa8e98218890833 + keebwerk/mega/ansi:default - 10e32718c7bfff2f6bd8dd2159a15bef0f4acbf9 + kingly_keys/little_foot:yanfali - 87383c1296f6d16178864cee67c11292ea60ddde + kv/revt:default - 2d806f2cb95a26e35238fcc1541f63896ebdfdd0 + mechlovin/adelais:default - 9de468d5836cda082918498cf644a872c249bc29 + mechlovin/hannah60rgb:default - 22119e8e0cbbe0340b4ebe7d860a83efbc9d6c0d + mechlovin/hannah65:default - 0a209d9c018b7c33e14bca26ad1f99c363e67118 + mechlovin/infinity87:default - 9c7a2eea08a9b6dd9f9dc888ee04a53f15b60e0a + mechlovin/infinity88:default - 79677fed5264a45e776ce23467e0258cd161f6d5 + melgeek/mj61/rev1:default - 4b4e15a164bb215c7de163248fdbd15ca3939121 + melgeek/mj63/rev1:default - a59aaf5d6bd260299878547489a6ab8888d4758e + melgeek/mj64/rev1:default - 765287938c4bc0774b62795717f600ccc6bd058b + melgeek/mj64/rev2:default - d8603e5406d25f6ff51f0ed003765626189af56c + melgeek/mojo75/rev1:default - 7aed878a64d5cc39d9a09aa5d42178391d9e2c1d + melgeek/z70ultra/rev1:default - f93c1bcfb4f7732f40bac8f9917ee43db99bea70 + montsinger/rebound/rev1:curry - 7540ac725e2de6b155b9961a73aab5e949263c53 + moonlander:default - d33b143f995aaf9751e9403ef99d6134940e15b8 + nack:default - ba7f421d5670e672c5c14fd5f80c0f86447c1468 + nebula68:default - 6bed6afb2fd84ef9069b757f1d1e87fc1cbe290c + nk65:default - 75b2484741a96dcbff14e94c44443bb33ad73dce + nk87:default - f719a739a3d2c0969c79c1ace5fe9a7d6f05cc22 + default - 9338d2fb97d6005b53a93d0c43453b535a4255c1 + planck/rev6:default - cb19e7f473183e040406c710b7bf797356d6dec3 + preonic/rev3:default - 5a2bce8227691b84107e7757a1ccee03e56577fb + rgbkb/pan/rev1/proton_c:default - 2724e0d7c7e9b7a77bb58bc33516f462c4e75182 + yugo_m/model_m_101:default - c338c93888cd50aa69453e0bd2b4394f1c09ffc8 + rgbkb/zen/rev1:default (CTPC=yes) - edbf80fc4f3680fa55cefc410c01c2ba360676d1 + rgbkb/zen/rev2:default (CTPC=yes) - e2aea7fd02e5d36d1c7aa58006b3442363b7a005 +``` +#### Added rev2 & move rev1+rev2 to parent folder ([#10973](https://github.com/qmk/qmk_firmware/pull/10973)) + + +Aplx6 has a new rev and a new pcb with encoder & oled display support. +Made a parent folder named aplx, renamed aplx6 to rev and added rev2 folder and files. +Edited old rev1 readme.md to correct the make: example. +Sorry for any bad coding in advance :P +##### Issues Fixed or Closed by This PR + +* +#### Rewrite APA102 support ([#10894](https://github.com/qmk/qmk_firmware/pull/10894)) + +The APA102 source was broken by commit 16a15c1cfcbfd0feb2c2cf1383676747e2f97d73 as it did not include the quantum header. This PR 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. + +Additionally, these changes expose the global LED brightness parameter of the APA102. Brightness values are configurable through `APA102_DEFAULT_BRIGHTNESS` and `APA102_MAX_BRIGHTNESS`. + +Question: Since it is using the QMK macros, does this still belong in under `drivers/avr`? + +##### Issues Fixed or Closed by This PR + +* #10026 +#### Configure keyboard matrix from info.json ([#10817](https://github.com/qmk/qmk_firmware/pull/10817)) + +This PR will generate `#define`'s based on information found in info.json. This is a big step towards making QMK easier to work with for non-programmers, and making it easier for collaborators to maintain a large number of keyboards using automated tooling. +#### Add support for 8 buttons to mouse report ([#10807](https://github.com/qmk/qmk_firmware/pull/10807)) + + +#### Keep track of last matrix activity ([#10730](https://github.com/qmk/qmk_firmware/pull/10730)) + +This PR adds support for recording the last time matrix activity was detected. +Two new APIs have been added: +```c +uint32_t last_matrix_activity_time(void); // Timestamp of the last matrix activity +uint32_t last_matrix_activity_elapsed(void); // Number of milliseconds since the last matrix activity +``` + +These values are compatible with normal matrix scanning, as well as split_common. +#### Moved s7_elephant and bear65 into 1 folder ([#10528](https://github.com/qmk/qmk_firmware/pull/10528)) + + +The 2 boards are now moved into the folder jacky_studio/ +I have checked with Jacky, and he is ok with this naming convention +#### ChibiOS upgrade: keyboard conf migrations (phase 1) ([#10418](https://github.com/qmk/qmk_firmware/pull/10418)) + +Performs the config migrations for ChibiOS-based boards. + +This PR includes the set of keyboards which do not require board changes, or even if the board has changed the resulting binary has a sha1 match before and after the configuration file migration has occurred. + +All builds have been executed with the following command: +```sh +make -j$(nproc) ${KEYBOARD_BUILD}:default COMMAND_ENABLE=no SKIP_GIT=yes +``` + +The keyboards listed at the end do require modification, and will result in further PRs to allow for board-specific validation without holding up other merges. + +Listing of boards successfully migrated: +``` + acheron/arctic - 8d3d233f15bf5d396e29abb94f943a89b0b828d1 + acheron/austin - beabc6204533de80704684de9ff7790895f319e1 + acheron/keebspcb - e14a96e99aab54aefebc1d3d24d64b0082db7842 + aeboards/ext65/rev2 - 0b97daef994903585be2768b6aaffc4da97ec617 + ai03/vega - 7e5f208278309681fd1db8b2629890b813fdf938 + at_at/660m - e30393b6546454f9939c1187aa9c6539f1ef76c1 + bt66tech/bt66tech60 - a7f4e8a224132830447d12c92d146997f9b56b7d + cannonkeys/an_c - e7320dc09377fdad749e382b3986f2241633214b + cannonkeys/atlas - 063a8eaea7e68607b725ad06777c49d34686b433 + cannonkeys/chimera65 - 01ce66c862a5cd98183b10e992939a55038779bc + cannonkeys/db60 - 45636d0b3cf951cef51a5b19678e2da549efd14f + cannonkeys/devastatingtkl - 709e0155c421991fad283d38c28f850320ed4730 + cannonkeys/instant60 - 7e530e10794183d684a328f01b9b0743907440c7 + cannonkeys/instant65 - c8de288708d0586337cb7137ae54d97e1ddc90a6 + cannonkeys/iron165 - 3a3c0273e227fd15ab3527e4aa557b94d0b69248 + cannonkeys/obliterated75 - cdf834802ae77b1bbd4876eb8c34c19a83ad95cd + cannonkeys/ortho48 - 3432ff13c83a6358eca44b37f72b18882eeda699 + cannonkeys/ortho60 - 95be42a23798cc8f9b04175d4892b712d871a52d + cannonkeys/ortho75 - e1149893fd01e853124808b45d521b61a7638eb9 + cannonkeys/practice60 - 6e4da87f0a766cf2665e9b4aa8e3ab33017cf745 + cannonkeys/practice65 - c436c06829123503073b3a9c5a1c0acfc2dbe2e5 + cannonkeys/rekt1800 - 43e8e21b62531534afeaa241f4c683fbdb60a8e0 + cannonkeys/satisfaction75 - 28ff9a8a11ad1de9d09ec85fab2af906b7c27d6a + cannonkeys/savage65 - 53eaefae56020b536d4934686506d5d1fe51b6e0 + cannonkeys/tmov2 - 8b1ced8ff7dc368afa268104cd5192bb1bfc8a1c + chavdai40/rev1 - b166af66b084077764b705c9428725cde0b0ce51 + chavdai40/rev2 - 0048c8ec8c28f1dfa5d1a37348524899595d8325 + cheshire/curiosity - f1636e53638ce2e798070e6e622fd88a08982d5a + clueboard/60 - bb5057d4a2976b6530fe2e345a4153de2f7c042d + clueboard/66_hotswap/gen1 - 03fe10f4de7b67e5f1cf0a7d576f82676adf4261 + clueboard/66/rev4 - 878e38a34f97b32d9d109a6d98f98bc385d84864 + coarse/cordillera - 5cae5c643e96d03bddcbb73e76e225ea5f82fef3 + converter/siemens_tastatur - 48f82cd227836878967dfa0fe0411f7d877a124c + ergodox_infinity - 8df21d6129eef47d7a5ced92715e5bdbfb0151e5 + function96 - deecdcdca34c88058f820f0e2bc9f112458c85c5 + generic_panda/panda65_01 - 8522d8107edcf71758f3be7298c0bc18fa7f6706 + hadron/ver3 - 632af7727b767720c699abdff770edc9682928ee + handwired/ck4x4 - a4cb9b5b8c3a162083677b14b105edbc1bca2baf + handwired/co60/rev6 - be1688eeabd83a7f576d9e4e23e24d56b8dc251b + handwired/co60/rev7 - d196c5772859ddee695bda5b0e9f0944a0f350f8 + handwired/onekey/blackpill_f401 - 8387bfd56888fc1605d293dc0071b4ec94b23991 + handwired/onekey/blackpill_f411 - 855efdb2f60c384edf64773c0f4ff4b7ea8ae4c9 + handwired/onekey/bluepill - 60d8555b174dbdabae196a4cc5eccfee4bdd9529 + handwired/onekey/stm32f0_disco - 9bc12e29f5a4e4b9ec0f34987559e5e11de4bb48 + handwired/onekey/teensy_32 - 17459dd8e71b3a33270037878bdbd04151af196b + handwired/onekey/teensy_lc - 3a9aed4681c287176efe31c988340ca43ad27a9d + handwired/pill60/blackpill_f401 - 5b652354ae957e86e211dcef29f8f27320b31180 + handwired/pill60/blackpill_f411 - 580255c171e95b5bca53b14a13ae018a73d18414 + handwired/pill60/bluepill - 29109b54137ea94ac266c604991cff87516689ff + handwired/riblee_f401 - dc68c31d7ca8ae0fad7e7ad8bdd63406155ff363 + handwired/riblee_f411 - cf0fadff4c98d41cf9bdddbe1ead15c79be941b9 + handwired/steamvan/rev1 - 743b395ac87b918b6be4614c9e120e80a9f049d4 + handwired/t111 - 99b61ae5692ee4b2101673d1a896cd7a5831bcfa + handwired/twadlee/tp69 - 3ab2753c40e947a726ece6c825493ebc87ecf20e + handwired/z150 - 78808b0c8671e2386b9ba65dbd647d613d92f253 + hs60/v2/ansi - 7bcd152c269803de8f96416ba26e939c0420ceae + hs60/v2/hhkb - d77f393d2811bd104b05c4530bf1083d75856b7a + hs60/v2/iso - 5d3d20de919fca3b64cb7548cad46e8d35d7cc04 + infinity60 - dbcbb2f58ee499252b0879d68d9beec08a8433bc + k_type - 492f476177da95495442d1e173391e3c17324a70 + keebio/bdn9/rev2 - 4dbb5d606b3d9060ad01a437978220fe0f1fc5b2 + keebio/choconum - 1521e634088a30114cd12b7b6bbd2cca5331c822 + keebwerk/mega/ansi - 10e32718c7bfff2f6bd8dd2159a15bef0f4acbf9 + misterknife/knife66 - cf2f3d26103036d79bf7fcec204e13899e33fbe3 + nack - ba7f421d5670e672c5c14fd5f80c0f86447c1468 + nebula12 - aedb11fa894dc19513462f054a9fa00f5c195adc + nebula68 - 6bed6afb2fd84ef9069b757f1d1e87fc1cbe290c + nemui - 86ed80ea8565d7d0f39512a9032cc5e1b306fcff + nk65 - 75b2484741a96dcbff14e94c44443bb33ad73dce + nk87 - f719a739a3d2c0969c79c1ace5fe9a7d6f05cc22 + peiorisboards/ixora - b5adf1090fb4c6278d8990ce9132727a13ca3cd7 + phoenix - 21bfb14c52451899dadf545b78a8e88b22a420f0 + polilla - 3ba5f326b268362c9aba570b1510e1c61009ba96 + primekb/meridian - df266e25c682a8ed3318faa186805683014ccec4 + projectkb/alice - eee7210f618588b2c5c6367c8a0318427d09da52 + projectkb/signature87 - 617430e601981f0bb5fbcce42eee53107d5161b8 + ramonimbao/squishy65 - 88e4cd3db8db61ccf9daed5405cf5eeb32f8043e + ramonimbao/wete - f0e90d943d8749e802b6bba619ce943b568a7f65 + rart/rartlice - f7a6b58e6cadd4102fcf5f89d054d1fbdc5809d0 + retro_75 - 34c7b291fb2443bf8cb69fb9ee676190c736bf00 + rocketboard_16 - 24e6503a7a5259934a80dd96dd37d3281b4240d3 + satt/vision - c926d6433d8b2dc1d74623184255016bdd36ae22 + tkc/candybar/lefty - 2f269cbed5dcec61bb0c7904a46436f110dc0ae1 + tkc/candybar/righty - 9b1448b2ccbcf8a4d1e5ad74d8ad5933003ee9a2 + tkc/godspeed75 - 2cfed58d44a7eef8f341ff24e0136511e03aa78d + tkw/stoutgat/v2/f411 - b094651ec61c79099de3e6e4991319816ac464c1 + viktus/styrka - f3f678ea55126c9965f24da6fffc9bbbd8b24aa9 + vinta - e5403dc6bbf47f35a53cf43b1b1d130f05552f16 + westfoxtrot/prophet - 0e4d6987ffa6430720804e7bc1502ab6c3dcb879 + whitefox - 5ca6de6fb09d8c2cfa996b65732fcd55391053ff + wolfmarkclub/wm1 - 2d8294e29b08f5af5406988a284483d1694ed36c + xelus/kangaroo - f9697ba27d4e6c36a1cfd9e2657eac35dfa3be99 + xelus/trinityxttkl - a457601b446ea9b4e9e28d2ba304a4bcdb934257 + xelus/valor_frl_tkl - 27ec14b9ee0e5cb2d026af500d16b17d4c2885e2 + zoo/wampus - 926487c1f50c1c5eb0608ca7dc1184881d54d35e + zvecr/split_blackpill - 02f4393d01e0a70c94af48fa979ff0229732e8ca + zvecr/zv48/f401 - 8b1766a24f943b9b0ba756c6fe340ba69d5e14e3 + zvecr/zv48/f411 - 09ba645092eb7f3d41da0d5e6727f2f4f97033c0 +``` + +Listing of boards left outstanding: +``` +8 boards outstanding: +akegata_denki/device_one: BOARD=DEVICE_ONE +dekunukem/duckypad: BOARD=GENERIC_STM32_F072XB +ergodox_stm32: BOARD=ERGODOX_STM32_BOARD +handwired/bluepill/bluepill70: BOARD=GENERIC_STM32_F103 +jm60: BOARD=JM60_BOARD +matrix/m20add: BOARD=m20add_bd +matrix/noah: BOARD=noah_bd +xiaomi/mk02: BOARD=ST_STM32F072B_DISCOVERY +``` +#### Add modifier state to the split keyboard transport ([#10400](https://github.com/qmk/qmk_firmware/pull/10400)) + +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 two +or three bytes to the data transferred between split halves. + +This also fixes a missing ifdef guard for BACKLIGHT_ENABLE. +#### fix matrix_io_delay() timing in quantum/matrix.c ([#9603](https://github.com/qmk/qmk_firmware/pull/9603)) + +~~The timing of the call to matrix_io_delay() has been changed to the appropriate time. With this change, we can reduce the number of times we call matrix_io_delay() by one.~~ + +**Separated `matrix_io_delay()` into the following two functions so that you can set the appropriate delay value for each.** + +* `matrix_output_select_delay()` - after `select_row()/select_col()` + The delay is a small number of clocks specific to the MCU. + The default implementation is as follows: + ```c + __attribute__((weak)) void matrix_output_select_delay(void) { waitInputPinDelay(); } + ``` + See below for more information on `waitInputPinDelay()`. + +* `matrix_output_unselect_delay()` - after `unselect_row()/unselect_col()` + The delay is in the range of a few microseconds, depending on the capacitance and resistance of the entire keyboard circuitry. + The default implementation is as follows: + ```c + __attribute__((weak)) void matrix_io_delay(void) { wait_us(MATRIX_IO_DELAY); } + __attribute__((weak)) void matrix_output_unselect_delay(void) { matrix_io_delay(); } + ``` + +**Added `waitInputPinDelay()` into `quantum/quantum.h`.** + +On AVR's GPIO and ARM's GPIO, the input signal changes need some clock time to be read into the input pins. + +The `waitInputPinDelay()` will wait the necessary time. The wait time is set to `GPIO_INPUT_PIN_DELAY` in units of the clock. + +If `GPIO_INPUT_PIN_DELAY` is not set, the following values are used. + +* AVR + The datasheets for ATmega32u4/16u4, ATmega32u2/16u2, ATmega328p, AT90usb646/1286, etc. say that a delay of one clock is required after a change in the input signal. Therefore, the default value of GPIO_INPUT_PIN_DELAY can be set to 1, but we'll set it to 2 to allow for some leeway. + +* ARM-based MCUs + For GPIOs on ARM-based MCUs, the input pins are sampled by the clock of the bus to which the GPIO is connected. + The connected buses differ depending on the various series of MCUs. + Also, since the CPU instruction execution clock and GPIO bus clock can vary depending on the MCU GPIO bus configuration and MCU internal register settings, the optimal delay value cannot be determined. Therefore, GPIO_INPUT_PIN_DELAY defaults to a rather large value of 0.25 microseconds. + +
+Current matrix.c timing (click) +#### gcc 10 compatibility for Drop alt ([#9485](https://github.com/qmk/qmk_firmware/pull/9485)) + +##### Issues Fixed or Closed by This PR + +* #9268 (This issue tracks multiple problems, this fixes part of it) +#### Implement kinetic mouse movement algorithm ([#6739](https://github.com/qmk/qmk_firmware/pull/6739)) + +I implemented the kinetic/quadratic mouse acceleration algorithm. The algorithm is not the one from the UHK but a newly created one that's able to compute the current speed at any given time instead of relying on a compounding mechanism that just computes the increment. +Overall, the cursor acceleration feels very similar to the UHK. However, feedback and improvements are welcome in order to make it as usable as possible. + +This algorithm requires a very low `MOUSEKEY_INTERVAL` in order to produce smooth movements. What's possible highly depends on the micro processor. I did my tests on the elite-c which is pro micro compatible. It was able to deliver 125 events per second which I set as the default value if `MK_KINETIC_SPEED` is defined. + +I wrote a small utility https://github.com/jceb/bin/blob/master/mouseevents that helps to measure the maximum number of mouse events that can be sent by the micro processor. If you try out this algorithm it should help find the right setting for `MOUSEKEY_INTERVAL`. + +##### Issues Fixed or Closed by This PR + +* Add UHK's kinetic mouse movement #6738 diff --git a/lib/python/qmk/cli/generate/__init__.py b/lib/python/qmk/cli/generate/__init__.py index bd75b044c5c..12dfa159d64 100644 --- a/lib/python/qmk/cli/generate/__init__.py +++ b/lib/python/qmk/cli/generate/__init__.py @@ -1,5 +1,6 @@ from . import api from . import config_h +from . import develop_changelog from . import docs from . import info_json from . import layouts diff --git a/lib/python/qmk/cli/generate/develop_changelog.py b/lib/python/qmk/cli/generate/develop_changelog.py new file mode 100755 index 00000000000..ae725cc2d87 --- /dev/null +++ b/lib/python/qmk/cli/generate/develop_changelog.py @@ -0,0 +1,77 @@ +"""Generate the changelog for develop. + +This requires the github module: + pip3 install PyGithub +""" +from datetime import datetime +from pathlib import Path + +import yaml +from milc import cli +from github import Github + + +def pr_body(text): + """Returns the description from a PR body. + """ + lines = [] + found = False + + for line in text.split('\n'): + if line.startswith('## Description'): + found = True + continue + + if line.startswith('## Issues Fixed'): + found = True + lines.append('##### Issues Fixed or Closed by This PR') + continue + + if not found: + continue + + if line.startswith('##'): + found = False + continue + + lines.append(line.rstrip()) + + new_text = '\n'.join(lines) + + return new_text.strip() + + +@cli.subcommand('Get a list of PRs for develop.', hidden=True) +def generate_develop_changelog(cli): + # Setup the github api + hub_config = yaml.safe_load(Path('~/.config/hub').expanduser().open()) + github_token = hub_config['github.com'][0]['oauth_token'] + github = Github(github_token) + + # Find our branchpoint + master_revs = cli.run(['git', 'rev-list', '--first-parent', 'master']) + develop_revs = cli.run(['git', 'rev-list', '--first-parent', 'develop']) + master_commits = master_revs.stdout.split('\n') + develop_commits = develop_revs.stdout.split('\n') + + first_commit = None + for commit in develop_commits: + if commit in master_commits: + branchpoint = commit + break + + if not branchpoint: + cli.log.error('Could not find branchpoint!') + exit(1) + + # Find the time of our branchpoint + repo = github.get_repo('qmk/qmk_firmware') + bp = repo.get_commit(branchpoint) + last_modified = datetime.strptime(bp.last_modified, '%a, %d %b %Y %H:%M:%S %Z') + + # Get a list of PR's targetting develop since last_modified + for pr in repo.get_pulls(state='closed', base='develop'): + if pr.merged and pr.merged_at > last_modified: + print(f'#### {pr.title} ([#{pr.number}](https://github.com/qmk/qmk_firmware/pull/{pr.number}))') + print() + print(pr_body(pr.body))