Support EV_REP values through libevdev_get_event_value
[platform/upstream/libevdev.git] / libevdev / libevdev.c
index bc041e2..60bbbfc 100644 (file)
 
 #define MAXEVENTS 64
 
-/* DEPRECATED */
-LIBEVDEV_EXPORT const enum libevdev_read_flag LIBEVDEV_READ_SYNC = LIBEVDEV_READ_FLAG_SYNC;
-LIBEVDEV_EXPORT const enum libevdev_read_flag LIBEVDEV_READ_NORMAL = LIBEVDEV_READ_FLAG_NORMAL;
-LIBEVDEV_EXPORT const enum libevdev_read_flag LIBEVDEV_FORCE_SYNC = LIBEVDEV_READ_FLAG_FORCE_SYNC;
-LIBEVDEV_EXPORT const enum libevdev_read_flag LIBEVDEV_READ_BLOCKING = LIBEVDEV_READ_FLAG_BLOCKING;
-
 static int sync_mt_state(struct libevdev *dev, int create_events);
 
 static int
@@ -885,9 +879,9 @@ LIBEVDEV_EXPORT void libevdev_set_##field(struct libevdev *dev, const char *fiel
        dev->field = strdup(field); \
 }
 
-STRING_SETTER(name);
-STRING_SETTER(phys);
-STRING_SETTER(uniq);
+STRING_SETTER(name)
+STRING_SETTER(phys)
+STRING_SETTER(uniq)
 
 
 #define PRODUCT_GETTER(name) \
@@ -896,10 +890,10 @@ LIBEVDEV_EXPORT int libevdev_get_id_##name(const struct libevdev *dev) \
        return dev->ids.name; \
 }
 
-PRODUCT_GETTER(product);
-PRODUCT_GETTER(vendor);
-PRODUCT_GETTER(bustype);
-PRODUCT_GETTER(version);
+PRODUCT_GETTER(product)
+PRODUCT_GETTER(vendor)
+PRODUCT_GETTER(bustype)
+PRODUCT_GETTER(version)
 
 #define PRODUCT_SETTER(field) \
 LIBEVDEV_EXPORT void libevdev_set_id_##field(struct libevdev *dev, int field) \
@@ -907,10 +901,10 @@ LIBEVDEV_EXPORT void libevdev_set_id_##field(struct libevdev *dev, int field) \
        dev->ids.field = field;\
 }
 
-PRODUCT_SETTER(product);
-PRODUCT_SETTER(vendor);
-PRODUCT_SETTER(bustype);
-PRODUCT_SETTER(version);
+PRODUCT_SETTER(product)
+PRODUCT_SETTER(vendor)
+PRODUCT_SETTER(bustype)
+PRODUCT_SETTER(version)
 
 LIBEVDEV_EXPORT int
 libevdev_get_driver_version(const struct libevdev *dev)
@@ -973,6 +967,19 @@ libevdev_get_event_value(const struct libevdev *dev, unsigned int type, unsigned
                case EV_KEY: value = bit_is_set(dev->key_values, code); break;
                case EV_LED: value = bit_is_set(dev->led_values, code); break;
                case EV_SW: value = bit_is_set(dev->sw_values, code); break;
+               case EV_REP:
+                           switch(code) {
+                                   case REP_DELAY:
+                                           libevdev_get_repeat(dev, &value, NULL);
+                                           break;
+                                   case REP_PERIOD:
+                                           libevdev_get_repeat(dev, NULL, &value);
+                                           break;
+                                   default:
+                                           value = 0;
+                                           break;
+                           }
+                           break;
                default:
                        value = 0;
                        break;
@@ -1099,11 +1106,11 @@ LIBEVDEV_EXPORT int libevdev_get_abs_##name(const struct libevdev *dev, unsigned
        return absinfo ? absinfo->name : 0; \
 }
 
-ABS_GETTER(maximum);
-ABS_GETTER(minimum);
-ABS_GETTER(fuzz);
-ABS_GETTER(flat);
-ABS_GETTER(resolution);
+ABS_GETTER(maximum)
+ABS_GETTER(minimum)
+ABS_GETTER(fuzz)
+ABS_GETTER(flat)
+ABS_GETTER(resolution)
 
 #define ABS_SETTER(field) \
 LIBEVDEV_EXPORT void libevdev_set_abs_##field(struct libevdev *dev, unsigned int code, int val) \
@@ -1341,7 +1348,7 @@ libevdev_event_type_get_max(unsigned int type)
 }
 
 LIBEVDEV_EXPORT int
-libevdev_get_repeat(struct libevdev *dev, int *delay, int *period)
+libevdev_get_repeat(const struct libevdev *dev, int *delay, int *period)
 {
        if (!libevdev_has_event_type(dev, EV_REP))
                return -1;