mirror of
https://gitlab.freedesktop.org/libevdev/libevdev.git
synced 2026-05-07 11:58:06 +02:00
Merge branch 'ev-rep-handling'
This commit is contained in:
commit
714c2ffa9e
3 changed files with 47 additions and 4 deletions
|
|
@ -967,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_KEY: value = bit_is_set(dev->key_values, code); break;
|
||||||
case EV_LED: value = bit_is_set(dev->led_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_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:
|
default:
|
||||||
value = 0;
|
value = 0;
|
||||||
break;
|
break;
|
||||||
|
|
@ -1335,7 +1348,7 @@ libevdev_event_type_get_max(unsigned int type)
|
||||||
}
|
}
|
||||||
|
|
||||||
LIBEVDEV_EXPORT int
|
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))
|
if (!libevdev_has_event_type(dev, EV_REP))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
|
||||||
|
|
@ -259,7 +259,7 @@ extern "C" {
|
||||||
* <dd>supported, see libevdev_get_id_product(), libevdev_get_id_vendor(),
|
* <dd>supported, see libevdev_get_id_product(), libevdev_get_id_vendor(),
|
||||||
* libevdev_get_id_bustype(), * * libevdev_get_id_version()</dd>
|
* libevdev_get_id_bustype(), * * libevdev_get_id_version()</dd>
|
||||||
* <dt>EVIOCGREP:</dt>
|
* <dt>EVIOCGREP:</dt>
|
||||||
* <dd>supported, see libevdev_get_repeat()</dd>
|
* <dd>supported, see libevdev_get_event_value())</dd>
|
||||||
* <dt>EVIOCSREP:</dt>
|
* <dt>EVIOCSREP:</dt>
|
||||||
* <dd>supported, see libevdev_enable_event_code()</dd>
|
* <dd>supported, see libevdev_enable_event_code()</dd>
|
||||||
* <dt>EVIOCGKEYCODE:</dt>
|
* <dt>EVIOCGKEYCODE:</dt>
|
||||||
|
|
@ -1606,7 +1606,9 @@ int libevdev_event_code_from_name_n(unsigned int type, const char *name,
|
||||||
/**
|
/**
|
||||||
* @ingroup bits
|
* @ingroup bits
|
||||||
*
|
*
|
||||||
* Get the repeat delay and repeat period values for this device.
|
* Get the repeat delay and repeat period values for this device. This
|
||||||
|
* function is a convenience function only, EV_REP is supported by
|
||||||
|
* libevdev_get_event_value().
|
||||||
*
|
*
|
||||||
* @param dev The evdev device, already initialized with libevdev_set_fd()
|
* @param dev The evdev device, already initialized with libevdev_set_fd()
|
||||||
* @param delay If not null, set to the repeat delay value
|
* @param delay If not null, set to the repeat delay value
|
||||||
|
|
@ -1615,8 +1617,10 @@ int libevdev_event_code_from_name_n(unsigned int type, const char *name,
|
||||||
* @return 0 on success, -1 if this device does not have repeat settings.
|
* @return 0 on success, -1 if this device does not have repeat settings.
|
||||||
*
|
*
|
||||||
* @note This function is signal-safe
|
* @note This function is signal-safe
|
||||||
|
*
|
||||||
|
* @see libevdev_get_event_value
|
||||||
*/
|
*/
|
||||||
int libevdev_get_repeat(struct libevdev *dev, int *delay, int *period);
|
int libevdev_get_repeat(const struct libevdev *dev, int *delay, int *period);
|
||||||
|
|
||||||
|
|
||||||
/********* DEPRECATED SECTION *********/
|
/********* DEPRECATED SECTION *********/
|
||||||
|
|
|
||||||
|
|
@ -931,6 +931,31 @@ START_TEST(test_mt_event_values_invalid)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(test_ev_rep_values)
|
||||||
|
{
|
||||||
|
struct uinput_device* uidev;
|
||||||
|
struct libevdev *dev;
|
||||||
|
int rc;
|
||||||
|
int delay = 500, period = 200;
|
||||||
|
rc = test_create_device(&uidev, &dev,
|
||||||
|
EV_KEY, BTN_LEFT,
|
||||||
|
EV_REL, REL_X,
|
||||||
|
EV_REL, REL_Y,
|
||||||
|
EV_SYN, SYN_REPORT,
|
||||||
|
-1);
|
||||||
|
ck_assert_msg(rc == 0, "Failed to create device: %s", strerror(-rc));
|
||||||
|
|
||||||
|
libevdev_enable_event_code(dev, EV_REP, REP_DELAY, &delay);
|
||||||
|
libevdev_enable_event_code(dev, EV_REP, REP_PERIOD, &period);
|
||||||
|
|
||||||
|
ck_assert_int_eq(libevdev_has_event_type(dev, EV_REP), 1);
|
||||||
|
ck_assert_int_eq(libevdev_has_event_code(dev, EV_REP, REP_DELAY), 1);
|
||||||
|
ck_assert_int_eq(libevdev_has_event_code(dev, EV_REP, REP_PERIOD), 1);
|
||||||
|
ck_assert_int_eq(libevdev_get_event_value(dev, EV_REP, REP_DELAY), 500);
|
||||||
|
ck_assert_int_eq(libevdev_get_event_value(dev, EV_REP, REP_PERIOD), 200);
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
START_TEST(test_event_value_setters)
|
START_TEST(test_event_value_setters)
|
||||||
{
|
{
|
||||||
struct uinput_device* uidev;
|
struct uinput_device* uidev;
|
||||||
|
|
@ -1205,6 +1230,7 @@ libevdev_events(void)
|
||||||
tcase_add_test(tc, test_event_values_invalid);
|
tcase_add_test(tc, test_event_values_invalid);
|
||||||
tcase_add_test(tc, test_mt_event_values);
|
tcase_add_test(tc, test_mt_event_values);
|
||||||
tcase_add_test(tc, test_mt_event_values_invalid);
|
tcase_add_test(tc, test_mt_event_values_invalid);
|
||||||
|
tcase_add_test(tc, test_ev_rep_values);
|
||||||
suite_add_tcase(s, tc);
|
suite_add_tcase(s, tc);
|
||||||
|
|
||||||
tc = tcase_create("event value setters");
|
tc = tcase_create("event value setters");
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue