diff --git a/lib/logitech_receiver/base_usb.py b/lib/logitech_receiver/base_usb.py index 513173da..acc2d631 100644 --- a/lib/logitech_receiver/base_usb.py +++ b/lib/logitech_receiver/base_usb.py @@ -123,7 +123,7 @@ def _lightspeed_receiver(product_id: int) -> dict: "usb_interface": 2, "receiver_kind": "lightspeed", "name": _("Lightspeed Receiver"), - "may_unpair": False, + "may_unpair": True, "re_pairs": True, } diff --git a/lib/solaar/ui/action.py b/lib/solaar/ui/action.py index 58f6dc1a..6751f92b 100644 --- a/lib/solaar/ui/action.py +++ b/lib/solaar/ui/action.py @@ -98,6 +98,10 @@ def unpair(window, device): device_number = device.number try: - del receiver[device_number] + # force=True ensures the unpair register write is issued even on + # re_pairs receivers (Lightspeed, Nano); otherwise _unpair_device + # short-circuits to cache-invalidation only and the slot stays + # bound on the hardware. + receiver._unpair_device(device_number, True) except Exception: common.error_dialog(common.ErrorReason.UNPAIR, device)