Commit graph

1239 commits

Author SHA1 Message Date
QMK Bot
ee60542bd6 Merge remote-tracking branch 'origin/master' into develop 2025-11-30 19:25:52 +00:00
QMK Bot
6ed61c65dd
[CI] Format code according to conventions (#25827)
Format code according to conventions
2025-11-30 19:25:13 +00:00
Stefan Kerkmann
c68e4dec10
[Core] suspend: suppress wake up keypress (#23389)
* suspend: suppress wake up keypress

Waking the host from suspend is done by pressing any key on the
keyboard, the regular key codes assigned to the keys are not important
and must not be sent - otherwise they usually end up in password prompts
as ghost characters that have to be deleted again. This commit adds
suppression for all keys pressed at the time of wake up. Once a key is
released it functions as a regular key again.

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

* suspend: update wake up matrix after wake up delay

If USB_SUSPEND_WAKEUP_DELAY is set, the keyboard sleeps during wake up -
which can be up to multiple seconds. To handle key presses and releases
in that time frame we have to handle the following cases:

1. Key not pressed before suspend, and not pressed after wakeup → do
   nothing (normal case).
2. Key not pressed before suspend, but pressed after wakeup → set the
   wakeup_matrix bit to 1 (so that the press and release events would be
   suppressed).
3. Key pressed before suspend, but not pressed after wakeup → do nothing
   (the release event will be generated on the first matrix_task() call
   after the wakeup).
4. Key pressed before suspend, and still pressed after wakeup → do
   nothing (the release event will be generated some time later).

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>

* keyboards: anavi: macropad8: disable snake and rgb_test effects

...to shrink the binary size.
2025-11-11 23:35:03 +11:00
Joel Challis
01952bf39a
Implement minimal connection update logic (#25334) 2025-11-06 23:34:23 +00:00
François Magimel
09ab67c044
docs: fix misspellings (#25555)
* docs: fix misspellings

* docs: do line breaks with HTML instead of spaces

To remove trailing spaces and to avoid breaking things, line breaks can
be done with the HTML br tag.
2025-09-09 14:51:13 -07:00
Joel Challis
bc5c5e3251
Align sleep_led logic (#25395) 2025-06-27 08:17:28 +01:00
Xelus22
096696d86d
[Bug] Fix usb_endpoint_interface_lut multiple def compile err (#25378) 2025-06-18 10:44:49 +01:00
Pablo Martínez
955809bd5a
Add compiler_support.h (#25274) 2025-05-22 23:31:15 +10:00
Joel Challis
cd95294a25
Remove more USB only branches from NKRO handling (#25263) 2025-05-14 22:01:08 +10:00
Joel Challis
88c094908b
Add raw_hid support to host driver (#25255) 2025-05-12 08:38:48 +10: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
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
Joel Challis
b5f8f4d6a2
Align ChibiOS USB_WAIT_FOR_ENUMERATION implementation (#25184) 2025-04-22 14:31:42 +10:00
Joel Challis
c7cb7ba976
Implement connection keycode logic (#25176) 2025-04-21 22:27:56 +01: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
Stefan Kerkmann
8e6bfbfdc2
[Core] chibios: usb_main: remove OTG sof workaround (#24259)
chibios: usb_main: remove OTG sof workaround

With the update of ChibiOS and ChibiOS-Contrib containing fixes for the
OTGv1 LLD the workaround is not necessarry anymore.

Signed-off-by: Stefan Kerkmann <karlk90@pm.me>
2024-12-15 18:42:43 +01:00
Ryan
a3cfb1dab7
Joystick: add support for 8-way hat switch (#24515) 2024-11-09 14:10:10 -08: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
QMK Bot
7e53bb9965 Merge remote-tracking branch 'origin/master' into develop 2024-10-15 14:06:17 +00:00
Ryan
85a7627641
Digitizer: fix units tag in report descriptor (#24482) 2024-10-15 07:05:43 -07:00
eynsai
2cb35373c6
Extended wheel reports (#24422)
extended wheel reports
2024-10-06 11:26:55 +02:00
Nick Brassel
305e7baa71
Allow for get_hardware_id() to be used for serial number. (#24053)
* Allow for `get_hardware_id()` to be used for serial number.

* Length checks.

* Explain length.

* Cleanup.

* Preprocessor magic.

* Use the force, Batman.

* Swap logic; if SERIAL_NUMBER is defined use that, otherwise derive it.

* Cleanup.

* Cleanup.
2024-10-06 21:44:36 +13:00
Nick Brassel
9a8f5a80e4
Remove RING_BUFFERED_6KRO_REPORT_ENABLE due to disuse. (#24433) 2024-09-24 12:53:55 +01:00
Joel Challis
3bd303f204
Remove arm_atsam platform (#24337) 2024-09-02 03:48:17 +01:00
Izumemori
40f2575b56
Fix NKRO and Mouse Emulation on arm_atsam (#23945) 2024-08-13 09:06:24 +10:00
Joel Challis
d0e89aecca
Align LUFA suspend logic (#24055) 2024-07-05 12:02:39 +01:00
Drashna Jaelre
bdca9318f9
Change suspend condition check order on ChibiOS (#24020) 2024-07-04 12:13:00 +10:00
Stefan Kerkmann
8253697a63
[FIX] ChibiOS: USB Digitizer and Joystick IN endpoint compilation (#23854)
Co-authored-by: Ryan <fauxpark@gmail.com>
2024-06-03 22:35:46 +10:00
Joel Challis
16cca527a6
Fix WAIT_FOR_USB handling (#23598) 2024-04-24 19:33:52 +01:00
Robin Carlier
42a725e355
Remove midi_ep_task from ChibiOS (#23162)
Co-authored-by: Joel Challis <git@zvecr.com>
2024-03-28 20:40:41 -07:00
Joel Challis
63dd131d81
Refactor vusb to protocol use pre/post task (#14944) 2024-03-14 21:45:12 +11:00
Stefan Kerkmann
0e02b0c41e
[Core] Refactor ChibiOS USB endpoints to be fully async (#21656) 2024-02-28 22:00:27 +11:00
Ryan
2d1aed78a6
Update GPIO macro usages in core (#23093) 2024-02-18 17:08:27 +11:00
Andre Brait
80f3da36e5
[Core] Add OS detection callbacks (#21777) 2024-02-17 01:19:02 +11:00
Joel Challis
79020519b4
Align VUSB suspend protocol logic (#22688) 2024-02-01 15:33:57 +00:00
QMK Bot
61ed48edc3 Merge remote-tracking branch 'origin/master' into develop 2024-01-22 13:18:51 +00:00
Ryan
3495cbc638
Fix missing joystick.h include (#22946) 2024-01-22 13:18:20 +00:00
Joel Challis
b6b3efc14b
Remove console out endpoint (#22304) 2024-01-09 14:01:34 +00:00
Ryan
4601f339e4
V-USB: implement NKRO (#22398) 2023-11-26 22:50:53 +11:00
Ryan
cbf538aaaa
V-USB: Add generic send_report() function (#22323) 2023-11-26 22:50:21 +11:00
Ryan
87d69aebbb
Slight refactor of joystick axis type into typedef (#22445) 2023-11-12 18:25:18 +11:00
Ryan
6979794bac
Add "AC Next Keyboard Layout Select" consumer usage entry (macOS Globe key) (#22256) 2023-10-31 02:19:53 +00:00
Stefan Kerkmann
5856d5e13b
[Maintenance] USB HID control packet as struct (#21688)
* ChibiOS: USB HID control request as dedicated struct

Instead of accessing the raw USB setup packet and documenting the values
as the corresponding USB HID control request fields we introduce a
struct that allows direct access to the fields. This is safer and self
documenting.

* Rename usb_request.h to usb_types.h

In the future all shared USB data types can live in this file.
2023-10-27 18:44:58 +02:00
Ryan
db4e3bb232
V-USB: Fix GET_IDLE/SET_IDLE (#22332)
Co-authored-by: Sergey Vlasov <sigprof@gmail.com>
2023-10-27 12:21:13 +11:00
Ryan
b7e62af755
V-USB: Implement GET_PROTOCOL and SET_PROTOCOL handling (#22324) 2023-10-25 00:54:43 +01:00
Ryan
0c160e1fba
Separate 6KRO and NKRO report structs (#22267) 2023-10-23 15:43:46 +11:00
Ryan
1bff37781b
Prep work for NKRO report separation (#22268)
* Clean up some keyboard/userspace code

* Rename `KEYBOARD_REPORT_BITS` -> `NKRO_REPORT_BITS`

* Add some missing includes

* Use `PACKED` define for report types

* Fix incorrect function signatures for FlexRAM EEPROM driver
2023-10-14 13:21:20 +02:00
Stefan Kerkmann
fb18ac2b10
[Core] Bump mouse endpoint packet size to 16 bytes (#21711) 2023-09-25 12:27:34 +10:00
Ryan
a74647c1fa
Remove old IS_LED_ON/OFF() macros (#21878) 2023-09-03 03:24:52 +01:00