Solaar/lib/logitech_receiver
Ken Sanislo 38b5665e51 Add support for the G560 Gaming Speaker and speaker devices generally
Recognize all HID++ 2.0 device types: the x0005 DeviceName type table
stopped at receiver (7), so newer types resolved to no kind at all.
Add the remaining official types (the G560 reports 14 = speaker) with
matching HID++ 1.0 compatibility values, and themed icons for
speaker/microphone/webcam.

Name LED zone locations by device kind: the wire location codes are
physical-zone handles whose meaning depends on the device kind — the
existing table (Primary/Logo/Left Side/Right Side) matches mice and
keyboards.  On speakers, codes 1-4 denote the left front, right
front, left rear and right rear lamps.  Setting names derive from the
numeric code and are unchanged, so existing configurations keep
working.

Add the Audio Visualizer LED effect (0x07), the G560's factory
default: pulses lamp brightness with the audio signal.  Wire layout
(hardware-derived): control byte at offset 0 (0 = pulse a fixed
color, 1 = self-cycle hue), RGB at 1-3, BE16 period in ms at 5-6.
Control values >= 2 select unmapped non-pulsing sub-modes and are not
exposed.  The effect has no working intensity parameter; overall
brightness is governed by the separate BRIGHTNESS CONTROL (0x8040)
feature.  Without a param table the effect displayed as Unknown(0x07)
and saved settings mis-split the period across the Cycle layout.

Strip the request echo from LED zone effect reads: GetEffect (0x8070
fn 0xE0) replies with the zone index echoed ahead of the effect slot
and parameters, but the reply was parsed as if it began with the
slot, shifting every readback one byte (only accidentally right when
the zone index happened to match the slot).  HeteroValidator gains a
read_skip_byte_count option.

Repaint saved zone effects when LED Control is re-enabled: the
firmware starts a SW-control session blank, so without this the claim
looks like it did nothing (mirrors RGBControl on 0x8071).

All changes verified against a live G560 (046D:0A78); device scan
included.
2026-07-16 23:06:34 -07:00
..
__init__.py Refactor: Distinguish module from package 2024-09-15 09:18:51 -04:00
advanced_para_eq.py G522 LIGHTSPEED headphones support 2026-05-21 10:13:00 -04:00
base.py G522 LIGHTSPEED headphones support 2026-05-21 10:13:00 -04:00
base_usb.py device: Support per-slot unpair on Lightspeed receivers (CLI + GUI) (#3183) 2026-04-17 09:34:58 -04:00
centurion.py G522 LIGHTSPEED headphones support 2026-05-21 10:13:00 -04:00
centurion_constants.py centurion: support PRO X 2 LIGHTSPEED headphones Centurion features (#3150) 2026-04-14 11:43:23 -04:00
common.py ui: Show offline status for receiver-paired device batteries (#3217) 2026-05-13 17:32:03 -04:00
descriptors.py device: add descriptor for K380 2026-07-04 16:10:52 -04:00
desktop_notifications.py testing: upgrade desktop notifications tests to take notifications availability into account 2025-01-02 10:47:53 -05:00
device.py debug: add warning statements to determine reason for feature request failure 2026-06-09 19:35:00 -04:00
device_quirks.py headset RGB: fix G522 allowlist key — model byte is 0x32, not 0x33 2026-05-21 10:13:00 -04:00
diversion.py rules: remove use of XTest and use uinput in all cases 2026-03-08 20:58:43 -04:00
exceptions.py Use double quotes for module level docstrings 2024-06-02 09:54:21 -04:00
headset_rgb.py G522 LIGHTSPEED headphones support 2026-05-21 10:13:00 -04:00
hidpp10.py cli: Fix crash when showing notification flags. (#3070) 2025-12-12 04:54:10 -05:00
hidpp10_constants.py Add support for the G560 Gaming Speaker and speaker devices generally 2026-07-16 23:06:34 -07:00
hidpp20.py Add support for the G560 Gaming Speaker and speaker devices generally 2026-07-16 23:06:34 -07:00
hidpp20_constants.py Add support for the G560 Gaming Speaker and speaker devices generally 2026-07-16 23:06:34 -07:00
i18n.py Unify imports in logitech package 2024-05-23 16:42:18 -04:00
listener.py debug: add warning statements to determine reason for feature request failure 2026-06-09 19:35:00 -04:00
logivoice.py G522 LIGHTSPEED headphones support 2026-05-21 10:13:00 -04:00
notifications.py G522 LIGHTSPEED headphones support 2026-05-21 10:13:00 -04:00
onboard_eq.py G522 LIGHTSPEED headphones support 2026-05-21 10:13:00 -04:00
receiver.py debug: add warning statements to determine reason for feature request failure 2026-06-09 19:35:00 -04:00
rgb_effects_probe.py Drop 0x0623 probe — feature is unmapped and not in G HUB 2026-05-21 10:13:00 -04:00
rgb_power.py rgb_control: honor the off state — don't auto-claim, init, or shutdown LEDs 2026-05-15 10:45:27 -04:00
settings.py G522 LIGHTSPEED headphones support 2026-05-21 10:13:00 -04:00
settings_new.py settings: add setting for HAPTIC feature 2025-11-12 14:50:46 -05:00
settings_templates.py Add support for the G560 Gaming Speaker and speaker devices generally 2026-07-16 23:06:34 -07:00
settings_validator.py Add support for the G560 Gaming Speaker and speaker devices generally 2026-07-16 23:06:34 -07:00
special_keys.py device: add special keys from Logitech 2025-10-16 20:57:15 -04:00