Add initial support for HyperX Cloud III S Wireless (PID 0x06BE).
Working features:
- Mic mute control via --mute true/false
- Button event detection (volume up/down, play/pause)
Not yet implemented (protocol not discovered):
- Battery level query
- Sidetone control
- Auto-shutdown timer
Cloud III S uses a different protocol than Cloud III:
- Header 0x05 for mic control (20-byte packets)
- Header 0x0f for button events (2-byte incoming)
- Does not respond to Cloud III protocol (0x66 header)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Changed DeviceState Display trait to use to_string_with_readonly_info()
instead of to_string_with_padding().
This allows CLI users to see which features are hardware-limited before
attempting to use them, providing helpful context and reducing confusion
about why certain commands might not work.
The tray application continues to use to_string_with_padding() since
it's display-only and doesn't allow user interaction.
Implements Option A as discussed in PR #14
The tray application is display-only and doesn't allow users to change
any settings. Therefore, showing (read-only) markers doesn't provide
value since all fields are implicitly read-only in this context.
Changed to_string_with_readonly_info() back to to_string_with_padding()
for the tray display.
Addresses PR #14 review comment from @LennardKittner
Create helper function get_display_data() that returns the device data
array with 4-tuple format (prefix, value, suffix, readonly_flag).
Both to_string_with_padding() and to_string_with_readonly_info() now
call this helper function:
- to_string_with_padding() ignores the readonly flag
- to_string_with_readonly_info() uses it to add (read-only) markers
This eliminates ~100 lines of duplicated code and makes the codebase
easier to maintain.
Addresses PR #14 review comment from @LennardKittner