summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--clients/linux/linux-uinput.c24
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)");