diff --git a/bundles/org.openhab.binding.linuxinput/src/main/java/org/openhab/binding/linuxinput/internal/LinuxInputDiscoveryService.java b/bundles/org.openhab.binding.linuxinput/src/main/java/org/openhab/binding/linuxinput/internal/LinuxInputDiscoveryService.java index 2d0da6dad04..365c39bb964 100644 --- a/bundles/org.openhab.binding.linuxinput/src/main/java/org/openhab/binding/linuxinput/internal/LinuxInputDiscoveryService.java +++ b/bundles/org.openhab.binding.linuxinput/src/main/java/org/openhab/binding/linuxinput/internal/LinuxInputDiscoveryService.java @@ -100,7 +100,7 @@ public class LinuxInputDiscoveryService extends AbstractDiscoveryService { return; } DiscoveryResultBuilder result = DiscoveryResultBuilder.create(new ThingUID(THING_TYPE_DEVICE, file.getName())) - .withProperty("path", file.getAbsolutePath()).withRepresentationProperty(file.getName()); + .withProperty("path", file.getAbsolutePath()).withRepresentationProperty("path"); if (ttl != null) { result = result.withTTL(ttl.getSeconds()); } @@ -122,7 +122,7 @@ public class LinuxInputDiscoveryService extends AbstractDiscoveryService { String labelFromDevice = device.getName(); boolean isKeyboard = device.has(EvdevLibrary.Type.KEY); if (labelFromDevice != null) { - label = labelFromDevice; + label = String.format("%s (%s)", labelFromDevice, inputDevice.getName()); } return isKeyboard; } finally { @@ -168,8 +168,10 @@ public class LinuxInputDiscoveryService extends AbstractDiscoveryService { private WatchService makeWatcher() throws IOException { WatchService watchService = FileSystems.getDefault().newWatchService(); + // FIXME also trigger on inotify "ATTRIB" events when WatchService supports this. + // Triggering on ENTRY_MODIFY will trigger multiple times on each keypress for *any* input device. DEVICE_DIRECTORY.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, - StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY); + StandardWatchEventKinds.ENTRY_DELETE); return watchService; }