Commit Graph

2544 Commits

Author SHA1 Message Date
フィルターペーパー 248d7c1d6d
Simplify tap_code16_delay (#25595)
* Replaced for-loop with single wait_ms(delay) call
* Improve code consistency with tap_code_delay
2025-09-06 10:04:42 +01:00
Joel Challis cc696a2ae8
Refactor battery driver (#25550) 2025-08-17 01:14:48 +01:00
フィルターペーパー 542440eac5
Add MATRIX_ROWS_PER_HAND definition (#25513) 2025-07-25 10:04:12 +10:00
Joel Challis 20555f9a33
Relocate `AUDIO_INIT_DELAY` implementation (#25491) 2025-07-14 13:53:57 +01:00
フィルターペーパー ad4233d078
Clamp reactive offset value (#25489)
* Avoids underflow of the unsigned 8-bit
2025-07-13 16:38:32 +01:00
Ryan 6b38dc17cd
Remove deprecated `RGB_` and Mouse keycodes (#25444)
* Remove deprecated `RGB_` and Mouse keycodes

* Update old mouse keycodes, 0-9/A-M

* Update old mouse keycodes, N-Z & layouts

* Missed some stuff
2025-07-11 11:05:41 -06:00
Joel Challis 7827f9fbe3
Compilation fixes for `-fno-common` (#25436) 2025-07-07 16:15:50 +01:00
Ryan baf0060761
Deprecate some nonstandard mod & mod-tap keycode aliases (#25437) 2025-07-06 20:30:47 +10:00
QMK Bot e68389a11e Merge remote-tracking branch 'origin/master' into develop 2025-07-06 06:58:28 +00:00
Ryan ba63bac661
Add short aliases for `OSM()` (#25443) 2025-07-06 16:57:51 +10:00
フィルターペーパー 584ad807cc
Refactor Starlight Smooth matrix effect (#25442) 2025-07-05 23:44:44 -07:00
Joel Challis 711b109246
Mitigate VIA keylogger security issues (#25414)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2025-06-29 02:29:33 +01:00
QMK Bot f09f3643ad Merge remote-tracking branch 'origin/master' into develop 2025-06-28 02:44:58 +00:00
Ryan 36636205dd
Clean up mod & mod-tap shortcuts (#25399) 2025-06-28 12:44:24 +10:00
Joel Challis bc5c5e3251
Align sleep_led logic (#25395) 2025-06-27 08:17:28 +01:00
Dasky 7919848324
Add core handling for pointing device failures. (#25315) 2025-06-14 13:55:35 +01:00
QMK Bot 3ce196ff52 Merge remote-tracking branch 'origin/master' into develop 2025-06-09 18:36:25 +00:00
Pablo Martínez 802a199bbd
[Bugfix] User eeconfig utility macros (#25350) 2025-06-09 19:35:48 +01:00
Nick Brassel 7808f8f56b
Add `{rgb|led}_matrix_get_mode_name()`. (#25344) 2025-06-07 22:56:58 +10:00
Joel Challis 7b36727ed1
Remove `process_action_kb` callback (#25331) 2025-06-04 22:37:40 +10:00
Joel Challis f096e5a3f3
Relocate remaining `process_record_quantum` keycodes (#25328) 2025-06-03 23:44:46 +01:00
QMK Bot 53c6fa5de7 Merge remote-tracking branch 'origin/master' into develop 2025-06-03 12:04:35 +00:00
Dasky 8525ab03de
Fix dynamic keymap static assert (#25327) 2025-06-03 13:03:59 +01:00
Stephen Ostermiller 1d145c7511
Fix quantum.c keycode handling (#25322) 2025-06-02 19:24:02 +01:00
Sergey Radionov 9e2d8999bf
Fix reference to wrong layer when LM used with right modifiers (#25303) 2025-05-27 23:24:20 +01:00
Dasky 41b1bb4aef
Fix dynamic keymap macro only sending first. (#25309) 2025-05-27 14:22:55 +01:00
Pablo Martínez 955809bd5a
Add `compiler_support.h` (#25274) 2025-05-22 23:31:15 +10:00
Stefan Kerkmann 4f0a0f32f2
[Chore] use {rgblight,rgb_matrix}_hsv_to_rgb overrides (#25271) 2025-05-20 19:23:20 +01:00
Joel Challis 05ff5443b1
Deprecate `usb.force_nkro`/`FORCE_NKRO` (#25262) 2025-05-14 22:02:43 +10:00
Matti Hiljanen 070dea4a9c
Fix OS_DETECTION_KEYBOARD_RESET (#25015)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2025-05-12 12:15:40 +10:00
Pascal Getreuer f4171412a6
Enable community modules to define LED matrix and RGB matrix effects. (#25187)
Co-authored-by: Joel Challis <git@zvecr.com>
2025-05-12 09:30:19 +10:00
art-was-here 7f42a5bc03
[New Feature/Core] New RGB Matrix Animation "Starlight Smooth" (#25203) 2025-05-12 08:50:36 +10:00
Joel Challis 3e7ce54902
Fix Wear Leveling compilation (#25254) 2025-05-12 08:39:38 +10:00
Joel Challis 88c094908b
Add raw_hid support to host driver (#25255) 2025-05-12 08:38:48 +10:00
QMK Bot 4836fcf831 Merge remote-tracking branch 'origin/master' into develop 2025-05-07 07:09:37 +00:00
dabstractor 1becbaefbe
Fixed print statement after enabling 32-bit layers (#25027) 2025-05-07 00:09:01 -07:00
Joel Challis ab1332bb6c
Remove force disable of NKRO when Bluetooth enabled (#25201) 2025-05-06 06:47:44 +01:00
Joel Challis 842c840145
Bind Bluetooth driver to `host_driver_t` (#25199) 2025-05-05 04:05:04 +01:00
Joel Challis dbe30a1b6f
Generate versions to keycode headers (#25219) 2025-05-05 10:44:08 +10:00
Drashna Jaelre 12caf0be4e
Add additional hooks for Community modules (#25050) 2025-05-05 10:21:47 +10:00
Pascal Getreuer c26449e64f
[Core] Enhance Flow Tap to work better for rolls over multiple tap-hold keys. (#25200)
* Flow Tap revision for rolling press.

* Remove debugging cruft.

* Formatting fix.
2025-04-28 09:52:20 +02:00
eynsai 7a2cd0fa96
High resolution scrolling (without feature report parsing) (#24423)
* hires scrolling without feature report parsing

* fix valid range for exponent

* fix incorrect minimum exponent value documentation
2025-04-23 00:04:31 +02:00
Pascal Getreuer 73e2ef486a
[Bug][Core] Fix for Flow Tap: fix handling of distinct taps and timer updates. (#25175)
* Flow Tap bug fix.

As reported by @amarz45 and @mwpardue, there is a bug where if two
tap-hold keys are pressed in distinct taps back to back, then Flow Tap
is not applied on the second tap-hold key, but it should be.

In a related bug reported by @NikGovorov, if a tap-hold key is held
followed by a tap of a tap-hold key, then Flow Tap updates its timer on
the release of the held tap-hold key, but it should be ignored.

The problem common to both these bugs is that I incorrectly assumed
`tapping_key` is cleared to noevent once it is released, when actually
`tapping_key` is still maintained for `TAPPING_TERM` ms after release
(for Quick Tap). This commit fixes that. Thanks to @amarz45, @mwpardue,
and @NikGovorov for reporting!

Details:

* Logic for converting the current tap-hold event to a tap is extracted
  to `flow_tap_key_if_within_term()`, which is now invoked also in the
  post-release "interfered with other tap key" case. This fixes the
  distinct taps bug.

* The Flow Tap timer is now updated at the beginning of each call to
  `process_record()`, provided that there is no unsettled tap-hold key
  at that time and that the record is not for a mod or layer switch key.
  By moving this update logic to `process_record()`, it is conceptually
  simpler and more robust.

* Unit tests extended to cover the reported scenarios.

* Fix formatting.

* Revision to fix @NikGovorov's scenario.

The issue is that when another key is pressed while a layer-tap hasn't
been settled yet, the `prev_keycode` remembers the keycode from before
the layer switched. This can then enable Flow Tap for the following key
when it shouldn't, or vice versa.

Thanks to @NikGovorov for reporting!

This commit revises Flow Tap in the following ways:

* The previous key and timer are both updated from `process_record()`.
  This is slightly later in the sequence of processing than before, and
  by this point, a just-settled layer-tap should have taken effect so
  that the keycode from the correct layer is remembered.

* The Flow Tap previous key and timer are updated now also on key
  release events, except for releases of modifiers and held layer
  switches.

* The Flow Tap previous key and timer are now updated together, for
  simplicity. This makes the logic easier to think about.

* A few additional unit tests, including @NikGovorov's scenario as
  "layer_tap_ignored_with_disabled_key_complex."
2025-04-22 09:59:49 +02:00
Joel Challis c7cb7ba976
Implement connection keycode logic (#25176) 2025-04-21 22:27:56 +01:00
Nick Brassel a4aabea511
Fixup eeconfig lighting reset. (#25166) 2025-04-19 23:10:33 +01:00
Nick Brassel 5c39722ab9
Allow for disabling EEPROM subsystem entirely. (#25173) 2025-04-19 20:20:00 +01:00
Pascal Getreuer ea85ace4a9
Ignore the Layer Lock key in Repeat Key and Caps Word. (#25171) 2025-04-19 11:57:00 -07:00
Pascal Getreuer 8d8dcb089e
[Core] Flow Tap tap-hold option to disable HRMs during fast typing (#25125)
aka Global Quick Tap, Require Prior Idle
2025-04-14 09:46:24 -07:00
Stefan Kerkmann a7bf8e64a5
[chore]: move and rename mouse/scroll min/max defines (#25141)
* protocol: move {XY/HV}_REPORT_{MIN,MAX} into report.h

..to allow easier re-use in other code implementations.

* protocol: rename {XY/HV}_REPORT_{MIN/MAX} to MOUSE_REPORT_{XY/HV}_{MIN/MAX}

..to avoid naming collisions.
2025-04-13 18:36:13 +02:00
QMK Bot cbe48b67df Merge remote-tracking branch 'origin/master' into develop 2025-03-28 10:04:33 +00:00
lsh4711 5a6595357d
Fix path typo related RP2040 (#25069)
Fix path typo
2025-03-28 21:03:59 +11:00
Nick Brassel 2b00b846dc
Non-volatile memory data repository pattern (#24356)
* First batch of eeconfig conversions.

* Offset and length for datablocks.

* `via`, `dynamic_keymap`.

* Fix filename.

* Commentary.

* wilba leds

* satisfaction75

* satisfaction75

* more keyboard whack-a-mole

* satisfaction75

* omnikeyish

* more whack-a-mole

* `generic_features.mk` to automatically pick up nvm repositories

* thievery

* deferred variable resolve

* whitespace

* convert api to structs/unions

* convert api to structs/unions

* convert api to structs/unions

* fixups

* code-side docs

* code size fix

* rollback

* nvm_xxxxx_erase

* Updated location of eeconfig magic numbers so non-EEPROM nvm drivers can use them too.

* Fixup build.

* Fixup compilation error with encoders.

* Build fixes.

* Add `via_ci` keymap to onekey to exercise VIA bindings (and thus dynamic keymap et.al.), fixup compilation errors based on preprocessor+sizeof.

* Build failure rectification.
2025-03-21 23:38:34 +11:00
Pascal Getreuer 3484f0a0df
[Core] get_keycode_string(): function to format keycodes as strings, for more readable debug logging. (#24787)
* keycode_string(): Format keycodes as strings.

This adds the `keycode_string()` function described in
https://getreuer.info/posts/keyboards/keycode-string/index.html
as a core feature.

* Fix formatting.

* keycode_string review revisions.

* Rename keycode_string() -> get_keycode_string() for consistency with
  existing string utils like get_u8_str().

* Revise custom keycode names with separate _user and _kb tables.

* Correct indent in builddefs/generic_features.mk.

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

* Add KC_NUHS, KC_NUBS, and KC_CAPS.

* Fix linking error with custom names.

* Attempt at simplifying interface.

* Formatting fix.

* Several fixes and revisions.

* Don't use PSTR in KEYCODE_STRING_NAME, since this fails to build on
  AVR. Store custom names in RAM.
* Revise the internal table of common keycode names to use its own
  storage representation, still in PROGMEM, and now more efficiently
  stored flat in 8 bytes per entry.
* Support Swap Hands keycodes and a few other keycodes.

* Revert "Formatting fix."

This reverts commit 2a2771068c7ee545ffac4103aa07e847a9ec3816.

* Revert "Attempt at simplifying interface."

This reverts commit 8eaf67de76e75bc92d106a8b0decc893fbc65fa5.

* Simplify custom names API by sigprof's suggestion.

* Support more keycodes.

* Add QK_LOCK keycode.
* Add Secure keycodes.
* Add Joystick keycodes.
* Add Programmable Button keycodes.
* Add macro MC_ keycodes.
* For remaining keys in known code ranges, stringify them as
  "QK_<feature>+<number>". For instance, "QK_MIDI+7".

* Bug fix and a few improvements.

* Fix missing right-hand bit when displaying 5-bit mods numerically.
* Support KC_HYPR, KC_MEH, HYPR_T(kc), MEH_T(kc).
* Exclude one-shot keycodes when NO_ACTION_ONESHOT is defined.

---------

Co-authored-by: Ryan <fauxpark@gmail.com>
2025-03-19 20:45:56 +01:00
Joel Challis 6e1d3d6d07
Add EOL to non-keyboard files (#24990) 2025-03-06 23:17:51 +00:00
Joel Challis 6ee806f376
Implement battery level interface (#24666)
Co-authored-by: Nick Brassel <nick@tzarc.org>
2025-02-28 16:46:14 +11:00
Nick Brassel 1efc82403b
Community modules (#24848) 2025-02-26 22:25:41 +11:00
Steve Storck c00b0c5bc9
Created SH1107 driver for quantum painter (#24724)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2025-02-17 08:41:07 +11:00
John b69bf4b885
Retro Tapping Re-Write; Key Roll Fix (#23641) 2025-02-16 20:50:42 +11:00
DavidSannier 3ab2b3b6e2
Chaining OSL and MO (#23065) 2025-02-16 20:48:40 +11:00
QMK Bot ae01f1b63e Merge remote-tracking branch 'origin/master' into develop 2025-01-29 19:28:06 +00:00
Drashna Jaelre 8bf01dd796
[OS Detection] Improve MacOS detection (#24708) 2025-01-30 06:25:21 +11:00
Nick Brassel d7fb12164a
Invoke `process_record_via` after `_user`/`_kb` have a chance to handle it. (#24879) 2025-01-30 06:18:07 +11:00
Pascal Getreuer 9d799aff97
[Bug][Core] Fix for Chordal Hold: stuck mods when mod-taps are pressed in a stuttered sequence. (#24878) 2025-01-30 06:17:54 +11:00
Pascal Getreuer 544ddde113
[Core] Add Chordal Hold, an "opposite hands rule" tap-hold option similar to Achordion, Bilateral Combinations. (#24560)
* Chordal Hold: restrict what chords settle as hold

* Chordal Hold: docs and further improvements

* Fix formatting.

* Doc rewording and minor edit.

* Support Chordal Hold of multiple tap-hold keys.

* Fix formatting.

* Simplification and additional test.

* Fix formatting.

* Tighten tests.

* Add test two_mod_taps_same_hand_hold_til_timeout.

* Revise handing of pairs of tap-hold keys.

* Generate a default chordal_hold_layout.

* Document chordal_hold_handedness().

* Add license notice to new and branched files in PR.

* Add `tapping.chordal_hold` property for info.json.

* Update docs/reference_info_json.md

* Revise "hand" jsonschema.

* Chordal Hold: Improved layout handedness heuristic.

This commit improves the heuristic used in generate-keyboard-c for
inferring key handedness from keyboard.json geometry data.

Heuristic summary:

1. If the layout is symmetric (e.g. most split keyboards), guess the
   handedness based on the sign of (x - layout_x_midpoint).

2. Otherwise, if the layout has a key of >=6u width, it is probably the
   spacebar. Form a dividing line through the spacebar, nearly vertical
   but with a slight angle to follow typical row stagger.

3. Otherwise, assume handedness based on the widest horizontal
   separation.

I have tested this strategy on a couple dozen keyboards and found it to
work reliably.

* Use Optional instead of `| None`.

* Refactor to avoid lambdas.

* Remove trailing comma in chordal_hold_layout.

* Minor docs edits.

* Revise to allow combining multiple same-hand mods.

This commit revises Chordal Hold as described in discussion in
https://github.com/qmk/qmk_firmware/pull/24560#discussion_r1894655238

1. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, RCTL_T(KC_A)↑" before the tapping
   term, RCTL_T(KC_A) is settled as tapped.
2. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, RSFT_T(KC_C)↑", both RCTL_T(KC_A)
   and RSFT_T(KC_C) are settled as tapped.
3. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, KC_U↓" (all keys on the same side),
   both RCTL_T(KC_A) and RSFT_T(KC_C) are settled as tapped.
4. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓, LSFT_T(KC_T)↓", with the third key
   on the other side, we allow Permissive Hold or Hold On Other Keypress
   to decide how/when to settle the keys.
5. In "RCTL_T(KC_A)↓, RSFT_T(KC_C)↓" held until the tapping term, the
   keys are settled as held.

1–3 provide same-hand roll protection. 4–5 are for combining multiple
same-hand modifiers.

I've updated the unit tests and have been running it on my keyboard, for
a few hours so far, and all seems good. I really like this scheme. It
allows combining same-side mods, yet it also has roll protection on
streaks. For me, this feels like Achordion, but clearly better streak
handling and improved responsiveness.

* Fix formatting.

* Add a couple tests with LT keys.

* Remove stale use of CHORDAL_HOLD_LAYOUT.

* Fix misspelling lastest -> latest

* Handling tweak for LTs and tests.

* Fix formatting.

* More tests with LT keys.

* Fix formatting.
2025-01-27 12:32:23 +01:00
QMK Bot 2dd2d4eb81 Merge remote-tracking branch 'origin/master' into develop 2025-01-25 03:12:14 +00:00
Drashna Jaelre 6a9ccae18d
Fix missing wait.h include in Dip Switch Map (#24863) 2025-01-25 03:11:38 +00:00
Nick Brassel a6a0dc8039
Consolidate send_string implementations. (#24817) 2025-01-21 08:24:39 +11:00
Joel Challis cedd49c59b
Consolidate timer_elapsed implementations (#24830) 2025-01-19 17:07:11 +00:00
QMK Bot e28799d790 Merge remote-tracking branch 'origin/master' into develop 2025-01-08 16:51:30 +00:00
Drashna Jaelre 80c90a6952
[Bug] Fix Underglow keycode processing (#24798)
Co-authored-by: Ryan <fauxpark@gmail.com>
2025-01-08 08:50:54 -08:00
フィルターペーパー c23e64f551
Refactor Hue Breathing matrix effect with runner (#24525) 2025-01-02 02:23:41 -08:00
Will Spooner b603094995
Add leader_add_user callback (#24266) 2025-01-01 23:12:58 -08:00
フィルターペーパー e016b9b4c5
Update Raindrops effect to respect LED range limits (#24531) 2025-01-01 23:11:28 -08:00
フィルターペーパー cf975e2bfa
Update Starlight matrix effects (#24521) 2025-01-01 23:10:34 -08:00
David Hoelscher 8157b37438
always return audio pin to 0 on ARM (#24503) 2025-01-01 23:10:07 -08:00
QMK Bot d5a0424987
[CI] Regenerate Files (#24772)
Regenerate Files
2025-01-01 02:22:28 +00:00
QMK Bot 1e6eb5e35c Merge remote-tracking branch 'origin/master' into develop 2025-01-01 02:09:51 +00:00
QMK Bot 57f89e5388
[CI] Regenerate Files (#24770)
Regenerate Files
2025-01-01 13:02:16 +11:00
j-hap 38eb643a82
Add keymap-extras for EurKEY layout (#24241)
Co-authored-by: Ryan <fauxpark@gmail.com>
Co-authored-by: Stefan Kerkmann <karlk90@pm.me>
2024-12-23 23:23:51 -08:00
フィルターペーパー e1351b4f4b
Subscript alef correction (#24707)
Output for U+0656 is AltGr + V
2024-12-12 11:01:50 -07:00
Drashna Jaelre b599c78548
Fix Quantum Painter compiliation issues with heavy optimization (#24667) 2024-12-02 16:58:18 +11:00
Joel Challis 36f306b4a5
Provide method to save a single default layer in the full range of 0-31 (#24639) 2024-11-25 07:35:21 +11:00
Joel Challis 4a5bae51cd
[Feature] Add keycode PDF(layer) to set the default layer in EEPROM (#24630)
* [Feature] Add keycode PDF(layer) to set the default layer in EEPROM (#21881)

* Apply suggestions from code review

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

---------

Co-authored-by: Nebuleon <2391500+Nebuleon@users.noreply.github.com>
Co-authored-by: Nick Brassel <nick@tzarc.org>
2024-11-23 10:09:34 +00:00
Joel Challis 968a611476
Review fixes for layer lock feature (#24627) 2024-11-21 13:02:49 +00:00
Drashna Jaelre 36b5559b99
[Core] Add Layer Lock feature (#23430)
Co-authored-by: Daniel <1767914+iamdanielv@users.noreply.github.com>
Co-authored-by: Pascal Getreuer <getreuer@google.com>
Co-authored-by: Pascal Getreuer <50221757+getreuer@users.noreply.github.com>
2024-11-21 17:31:54 +11:00
Ryan 9c86583981
Backward compatibility for new RGB keycode handling (#24490)
Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2024-11-20 09:53:33 +11:00
Nick Brassel 0bda0f4775
Revert removal of `QK_OUTPUT_AUTO`, fixup docs to reflect. (#24593) 2024-11-14 21:16:52 +11:00
Ryan a3cfb1dab7
Joystick: add support for 8-way hat switch (#24515) 2024-11-09 14:10:10 -08:00
Eric N. Vander Weele 9523ed9e32
Expose rgb_matrix_update_pwm_buffers to be available in keymaps (#24573)
* Expose rgb_matrix_update_pwm_buffers to be available in keymaps

Exposing this API enables the examples in the keyboard shutdown/reboot
documentation to compile instead of calling `rgb_matrix_driver.flush`
directly.

* Remove extraneous rgb_matrix_update_pwm_buffers prototype declarations

Now that `rgb_matrix_update_pwm_buffers` is public, there isn't the need
for local prototype declarations.
2024-11-07 23:12:59 -07:00
フィルターペーパー 06b7dce565
Refactor LED Breathing effect with runner (#24540) 2024-10-28 10:56:54 -07:00
フィルターペーパー 25fac5e737
Refactor Breathing effect with runner (#24535) 2024-10-27 23:20:38 -07:00
フィルターペーパー dd7287bf4e
Update Jellybean Raindrops to respect LED range limits (#24534) 2024-10-27 23:20:14 -07:00
フィルターペーパー d9fedce9b9
Update Pixel Rain to respect LED range limits (#24532) 2024-10-27 23:19:45 -07:00
フィルターペーパー 644588baef
Refactor Riverflow matrix effect with runner (#24520)
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-10-27 22:51:01 -07:00
Dasky f5b495e06e
Move pointing device driver code (#24445)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-10-25 18:11:51 +01:00
Ryan bb9625ba55
RGBLight: Improve RGB Test animation (#24477) 2024-10-24 15:27:24 +11:00
Drashna Jaelre baa29fef9d
[Bug] Fix compiliation issues with OS Detection (#24502) 2024-10-19 12:24:42 +02:00
Stefan Kerkmann 3f9d464412
[Core] `usb_device_state`: consolidate usb state handling across implementations (#24258)
* usb_device_state: add idle_rate, led and protocol

Previously all usb drivers and platform implementations (expect for our
oddball atsam) tracked the same two global variables:

- keyboard_protocol: to indicate if we are in report or boot protocol
- keyboard_idle: for the idle_rate of the keyboard endpoint

And a local variable that was exposed trough some indirection:

- keyboard_led_state: for the currently set indicator leds (caps lock etc.)

These have all been moved into the usb_device_state struct wich is
accessible by getters and setters.

This reduces code duplication and centralizes the state management
across platforms and drivers.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>

* usb_device_state: reset protocol on reset

The usb hid specification section 7.2.6 states:

When initialized, all devices default to report protocol. However the
host should not make any assumptions about the device’s state and should
set the desired protocol whenever initializing a device.

Thus on reset we should always do exactly that.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>

* keyboards: fix oversize warnings

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>

---------

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
2024-10-18 09:57:08 +02:00
Stefan Kerkmann 5478051d74
[Core] quantum: util: add bit and bitmask helpers (#24229)
quantum: util: add bit and bitmask helpers

These helpers are handy and can prevent off-by-one errors when working
with registers and general low level bit manipulation tasks. The macros
themself are inspired by the bits.h macros from the linux kernel source
code.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
Co-authored-by: Pascal Getreuer <50221757+getreuer@users.noreply.github.com>
2024-10-12 18:48:00 +02:00
Ryan 6fa11bf219
Separate RGBLight/RGB Matrix keycode handling (#23679)
* Separate RGBLight/RGB Matrix keycode handling

* Remove `_DISABLE_KEYCODES` handling

* Update RGB Matrix keycode docs

* Update underglow keycodes for previously migrated boards

* Update keycodes for boards with custom handling

* Fix typos

* Fix bad merge
2024-10-12 18:43:50 +02:00