Solaar/lib
Ken Sanislo 0dfc7a22fa Force FeaturesArray for Centurion devices regardless of reported protocol
Device.__init__ creates self.features as an empty dict ({}) when the
reported _protocol is <2.0, reserving FeaturesArray for HID++ 2.0.

The protocol floor in the protocol property only helps code paths that
access the property (e.g. feature_request's `if self.protocol >= 2.0`).
But __init__ reads the raw self._protocol attribute, so a wired G522
(reports 1.1) ends up with self.features = {}.

When solaar show later triggers `self.features._check()` inside
feature_request, the dict has no _check method → AttributeError →
crashes `solaar show` for the wired G522.

Fix: use FeaturesArray unconditionally when the device is Centurion.
The protocol version reported by these dongles is cosmetic — all
Centurion devices speak HID++ 2.0 features.
2026-04-16 23:18:18 -07:00
..
hid_parser
…
hidapi
…
keysyms
…
logitech_receiver
…
solaar Fix G522 0x50 Centurion init failure and protocol version crash 2026-04-15 23:00:45 -07:00