diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c index 2dbc6c1..5c5a2fa 100644 --- a/libevdev/libevdev.c +++ b/libevdev/libevdev.c @@ -963,3 +963,17 @@ libevdev_get_event_type_max(unsigned int type) return ev_max[type]; } + +int +libevdev_get_repeat(struct libevdev *dev, int *delay, int *period) +{ + if (!libevdev_has_event_type(dev, EV_REP)) + return -1; + + if (delay != NULL) + *delay = dev->rep_values[REP_DELAY]; + if (period != NULL) + *period = dev->rep_values[REP_PERIOD]; + + return 0; +} diff --git a/libevdev/libevdev.h b/libevdev/libevdev.h index 9fd16d8..f3fe5ba 100644 --- a/libevdev/libevdev.h +++ b/libevdev/libevdev.h @@ -536,4 +536,14 @@ const char * libevdev_get_input_prop_name(unsigned int prop); */ int libevdev_get_event_type_max(unsigned int type); +/** + * Get the repeat delay and repeat period values for this device. + * + * @param delay If not null, set to the repeat delay value + * @param period If not null, set to the repeat period value + * + * @return 0 on success, -1 if this device does not have repeat settings. + */ +int libevdev_get_repeat(struct libevdev *dev, int *delay, int *period); + #endif /* libevdev_H */