diff --git a/addon/brailleDisplayDrivers/remote.py b/addon/brailleDisplayDrivers/remote.py index 64faa47..94c238c 100644 --- a/addon/brailleDisplayDrivers/remote.py +++ b/addon/brailleDisplayDrivers/remote.py @@ -10,10 +10,12 @@ from logHandler import log if typing.TYPE_CHECKING: + from ..lib import detection from ..lib import driver from ..lib import protocol else: addon: addonHandler.Addon = addonHandler.getCodeAddon() + detection = addon.loadModule("lib.detection") driver = addon.loadModule("lib.driver") protocol = addon.loadModule("lib.protocol") @@ -22,7 +24,14 @@ class RemoteBrailleDisplayDriver(driver.RemoteDriver, braille.BrailleDisplayDriv # Translators: Name for a remote braille display. description = _("Remote Braille") isThreadSafe = True + supportsAutomaticDetection = True driverType = protocol.DriverType.BRAILLE + _registeredForAutoDetect: bool= False + + @classmethod + def registerAutomaticDetection(cls, driverRegistrar): + driverRegistrar.addDeviceScanner(detection.bgScanRD, moveToStart=True) + cls._registeredForAutoDetect = True def _getModifierGestures(self, model: typing.Optional[str] = None): """Hacky override that throws an instance at the underlying class method. diff --git a/addon/lib/detection.py b/addon/lib/detection.py index 7d030cd..ddf7eca 100644 --- a/addon/lib/detection.py +++ b/addon/lib/detection.py @@ -46,9 +46,15 @@ def bgScanRD( def register(): + from brailleDisplayDrivers.remote import RemoteBrailleDisplayDriver + if RemoteBrailleDisplayDriver._registeredForAutoDetect: + return bdDetect.scanForDevices.register(bgScanRD) bdDetect.scanForDevices.moveToEnd(bgScanRD, last=False) def unregister(): + from brailleDisplayDrivers.remote import RemoteBrailleDisplayDriver + if RemoteBrailleDisplayDriver._registeredForAutoDetect: + return bdDetect.scanForDevices.unregister(bgScanRD)