diff --git a/keymapper/getdevices.py b/keymapper/getdevices.py index 07f88419..52db85da 100644 --- a/keymapper/getdevices.py +++ b/keymapper/getdevices.py @@ -61,6 +61,10 @@ class _GetDevicesProcess(multiprocessing.Process): # "Logitech USB Keyboard" and "Logitech USB Keyboard Consumer Control" grouped = {} for device in devices: + if device.phys.startswith('key-mapper'): + # injector device, not really periphery + continue + # only keyboard devices # https://www.kernel.org/doc/html/latest/input/event-codes.html capabilities = device.capabilities().keys() @@ -80,7 +84,7 @@ class _GetDevicesProcess(multiprocessing.Process): if grouped.get(usb) is None: grouped[usb] = [] - logger.debug('Adding %s', device.path) + logger.debug('Found "%s", %s, %s', device.name, device.path, usb) grouped[usb].append((device.name, device.path)) diff --git a/keymapper/injector.py b/keymapper/injector.py index 709cd790..e3b8ffb9 100644 --- a/keymapper/injector.py +++ b/keymapper/injector.py @@ -108,6 +108,7 @@ class KeycodeInjector: keymapper_device = evdev.UInput( name=f'key-mapper {device.name}', + phys='key-mapper', events=capabilities ) diff --git a/tests/test.py b/tests/test.py index 024e7517..39648748 100644 --- a/tests/test.py +++ b/tests/test.py @@ -114,6 +114,14 @@ def patch_evdev(): 'phys': 'usb-0000:03:00.0-3/input1', 'name': 'device 3' }, + + # key-mapper devices are also ignored, another instance of key-mapper + # started injecting apparently. + '/dev/input/event40': { + 'capabilities': {evdev.ecodes.EV_KEY: []}, + 'phys': 'key-mapper/input1', + 'name': 'key-mapper device 2' + }, } def list_devices():