Compatibility with FreeBSD
[libpicofe.git] / linux / in_evdev.c
index 08e3596..aca15ad 100644 (file)
 #include <fcntl.h>
 #include <sys/ioctl.h>
 #include <unistd.h>
+#ifdef __FreeBSD__
+#include <dev/evdev/input.h>
+#else
 #include <linux/input.h>
+#endif
 #include <errno.h>
 
 #include "../input.h"
@@ -259,6 +263,7 @@ static void in_evdev_probe(const in_drv_t *drv)
 
 no_abs:
                if (count == 0 && !have_abs) {
+                       free(dev->kbits);
                        free(dev);
                        goto skip;
                }
@@ -290,9 +295,13 @@ static void in_evdev_free(void *drv_data)
 }
 
 static const char * const *
-in_evdev_get_key_names(int *count)
+in_evdev_get_key_names(const in_drv_t *drv, int *count)
 {
+       const struct in_pdata *pdata = drv->pdata;
        *count = KEY_CNT;
+
+       if (pdata->key_names)
+               return pdata->key_names;
        return in_evdev_keys;
 }