diff options
| -rw-r--r-- | clients/linux/linux-uinput.c | 24 | 
1 files 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)"); | 
