Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] Fix mouse-key spamming empty reports #21663

Merged
merged 1 commit into from
Aug 2, 2023

Conversation

KarlK90
Copy link
Member

@KarlK90 KarlK90 commented Aug 1, 2023

Description

Problem:

mousekey_task spams empty hid reports with when a mouse key is pressed, causing resource exhaustion in the USB mouse endpoint.

Cause:

The check whether or not to send a new mouse report would always evaluate to true if a mouse key is pressed:

  1. mouse_report has non-zero fields and tmpmr is a copy of this fields.
  2. mouse_report is set to zero, tmpmr has now non-zero fields.
  3. has_mouse_report_changed compares the two and evaluates to true.
  4. an empty mouse report is sent.

Fix:

The check condition of has_mouse_report_changed will evaluate any empty record as unchanged, as mouse report data is relative and doesn't need to return to zero. An empty report will still be send by register_mouse on release of all mouse buttons.

Types of Changes

  • Core
  • Bugfix
  • New feature
  • Enhancement/optimization
  • Keyboard (addition or update)
  • Keymap/layout/userspace (addition or update)
  • Documentation

Issues Fixed or Closed by This PR

Checklist

  • My code follows the code style of this project: C, Python
  • I have read the PR Checklist document and have made the appropriate changes.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • I have tested the changes and verified that they work and don't break anything (as well as I can manage).

@github-actions github-actions bot added the core label Aug 1, 2023
@KarlK90 KarlK90 requested review from drashna and a team August 1, 2023 12:39
@KarlK90 KarlK90 changed the title Fix mouse-key spamming empty reports [Bug] Fix mouse-key spamming empty reports Aug 1, 2023
evgeniyp added a commit to evgeniyp/qmk_firmware that referenced this pull request Aug 1, 2023
@KarlK90 KarlK90 force-pushed the fix/mouse-key-empty-report-spamming branch from cdf24a0 to 2094a1a Compare August 2, 2023 08:39
Problem:

`mousekey_task` spams empty hid reports with when a mouse key is
pressed, causing resource exhaustion in the USB mouse endpoint.

Cause:

The check whether or not to send a new mouse report would always
evaluate to true if a mouse key is pressed:

1. `mouse_report` has non-zero fields and `tmpmr` is a copy of this
   fields.
2. `mouse_report` is set to zero, `tmpmr` has now non-zero fields.
3. `has_mouse_report_changed` compares the two and evaluates to true
4. a mouse report is sent.

Fix:

