From 50e141583247e6409151fcc540729c229a3022a4 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Wed, 4 Jul 2018 21:55:33 +0300 Subject: linux: grab abs info while iterating the abs bits --- clients/linux/linux-uinput.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/clients/linux/linux-uinput.c b/clients/linux/linux-uinput.c index d585e2f..0b6e901 100644 --- a/clients/linux/linux-uinput.c +++ b/clients/linux/linux-uinput.c @@ -181,6 +181,8 @@ core_init(struct core *core, const char *path) } } + struct uinput_user_dev setup = {0}; + if ((evbit & (1 << EV_ABS))) { int keybit; if (_ioctl(core->input, EVIOCGBIT(EV_ABS, sizeof(keybit)), &keybit) == -1) @@ -192,25 +194,21 @@ core_init(struct core *core, const char *path) if (!uinputd_ioctl_int(IOCTL_IOW, UINPUT_IOCTL_BASE, 103, i)) errx(EXIT_FAILURE, "ioctl(UI_SET_ABSBIT): %d", i); + + struct input_absinfo info; + if (_ioctl(core->input, EVIOCGABS(i), &info) == -1) + err(EXIT_FAILURE, "ioctl(EVIOCGABS)"); + + setup.absmax[i] = info.maximum; + setup.absmin[i] = info.minimum; + setup.absfuzz[i] = info.fuzz; + setup.absflat[i] = info.flat; } } - struct uinput_user_dev setup = {0}; - if (_ioctl(core->input, EVIOCGNAME(sizeof(setup.name)), setup.name) == -1) err(EXIT_FAILURE, "ioctl(EVIOCGNAME)"); - for (size_t i = 0; (evbit & (1 << EV_ABS)) && i < ABS_MAX; ++i) { - struct input_absinfo info; - if (_ioctl(core->input, EVIOCGABS(i), &info) == -1) - err(EXIT_FAILURE, "ioctl(EVIOCGABS)"); - - setup.absmax[i] = info.maximum; - setup.absmin[i] = info.minimum; - setup.absfuzz[i] = info.fuzz; - setup.absflat[i] = info.flat; - } - if (_ioctl(core->input, EVIOCGID, &setup.id) == -1) err(EXIT_FAILURE, "ioctl(EVIOCGID)"); -- cgit v1.2.3