From 7add22e861f7a97fac210565c5c6a83d58dd0633 Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Fri, 16 Apr 2021 09:27:43 -0400 Subject: [PATCH] settings: don't halt when trying to write invalid map choice --- lib/logitech_receiver/settings.py | 7 ++++--- lib/logitech_receiver/settings_templates.py | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/logitech_receiver/settings.py b/lib/logitech_receiver/settings.py index 60922b1a..9e15df7f 100644 --- a/lib/logitech_receiver/settings.py +++ b/lib/logitech_receiver/settings.py @@ -925,9 +925,10 @@ class ChoicesMapValidator(ChoicesValidator): return reply_value def prepare_write(self, key, new_value): - choices = self.choices[key] - if new_value not in choices and new_value != self.extra_default: - raise ValueError('invalid choice %r' % new_value) + choices = self.choices.get(key) + if choices is None or (new_value not in choices and new_value != self.extra_default): + _log.error('invalid choice %r for %s', new_value, key) + return None new_value = new_value | self.activate return self._write_prefix_bytes + new_value.to_bytes(self._byte_count, 'big') diff --git a/lib/logitech_receiver/settings_templates.py b/lib/logitech_receiver/settings_templates.py index 747e5529..e99f3dd5 100644 --- a/lib/logitech_receiver/settings_templates.py +++ b/lib/logitech_receiver/settings_templates.py @@ -646,7 +646,7 @@ class DivertKeysRW(object): def _feature_divert_keys_callback(device): choices = {} for k in device.keys: - if 'divertable' in k.flags: + if 'divertable' in k.flags and 'virtual' not in k.flags: choices[k.key] = [_NamedInt(0x00, 'Regular'), _NamedInt(0x01, 'Diverted')] if not choices: return None