Description
Summary
Add full lighting controls for Logitech G733 (and related Logitech G633 family devices), including:
- Light color control (named colors, hex, RGB tuple)
- Light brightness control (1-100)
- Light mode selection (
static, breathing, wave)
- Light speed control for animated modes (
breathing, wave)
This extends current light support beyond simple on/off behavior.
Problem
Current lighting control is limited to toggling LEDs on or off.
For G733 users, this is not enough because the headset supports richer effects and parameterized lighting.
Proposed Solution
Introduce dedicated light capabilities and CLI options:
-
Color
- New capability:
CAP_LIGHT_COLOR
- New option:
--light-color
- Accepts:
- named colors:
red, green, blue, light-blue, yellow, purple, teal, orange, etc.
- hex:
#RRGGBB
- tuple:
R,G,B
-
Brightness
- New capability:
CAP_LIGHT_BRIGHTNESS
- New option:
--light-brightness <1-100>
-
Mode
- New capability:
CAP_LIGHT_MODE
- New option:
--light-mode <static|breathing|wave>
-
Speed
- New capability:
CAP_LIGHT_SPEED
- New option:
--light-speed <1-100>
- Applied only to animated modes (
breathing, wave)
Implementation Notes
- Added new light-related capabilities in core capability enum and descriptors.
- Added handler registry execution paths for each new capability.
- Added base virtual APIs in
HIDDevice for:
setLightColor()
setLightBrightness()
setLightMode()
setLightSpeed()
- Implemented Logitech G633 family behavior in
logitech_g633_g933_935.hpp.
- Corrected G733 color channel mapping so color output matches requested values.
- Added help output entries so new options show up in CLI help.
- Updated C API capability enum indexes in
lib/headsetcontrol_c.h to stay aligned with C++ capabilities.
CLI Usage Examples
# Basic color
headsetcontrol --light-color red
headsetcontrol --light-color "#00aaff"
headsetcontrol --light-color 255,128,0
# Brightness
headsetcontrol --light-brightness 60
# Mode
headsetcontrol --light-mode static
headsetcontrol --light-mode breathing
headsetcontrol --light-mode wave
# Mode speed (animated modes)
headsetcontrol --light-mode breathing --light-speed 25
headsetcontrol --light-mode wave --light-speed 80
Backward Compatibility
- Existing
-l/--light on/off behavior remains available.
- New options are additive.
--light-speed is meaningful for animated modes and ignored for static.
Test Plan
- Verify color accuracy on G733:
- red, green, blue, yellow, purple, cyan/light-blue
- Verify brightness range:
- test min/mid/max: 1, 50, 100
- Verify mode switching:
- static <-> breathing <-> wave
- Verify speed responsiveness:
- animated modes with 10, 50, 90
- Verify old behavior:
--light 0 and --light 1 still function
- Verify validation:
- reject invalid RGB, invalid mode strings, out-of-range speed/brightness
Motivation / User Value
This makes headset lighting actually configurable in a practical way and closes a common gap for G733 users migrating from vendor software.
It improves parity with device capabilities and makes HeadsetControl significantly more useful for daily customization.
Description
Summary
Add full lighting controls for Logitech G733 (and related Logitech G633 family devices), including:
static,breathing,wave)breathing,wave)This extends current light support beyond simple on/off behavior.
Problem
Current lighting control is limited to toggling LEDs on or off.
For G733 users, this is not enough because the headset supports richer effects and parameterized lighting.
Proposed Solution
Introduce dedicated light capabilities and CLI options:
Color
CAP_LIGHT_COLOR--light-colorred,green,blue,light-blue,yellow,purple,teal,orange, etc.#RRGGBBR,G,BBrightness
CAP_LIGHT_BRIGHTNESS--light-brightness <1-100>Mode
CAP_LIGHT_MODE--light-mode <static|breathing|wave>Speed
CAP_LIGHT_SPEED--light-speed <1-100>breathing,wave)Implementation Notes
HIDDevicefor:setLightColor()setLightBrightness()setLightMode()setLightSpeed()logitech_g633_g933_935.hpp.lib/headsetcontrol_c.hto stay aligned with C++ capabilities.CLI Usage Examples
Backward Compatibility
-l/--lighton/off behavior remains available.--light-speedis meaningful for animated modes and ignored forstatic.Test Plan
--light 0and--light 1still functionMotivation / User Value
This makes headset lighting actually configurable in a practical way and closes a common gap for G733 users migrating from vendor software.
It improves parity with device capabilities and makes HeadsetControl significantly more useful for daily customization.