From faf905de9c4a51da2a6ec7fc91b1942a71fa4365 Mon Sep 17 00:00:00 2001 From: "Peter F. Patel-Schneider" Date: Wed, 23 Feb 2022 09:38:08 -0500 Subject: [PATCH] settings: add setting for M-Key LEDs --- lib/logitech_receiver/settings_templates.py | 30 ++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/lib/logitech_receiver/settings_templates.py b/lib/logitech_receiver/settings_templates.py index cc1c8ec3..627be712 100644 --- a/lib/logitech_receiver/settings_templates.py +++ b/lib/logitech_receiver/settings_templates.py @@ -986,6 +986,33 @@ class Gesture2Params(_LongSettings): return cls(items, sub_items) +class MKeyLEDs(_BitFieldSetting): + name = 'm-key-leds' + label = _('M-Key LEDs') + description = _('Control the M-Key LEDs.') + feature = _F.MKEYS + choices_universe = _NamedInts() + for i in range(8): + choices_universe[1 << i] = 'M' + str(i + 1) + _labels = {k: (None, _('Lights up the %s key.') % k) for k in choices_universe} + print('MKEYS CHOICES UNIVERSE', choices_universe, _labels) + + class rw_class(_FeatureRW): + def __init__(self, feature): + super().__init__(feature, write_fnid=0x10) + + def read(self, device): # no way to read, so just assume off + return b'\x00' + + class validator_class(_BitFieldV): + @classmethod + def build(cls, setting_class, device): + number = device.feature_request(setting_class.feature, 0x00)[0] + options = [setting_class.choices_universe[1 << i] for i in range(number)] + print('NUMBER OF MKEYS', number, options) + return cls(options) if options else None + + SETTINGS = [ RegisterHandDetection, # simple RegisterSmoothScroll, # simple @@ -1015,7 +1042,8 @@ SETTINGS = [ DisableKeyboardKeys, # working DivertCrown, # working CrownSmooth, # working - DivertGkeys, + DivertGkeys, # working + MKeyLEDs, Multiplatform, # working DualPlatform, # simple ChangeHost, # working