diff --git a/lib/logitech_receiver/diversion.py b/lib/logitech_receiver/diversion.py index e933f5ad..b55982e5 100644 --- a/lib/logitech_receiver/diversion.py +++ b/lib/logitech_receiver/diversion.py @@ -21,7 +21,6 @@ import logging import math import numbers import os -import platform import socket import struct import subprocess @@ -39,12 +38,13 @@ import yaml from keysyms import keysymdef -# There is no evdev on macOS or Windows. Diversion will not work without -# it but other Solaar functionality is available. -if platform.system() in ("Darwin", "Windows"): - evdev = None -else: +# evdev is not available on every platform, and is an optional dependency +# elsewhere. Diversion will not work without it but other Solaar +# functionality is available. +try: import evdev +except ImportError: + evdev = None from .common import NamedInt from .hidpp20 import SupportedFeature @@ -257,6 +257,8 @@ else: def setup_uinput(): global udevice + if evdev is None: + return False if udevice is not None: return udevice try: @@ -337,6 +339,8 @@ def simulate_key(code, event): # X11 keycode but Solaar event code def click_uinput(button, count): + if evdev is None: + return False if isinstance(count, int): for _ in range(count): if not simulate_uinput(evdev.ecodes.EV_KEY, button[1], 1):