diff options
-rw-r--r-- | lsinput.c | 18 |
1 files changed, 12 insertions, 6 deletions
@@ -1,5 +1,6 @@ #include <stdio.h> #include <stdlib.h> +#include <sys/stat.h> #include <unistd.h> #include <fcntl.h> @@ -10,14 +11,19 @@ static void list_devices(void) { int i,fd; + char filename[32]; + struct stat statbuf; for (i = 0; i < 32; i++) { - /* try to open */ - fd = device_open(i,1); - if (-1 == fd) - return; - device_info(fd); - close(fd); + snprintf(filename,sizeof(filename), "/dev/input/event%d",i); + if (stat(filename, &statbuf) == 0) { + /* try to open */ + fd = device_open(i,1); + if (-1 == fd) + return; + device_info(fd); + close(fd); + } } return; } |