From 12ecef004e0ae8b0a08286ecc2ff71a0c14e2461 Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Fri, 21 Aug 2020 16:59:19 -0400 Subject: [PATCH] receiver: gather and show PERSISTENT_REMAPPABLE_ACTION information --- lib/logitech_receiver/device.py | 8 ++++++++ lib/logitech_receiver/receiver.py | 1 - lib/solaar/cli/show.py | 7 +++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/lib/logitech_receiver/device.py b/lib/logitech_receiver/device.py index 543e7511..6c5b0b41 100644 --- a/lib/logitech_receiver/device.py +++ b/lib/logitech_receiver/device.py @@ -74,6 +74,7 @@ class Device: self._firmware = None self._keys = None + self._remap_keys = None self._gestures = None self._gestures_lock = _threading.Lock() self._registers = None @@ -294,6 +295,13 @@ class Device: self._keys = _hidpp20.get_keys(self) or () return self._keys + @property + def remap_keys(self): + if self._remap_keys is None: + if self.online and self.protocol >= 2.0: + self._remap_keys = _hidpp20.get_remap_keys(self) or () + return self._remap_keys + @property def gestures(self): if self._gestures is None: diff --git a/lib/logitech_receiver/receiver.py b/lib/logitech_receiver/receiver.py index b8c7b3c9..08cd379d 100644 --- a/lib/logitech_receiver/receiver.py +++ b/lib/logitech_receiver/receiver.py @@ -39,7 +39,6 @@ _IR = _hidpp10.INFO_SUBREGISTERS # # - class Receiver: """A Unifying Receiver instance. diff --git a/lib/solaar/cli/show.py b/lib/solaar/cli/show.py index 85b2f0b3..e721325e 100644 --- a/lib/solaar/cli/show.py +++ b/lib/solaar/cli/show.py @@ -252,6 +252,13 @@ def _print_device(dev, num=None): report_fmt = ', '.join(k.mapping_flags) report_fmt = report_fmt if report_fmt else 'default' print(' reporting: %s' % (report_fmt)) + if dev.online and dev.remap_keys: + print(' Has %d persistent remappable keys:' % len(dev.remap_keys)) + for k in dev.remap_keys: + print( + ' %2d: %4d %-26s => %s%s' % + (k.index, int(k.key), k.key, k.action, ' (remapped)' if k.cidStatus else '') + ) if dev.online and dev.gestures: print( ' Has %d gesture(s), %d param(s) and %d spec(s):' %