Drop code for kernel-enabling bits

We can't enable axes on devices at runtime in the kernel, not even
for uinput devices. So this API can't work anyway, remove it before
someone thinks it does work.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2013-06-30 15:27:24 +10:00
parent ca4b63d2b5
commit fe30bf7d96
3 changed files with 1 additions and 152 deletions

View file

@ -847,65 +847,6 @@ libevdev_disable_event_code(struct libevdev *dev, unsigned int type, unsigned in
return 0;
}
int
libevdev_kernel_enable_event_type(struct libevdev *dev, unsigned int type)
{
int rc;
if (type > EV_MAX)
return -1;
rc = ioctl(dev->fd, UI_SET_EVBIT, type);
if (rc != -1)
libevdev_enable_event_type(dev, type);
return (rc != -1) ? 0 : -errno;
}
int
libevdev_kernel_enable_event_code(struct libevdev *dev, unsigned int type,
unsigned int code, const void *data)
{
int rc;
int uinput_bit;
int max;
const unsigned long *mask;
rc = libevdev_kernel_enable_event_type(dev, type);
if (rc != 0)
return rc;
max = type_to_mask_const(dev, type, &mask);
if (max == -1 || code > max)
return -EINVAL;
switch(type) {
case EV_KEY: uinput_bit = UI_SET_KEYBIT; break;
case EV_REL: uinput_bit = UI_SET_RELBIT; break;
case EV_ABS: uinput_bit = UI_SET_ABSBIT; break;
case EV_MSC: uinput_bit = UI_SET_MSCBIT; break;
case EV_LED: uinput_bit = UI_SET_LEDBIT; break;
case EV_SND: uinput_bit = UI_SET_SNDBIT; break;
case EV_FF: uinput_bit = UI_SET_FFBIT; break;
case EV_SW: uinput_bit = UI_SET_SWBIT; break;
}
rc = ioctl(dev->fd, uinput_bit, type);
if (rc == -1)
goto out;
rc = libevdev_enable_event_type(dev, type);
if (rc == -1)
goto out;
/* FIXME: can't back out of this if it fails */
if (type == EV_ABS)
rc = libevdev_kernel_set_abs_value(dev, code, (const struct input_absinfo*)data);
out:
return (rc != -1) ? 0 : -errno;
}
int
libevdev_kernel_set_abs_value(struct libevdev *dev, unsigned int code, const struct input_absinfo *abs)
{
@ -914,7 +855,7 @@ libevdev_kernel_set_abs_value(struct libevdev *dev, unsigned int code, const str
if (code > ABS_MAX)
return -EINVAL;
rc = ioctl(dev->fd, EVIOCSABS(code), *abs);
rc = ioctl(dev->fd, EVIOCSABS(code), abs);
if (rc < 0)
rc = -errno;
else

View file

@ -706,50 +706,6 @@ int libevdev_enable_event_code(struct libevdev *dev, unsigned int type, unsigned
*/
int libevdev_disable_event_code(struct libevdev *dev, unsigned int type, unsigned int code);
/**
* @ingroup kernel
*
* Forcibly enable an event type on this device, even if the underlying
* device does not support it. While this cannot make the device actually
* report such events, it will now return true for libevdev_has_event_code().
*
* This will be written to the kernel.
*
* This cannot be undone, the kernel only allows to enable axes, not disable
* them.
*
* This function calls libevdev_kernel_enable_event_type() if necessary.
*
* @param type The event type to enable (EV_ABS, EV_KEY, ...)
*/
int libevdev_kernel_enable_event_type(struct libevdev *dev, unsigned int type);
/**
* @ingroup kernel
*
* Forcibly enable an event code on this device, even if the underlying
* device does not support it. While this cannot make the device actually
* report such events, it will now return true for libevdev_has_event_code().
*
* This will be written to the kernel.
*
* This cannot be undone, the kernel only allows to enable axes, not disable
* them.
*
* The last argument depends on the type and code:
* - If type is EV_ABS, the vararg must be a pointer to a struct input_absinfo
* containing the data for this axis.
* - For all other types, the argument is ignored.
*
* This function calls libevdev_kernel_enable_event_type() if necessary.
*
* @param type The event type to enable (EV_ABS, EV_KEY, ...)
* @param code The event code to enable (ABS_X, REL_X, etc.)
* @param data Axis/key data, depending on type and code
*/
int libevdev_kernel_enable_event_code(struct libevdev *dev, unsigned int type, unsigned int code, const void *data);
/**
* @ingroup kernel
*

View file

@ -465,53 +465,6 @@ START_TEST(test_device_disable_bit_invalid)
}
END_TEST
START_TEST(test_device_enable_kernel_bit)
{
struct uinput_device* uidev;
struct libevdev *dev, *dev2;
struct input_absinfo abs;
int rc;
rc = test_create_device(&uidev, &dev,
EV_ABS, ABS_X,
-1);
ck_assert_msg(rc == 0, "Failed to create device: %s", strerror(-rc));
ck_assert(!libevdev_has_event_code(dev, EV_ABS, ABS_Y));
ck_assert(!libevdev_has_event_type(dev, EV_REL));
ck_assert(!libevdev_has_event_code(dev, EV_REL, REL_X));
abs.value = 0;
abs.minimum = 0;
abs.maximum = 100;
abs.fuzz = 1;
abs.flat = 2;
abs.resolution = 3;
ck_assert_int_eq(libevdev_kernel_enable_event_code(dev, EV_ABS, ABS_Y, &abs), 0);
ck_assert(libevdev_has_event_code(dev, EV_ABS, ABS_Y));
ck_assert_msg(libevdev_kernel_enable_event_type(dev, EV_REL), 0);
ck_assert(libevdev_has_event_type(dev, EV_REL));
ck_assert(!libevdev_has_event_code(dev, EV_REL, REL_X));
ck_assert_int_eq(libevdev_kernel_enable_event_code(dev, EV_REL, REL_X, NULL), 0);
ck_assert(libevdev_has_event_code(dev, EV_REL, REL_X));
/* make sure kernel device is unchanged */
rc = libevdev_new_from_fd(uinput_device_get_fd(uidev), &dev2);
ck_assert_msg(rc == 0, "Failed to init device: %s", strerror(-rc));
ck_assert(libevdev_has_event_code(dev2, EV_ABS, ABS_X));
ck_assert(libevdev_has_event_code(dev2, EV_ABS, ABS_Y));
ck_assert(libevdev_has_event_type(dev2, EV_REL));
ck_assert(libevdev_has_event_code(dev2, EV_REL, REL_X));
libevdev_free(dev2);
uinput_device_free(uidev);
libevdev_free(dev);
}
END_TEST
Suite *
libevdev_has_event_test(void)
{
@ -550,7 +503,6 @@ libevdev_has_event_test(void)
tcase_add_test(tc, test_device_enable_bit_invalid);
tcase_add_test(tc, test_device_disable_bit);
tcase_add_test(tc, test_device_disable_bit_invalid);
tcase_add_test(tc, test_device_enable_kernel_bit);
suite_add_tcase(s, tc);
return s;