The check condition of `has_mouse_report_changed` will evaluate any
empty record as unchanged, as mouse report data is relative and doesn't
need to return to zero. An empty report will still be send by
`register_mouse` on release of all mouse buttons.
@KarlK90 KarlK90 force-pushed the fix/mouse-key-empty-report-spamming branch from 2094a1a to 850d3b6 Compare August 2, 2023 10:10
@KarlK90 KarlK90 merged commit b2d068d into qmk:develop Aug 2, 2023
4 checks passed
antempus added a commit to antempus/qmk_firmware that referenced this pull request Sep 6, 2023
* [Keyboard] Add minidivide (qmk#19870)

Co-authored-by: jack <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>

* Fix jaykeeb indicator state and pins (qmk#21466)

* Bump JamesIves/github-pages-deploy-action from 4.4.2 to 4.4.3 (qmk#21518)

Bumps [JamesIves/github-pages-deploy-action](https://github.com/jamesives/github-pages-deploy-action) from 4.4.2 to 4.4.3.
- [Release notes](https://github.com/jamesives/github-pages-deploy-action/releases)
- [Commits](JamesIves/github-pages-deploy-action@v4.4.2...v4.4.3)

---
updated-dependencies:
- dependency-name: JamesIves/github-pages-deploy-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Prepare ymdk/ymd75 for rev4 (qmk#21484)

* [Keyboard] add mothwing (qmk#19342)

Co-authored-by: Ryan <[email protected]>
Co-authored-by: jack <[email protected]>

* Eliminate `TMK_COMMON_*` in makefiles (qmk#21517)

* quantum: remove direct `quantum.h` includes (qmk#21507)

* [Core] Update ChibiOS-Contrib (qmk#21553)

* AliceH66 Pianoforte Hotswap Touch-Up (qmk#21542)

* [refactor] rename LAYOUT_tkl_ansi to LAYOUT_tkl_f13_ansi

* [enhancement] enable Community Layout support

* [chore] correct layout data

Correct the position of the spacebar.

* GMMK2 65% ANSI Touch-Up (qmk#21544)

* [chore] correct layout data

* [chore] rename LAYOUT to LAYOUT_65_ansi_blocker

Also adds a layout alias so as to not have to edit the user keymaps.

* [enhancement] enable Community Layout support

* Keychron V4 Touch-Up (qmk#21545)

* Keychron V4 ANSI: rename LAYOUT_ansi_61 to LAYOUT_60_ansi

* Keychron V4 ANSI: enable Community Layout support

* Keychron V4 ISO: correct layout data

Move position [3, 1] up by 0.25u.

* Keychron V4 ISO: rename LAYOUT_iso_62 to LAYOUT_60_iso

* Keychron V4 ISO: enable Community Layout support

* Fix compilation of lily58 rgb_state_reader (qmk#21502)

* HolySwitch Lightweight65 Community Layout Support (qmk#21550)

* [chore] rename LAYOUT to LAYOUT_65_ansi_blocker

* [enhancement] enable Community Layout support

* Automata02 Alisaie Touch-Up (qmk#21552)

* [style] friendly-format info.json

* [chore] remove key labels from info.json

* [chore] correct layout data

Fix a misleading Configurator implementation, and incorrect key sizes
and positioning on the bottom row.

* [chore] re-add key labels to info.json

* Move files to rev1 folder, add rev2 (qmk#21563)

Co-authored-by: Duncan Sutherland <[email protected]>

* Amend layout and matrix positions for `dactyl_cc` (qmk#21523)

* Spruce up `dactyl_lightcycle` and `dactyl_maximus` layouts (qmk#21519)

* Add Bastion75 PCB to QMK (qmk#21529)

* Add Bastion75 to QMK

* Remove blank layers

* Apply suggestions from code review

Co-authored-by: jack <[email protected]>

* Update keymaps

---------

Co-authored-by: jack <[email protected]>

* Document the right location for indicator functions (qmk#21512)

* Rename `dactyl_manuform` variant `3x5_3` (qmk#21015)

* haptic: naming cleanups (qmk#21551)

* backlight: split AVR PWM and timer drivers (qmk#21540)

* Fix backlight support for some boards (qmk#21554)

* [Keyboard] Add boardsource/unicorne (qmk#21510)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Cole Smith <[email protected]>

* [Keyboard] Add EC Theca (qmk#21233)

Co-authored-by: jack <[email protected]>

* [Bug] Fix compilation error when Split Watchdog enabled (qmk#21543)

* Revert "[Bug] Fix compilation error when Split Watchdog enabled" (qmk#21572)

* kinesis: remove stacked split layouts (qmk#21569)

* Fix VS code live share extension link (qmk#21585)

* Allow the user to select one tone for the additive DAC (qmk#21591)

Previously, if the user tried to use `#define AUDIO_MAX_SIMULTANEOUS_TONES 1` to conserve CPU time, their firmware would fail to build with this error:

```
platforms/chibios/drivers/audio_dac_additive.c:91:73: error: excess elements in array initializer [-Werror]
   91 | static float   active_tones_snapshot[AUDIO_MAX_SIMULTANEOUS_TONES] = {0, 0};
      |                                                                          ^
```

This also affected the preset `#define AUDIO_DAC_QUALITY_VERY_HIGH`, which called up only one simultaneous tone at 88200 Hz.

* [Keyboard] Update ERA65 PCB (qmk#21592)

* Raw HID: documentation improvements (qmk#21596)

* Add Nyquistpad (qmk#21578)

Co-authored-by: jack <[email protected]>
Co-authored-by: Ryan <[email protected]>

* Fix paragon keyboard encoder step (qmk#21582)

* [Keyboard] Add linworks fave60a (qmk#20795)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: jack <[email protected]>

* [Keyboard] Delete jscotto directory (qmk#21157)

* Add Caps Lock indicator for Kyechron S1 white backlight version (qmk#21559)

* [Keyboard] Add nico (qmk#20686)

Co-authored-by: jack <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Joel Challis <[email protected]>

* Fix ik75 scroll lock and windows lock status LEDs (qmk#20380)

* [keyboard] tominabox1/le_chiffre refactor pt 1 (qmk#21567)

Co-authored-by: Duncan Sutherland <[email protected]>

* Move model h controller under ibm/model_m (qmk#21526)

* Add Bastion60 PCB to QMK (qmk#21527)

Co-authored-by: jack <[email protected]>
Co-authored-by: Danny <[email protected]>

* Add BastionTKL PCB to QMK (qmk#21530)

Co-authored-by: jack <[email protected]>
Co-authored-by: Danny <[email protected]>

* Add Bastion65 PCB to QMK (qmk#21528)

Co-authored-by: jack <[email protected]>

* [Keyboard] boardsource/equals (qmk#21230)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: jack <[email protected]>

* [Keyboard] Add m1 keyboard (qmk#19799)

Co-authored-by: adophoxia <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: wb-joy <[email protected]>
Co-authored-by: Joy Lee <[email protected]>

* [Keyboard] Phoenix Project No 1 support (qmk#21068)

Co-authored-by: Ryan <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>

* Revert "Equals keyboard" (qmk#21622)

* Fix stuck note with square wave in additive DAC (qmk#21589)

* [Keyboard] Add splitkb.com's Aurora Sofle v2 (qmk#21499)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Thomas Baart <[email protected]>

* On-each-release tap dance function (qmk#20255)

Co-authored-by: Sergey Vlasov <[email protected]>

* Reduce needless precision in audio note frequency calculation (qmk#21496)

* Remove needless precision in additive DAC sample generation (qmk#21498)

* Amend documented `RGBLIGHT_HUE_STEP` default value (qmk#21617)

* helix/rev3_4rows, helix/rev3_5rows: Fix build with converters (qmk#21608)

The code for Helix rev3 boards could not be built with, e.g.,
`CONVERT_TO=rp2040_ce` due to invalid `#include <stdio.h>` in the
keyboard level `config.h` (apparently the AVR version of that file
contains guards against usage in assembly code, which was hiding the
bug).  Move `#include <stdio.h>` to the C sources which need it.

* Unicode: move keycode aliases to a separate header (qmk#21613)

* Unify MIDI note calculation with the audio feature's algorithm (qmk#21588)

* [Keyboard] Add STM32f3 Discovery onekey (qmk#21625)

* [Keyboard] Add Divine keyboard (qmk#21593)

* Update keyboard report descriptor for USB compliance (qmk#21626)

Running the "HID Tests" suite of the USB 3 Command Verifier (USB3CV)
tool resulted in the following error:

(HID: 3.2.61) The report descriptor returned in response to a
GetDescriptor(Report) must be compliant with the HID specification.

Byte Number:   37h (  55d)
Data Field: 91 02
Mnemonic:  Output
Value: (Variable)
Errors: Error:   LOGICAL MAX MUST be bounded by Report Size

The error stems from the fact that logical minimum and maximum are
global items, which means that the next item in a report descriptor
inherits the value from the previously set value. In this case the
status leds item inherited the logical minimum (=0) and maximum (=255)
from the keycodes item. As the status leds set a report size of 1 bit,
wich can only hold a boolean, it becomes clear that this range would
never fit.

The fix is straightforward, we just define a appropriate logical maximum
(=1), the mismatch is solved and our keyboard now passes the compliance
tests. Defining the logical minimum is redundant in this case but is
kept to form a logical block.

* [Keyboard] add itstleo40 PCB (qmk#21536)

Co-authored-by: jack <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>

* [Keymap] update colemad crkbd (corne) keyboard (qmk#21515)

Co-authored-by: Álvaro Cortés Devesa <[email protected]>

* [Keyboard] Add ANAVI Macro Pad 12 (qmk#21547)

* Updated info.json of c2 pro (qmk#21581)

* quantum.h: clean up process_keycode includes (qmk#21579)

* Bluetooth: driver naming cleanups (qmk#21624)

* LED Matrix: driver naming cleanups (qmk#21580)

* Correct "less than" to "up to" in squeezing_avr?id=layers (qmk#21639)

* CLI: Improve error messages when layout key matrix row/col is OOB (qmk#21640)

* Fix layout offsets for a handful of boards (qmk#21636)

* keycode aliases: work around ChibiOS ch.h include guard (qmk#21497)

* Remove old OLED API code (qmk#21651)

* AMJKeyboard AMJ84 Develop Touch-Up (qmk#21645)

* [style] refactor default keymap, phase 1

- grid-align keycodes
- use QMK-native keycode aliases
- update box drawings

* [refactor] refactor default keymap, phase 2

- move position [5, 8] to the top row
  - update keycode grid alignment

* [refactor] refactor default keymap, phase 3

- remove matrix position [5, 9]

* Remove layout aliases from keyboard_aliases.hjson (qmk#21658)

* Keychron Q11 ISO: Fix left Shift breakage due to a wrong matrix mask (qmk#21655)

Keychron Q11 uses `matrix_mask` to mask away the matrix location used
for `SPLIT_HAND_MATRIX_GRID` (otherwise the keyboard will constantly
generate a wakeup request whenever the host enters suspend).  However,
the value of `matrix_mask` is actually chosen to mask away all unused
locations, but it was apparently generated for the ANSI board and
therefore masks away the left Shift key on the ISO board, breaking the
functionality of that key.

Fix `matrix_mask` to make the masking work as intended:

- Set the `[4, 1]` bit to 1; this is the matrix location for the ISO
  left Shift.

- Set the `[2, 5]` bit to 0; this is actually the matrix location which
  corresponds to `#define SPLIT_HAND_MATRIX_GRID A2, A15` on the left
  side, which was intended to be masked; apparently the wakeup problem
  does not happen due to `SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT`, so the
  left half actually has that matrix location open.  On the right side
  `A2, A15` is `[9, 6]`, which was masked off correctly.

* Fix Dynamic Macro Compilation for avr-gcc 5.4.0 + Linux (qmk#21653)

Co-authored-by: Joel Challis <[email protected]>

* Automata02 Alisaie Develop Touch-Up (qmk#21630)

* Fix mouse-key spamming empty reports (qmk#21663)

Problem:

`mousekey_task` spams empty hid reports with when a mouse key is
pressed, causing resource exhaustion in the USB mouse endpoint.

Cause:

The check whether or not to send a new mouse report would always
evaluate to true if a mouse key is pressed:

1. `mouse_report` has non-zero fields and `tmpmr` is a copy of this
   fields.
2. `mouse_report` is set to zero, `tmpmr` has now non-zero fields.
3. `has_mouse_report_changed` compares the two and evaluates to true
4. a mouse report is sent.

Fix:

The check condition of `has_mouse_report_changed` will evaluate any
empty record as unchanged, as mouse report data is relative and doesn't
need to return to zero. An empty report will still be send by
`register_mouse` on release of all mouse buttons.

* audio: Don't play the first note of zero-note melodies (qmk#21661)

* [Keyboard] Add Bento Box macropad (qmk#20521)

* [Bug] Restore usb suspend wakeup delay (qmk#21676)

* Respect USB_SUSPEND_WAKEUP_DELAY on wakeup

This delay wasn't honored after removing `restart_usb_driver` from the
suspend and wakeup handling. It is now re-introduced in the appropriate
spot, namely after issuing a remote wakeup to a sleeping host.

* Remove old, unused and commented testing code

* moondrop/dash75: fix keymap (qmk#21680)

* [Keyboard] Add PW88 keyboard (qmk#21482)

Co-authored-by: Drashna Jaelre <[email protected]>

* Clarify custom keycode enum requirement for PRs (qmk#21648)

* Add VIA layout for Dactyl Manuform 5x6 (qmk#21649)

Co-authored-by: Duncan Sutherland <[email protected]>

* haptic: further naming cleanups (qmk#21682)

* Contributing docs: add note to make sure repo is up to date (qmk#21694)

* Fix `binepad/bn009` and `durgod/dgk6x/hades_ansi` keymaps (qmk#21701)

* doio/kb38: fix layout (qmk#21704)

* Remove more legacy config.h options (qmk#21709)

* Tidy up encoder in matrix references (qmk#21718)

* [Keyboard] Update usb.* of `dactyl_lightcycle` (qmk#21462)

* [Keyboard] add laneware `raindrop` keyboard (qmk#21277)

Co-authored-by: Sergey Vlasov <[email protected]>
Co-authored-by: Ryan <[email protected]>

* [Keyboard] Add Projectd/65/Projectd_65_ansi (qmk#21520)

Co-authored-by: Ryan <[email protected]>
Co-authored-by: gksygithub <[email protected]>

* [Keymap] Add Via keymap for CXT Studio (qmk#21675)

* [Keyboard] fix json for nemui65 (qmk#21629)

* [Keyboard] Update USB settings for dactyl_maximus (qmk#21666)

* [Keyboard] Add mk47 keyboard (qmk#19797)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Joy <[email protected]>
Co-authored-by: Joy Lee <[email protected]>

* correct keymap file name for tkl_f13_jis layout (qmk#21631)

* [Keyboard] Refactor Caticorn PCB (qmk#21644)

* Kintwin controller for kinesis keyboard, split layout (qmk#21614)

Co-authored-by: Ryan <[email protected]>

* Fix `keyboard` field for some JSON keymaps (qmk#21752)

* [Keyboard] Add Shostudio Arc (qmk#21733)

* [Keymap] Update rpbaptist crkbd (qmk#21674)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Richard Baptist <[email protected]>

* [Keymap] Update andrebrait keymap for GMMK Pro (qmk#21668)

* [Keymap] submitting janat-t planck keymap (qmk#21619)

Co-authored-by: Janat Taerakul <[email protected]>

* [keyboard] Graystudio Think6.5 V3 Support Revised (qmk#21560)

Co-authored-by: jack <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: Ryan <[email protected]>

* Remove invalid config option from kikoslab/kl90 (qmk#21708)

* [Keyboard] Add Chouchou keyboard (qmk#21699)

* OLED: driver naming cleanups (qmk#21710)

* Update usb information for dactyl_cc (qmk#21612)

* rgblight: driver selection cleanups (qmk#21558)

* [Keyboard] add willoucom/keypad (qmk#21714)

* Add ScottoErgo Keyboard (qmk#20944)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>

* Add Scotto34 Keyboard (qmk#20943)

Co-authored-by: Albert Y <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>

* Add ScottoInvader Keyboard (qmk#20941)

Co-authored-by: Ryan <[email protected]>

* coarse/cordillera: fix backlight config (qmk#21761)

* The PoweredByPorridge layout for the Keyboardio Atreus (qmk#21737)

Co-authored-by: jack <[email protected]>

* [Keymap] add squigglybob splitkb kyria rev2 keymap (qmk#21751)

Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: jack <[email protected]>

* [Bug] Fix compilation error for APA on ChibiOS (qmk#21773)

* Add Galatea rev3 keyboard (qmk#21758)

* Adding support for TAN67 PCB (qmk#21003)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>

* [Keyboard] Add Jelly Evolv (qmk#21407)

Co-authored-by: jack <[email protected]>

* [Keyboard] Add linworks favepada (qmk#20794)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: jack <[email protected]>

* Initial support for ALT v2 (qmk#21754)

* Initial support for CTRL v2 (qmk#21755)

* Initial support for SHIFT v2 (qmk#21756)

* Align SENSE75 with recent Drop additions (qmk#21757)

* Fix drop/shift/v2 compilation (qmk#21800)

* [Keyboard] Add city42 (qmk#21727)

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>

* fix: restore indicators to jellybean_raindrops (qmk#21792)

After qmk#21169, rgb_matrix_indicators() was limited to running on the
final render iteration. Since the jellybean_raindrops animation
immediately returns false after updating a single LED, the iteration
count no longer ends up high enough to render non-advanced indicators.

This change also brings jellybean_raindrops more in line with raindrops.

* Simplfy RGB/LED matrix effect logic (qmk#21703)

* RGB Matrix: driver naming cleanups (qmk#21594)

* Fix keyboards with old RGB driver names (qmk#21815)

* [Doc] Improve magic keycode section (qmk#21787)

* Fix keyboards with old RGB driver names (qmk#21817)

* keychron/c2_pro/ansi/white: Fix column 19 in the custom matrix (qmk#21805)

Although `keychron/c2_pro/ansi/rgb` and `keychron/c2_pro/ansi/white` use
the same custom matrix code, the matrix layouts are slightly different;
in particular, only the `keychron/c2_pro/ansi/white` board actually uses
column 19.  However, the handling of column 19 in the custom matrix code
was broken, therefore that column did not work.

Looks like the custom matrix code assumes that `SHIFT_COL_END` refers to
the last column connected to the shift register, and not to the column
past that; so the value of `SHIFT_COL_END` needs to be changed from 19
to 18 (columns 11...18 are connected to the shift register, and column
19 is connected to the C14 pin).

Also the code which was determining `SIZE_T` and `UNSELECT_ALL_COL` had
an off-by-one bug when counting the required number of bits (again due
to the confusion on the `SHIFT_COL_END` meaning); this had been fixed
too (the actual behavior of that part of the code did not change,
because both the old and the new version select the 8 bit variant).

* Fix infinite recursion in lxxt encoder logic (qmk#21819)

* Bump tj-actions/changed-files from 37 to 38 (qmk#21822)

Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 37 to 38.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](tj-actions/changed-files@v37...v38)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Generalize AVR -Werror=array-bounds workaround (qmk#21798)

GCC 13 needs the same workaround as GCC 12.
To avoid having to maintain an ever-growing list of broken versions
apply the workaround wherever it can be used.

If at some point a fixed version of GCC is released the workaround can
be disabled for those fixed versions.

See qmk#17064

* Move RGBLight animations to data driven (qmk#21635)

* Move RGBLight animations to data driven, 0-9

* Move RGBLight animations to data driven, A

* Move RGBLight animations to data driven, B

* Move RGBLight animations to data driven, C

* Move RGBLight animations to data driven, D

* Move RGBLight animations to data driven, E

* Move RGBLight animations to data driven, F

* Move RGBLight animations to data driven, G

* Move RGBLight animations to data driven, H

* Move RGBLight animations to data driven, handwired

* Move RGBLight animations to data driven, I

* Move RGBLight animations to data driven, J

* Move RGBLight animations to data driven, K

* Move RGBLight animations to data driven, L

* Move RGBLight animations to data driven, M

* Move RGBLight animations to data driven, N

* Move RGBLight animations to data driven, O

* Move RGBLight animations to data driven, P

* Move RGBLight animations to data driven, Q

* Move RGBLight animations to data driven, R

* Move RGBLight animations to data driven, S

* Move RGBLight animations to data driven, T

* Move RGBLight animations to data driven, U

* Move RGBLight animations to data driven, V

* Move RGBLight animations to data driven, W

* Move RGBLight animations to data driven, X

* Move RGBLight animations to data driven, Y

* Move RGBLight animations to data driven, Z

* Fix incorrect placement

* Fix build failures and mismatches

* converter/ibm_terminal: Fix F0_BREAK state transition (qmk#21824)

* Remove `led_matrix.hue_steps` and `led_matrix.sat_steps` from schema (qmk#21827)

* Add "apm32-dfu" in keyboard.jsonschema (qmk#21842)

* Corrected duration example, should be number not string (qmk#21839)

* Rework info.json reference (qmk#21324)

* Rework info.json reference

* Apply suggestions from code review

Co-authored-by: Sergey Vlasov <[email protected]>

* Update backlight.pins description

* Add rgblight.driver and lowercase other driver names

* Remove `split.main` and `split.matrix_grid` for now as they are not working yet

---------

Co-authored-by: Sergey Vlasov <[email protected]>

* Revert  changes to ChibiOS Suspend Code (qmk#21830)

* Partially revert qmk#19780

* Finish

* Get teensy 3.5/3.6 board files too

* fix lint issue

* Revert "[Bug] Restore usb suspend wakeup delay (qmk#21676)"

This reverts commit e8e989f.

* Apply suggestions from code review

Co-authored-by: Joel Challis <[email protected]>

---------

Co-authored-by: Joel Challis <[email protected]>

* Add *_MATRIX_LED_COUNT generation (qmk#21110)

* Unicode, Unicodemap and UCIS refactor (qmk#21659)

* Clean up Unicode API usage in user keymaps (qmk#21849)

* Breaking changes changelog, 2023q3 version (qmk#21848)

Co-authored-by: James Young <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: honorless <[email protected]>

* Remove develop notice.

* Fix compilation of dynamic_keymap.c without VIA (qmk#21858)

* fix 60_hhkb ASCII diagram (qmk#21813)

* chore(ferris/test): visually format keymap (qmk#21851)

... and set all keys to printable characters (as described in the
keymap's readme)

* fix 60_jis keymap.c (qmk#21820)

* Fix invalid encoder_map declaration (qmk#21868)

* Update keymap.c to add encoder (qmk#21469)

* Update keymap.c to add encoder

* Fix build

---------

Co-authored-by: zvecr <[email protected]>

* doio/kb16: Added timeout option for OLED boot logo. (qmk#21823)

* Revert "fix 60_hhkb ASCII diagram (qmk#21813)" (qmk#21869)

This reverts commit af2d6ea.

* CannonKeys Meetup Pad 2023 (qmk#21806)

Co-authored-by: Ryan <[email protected]>

* [keyboard] add sweeq, a ferris/sweep variant with diodes (qmk#21597)

* Update macOS install script (qmk#21854)

* Abko AK84BT Layout Touch-Up (qmk#21876)

* [refactor] rename LAYOUT_75_ansi to LAYOUT

* [enhancement] touch-up layout

* AH Haven65 Community Layout support (qmk#21880)

* [refactor] rename LAYOUT to LAYOUT_65_ansi_blocker

* [enhancement] enable Community Layout support

* nullbitsco/snap: fix broken keymaps (qmk#21877)

* chore: ignore virtual environment directory (qmk#20905)

* Add 1upkeyboards Super16v3 (qmk#21665)

Co-authored-by: Duncan Sutherland <[email protected]>

* [keyboard] add redragon/k667 (qmk#21417)

Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: syc <[email protected]>

* Add M6-C Keyboard Firmware (qmk#21852)

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Wolf <[email protected]>

* Added kiserdesigns keyboard folder and Madeline keyboard (qmk#21857)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>

* redragon/k667: Remove 2 layer VIA restriction (qmk#21889)

* AH Haven80 Community Layout support (qmk#21885)

* [enhancement] correct layout data

* [refactor] rename LAYOUT to LAYOUT_tkl_f13_ansi_tsangan

* [enhancement] enable Community Layout support

* Haven80 Solder: add LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift

[enhancement]

* Haven80 Solder: add LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift

[enhancement]

* Haven80 Solder: add LAYOUT_tkl_f13_iso_tsangan

[enhancement]

* Haven80 Solder: extend Community Layout support

[enhancement]

* ANAVI Macro Pad 12: rename LAYOUT to LAYOUT_ortho_4x3 (qmk#21886)

[refactor]

* Chosfox CF81: correct layout data (qmk#21902)

* Auto-label data-driven efforts (qmk#21900)

* CannonKeys Bastion75 Layout Additions (qmk#21899)

* [docs] add layout/matrix diagram

* [refactor] rename LAYOUT to LAYOUT_all

* [enhancement] add LAYOUT_ansi_blocker_split_bs

* [enhancement] add LAYOUT_ansi_blocker

* [enhancement] add LAYOUT_ansi_blocker_tsangan_split_bs

* [enhancement] add LAYOUT_ansi_blocker_tsangan

* [enhancement] add LAYOUT_iso_blocker_split_bs

* [enhancement] add LAYOUT_iso_blocker

* [enhancement] add LAYOUT_iso_blocker_tsangan_split_bs

* [enhancement] add LAYOUT_iso_blocker_tsangan

* CannonKeys Bastion60 Layout Additions (qmk#21887)

* [bugfix] correct LAYOUT_60_iso_tsangan key order

* [docs] add layout/matrix diagram

* [enhancement] add LAYOUT_60_tsangan_hhkb

* [enhancement] add LAYOUT_60_ansi_tsangan

* [enhancement] add LAYOUT_60_iso

* [enhancement] add LAYOUT_60_iso_split_bs_rshift

* [enhancement] add LAYOUT_60_iso_tsangan_split_bs_rshift

* [enhancement] add LAYOUT_60_hhkb

* [enhancement] extend Community Layout support

* CannonKeys Bastion65 Layout Additions (qmk#21888)

* [docs] add layout/matrix diagram

* [refactor] rename LAYOUT to LAYOUT_all

* [enhancement] add LAYOUT_65_ansi_blocker_split_bs

* [enhancement] add LAYOUT_65_ansi_blocker

* [enhancement] add LAYOUT_65_ansi_blocker_tsangan_split_bs

* [enhancement] add LAYOUT_65_ansi_blocker_tsangan

* [enhancement] add LAYOUT_65_iso_blocker_split_bs

* [enhancement] add LAYOUT_65_iso_blocker

* [enhancement] add LAYOUT_65_iso_blocker_tsangan_split_bs

* [enhancement] add LAYOUT_65_iso_blocker_tsangan

* [enhancement] enable Community Layout support

* CannonKeys BastionTKL Layout Additions (qmk#21901)

* [docs] add layout/matrix diagram

* [enhancement] add LAYOUT_tkl_ansi_split_bs_rshift

* [enhancement] add LAYOUT_tkl_ansi_tsangan_split_bs_rshift

* [enhancement] add LAYOUT_tkl_ansi_tsangan

* [enhancement] add LAYOUT_tkl_f13_ansi_tsangan

* [enhancement] add LAYOUT_tkl_f13_ansi_split_bs_rshift

* [enhancement] add LAYOUT_tkl_f13_ansi

* [enhancement] correct LAYOUT_tkl_iso key order

* [enhancement] add LAYOUT_tkl_iso_split_bs_rshift

* [enhancement] add LAYOUT_tkl_iso_tsangan_split_bs_rshift

* [enhancement] add LAYOUT_tkl_iso_tsangan

* [enhancement] add LAYOUT_tkl_f13_iso_split_bs_rshift

* [enhancement] add LAYOUT_tkl_f13_iso

* [enhancement] add LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift

* [enhancement] add LAYOUT_tkl_f13_iso_tsangan

* [enhancement] extend Community Layout support

* Bump actions/checkout from 3 to 4 (qmk#21907)

Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* GMMK2 65% ISO: Correct layout data (qmk#21925)

Correct key sizes/positioning on the right side of the board.

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: takashicompany <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: QMK Bot <[email protected]>
Co-authored-by: Alabahuy <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: tan-t <[email protected]>
Co-authored-by: Stefan Kerkmann <[email protected]>
Co-authored-by: James Young <[email protected]>
Co-authored-by: Alfredo Colas Gullon <[email protected]>
Co-authored-by: Danny <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: Andrew Kannan <[email protected]>
Co-authored-by: フィルターペーパー <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Cole Smith <[email protected]>
Co-authored-by: Cipulot <[email protected]>
Co-authored-by: peepeetee <[email protected]>
Co-authored-by: Nebuleon <[email protected]>
Co-authored-by: era <[email protected]>
Co-authored-by: Yak <[email protected]>
Co-authored-by: DUILCHOI <[email protected]>
Co-authored-by: Joe Scotto <[email protected]>
Co-authored-by: Kumiko as a Service <[email protected]>
Co-authored-by: yulei <[email protected]>
Co-authored-by: jestercore <[email protected]>
Co-authored-by: Less/Rikki <[email protected]>
Co-authored-by: Jerome Berclaz <[email protected]>
Co-authored-by: cole smith <[email protected]>
Co-authored-by: jonylee@hfd <[email protected]>
Co-authored-by: adophoxia <[email protected]>
Co-authored-by: wb-joy <[email protected]>
Co-authored-by: Joy Lee <[email protected]>
Co-authored-by: Rico <[email protected]>
Co-authored-by: Nick Brassel <[email protected]>
Co-authored-by: harveysch <[email protected]>
Co-authored-by: Thomas Baart <[email protected]>
Co-authored-by: leep-frog <[email protected]>
Co-authored-by: Sergey Vlasov <[email protected]>
Co-authored-by: Its TLeo <[email protected]>
Co-authored-by: Álvaro Cortés <[email protected]>
Co-authored-by: Álvaro Cortés Devesa <[email protected]>
Co-authored-by: Leon Anavi <[email protected]>
Co-authored-by: lalalademaxiya1 <[email protected]>
Co-authored-by: 3geek14 <[email protected]>
Co-authored-by: Synth and Keys <[email protected]>
Co-authored-by: SmollChungus <[email protected]>
Co-authored-by: Hugh Rawlinson <[email protected]>
Co-authored-by: gskygithub <[email protected]>
Co-authored-by: gksygithub <[email protected]>
Co-authored-by: Brian McKenna <[email protected]>
Co-authored-by: spbgzh <[email protected]>
Co-authored-by: HorrorTroll <[email protected]>
Co-authored-by: alvicstep <[email protected]>
Co-authored-by: mechlovin <[email protected]>
Co-authored-by: Richard Baptist <[email protected]>
Co-authored-by: Richard Baptist <[email protected]>
Co-authored-by: Andre Brait <[email protected]>
Co-authored-by: Janat Taerakul <[email protected]>
Co-authored-by: Janat Taerakul <[email protected]>
Co-authored-by: Yizhen Liu <[email protected]>
Co-authored-by: Dane Lipscombe <[email protected]>
Co-authored-by: Wilfried JEANNIARD <[email protected]>
Co-authored-by: Joe Scotto <[email protected]>
Co-authored-by: Powered by Porridge <[email protected]>
Co-authored-by: squigglybob <[email protected]>
Co-authored-by: studiokestra <[email protected]>
Co-authored-by: Pangorin <[email protected]>
Co-authored-by: owlab2 <[email protected]>
Co-authored-by: Controller Works <[email protected]>
Co-authored-by: Thomas Weißschuh <[email protected]>
Co-authored-by: patrickxiong <[email protected]>
Co-authored-by: HiryKun <[email protected]>
Co-authored-by: Andy Smith <[email protected]>
Co-authored-by: Adam Price <[email protected]>
Co-authored-by: Laneware <[email protected]>
Co-authored-by: Lasse Luttermann <[email protected]>
Co-authored-by: Andrew Kannan <[email protected]>
Co-authored-by: Idan Kamara <[email protected]>
Co-authored-by: Jay Greco <[email protected]>
Co-authored-by: Frank Ebel <[email protected]>
Co-authored-by: ziptyze <[email protected]>
Co-authored-by: temp4gh <[email protected]>
Co-authored-by: syc <[email protected]>
Co-authored-by: Wolf Van Herreweghe <[email protected]>
Co-authored-by: Wolf <[email protected]>
Co-authored-by: NCKiser <[email protected]>
jesperhellberg pushed a commit to jesperhellberg/qmk_firmware that referenced this pull request Sep 9, 2023
Problem:

`mousekey_task` spams empty hid reports with when a mouse key is
pressed, causing resource exhaustion in the USB mouse endpoint.

Cause:

The check whether or not to send a new mouse report would always
evaluate to true if a mouse key is pressed:

1. `mouse_report` has non-zero fields and `tmpmr` is a copy of this
   fields.
2. `mouse_report` is set to zero, `tmpmr` has now non-zero fields.
3. `has_mouse_report_changed` compares the two and evaluates to true
4. a mouse report is sent.

Fix:

The check condition of `has_mouse_report_changed` will evaluate any
empty record as unchanged, as mouse report data is relative and doesn't
need to return to zero. An empty report will still be send by
`register_mouse` on release of all mouse buttons.
philliphall added a commit to philliphall/qmk_firmware that referenced this pull request Sep 21, 2023
* [Keyboard] Phoenix Project No 1 support (qmk#21068)

Co-authored-by: Ryan <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>

* Revert "Equals keyboard" (qmk#21622)

* Fix stuck note with square wave in additive DAC (qmk#21589)

* [Keyboard] Add splitkb.com's Aurora Sofle v2 (qmk#21499)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Thomas Baart <[email protected]>

* On-each-release tap dance function (qmk#20255)

Co-authored-by: Sergey Vlasov <[email protected]>

* Reduce needless precision in audio note frequency calculation (qmk#21496)

* Remove needless precision in additive DAC sample generation (qmk#21498)

* Amend documented `RGBLIGHT_HUE_STEP` default value (qmk#21617)

* helix/rev3_4rows, helix/rev3_5rows: Fix build with converters (qmk#21608)

The code for Helix rev3 boards could not be built with, e.g.,
`CONVERT_TO=rp2040_ce` due to invalid `#include <stdio.h>` in the
keyboard level `config.h` (apparently the AVR version of that file
contains guards against usage in assembly code, which was hiding the
bug).  Move `#include <stdio.h>` to the C sources which need it.

* Unicode: move keycode aliases to a separate header (qmk#21613)

* Unify MIDI note calculation with the audio feature's algorithm (qmk#21588)

* [Keyboard] Add STM32f3 Discovery onekey (qmk#21625)

* [Keyboard] Add Divine keyboard (qmk#21593)

* Update keyboard report descriptor for USB compliance (qmk#21626)

Running the "HID Tests" suite of the USB 3 Command Verifier (USB3CV)
tool resulted in the following error:

(HID: 3.2.61) The report descriptor returned in response to a
GetDescriptor(Report) must be compliant with the HID specification.

Byte Number:   37h (  55d)
Data Field: 91 02
Mnemonic:  Output
Value: (Variable)
Errors: Error:   LOGICAL MAX MUST be bounded by Report Size

The error stems from the fact that logical minimum and maximum are
global items, which means that the next item in a report descriptor
inherits the value from the previously set value. In this case the
status leds item inherited the logical minimum (=0) and maximum (=255)
from the keycodes item. As the status leds set a report size of 1 bit,
wich can only hold a boolean, it becomes clear that this range would
never fit.

The fix is straightforward, we just define a appropriate logical maximum
(=1), the mismatch is solved and our keyboard now passes the compliance
tests. Defining the logical minimum is redundant in this case but is
kept to form a logical block.

* [Keyboard] add itstleo40 PCB (qmk#21536)

Co-authored-by: jack <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>

* [Keymap] update colemad crkbd (corne) keyboard (qmk#21515)

Co-authored-by: Álvaro Cortés Devesa <[email protected]>

* [Keyboard] Add ANAVI Macro Pad 12 (qmk#21547)

* Updated info.json of c2 pro (qmk#21581)

* quantum.h: clean up process_keycode includes (qmk#21579)

* Bluetooth: driver naming cleanups (qmk#21624)

* LED Matrix: driver naming cleanups (qmk#21580)

* Correct "less than" to "up to" in squeezing_avr?id=layers (qmk#21639)

* CLI: Improve error messages when layout key matrix row/col is OOB (qmk#21640)

* Fix layout offsets for a handful of boards (qmk#21636)

* keycode aliases: work around ChibiOS ch.h include guard (qmk#21497)

* Remove old OLED API code (qmk#21651)

* AMJKeyboard AMJ84 Develop Touch-Up (qmk#21645)

* [style] refactor default keymap, phase 1

- grid-align keycodes
- use QMK-native keycode aliases
- update box drawings

* [refactor] refactor default keymap, phase 2

- move position [5, 8] to the top row
  - update keycode grid alignment

* [refactor] refactor default keymap, phase 3

- remove matrix position [5, 9]

* Remove layout aliases from keyboard_aliases.hjson (qmk#21658)

* Keychron Q11 ISO: Fix left Shift breakage due to a wrong matrix mask (qmk#21655)

Keychron Q11 uses `matrix_mask` to mask away the matrix location used
for `SPLIT_HAND_MATRIX_GRID` (otherwise the keyboard will constantly
generate a wakeup request whenever the host enters suspend).  However,
the value of `matrix_mask` is actually chosen to mask away all unused
locations, but it was apparently generated for the ANSI board and
therefore masks away the left Shift key on the ISO board, breaking the
functionality of that key.

Fix `matrix_mask` to make the masking work as intended:

- Set the `[4, 1]` bit to 1; this is the matrix location for the ISO
  left Shift.

- Set the `[2, 5]` bit to 0; this is actually the matrix location which
  corresponds to `#define SPLIT_HAND_MATRIX_GRID A2, A15` on the left
  side, which was intended to be masked; apparently the wakeup problem
  does not happen due to `SPLIT_HAND_MATRIX_GRID_LOW_IS_RIGHT`, so the
  left half actually has that matrix location open.  On the right side
  `A2, A15` is `[9, 6]`, which was masked off correctly.

* Fix Dynamic Macro Compilation for avr-gcc 5.4.0 + Linux (qmk#21653)

Co-authored-by: Joel Challis <[email protected]>

* Automata02 Alisaie Develop Touch-Up (qmk#21630)

* Fix mouse-key spamming empty reports (qmk#21663)

Problem:

`mousekey_task` spams empty hid reports with when a mouse key is
pressed, causing resource exhaustion in the USB mouse endpoint.

Cause:

The check whether or not to send a new mouse report would always
evaluate to true if a mouse key is pressed:

1. `mouse_report` has non-zero fields and `tmpmr` is a copy of this
   fields.
2. `mouse_report` is set to zero, `tmpmr` has now non-zero fields.
3. `has_mouse_report_changed` compares the two and evaluates to true
4. a mouse report is sent.

Fix:

The check condition of `has_mouse_report_changed` will evaluate any
empty record as unchanged, as mouse report data is relative and doesn't
need to return to zero. An empty report will still be send by
`register_mouse` on release of all mouse buttons.

* audio: Don't play the first note of zero-note melodies (qmk#21661)

* [Keyboard] Add Bento Box macropad (qmk#20521)

* [Bug] Restore usb suspend wakeup delay (qmk#21676)

* Respect USB_SUSPEND_WAKEUP_DELAY on wakeup

This delay wasn't honored after removing `restart_usb_driver` from the
suspend and wakeup handling. It is now re-introduced in the appropriate
spot, namely after issuing a remote wakeup to a sleeping host.

* Remove old, unused and commented testing code

* moondrop/dash75: fix keymap (qmk#21680)

* [Keyboard] Add PW88 keyboard (qmk#21482)

Co-authored-by: Drashna Jaelre <[email protected]>

* Clarify custom keycode enum requirement for PRs (qmk#21648)

* Add VIA layout for Dactyl Manuform 5x6 (qmk#21649)

Co-authored-by: Duncan Sutherland <[email protected]>

* haptic: further naming cleanups (qmk#21682)

* Contributing docs: add note to make sure repo is up to date (qmk#21694)

* Fix `binepad/bn009` and `durgod/dgk6x/hades_ansi` keymaps (qmk#21701)

* doio/kb38: fix layout (qmk#21704)

* Remove more legacy config.h options (qmk#21709)

* Tidy up encoder in matrix references (qmk#21718)

* [Keyboard] Update usb.* of `dactyl_lightcycle` (qmk#21462)

* [Keyboard] add laneware `raindrop` keyboard (qmk#21277)

Co-authored-by: Sergey Vlasov <[email protected]>
Co-authored-by: Ryan <[email protected]>

* [Keyboard] Add Projectd/65/Projectd_65_ansi (qmk#21520)

Co-authored-by: Ryan <[email protected]>
Co-authored-by: gksygithub <[email protected]>

* [Keymap] Add Via keymap for CXT Studio (qmk#21675)

* [Keyboard] fix json for nemui65 (qmk#21629)

* [Keyboard] Update USB settings for dactyl_maximus (qmk#21666)

* [Keyboard] Add mk47 keyboard (qmk#19797)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Joy <[email protected]>
Co-authored-by: Joy Lee <[email protected]>

* correct keymap file name for tkl_f13_jis layout (qmk#21631)

* [Keyboard] Refactor Caticorn PCB (qmk#21644)

* Kintwin controller for kinesis keyboard, split layout (qmk#21614)

Co-authored-by: Ryan <[email protected]>

* Fix `keyboard` field for some JSON keymaps (qmk#21752)

* [Keyboard] Add Shostudio Arc (qmk#21733)

* [Keymap] Update rpbaptist crkbd (qmk#21674)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Richard Baptist <[email protected]>

* [Keymap] Update andrebrait keymap for GMMK Pro (qmk#21668)

* [Keymap] submitting janat-t planck keymap (qmk#21619)

Co-authored-by: Janat Taerakul <[email protected]>

* [keyboard] Graystudio Think6.5 V3 Support Revised (qmk#21560)

Co-authored-by: jack <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: Ryan <[email protected]>

* Remove invalid config option from kikoslab/kl90 (qmk#21708)

* [Keyboard] Add Chouchou keyboard (qmk#21699)

* OLED: driver naming cleanups (qmk#21710)

* Update usb information for dactyl_cc (qmk#21612)

* rgblight: driver selection cleanups (qmk#21558)

* [Keyboard] add willoucom/keypad (qmk#21714)

* Add ScottoErgo Keyboard (qmk#20944)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>

* Add Scotto34 Keyboard (qmk#20943)

Co-authored-by: Albert Y <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>

* Add ScottoInvader Keyboard (qmk#20941)

Co-authored-by: Ryan <[email protected]>

* coarse/cordillera: fix backlight config (qmk#21761)

* The PoweredByPorridge layout for the Keyboardio Atreus (qmk#21737)

Co-authored-by: jack <[email protected]>

* [Keymap] add squigglybob splitkb kyria rev2 keymap (qmk#21751)

Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: jack <[email protected]>

* [Bug] Fix compilation error for APA on ChibiOS (qmk#21773)

* Add Galatea rev3 keyboard (qmk#21758)

* Adding support for TAN67 PCB (qmk#21003)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>

* [Keyboard] Add Jelly Evolv (qmk#21407)

Co-authored-by: jack <[email protected]>

* [Keyboard] Add linworks favepada (qmk#20794)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: jack <[email protected]>

* Initial support for ALT v2 (qmk#21754)

* Initial support for CTRL v2 (qmk#21755)

* Initial support for SHIFT v2 (qmk#21756)

* Align SENSE75 with recent Drop additions (qmk#21757)

* Fix drop/shift/v2 compilation (qmk#21800)

* [Keyboard] Add city42 (qmk#21727)

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>

* fix: restore indicators to jellybean_raindrops (qmk#21792)

After qmk#21169, rgb_matrix_indicators() was limited to running on the
final render iteration. Since the jellybean_raindrops animation
immediately returns false after updating a single LED, the iteration
count no longer ends up high enough to render non-advanced indicators.

This change also brings jellybean_raindrops more in line with raindrops.

* Simplfy RGB/LED matrix effect logic (qmk#21703)

* RGB Matrix: driver naming cleanups (qmk#21594)

* Fix keyboards with old RGB driver names (qmk#21815)

* [Doc] Improve magic keycode section (qmk#21787)

* Fix keyboards with old RGB driver names (qmk#21817)

* keychron/c2_pro/ansi/white: Fix column 19 in the custom matrix (qmk#21805)

Although `keychron/c2_pro/ansi/rgb` and `keychron/c2_pro/ansi/white` use
the same custom matrix code, the matrix layouts are slightly different;
in particular, only the `keychron/c2_pro/ansi/white` board actually uses
column 19.  However, the handling of column 19 in the custom matrix code
was broken, therefore that column did not work.

Looks like the custom matrix code assumes that `SHIFT_COL_END` refers to
the last column connected to the shift register, and not to the column
past that; so the value of `SHIFT_COL_END` needs to be changed from 19
to 18 (columns 11...18 are connected to the shift register, and column
19 is connected to the C14 pin).

Also the code which was determining `SIZE_T` and `UNSELECT_ALL_COL` had
an off-by-one bug when counting the required number of bits (again due
to the confusion on the `SHIFT_COL_END` meaning); this had been fixed
too (the actual behavior of that part of the code did not change,
because both the old and the new version select the 8 bit variant).

* Fix infinite recursion in lxxt encoder logic (qmk#21819)

* Bump tj-actions/changed-files from 37 to 38 (qmk#21822)

Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 37 to 38.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](tj-actions/changed-files@v37...v38)

---
updated-dependencies:
- dependency-name: tj-actions/changed-files
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Generalize AVR -Werror=array-bounds workaround (qmk#21798)

GCC 13 needs the same workaround as GCC 12.
To avoid having to maintain an ever-growing list of broken versions
apply the workaround wherever it can be used.

If at some point a fixed version of GCC is released the workaround can
be disabled for those fixed versions.

See qmk#17064

* Move RGBLight animations to data driven (qmk#21635)

* Move RGBLight animations to data driven, 0-9

* Move RGBLight animations to data driven, A

* Move RGBLight animations to data driven, B

* Move RGBLight animations to data driven, C

* Move RGBLight animations to data driven, D

* Move RGBLight animations to data driven, E

* Move RGBLight animations to data driven, F

* Move RGBLight animations to data driven, G

* Move RGBLight animations to data driven, H

* Move RGBLight animations to data driven, handwired

* Move RGBLight animations to data driven, I

* Move RGBLight animations to data driven, J

* Move RGBLight animations to data driven, K

* Move RGBLight animations to data driven, L

* Move RGBLight animations to data driven, M

* Move RGBLight animations to data driven, N

* Move RGBLight animations to data driven, O

* Move RGBLight animations to data driven, P

* Move RGBLight animations to data driven, Q

* Move RGBLight animations to data driven, R

* Move RGBLight animations to data driven, S

* Move RGBLight animations to data driven, T

* Move RGBLight animations to data driven, U

* Move RGBLight animations to data driven, V

* Move RGBLight animations to data driven, W

* Move RGBLight animations to data driven, X

* Move RGBLight animations to data driven, Y

* Move RGBLight animations to data driven, Z

* Fix incorrect placement

* Fix build failures and mismatches

* converter/ibm_terminal: Fix F0_BREAK state transition (qmk#21824)

* Remove `led_matrix.hue_steps` and `led_matrix.sat_steps` from schema (qmk#21827)

* Add "apm32-dfu" in keyboard.jsonschema (qmk#21842)

* Corrected duration example, should be number not string (qmk#21839)

* Rework info.json reference (qmk#21324)

* Rework info.json reference

* Apply suggestions from code review

Co-authored-by: Sergey Vlasov <[email protected]>

* Update backlight.pins description

* Add rgblight.driver and lowercase other driver names

* Remove `split.main` and `split.matrix_grid` for now as they are not working yet

---------

Co-authored-by: Sergey Vlasov <[email protected]>

* Revert  changes to ChibiOS Suspend Code (qmk#21830)

* Partially revert qmk#19780

* Finish

* Get teensy 3.5/3.6 board files too

* fix lint issue

* Revert "[Bug] Restore usb suspend wakeup delay (qmk#21676)"

This reverts commit e8e989f.

* Apply suggestions from code review

Co-authored-by: Joel Challis <[email protected]>

---------

Co-authored-by: Joel Challis <[email protected]>

* Add *_MATRIX_LED_COUNT generation (qmk#21110)

* Unicode, Unicodemap and UCIS refactor (qmk#21659)

* Clean up Unicode API usage in user keymaps (qmk#21849)

* Breaking changes changelog, 2023q3 version (qmk#21848)

Co-authored-by: James Young <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: honorless <[email protected]>

* Remove develop notice.

* Fix compilation of dynamic_keymap.c without VIA (qmk#21858)

* fix 60_hhkb ASCII diagram (qmk#21813)

* chore(ferris/test): visually format keymap (qmk#21851)

... and set all keys to printable characters (as described in the
keymap's readme)

* fix 60_jis keymap.c (qmk#21820)

* Fix invalid encoder_map declaration (qmk#21868)

* Update keymap.c to add encoder (qmk#21469)

* Update keymap.c to add encoder

* Fix build

---------

Co-authored-by: zvecr <[email protected]>

* doio/kb16: Added timeout option for OLED boot logo. (qmk#21823)

* Revert "fix 60_hhkb ASCII diagram (qmk#21813)" (qmk#21869)

This reverts commit af2d6ea.

* CannonKeys Meetup Pad 2023 (qmk#21806)

Co-authored-by: Ryan <[email protected]>

* [keyboard] add sweeq, a ferris/sweep variant with diodes (qmk#21597)

* Update macOS install script (qmk#21854)

* Abko AK84BT Layout Touch-Up (qmk#21876)

* [refactor] rename LAYOUT_75_ansi to LAYOUT

* [enhancement] touch-up layout

* AH Haven65 Community Layout support (qmk#21880)

* [refactor] rename LAYOUT to LAYOUT_65_ansi_blocker

* [enhancement] enable Community Layout support

* nullbitsco/snap: fix broken keymaps (qmk#21877)

* chore: ignore virtual environment directory (qmk#20905)

* Add 1upkeyboards Super16v3 (qmk#21665)

Co-authored-by: Duncan Sutherland <[email protected]>

* [keyboard] add redragon/k667 (qmk#21417)

Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: syc <[email protected]>

* Add M6-C Keyboard Firmware (qmk#21852)

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Wolf <[email protected]>

* Added kiserdesigns keyboard folder and Madeline keyboard (qmk#21857)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>

* redragon/k667: Remove 2 layer VIA restriction (qmk#21889)

* AH Haven80 Community Layout support (qmk#21885)

* [enhancement] correct layout data

* [refactor] rename LAYOUT to LAYOUT_tkl_f13_ansi_tsangan

* [enhancement] enable Community Layout support

* Haven80 Solder: add LAYOUT_tkl_f13_ansi_tsangan_split_bs_rshift

[enhancement]

* Haven80 Solder: add LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift

[enhancement]

* Haven80 Solder: add LAYOUT_tkl_f13_iso_tsangan

[enhancement]

* Haven80 Solder: extend Community Layout support

[enhancement]

* ANAVI Macro Pad 12: rename LAYOUT to LAYOUT_ortho_4x3 (qmk#21886)

[refactor]

* Chosfox CF81: correct layout data (qmk#21902)

* Auto-label data-driven efforts (qmk#21900)

* CannonKeys Bastion75 Layout Additions (qmk#21899)

* [docs] add layout/matrix diagram

* [refactor] rename LAYOUT to LAYOUT_all

* [enhancement] add LAYOUT_ansi_blocker_split_bs

* [enhancement] add LAYOUT_ansi_blocker

* [enhancement] add LAYOUT_ansi_blocker_tsangan_split_bs

* [enhancement] add LAYOUT_ansi_blocker_tsangan

* [enhancement] add LAYOUT_iso_blocker_split_bs

* [enhancement] add LAYOUT_iso_blocker

* [enhancement] add LAYOUT_iso_blocker_tsangan_split_bs

* [enhancement] add LAYOUT_iso_blocker_tsangan

* CannonKeys Bastion60 Layout Additions (qmk#21887)

* [bugfix] correct LAYOUT_60_iso_tsangan key order

* [docs] add layout/matrix diagram

* [enhancement] add LAYOUT_60_tsangan_hhkb

* [enhancement] add LAYOUT_60_ansi_tsangan

* [enhancement] add LAYOUT_60_iso

* [enhancement] add LAYOUT_60_iso_split_bs_rshift

* [enhancement] add LAYOUT_60_iso_tsangan_split_bs_rshift

* [enhancement] add LAYOUT_60_hhkb

* [enhancement] extend Community Layout support

* CannonKeys Bastion65 Layout Additions (qmk#21888)

* [docs] add layout/matrix diagram

* [refactor] rename LAYOUT to LAYOUT_all

* [enhancement] add LAYOUT_65_ansi_blocker_split_bs

* [enhancement] add LAYOUT_65_ansi_blocker

* [enhancement] add LAYOUT_65_ansi_blocker_tsangan_split_bs

* [enhancement] add LAYOUT_65_ansi_blocker_tsangan

* [enhancement] add LAYOUT_65_iso_blocker_split_bs

* [enhancement] add LAYOUT_65_iso_blocker

* [enhancement] add LAYOUT_65_iso_blocker_tsangan_split_bs

* [enhancement] add LAYOUT_65_iso_blocker_tsangan

* [enhancement] enable Community Layout support

* CannonKeys BastionTKL Layout Additions (qmk#21901)

* [docs] add layout/matrix diagram

* [enhancement] add LAYOUT_tkl_ansi_split_bs_rshift

* [enhancement] add LAYOUT_tkl_ansi_tsangan_split_bs_rshift

* [enhancement] add LAYOUT_tkl_ansi_tsangan

* [enhancement] add LAYOUT_tkl_f13_ansi_tsangan

* [enhancement] add LAYOUT_tkl_f13_ansi_split_bs_rshift

* [enhancement] add LAYOUT_tkl_f13_ansi

* [enhancement] correct LAYOUT_tkl_iso key order

* [enhancement] add LAYOUT_tkl_iso_split_bs_rshift

* [enhancement] add LAYOUT_tkl_iso_tsangan_split_bs_rshift

* [enhancement] add LAYOUT_tkl_iso_tsangan

* [enhancement] add LAYOUT_tkl_f13_iso_split_bs_rshift

* [enhancement] add LAYOUT_tkl_f13_iso

* [enhancement] add LAYOUT_tkl_f13_iso_tsangan_split_bs_rshift

* [enhancement] add LAYOUT_tkl_f13_iso_tsangan

* [enhancement] extend Community Layout support

* Bump actions/checkout from 3 to 4 (qmk#21907)

Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* GMMK2 65% ISO: Correct layout data (qmk#21925)

Correct key sizes/positioning on the right side of the board.

* [Docs] Improve contrast for warnings in dark mode (qmk#21928)

* GMMK2 96% ANSI: Correct layout data (qmk#21937)

[enhancement]

* Cipulot EC Theca Community Layout Support (qmk#21913)

* Alias `LAYOUT_all` as `LAYOUT_tkl_ansi`

The data for `LAYOUT_all` and `LAYOUT_tkl_ansi` is identical, so alias
the former to the latter to reduce redundancy.

[refactor]

* Rename `LAYOUT_tkl_ansi_tsangan_wkl` to `LAYOUT_tkl_ansi_wkl`

[refactor]

* Enable Community Layout support

[enhancement]

* customMK EVO70 R2 Layout Additions (qmk#21916)

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add layout/matrix diagram

[docs]

* Correct layout data

Reduce the gap between the encoder/macro section and the alphanumeric
section by 0.25u.

[enhancement]

* Add `LAYOUT_ansi_blocker`

[enhancement]

* Add `LAYOUT_iso_blocker`

[enhancement]

* Fix redundant `layout_aliases` keys

per dunk2k

[bugfix]

* [Keyboard] Add Binepad Pixie (qmk#21524)

* Add Binepad Pixie

* Post waffle87 and drashna review recommendations applied

* Post-drashna code review suggestions applied

Co-authored-by: Drashna Jaelre <[email protected]>

* post zvecr review

---------

Co-authored-by: Drashna Jaelre <[email protected]>

* dnworks FRLTKL Community Layout support (qmk#21922)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add `LAYOUT_tkl_nofrow_iso_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_tsangan_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_tsangan`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_wkl`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_tsangan_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_tsangan`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_wkl`

[enhancement]

* Enable Community Layout support

[enhancement]

* Repair malformed links in keyboard README files (qmk#21969)

* Remove oversize binaries (qmk#21976)

This stops a situation where a user could end up flashing oversize firmware soft bricking hardware.

* Drewkeys Mercury65 Layout Additions (qmk#21924)

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add layout/matrix diagram

[docs]

* Correct `LAYOUT_all` data

Correct the order of the Up arrow and End keys.

[enhancement]

* Tidy-up `info.json` formatting

- add line breaks between physical rows
- remove trailing spaces

[style]

* Add `LAYOUT_iso_blocker_split_bs`

[enhancement]

* Add `LAYOUT_iso_blocker_tsangan_split_bs`

[enhancement]

* Add `LAYOUT_ansi_blocker_split_bs`

[enhancement]

* Add `LAYOUT_ansi_blocker_tsangan_split_bs`

[enhancement]

* Gray Studio Think65 v3 Layout Additions (qmk#21930)

* Add layout/matrix diagram

[docs]

* Format `info.json` as strict JSON

[style]

* Add `LAYOUT_all`

[enhancement]

* Refactor keymaps to use `LAYOUT_all`

Refactor the `default` and `via` keymaps to use the `LAYOUT_all` macro.

- change second Left Shift key to `KC_NUBS`
- insert `KC_NUHS` keycode
- update keycode grid alignment
- remove trailing whitespace

[refactor]

* Rename `LAYOUT_65_blocker` to `LAYOUT_ansi_blocker`

[refactor]

* Rename `LAYOUT_65_iso_blocker` to `LAYOUT_iso_blocker`

[refactor]

* Correct `LAYOUT_iso_blocker` matrix data

The Quote key was mapped as [1, 14] instead of [2, 12].

[bugfix]

* Add `LAYOUT_ansi_blocker_split_bs`

[enhancement]

* Add `LAYOUT_ansi_blocker_tsangan_split_bs`

[enhancement]

* Add `LAYOUT_ansi_blocker_tsangan`

[enhancement]

* Add `LAYOUT_iso_blocker_split_bs`

[enhancement]

* Add `LAYOUT_iso_blocker_tsangan_split_bs`

[enhancement]

* Add `LAYOUT_iso_blocker_tsangan`

[enhancement]

* Handwired ScottoKeebs Configurator Updates (qmk#21990)

* ScottoKeebs ScottoAlp: Correct layout data

[enhancement]

* ScottoKeebs ScottoCMD: Correct layout data

[enhancement]

* ScottoKeebs ScottoErgo: Correct layout data

Add hand separation and vertical stagger to the layout data.

[enhancement]

* ScottoKeebs ScottoFrog: Correct layout data

[enhancement]

* ScottoKeebs ScottoGame: Correct layout data

[enhancement]

* ScottoKeebs ScottoInvader: Correct layout data

[enhancement]

* ScottoKeebs ScottoNum: Correct layout data

[enhancement]

* ScottoKeebs ScottoSplit: Correct layout data

[enhancement]

* ScottoKeebs ScottoStarter: Correct layout data

[enhancement]

* Inland MK47 Community Layout Support (qmk#21998)

* Rename `LAYOUT` to `LAYOUT_planck_mit`

[refactor]

* Enable Community Layout support

[enhancement]

* Touch-up keymaps

- grid-align keycodes

[style]

* Jaykeeb Sebelas: Standardize Layout Names (qmk#21999)

* Rename `LAYOUT_65_ansi_blocker` to `LAYOUT_ansi_blocker`

[refactor]

* Rename `LAYOUT_65_ansi_blocker_split_bs` to `LAYOUT_ansi_blocker_split_bs`

[refactor]

* Rename `LAYOUT_65_ansi_blocker_tsangan` to `LAYOUT_ansi_blocker_tsangan`

[refactor]

* Rename `LAYOUT_65_ansi_blocker_tsangan_split_bs` to `LAYOUT_ansi_blocker_tsangan_split_bs`

[refactor]

* Keebio NyquistPad Layout Updates (qmk#22000)

* Rename `LAYOUT` to `LAYOUT_ortho_5x6`

[refactor]

* Add `LAYOUT_ortho_5x6_1x2u`

[enhancement]

* Kibou Suisei Layout Addition (qmk#22001)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_65_ansi_blocker_tsangan_wkl_split_bs`

[refactor]

* Add `LAYOUT_65_ansi_blocker_tsangan_wkl`

[enhancement]

* Kopibeng XT87 Layout Additions & Touch-Up (qmk#22002)

* Add `LAYOUT_tkl_ansi_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_ansi_wkl`

[enhancement]

* Add `LAYOUT_tkl_iso_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_iso_wkl`

[enhancement]

* Correct layout data

Correct key positioning on the function row.

[enhancement]

* Friendly-format `info.json`

[style]

* Move ISO Enter to Home Row

Corrects the implementation of the ISO Community Layouts.

[bugfix]

* Update to 'peterfalken' userspace configurations (qmk#21836)

* Krado Industries Promenade Layout Additions (qmk#22014)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Correct key order

[bugfix]

* Add `LAYOUT_2x2u`

[enhancement]

* Add `LAYOUT_2x3u`

[enhancement]

* Add `LAYOUT_6u_space`

[enhancement]

* Add `LAYOUT_7u_space`

[enhancement]

* Touch-up `via` keymap

Update keycode grid alignment to match the `default` keymap.

[style]

* Linworks Fave60a Community Layout Support (qmk#22015)

* Friendly-format `info.json`

[style]

* Correct layout data

[chore]

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_60_tsangan_hhkb`

[refactor]

* Add `LAYOUT_60_ansi_tsangan`

[enhancement]

* Enable Community Layout support

[enhancement]

* Maze Studio Jocker 1800 Layout Additions (qmk#22016)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_ansi_split_bs`

[refactor]

* Add `LAYOUT_ansi`

[enhancement]

* Add `LAYOUT_ansi_wkl_split_bs`

[enhancement]

* Add `LAYOUT_ansi_wkl`

[enhancement]

* Mechlovin Zed65 910 Layout Standardization (qmk#22018)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT_65_iso_tsangan_split_bs` to `LAYOUT_iso_split_bs`

[refactor]

* Rename `LAYOUT_65_ansi_tsangan` to `LAYOUT_ansi`

[refactor]

* Rename `LAYOUT_65_ansi_blocker_tsangan` to `LAYOUT_ansi_blocker_tsangan`

[refactor]

* Rename `LAYOUT_65_ansi_tsangan_split_bs` to `LAYOUT_all`

[refactor]

* Mode M256-WS Community Layout Support (qmk#22020)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add `LAYOUT_65_ansi_blocker_split_bs`

[enhancement]

* Add `LAYOUT_65_ansi_blocker`

[enhancement]

* Add `LAYOUT_65_ansi_blocker_tsangan_split_bs`

[enhancement]

* Add `LAYOUT_65_ansi_blocker_tsangan`

[enhancement]

* Add `LAYOUT_65_iso_blocker_split_bs`

[enhancement]

* Add `LAYOUT_65_iso_blocker`

[enhancement]

* patch `LAYOUT_65_iso_blocker_split_bs`

* patch `LAYOUT_65_iso_blocker`

* Add `LAYOUT_65_iso_blocker_tsangan_split_bs`

[enhancement]

* Add `LAYOUT_65_iso_blocker_tsangan`

[enhancement]

* Enable Community Layout support

[enhancement]

* Mode M256-WH Community Layout Support (qmk#22019)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_65_ansi_blocker`

[refactor]

* Add `LAYOUT_65_ansi_blocker_tsangan`

[enhancement]

* Enable Community Layout support

[enhancement]

* MonsGeek M1: Correct layout data (qmk#22026)

Apply vertical offset to the arrow keys.

[chore]

* `qmk format-json`: Add an in-place mode to format json command (qmk#21610)

* QVEX Tech Lynepad2 Layout Update (qmk#22030)

* Add layout/matrix diagram

[docs]

* Update layout data

Update layout data to disambiguate the key/joystick/thumbpad functions
in Configurator.

[chore]

* OwLab Jelly Evolv Solder Layout Additions (qmk#22029)

* Add layout/matrix diagram

[docs]

* Friendly-format `info.json`

[style]

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add `LAYOUT_ansi_blocker`

[enhancement]

* Add `LAYOUT_ansi_blocker_split_bs`

[enhancement]

* Add `LAYOUT_ansi_blocker_tsangan_split_bs`

[enhancement]

* Add `LAYOUT_ansi_blocker_tsangan`

[enhancement]

* Add `LAYOUT_iso_blocker`

[enhancement]

* Add `LAYOUT_iso_blocker_split_bs`

[enhancement]

* Add `LAYOUT_iso_blocker_tsangan_split_bs`

[enhancement]

* Add `LAYOUT_iso_blocker_tsangan`

[enhancement]

* Nix Studio Lilith Layout Additions (qmk#22028)

* Add layout/matrix diagram

[docs]

* Sort keys in `info.json`

[style]

* Add `LAYOUT_65_ansi_blocker_split_bs`

[enhancement]

* Add `LAYOUT_65_ansi_blocker_tsangan`

[enhancement]

* Add `LAYOUT_65_iso_blocker_split_bs`

[enhancement]

* Add `LAYOUT_65_iso_blocker_tsangan_split_bs`

[enhancement]

* Extend Community Layout support

[enhancement]

* Neson Design Nico Layout Additions (qmk#22027)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_65_xt_ansi_blocker_split_bs`

[refactor]

* Add `LAYOUT_65_xt_ansi_blocker`

[enhancement]

* Add `LAYOUT_65_xt_ansi_blocker_tsangan`

[enhancement]

* Add `LAYOUT_65_xt_ansi_blocker_tsangan_split_bs`

[enhancement]

* Touch-up keymaps

- grid-align keycodes
- use four-space indent
- use QMK-native keycode aliases

[refactor]

* Update `via` keymap

Update the `via` keymaps to have the same key assignments as the
`default` keymap, which is more fleshed out.

[chore]

* [Keyboard] Add splitkb.com's Aurora Helix (qmk#21871)

Co-authored-by: Less/Rikki <[email protected]>
Co-authored-by: Ryan <[email protected]>

* [Keyboard] add 1upkeyboards 1upslider8 (qmk#21546)

Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>

* [Keyboard] Adding Treasure TYPE-9 series III (qmk#21748)

Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>

* Raindrop Layout Updates (qmk#22032)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT_all` to `LAYOUT_64_ansi_split_bs`

[refactor]

* Add `LAYOUT_60_ansi_split_bs_rshift`

[enhancement]

* Rico Phoenix Project No. 1 Layout Additions (qmk#22035)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add `LAYOUT_65_ansi_rwkl_split_bs`

[enhancement]

* Add `LAYOUT_65_ansi_rwkl`

[enhancement]

* Add `LAYOUT_65_ansi_wkl_split_bs`

[enhancement]

* Add `LAYOUT_65_ansi_wkl`

[enhancement]

* Add `LAYOUT_65_iso_rwkl_split_bs`

[enhancement]

* Add `LAYOUT_65_iso_rwkl`

[enhancement]

* Add `LAYOUT_65_iso_wkl_split_bs`

[enhancement]

* Add `LAYOUT_65_iso_wkl`

[enhancement]

* RuckerMachine RM Fullsize Layout Additions (qmk#22036)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add `LAYOUT_fullsize_108_ansi`

[enhancement]

* Add `LAYOUT_fullsize_108_ansi_tsangan`

[enhancement]

* Sho Studios ARC Layout Addition (qmk#22037)

* Add layout/matrix diagram

[docs]

* Format `info.json`

Apply four-space indent.

[style]

* Add `LAYOUT_ansi_split_bs`

[enhancement]

* Move Digitizer to "Software Features" (qmk#22031)

* Add missing gpio and chibios defs to uart.h (qmk#22033)

* Fix paragon encoder pinout for soldered version (qmk#22043)

* geistmaschine/macropod: fix issues waking up after suspend on apple devices (qmk#22023)

* Add all RGB Matrix Animations to city42 (qmk#21992)

* Viktus Styrka Topre Layout Standardization and Touch-Up (qmk#22044)

* Add layout/matrix diagram

[docs]

* Alias `LAYOUT_all` to `LAYOUT_split_6u`

`LAYOUT_all` and `LAYOUT_split_6u` represent the same matrix positions
and sequence, so implement the former as an alias.

[refactor]

* Touch-up keymaps

- grid-align keycodes
- use QMK-native keycode aliases

[chore]

* Friendly-format `info.json`

[style]

* Correct layout data

Correct key sizes/positioning on the bottom row.

[chore]

* Rename `LAYOUT_2u_6u` to `LAYOUT_65_xt_ansi_blocker`

[refactor]

* Rename `LAYOUT_2u_7u` to `LAYOUT_65_xt_ansi_blocker_tsangan`

[refactor]

* Rename `LAYOUT_split_6u` to `LAYOUT_65_xt_ansi_blocker_split_bs`

[refactor]

* Rename `LAYOUT_split_7u` to `LAYOUT_65_xt_ansi_blocker_tsangan_split_bs`

[refactor]

* Wolf Neely65 Touch-Up (qmk#22045)

* Add layout/matrix diagram

[docs]

* Friendly-format `info.json`

[style]

* Touch-up keymaps

- grid-align keycodes
- use QMK-native keycode aliases

[refactor]

* Fix keymaps

Fix keycodes being assigned out of order with respect to `info.json`.

- move XT function keys to left side
- move keycodes for position [2, 14] from Home Row to Number Row

[bugfix]

* Rename `LAYOUT` to `LAYOUT_65_xt_ansi_blocker_tsangan_wkl_split_bs`

[refactor]

* Add `LAYOUT_65_xt_ansi_blocker_tsangan_wkl`

[enhancement]

* Wolf Silhouette Community Layout Support (qmk#22052)

* Add layout/matrix diagram

[docs]

* Friendly-format `info.json`

[style]

* Touch-up layout data

Move the ISO Hash key to the main key area.

[chore]

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add `LAYOUT_tkl_nofrow_ansi_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_tsangan_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_tsangan`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_wkl`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_tsangan_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_tsangan`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_wkl`

[enhancement]

* Enable Community Layout support

[enhancement]

* Wolf Ziggurat Layout Additions (qmk#22053)

* Add layout/matrix diagram

[docs]

* Friendly-format `info.json`

[style]

* Touch-up layout data

Move the ISO Hash key to the main key area.

[chore]

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add `LAYOUT_65_xt_ansi_blocker_tsangan_split_bs`

[enhancement]

* Add `LAYOUT_65_xt_ansi_blocker_tsangan`

[enhancement]

* Add `LAYOUT_65_xt_iso_blocker_tsangan_split_bs`

[enhancement]

* Add `LAYOUT_65_xt_iso_blocker_tsangan`

[enhancement]

* Adding support for the Pteron56 (PCB) keyboard (qmk#21731)

* Add missing gpio include to ps2 vendor (qmk#22063)

* [Keyboard] Add riot pad (qmk#22060)

Co-authored-by: ShandonCodes <[email protected]>

* DZTech Pluto Community Layout support (qmk#22069)

* Add layout/matrix diagram

[docs]

* Friendly-format `info.json`

- apply four-space indent
- sort JSON keys in layout objects

[style]

* Correct `LAYOUT_all` data

Correct key sizes/positions of:

- ANSI Backslash [1, 13]
- ANSI Enter [1, 14]
- Fn [3, 13]

[chore]

* Correct `LAYOUT_iso` data

Correct position of Fn key [3, 13].

[chore]

* Add `LAYOUT_tkl_nofrow_ansi_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_tsangan_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_tsangan`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_ansi_wkl`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_tsangan_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_tsangan`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_wkl_split_bs_rshift`

[enhancement]

* Add `LAYOUT_tkl_nofrow_iso_wkl`

[enhancement]

* Enable Community Layout support

[enhancement]

* Touch-up keymaps

Update keycode grid alignment.

[style]

* Ubest VN Community Layout Support (qmk#22070)

* Add layout/matrix diagram

[docs]

* Rename `LAYOUT` to `LAYOUT_all`

[refactor]

* Add `LAYOUT_65_ansi_split_bs`

[enhancement]

* Add `LAYOUT_65_ansi`

[enhancement]

* Add `LAYOUT_65_iso_split_bs`

[enhancement]

* Add `LAYOUT_65_iso`

[enhancement]

* Enable Community Layout support

[enhancement]

* Touch-up keymaps

- apply four-space indent
- grid-align keycodes

[style]

* Add OLED logo DP3000 macropad (qmk#21936)

* SapuSeven MacroPad12: rename LAYOUT to LAYOUT_ortho_3x4 (qmk#22081)

* Alchemist Keyboards OGRN Layout Addition (qmk#22080)

* Add layout/matrix diagram

[docs]

* Friendly-format `info.json`

[style]

* Add `LAYOUT_ortho_5x4`

[enhancement]

* Touch-up keymaps

- update grid-alignment (layer-to-layer consistency)
- fix box drawings

[style]

* Extend Community Layout support

Add `ortho_5x4` to supported Community Layouts.

[enhancement]

* amend 96_(ansi|iso) community_layouts in keyboards/ (qmk#22066)

* Restrict "feature" and "animation" keys (qmk#21895)

* [Keyboard] Momokai Aurora (qmk#20419)

Co-authored-by: Albert Y <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Joel Challis <[email protected]>

* [Keyboard] add Quokka keyboard (qmk#20979)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>

* apply 66_(ansi|iso) to keyboards (qmk#21834)

* Add ScottoSlant Keyboard (qmk#20942)

Co-authored-by: Ryan <[email protected]>

* Add ScottoMouse Handwired Macropad (qmk#21074)

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Albert Y <[email protected]>

* Add ScottoFly Keyboard (qmk#20939)

Co-authored-by: Ryan <[email protected]>

* Add ScottoMacrodeck Macropad (qmk#20946)

Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>

* Add ScottoLong Keyboard (qmk#20938)

Co-authored-by: Ryan <[email protected]>

* Add funtions of Encoder and VIA for redragon/k667 (qmk#21917)

Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Less/Rikki <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: syc <[email protected]>

* [Keyboard] Add rpk-001 keyboard (qmk#21042)

Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: Joy <[email protected]>

* amend 68_(ansi|iso) community_layouts in keyboards/ (qmk#21835)

* [Keyboard] Add QCK-75 (qmk#21180)

Co-authored-by: Ryan <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>

* Quarkeys Studio Z67 Solder Community Layout Support (qmk#22095)

* Quarkeys Studio Z67 Hotswap Community Layout Support (qmk#22096)

* kimiko: mirror encoder pins between halves (qmk#21728)

* Keychron q9 plus (qmk#21399)

Co-authored-by: Ryan <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>

* add dz60v2 keyboard (qmk#21862)

Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: Less/Rikki <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: Ryan <[email protected]>

* add odinmini layout (qmk#21983)

Co-authored-by: Ryan <[email protected]>

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Rico <[email protected]>
Co-authored-by: Ryan <[email protected]>
Co-authored-by: Joel Challis <[email protected]>
Co-authored-by: Drashna Jaelre <[email protected]>
Co-authored-by: QMK Bot <[email protected]>
Co-authored-by: Nick Brassel <[email protected]>
Co-authored-by: Nebuleon <[email protected]>
Co-authored-by: harveysch <[email protected]>
Co-authored-by: Thomas Baart <[email protected]>
Co-authored-by: leep-frog <[email protected]>
Co-authored-by: Sergey Vlasov <[email protected]>
Co-authored-by: Duncan Sutherland <[email protected]>
Co-authored-by: Stefan Kerkmann <[email protected]>
Co-authored-by: era <[email protected]>
Co-authored-by: Its TLeo <[email protected]>
Co-authored-by: jack <[email protected]>
Co-authored-by: Álvaro Cortés <[email protected]>
Co-authored-by: Álvaro Cortés Devesa <[email protected]>
Co-authored-by: Leon Anavi <[email protected]>
Co-authored-by: lalalademaxiya1 <[email protected]>
Co-authored-by: 3geek14 <[email protected]>
Co-authored-by: James Young <[email protected]>
Co-authored-by: Synth and Keys <[email protected]>
Co-authored-by: SmollChungus <[email protected]>
Co-authored-by: Hugh Rawlinson <[email protected]>
Co-authored-by: gskygithub <[email protected]>
Co-authored-by: gksygithub <[email protected]>
Co-authored-by: Brian McKenna <[email protected]>
Co-authored-by: spbgzh <[email protected]>
Co-authored-by: jonylee@hfd <[email protected]>
Co-authored-by: Joy <[email protected]>
Co-authored-by: Joy Lee <[email protected]>
Co-authored-by: HorrorTroll <[email protected]>
Co-authored-by: alvicstep <[email protected]>
Co-authored-by: mechlovin <[email protected]>
Co-authored-by: Richard Baptist <[email protected]>
Co-authored-by: Richard Baptist <[email protected]>
Co-authored-by: Andre Brait <[email protected]>
Co-authored-by: Janat Taerakul <[email protected]>
Co-authored-by: Janat Taerakul <[email protected]>
Co-authored-by: Yizhen Liu <[email protected]>
Co-authored-by: Dane Lipscombe <[email protected]>
Co-authored-by: Wilfried JEANNIARD <[email protected]>
Co-authored-by: Joe Scotto <[email protected]>
Co-authored-by: Albert Y <[email protected]>
Co-authored-by: Powered by Porridge <[email protected]>
Co-authored-by: squigglybob <[email protected]>
Co-authored-by: studiokestra <[email protected]>
Co-authored-by: Pangorin <[email protected]>
Co-authored-by: owlab2 <[email protected]>
Co-authored-by: DUILCHOI <[email protected]>
Co-authored-by: Controller Works <[email protected]>
Co-authored-by: Less/Rikki <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Thomas Weißschuh <[email protected]>
Co-authored-by: patrickxiong <[email protected]>
Co-authored-by: HiryKun <[email protected]>
Co-authored-by: Andy Smith <[email protected]>
Co-authored-by: Adam Price <[email protected]>
Co-authored-by: Laneware <[email protected]>
Co-authored-by: Lasse Luttermann <[email protected]>
Co-authored-by: Andrew Kannan <[email protected]>
Co-authored-by: Idan Kamara <[email protected]>
Co-authored-by: Jay Greco <[email protected]>
Co-authored-by: Frank Ebel <[email protected]>
Co-authored-by: ziptyze <[email protected]>
Co-authored-by: temp4gh <[email protected]>
Co-authored-by: syc <[email protected]>
Co-authored-by: Wolf Van Herreweghe <[email protected]>
Co-authored-by: Wolf <[email protected]>
Co-authored-by: NCKiser <[email protected]>
Co-authored-by: Vino Rodrigues <[email protected]>
Co-authored-by: Falco Gerritsjans <[email protected]>
Co-authored-by: Dasky <[email protected]>
Co-authored-by: Luis Garcia <[email protected]>
Co-authored-by: TreasureTypes <[email protected]>
Co-authored-by: Constantine Karos <[email protected]>
Co-authored-by: Yak <[email protected]>
Co-authored-by: Moritz Plattner <[email protected]>
Co-authored-by: Filip Sund <[email protected]>
Co-authored-by: Shandon Anderson <[email protected]>
Co-authored-by: ShandonCodes <[email protected]>
Co-authored-by: Deddia Permana <[email protected]>
Co-authored-by: peepeetee <[email protected]>
Co-authored-by: Dan Ford <[email protected]>
Co-authored-by: Poring <[email protected]>
Co-authored-by: Charles Strahan <[email protected]>
Co-authored-by: dztech <[email protected]>
thismarvin pushed a commit to thismarvin/qmk_firmware that referenced this pull request Sep 27, 2023
Problem:

`mousekey_task` spams empty hid reports with when a mouse key is
pressed, causing resource exhaustion in the USB mouse endpoint.

Cause:

The check whether or not to send a new mouse report would always
evaluate to true if a mouse key is pressed:

1. `mouse_report` has non-zero fields and `tmpmr` is a copy of this
   fields.
2. `mouse_report` is set to zero, `tmpmr` has now non-zero fields.
3. `has_mouse_report_changed` compares the two and evaluates to true
4. a mouse report is sent.

Fix:

The check condition of `has_mouse_report_changed` will evaluate any
empty record as unchanged, as mouse report data is relative and doesn't
need to return to zero. An empty report will still be send by
`register_mouse` on release of all mouse buttons.
akeep pushed a commit to akeep/qmk_firmware that referenced this pull request Oct 2, 2023
Problem:

`mousekey_task` spams empty hid reports with when a mouse key is
pressed, causing resource exhaustion in the USB mouse endpoint.

Cause:

The check whether or not to send a new mouse report would always
evaluate to true if a mouse key is pressed:

1. `mouse_report` has non-zero fields and `tmpmr` is a copy of this
   fields.
2. `mouse_report` is set to zero, `tmpmr` has now non-zero fields.
3. `has_mouse_report_changed` compares the two and evaluates to true
4. a mouse report is sent.

Fix:

The check condition of `has_mouse_report_changed` will evaluate any
empty record as unchanged, as mouse report data is relative and doesn't
need to return to zero. An empty report will still be send by
`register_mouse` on release of all mouse buttons.
csolje pushed a commit to csolje/qmk_firmware that referenced this pull request Oct 21, 2023
Problem:

`mousekey_task` spams empty hid reports with when a mouse key is
pressed, causing resource exhaustion in the USB mouse endpoint.

Cause:

The check whether or not to send a new mouse report would always
evaluate to true if a mouse key is pressed:

1. `mouse_report` has non-zero fields and `tmpmr` is a copy of this
   fields.
2. `mouse_report` is set to zero, `tmpmr` has now non-zero fields.
3. `has_mouse_report_changed` compares the two and evaluates to true
4. a mouse report is sent.

Fix:

The check condition of `has_mouse_report_changed` will evaluate any
empty record as unchanged, as mouse report data is relative and doesn't
need to return to zero. An empty report will still be send by
`register_mouse` on release of all mouse buttons.
autoferrit pushed a commit to SpaceRockMedia/bastardkb-qmk that referenced this pull request Dec 8, 2023
Problem:

`mousekey_task` spams empty hid reports with when a mouse key is
pressed, causing resource exhaustion in the USB mouse endpoint.

Cause:

The check whether or not to send a new mouse report would always
evaluate to true if a mouse key is pressed:

1. `mouse_report` has non-zero fields and `tmpmr` is a copy of this
   fields.
2. `mouse_report` is set to zero, `tmpmr` has now non-zero fields.
3. `has_mouse_report_changed` compares the two and evaluates to true
4. a mouse report is sent.

Fix:

The check condition of `has_mouse_report_changed` will evaluate any
empty record as unchanged, as mouse report data is relative and doesn't
need to return to zero. An empty report will still be send by
`register_mouse` on release of all mouse buttons.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants