LogiVoice parameters: _LogiVoiceParametersValidator extends MultipleRangeValidator but Setting.read() calls validate_read(reply) — which neither class defined — so every LogiVoice parameters setting raised AttributeError on read. Add validate_read that wraps the existing validate_read_item using the single-item shape, and key the parsed dict by str(sub_item) so MultipleRangeControl.set_value can find values via v[str(sub_item)] instead of falling back to controls' current zero values. Stale _absent cache: when a feature is cached absent from a prior build but device.features now reports it present, the cache is stale. Drop the entry and retry the probe instead of silently skipping with a config-deletion hint — if the retry still returns None, the existing branch at the end of the loop re-adds it to new_absent. |
||
|---|---|---|
| .. | ||
| hid_parser | ||
| hidapi | ||
| keysyms | ||
| logitech_receiver | ||
| solaar | ||