diff --git a/lib/logitech_receiver/settings.py b/lib/logitech_receiver/settings.py index 5e4764ba..df91ccc7 100644 --- a/lib/logitech_receiver/settings.py +++ b/lib/logitech_receiver/settings.py @@ -61,7 +61,7 @@ class Setting(object): def __call__(self, device): assert not hasattr(self, '_value') - assert self.device_kind is None or self.device_kind == device.kind + assert self.device_kind is None or device.kind in self.device_kind p = device.protocol if p == 1.0: # HID++ 1.0 devices do not support features diff --git a/lib/logitech_receiver/settings_templates.py b/lib/logitech_receiver/settings_templates.py index db49ae01..5407f284 100644 --- a/lib/logitech_receiver/settings_templates.py +++ b/lib/logitech_receiver/settings_templates.py @@ -146,60 +146,60 @@ def _register_hand_detection(register=_R.keyboard_hand_detection, true_value=b'\x00\x00\x00', false_value=b'\x00\x00\x30', mask=b'\x00\x00\xFF'): return register_toggle(_HAND_DETECTION[0], register, true_value=true_value, false_value=false_value, label=_HAND_DETECTION[1], description=_HAND_DETECTION[2], - device_kind=_DK.keyboard) + device_kind=(_DK.keyboard,)) def _register_fn_swap(register=_R.keyboard_fn_swap, true_value=b'\x00\x01', mask=b'\x00\x01'): return register_toggle(_FN_SWAP[0], register, true_value=true_value, mask=mask, label=_FN_SWAP[1], description=_FN_SWAP[2], - device_kind=_DK.keyboard) + device_kind=(_DK.keyboard,)) def _register_smooth_scroll(register=_R.mouse_button_flags, true_value=0x40, mask=0x40): return register_toggle(_SMOOTH_SCROLL[0], register, true_value=true_value, mask=mask, label=_SMOOTH_SCROLL[1], description=_SMOOTH_SCROLL[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) def _register_side_scroll(register=_R.mouse_button_flags, true_value=0x02, mask=0x02): return register_toggle(_SIDE_SCROLL[0], register, true_value=true_value, mask=mask, label=_SIDE_SCROLL[1], description=_SIDE_SCROLL[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) def _register_dpi(register=_R.mouse_dpi, choices=None): return register_choices(_DPI[0], register, choices, label=_DPI[1], description=_DPI[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) def _feature_fn_swap(): return feature_toggle(_FN_SWAP[0], _F.FN_INVERSION, label=_FN_SWAP[1], description=_FN_SWAP[2], - device_kind=_DK.keyboard) + device_kind=(_DK.keyboard,)) def _feature_new_fn_swap(): return feature_toggle(_FN_SWAP[0], _F.NEW_FN_INVERSION, label=_FN_SWAP[1], description=_FN_SWAP[2], - device_kind=_DK.keyboard) + device_kind=(_DK.keyboard,)) def _feature_k375s_fn_swap(): return feature_toggle(_FN_SWAP[0], _F.K375S_FN_INVERSION, label=_FN_SWAP[1], description=_FN_SWAP[2], - device_kind=_DK.keyboard) + device_kind=(_DK.keyboard,)) def _feature_smooth_scroll(): return feature_toggle(_SMOOTH_SCROLL[0], _F.HI_RES_SCROLLING, label=_SMOOTH_SCROLL[1], description=_SMOOTH_SCROLL[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) def _feature_lowres_smooth_scroll(): return feature_toggle(_SMOOTH_SCROLL[0], _F.LOWRES_WHEEL, label=_SMOOTH_SCROLL[1], description=_SMOOTH_SCROLL[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) def _feature_hires_smooth_invert(): return feature_toggle(_HIRES_INV[0], _F.HIRES_WHEEL, read_function_id=0x10, write_function_id=0x20, true_value=0x04, mask=0x04, label=_HIRES_INV[1], description=_HIRES_INV[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) def _feature_hires_smooth_resolution(): return feature_toggle(_HIRES_RES[0], _F.HIRES_WHEEL, @@ -207,7 +207,7 @@ def _feature_hires_smooth_resolution(): write_function_id=0x20, true_value=0x02, mask=0x02, label=_HIRES_RES[1], description=_HIRES_RES[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) def _feature_smart_shift(): _MIN_SMART_SHIFT_VALUE = 0 @@ -243,7 +243,7 @@ def _feature_smart_shift(): bytes_count=1, rw=_SmartShiftRW(_F.SMART_SHIFT), label=_SMART_SHIFT[1], description=_SMART_SHIFT[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) def _feature_adjustable_dpi_choices(device): # [1] getSensorDpiList(sensorIdx) @@ -278,7 +278,7 @@ def _feature_adjustable_dpi(): write_function_id=0x30, bytes_count=3, label=_DPI[1], description=_DPI[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) def _feature_pointer_speed(): """Pointer Speed feature""" @@ -288,7 +288,7 @@ def _feature_pointer_speed(): write_function_id=0x10, bytes_count=2, label=_POINTER_SPEED[1], description=_POINTER_SPEED[2], - device_kind=_DK.mouse) + device_kind=(_DK.mouse, _DK.trackball)) # # # diff --git a/lib/solaar/cli/__init__.py b/lib/solaar/cli/__init__.py index b94029a7..25001d8e 100644 --- a/lib/solaar/cli/__init__.py +++ b/lib/solaar/cli/__init__.py @@ -155,5 +155,9 @@ def run(cli_args=None, hidraw_path=None): from importlib import import_module m = import_module('.' + action, package=__name__) m.run(c, args, _find_receiver, _find_device) + except AssertionError as e: + from traceback import extract_tb + tb_last = extract_tb(_sys.exc_info()[2])[-1] + _sys.exit('%s: assertion failed: %s line %d' % (NAME.lower(), tb_last[0], tb_last[1])) except Exception as e: _sys.exit('%s: error: %s' % (NAME.lower(), e))