diff --git a/lib/logitech_receiver/hidpp20.py b/lib/logitech_receiver/hidpp20.py index 3b1ad229..98921b5e 100644 --- a/lib/logitech_receiver/hidpp20.py +++ b/lib/logitech_receiver/hidpp20.py @@ -838,18 +838,32 @@ class Param(object): self.size = high & 0x0F self.show_in_ui = bool(high & 0x1F) self._value = None + self._default_value = None self.index = Param.param_index Param.param_index += 1 + @property def value(self): return self._value if self._value is not None else self.read() def read(self): # returns the bytes for the parameter result = feature_request(self._device, FEATURE.GESTURE_2, 0x70, self.index, 0xFF) if result: - self._value = result[:self.size] + self._value = _bytes2int(result[:self.size]) return self._value + @property + def default_value(self): + if self._default_value is None: + self._default_value = self._read_default() + return self._default_value + + def _read_default(self): + result = feature_request(self._device, FEATURE.GESTURE_2, 0x60, self.index, 0xFF) + if result: + self._default_value = _bytes2int(result[:self.size]) + return self._default_value + def write(self, bytes): self._value = bytes return feature_request(self._device, FEATURE.GESTURE_2, 0x80, self.index, bytes, 0xFF) @@ -916,7 +930,6 @@ class Gestures(object): elif field_high & 0xF0 == 0x40: spec = Spec(device, field_low, field_high) self.specs[spec.spec] = spec - print(spec) else: _log.warn(f'Unimplemented GESTURE_2 field {field_low} {field_high} found.') index += 1 diff --git a/lib/solaar/cli/show.py b/lib/solaar/cli/show.py index eae79247..472d4e22 100644 --- a/lib/solaar/cli/show.py +++ b/lib/solaar/cli/show.py @@ -211,7 +211,7 @@ def _print_device(dev, num=None): for k in dev.gestures.gestures.values(): print(' %-26s Enabled (%4s): %s' % (k.gesture, k.index, k.enabled())) for k in dev.gestures.params.values(): - print(' %-26s Value (%4s): %s' % (k.param, k.index, k.value())) + print(' %-26s Value (%4s): %s [Default: %s]' % (k.param, k.index, k.value, k.default_value)) for k in dev.gestures.specs.values(): print(' %-26s Spec (%4s): %s' % (k.spec, k.id, k.value)) if dev.online: