summaryrefslogtreecommitdiff
path: root/libevdev/libevdev.c
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2013-06-05 16:30:00 +1000
committerPeter Hutterer <peter.hutterer@who-t.net>2013-06-26 17:47:28 +1000
commit016cc05381163b01f441e584e52b02809053e7b3 (patch)
tree83e4169ee0a1261f173709b9468118cc7fe3442d /libevdev/libevdev.c
parent31961e8d59b692c2d0f06d10b30b2c19b8e07b51 (diff)
downloadlibevdev-016cc05381163b01f441e584e52b02809053e7b3.tar.gz
Add the remaining ev bits
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'libevdev/libevdev.c')
-rw-r--r--libevdev/libevdev.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/libevdev/libevdev.c b/libevdev/libevdev.c
index 7e292f6..2dbc6c1 100644
--- a/libevdev/libevdev.c
+++ b/libevdev/libevdev.c
@@ -209,6 +209,31 @@ libevdev_set_fd(struct libevdev* dev, int fd)
if (rc < 0)
goto out;
+ rc = ioctl(fd, EVIOCGBIT(EV_SW, sizeof(dev->sw_bits)), dev->sw_bits);
+ if (rc < 0)
+ goto out;
+
+ rc = ioctl(fd, EVIOCGBIT(EV_MSC, sizeof(dev->msc_bits)), dev->msc_bits);
+ if (rc < 0)
+ goto out;
+
+ rc = ioctl(fd, EVIOCGBIT(EV_FF, sizeof(dev->ff_bits)), dev->ff_bits);
+ if (rc < 0)
+ goto out;
+
+ rc = ioctl(fd, EVIOCGBIT(EV_SND, sizeof(dev->snd_bits)), dev->snd_bits);
+ if (rc < 0)
+ goto out;
+
+ /* rep is a special case, always set it to 1 for both values if EV_REP is set */
+ if (bit_is_set(dev->bits, EV_REP)) {
+ for (i = 0; i < REP_MAX; i++)
+ set_bit(dev->rep_bits, i);
+ rc = ioctl(fd, EVIOCGREP, dev->rep_values);
+ if (rc < 0)
+ goto out;
+ }
+
for (i = ABS_X; i <= ABS_MAX; i++) {
if (bit_is_set(dev->abs_bits, i)) {
struct input_absinfo abs_info;