2413 Commits

Author SHA1 Message Date
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
フィルターペーパー
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