Commit Graph

2397 Commits

Author SHA1 Message Date
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
フィルターペーパー
8844fba607
Update combo user function variable (#24467) 2024-10-12 00:13:31 +01:00
Ryan
6129af93f4
Rename RGB and HSV structs (#24471) 2024-10-12 00:10:02 +01:00
QMK Bot
29bc842fe2 Merge remote-tracking branch 'origin/master' into develop 2024-10-10 19:55:27 +00:00
Drashna Jaelre
49a1a12a32
Expand count checks in keymap introspection (#24464)
* Add check Tap Dance count check to keymap introspection

* Add checks for combos and key overrides to introspection
2024-10-11 06:54:53 +11:00
eynsai
2cb35373c6
Extended wheel reports (#24422)
extended wheel reports
2024-10-06 11:26:55 +02:00
Andre Brait
7f475b590a
Tweak OS detect, add OS_DETECTION_SINGLE_REPORT (#24379)
* Default OS_DETECTION_DEBOUNCE bumped from 200ms to 250ms
* Add OS_DETECTION_SINGLE_REPORT to prevent undesired multiple reports
* Prevents random stability issues on ARM MacBooks after switching via KVM
* Works for every device I could test, including ARM MacBooks
* Disabled by default to keep current behavior
* Add Troubleshooting section on documentation
* Tweak reset logic to prevent a freeze with some KVMs

The USB stack on ARM MacBooks is more similar to that of iOS and,
for some reason, it seems to like sending packets that influence
the OS detection and results in a second OS_MACOS report being sent
at a random period of time after plugging the keyboard back. This
does not always happen and the consequences of this vary based on
what the user is doing in the callback, but since this is not
obvious and it's hard to debug, I've decided to add a flag for
those affected by such issue. The stability issue I had in mine was
a combination of factors and I found the actual cause being my own
bad math when changing the default layer, but this change alone is
also confirmed to fix it. Lastly, soem KVMs seem to leave the USB
controlled in a suspended state when cold-booting Windows, meaning
the keyboard would hang and the reset logic would not work. This
tunes it so that it can get out of such state. Also retested for
compatibility with my old KVM to ensure the logic works for both.
2024-10-06 21:50:39 +13:00
Andre Brait
3cf94cb308
Add easier way to set default single layer (#24376)
* Add set_single_default_layer to match set_single_persistent_default_layer
* Implements exactly the same behavior, except the write to EEPROM
2024-10-06 21:39:21 +13:00
Ryan
208ebf54a9
WS2812 API rework (#24364)
* Begin WS2812 API rework

* Move RGBW conversion, clean up color.h, fix RGBW for AVR bitbang

* Formatting & update PS2AVRGB I2C driver (untested)

* Tested ARM bitbang RGB+RGBW

* Tested ARM SPI RGB - RGBW not working

* Tested ARM PWM RGB+RGBW

* Tested RP2040 PIO driver RGB+RGBW

* Update RGBLight

* Formatting

* Fix BM60HSRGB rev2

* Fix oddforge/vea

* Fix 1k and XD002 RGBLite

* Fix model_m/mschwingen

* Fix handwired/promethium

* Rename `WS2812_LED_TOTAL` for BM60HSRGB

* Fix work_louder boards

* Fix dawn60

* Fix rgbkb/pan

* Fix neson_design/700e and n6

* Fix ergodox_ez/shine

* ergodox_ez/shine: invert indices for left half

* Fix matrix/abelx

* Fix matrix/m20add

* Remove custom rgblight driver for matrix/noah - should be done with lighting layers

* Fix LED indexes for RGBLight split

* Rename `convert_rgb_to_rgbw()` to `ws2812_rgb_to_rgbw()`

* Update WS2812 API docs

* `ergodox_ez/shine`: simplify LED index calculation

* LED/RGB Matrix: Add weak function for LED index resolution

* Bandaid fix for RGB Matrix splits not using WS2812

* `steelseries/prime_plus`: redo custom RGBLight driver

* Update keyboards/steelseries/prime_plus/rgblight_custom.c

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

---------

Co-authored-by: Dasky <32983009+daskygit@users.noreply.github.com>
2024-10-06 21:01:07 +13:00
Dasky
49e339ba8d
Add LD7032 support to QP. (#20828)
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2024-09-18 21:44:33 +10:00
Ryan
e84104fe8d
Reinstate global k_rgb_matrix_split (#24388) 2024-09-15 10:08:29 +10:00
Filios92
0fd9909657
Add combo key repress feature (#22858)
Co-authored-by: jack <jack@pngu.org>
2024-09-05 23:27:20 -07:00
Joel Challis
3bd303f204
Remove arm_atsam platform (#24337) 2024-09-02 03:48:17 +01:00
Thomas Weißschuh
9df36b25da
Remove global k_rgb_matrix_split (#24348)
All users have their own local definition.
2024-08-31 21:45:49 -06:00
Nick Brassel
70cbf08b67
Add new connection keycodes for Bluetooth, 2.4GHz. (#24251) 2024-08-27 10:52:23 +10:00
フィルターペーパー
11f2209087
Segregrate keycode at pre-process record quantum (#24194) 2024-08-26 10:20:30 +10:00
フィルターペーパー
21b84596e7
Enhance overlapping mouse keys control (#23341)
Enhance the overlapping mouse key press acceleration (introduced in #21494) with user preprocessor controls.
2024-08-19 03:18:28 +01:00
Drashna Jaelre
ab4c13e835
Add dynamic macro keyboard callbacks (#24142) 2024-08-18 01:35:10 +01:00
フィルターペーパー
822a4580f4
Refactor starlight RGB matrix effects (#24202)
* Use unsigned integers
* Use lib8tion random8 function
* Test for valid LED flags
* Use rgb_matrix_hsv_to_rgb function
2024-08-14 00:55:00 +01:00
フィルターペーパー
91f293d0c7
Refactor riverflow RGB matrix loop (#24203)
Check for LED flags at the start of loop to skip early
2024-08-14 00:54:01 +01:00
フィルターペーパー
59c275afbc
Check LED flags for Pixel Fractal effect (#23881) 2024-07-23 19:34:00 +01:00
Nick Brassel
8abaa3bc2d
Add support for key override introspection. (#24120) 2024-07-16 09:22:17 +10:00
Ryan
1552cf2ddc
Update atomic GPIO macros in keyboard custom matrix (#23796) 2024-07-13 18:41:05 +10:00
Nick Brassel
4ae0ca5a11
Tap dance introspection (#24049) 2024-07-06 00:57:54 +01:00
Ryan
f8596b40a4
Normalise mouse keycodes (#23975) 2024-07-03 18:35:54 +10:00
Ryan
bc0c69570b
Rename encoder pins defines (#24003) 2024-07-03 17:18:27 +10:00
Joel Challis
cb39df273d
Remove deprecated led_set_user (#23979) 2024-06-22 09:10:58 +01:00
Amir
751a6b5bc4
add farsi keymap extras (#23650) 2024-06-20 16:12:16 -07:00
Ryan
55538b2e1e
APA102: API rework (#23355) 2024-06-13 22:19:45 +10:00
Ryan
c4a74be7f0
Add process_keycode handlers for new RGB Matrix and Underglow keycodes (#23896) 2024-06-13 21:59:46 +10:00
Fernando Birra
a82b0628b3
GC9xxx LCD family drivers (GC9107 and GC9A01) (#23091)
Co-authored-by: Nick Brassel <nick@tzarc.org>
Co-authored-by: jack <0x6A73@pm.me>
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: フィルターペーパー <76888457+filterpaper@users.noreply.github.com>
Co-authored-by: rookiebwoy <81021475+rookiebwoy@users.noreply.github.com>
Fixup boardsource/equals (#23106)
Fix make clean test:os_detection (#23112)
Fix make clean test:os_detection (#23112)"
Fixup boardsource/equals (#23106)"
2024-06-05 08:41:26 +10:00
Purdea Andrei
267dffda15
EEPROM: Don't erase if we don't have to. Adding eeprom_driver_format abstraction. (#18332) 2024-05-28 12:49:55 +01:00
Skyler Hawthorne
a29f665769
Insert delay between shifted chars in send_string_with_delay for AVR (#23673) 2024-05-18 21:37:33 -07:00
QMK Bot
a871dab668 Merge remote-tracking branch 'origin/master' into develop 2024-05-17 22:00:13 +00:00
Dasky
47bc02b2ff
Force CPI update using timer when using split pointing. (#23545) 2024-05-17 22:59:45 +01:00
Ryan
a9ba83c7be
Remove useless LED/RGB_MATRIX_ENABLE ifdefs (#23726) 2024-05-16 12:52:15 +01:00
Ryan
224ff1d262
Normalise RGBLight (underglow) keycodes (#23656) 2024-05-07 18:36:50 +10:00
Stefan Kerkmann
5daae4bee9
split_util: rename usbIsActive to usb_bus_detected (#23657)
split_util: rename usbIsActive to usb_bus_detected

This follows the style rules and better reflects the intent.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
2024-05-05 08:17:22 +01:00
Ryan
b7d5a6c50b
Add new set of keycodes for RGB Matrix (#23463) 2024-05-04 16:49:19 +10:00
Pavel Kroupa
1fc4bfa313
Add MacOS Czech ISO and ANSI keymaps #23346 (#23412) 2024-04-30 23:53:30 -07:00
Ryan
0ff53b2498
Rename RGBW define to WS2812_RGBW (#23585) 2024-04-28 00:36:54 +10:00
QMK Bot
82f7e7d7fe Merge remote-tracking branch 'origin/master' into develop 2024-04-26 23:29:05 +00:00
Sergey Vlasov
2224a768d5
Fix encoder breakage with 4 or more encoders (#23595) 2024-04-27 09:28:29 +10:00
Ryan
bbf63a8466
LED Matrix: replace backlight keycodes with newly added ones (#23455) 2024-04-13 04:15:22 +01:00
Ryan
52d3ef0fe4
Add new set of keycodes for LED Matrix (#23432) 2024-04-11 14:14:02 +10:00
Ryan
25f608c1b4
Separate keycode handling for LED Matrix and Backlight (#23426) 2024-04-11 14:06:36 +10:00
NoOne2246
b99143fdd2
Oneshot locked mods split transaction (#23434) 2024-04-08 12:55:42 -06:00
Ryan
9fa91ad494
Rename process_{led,rgb}_matrix() (#23422) 2024-04-05 15:43:52 +01:00