summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/relabsd_device.c')
-rw-r--r--src/relabsd_device.c40
1 files changed, 19 insertions, 21 deletions
diff --git a/src/relabsd_device.c b/src/relabsd_device.c
index ced74d8..eb4da8b 100644
--- a/src/relabsd_device.c
+++ b/src/relabsd_device.c
@@ -22,22 +22,29 @@
#define RELABSD_UINPUT_OPEN_MANAGED LIBEVDEV_UINPUT_OPEN_MANAGED
#endif
-static void replace_rel_axis
+static void replace_rel_axes
(
struct relabsd_device * const dev,
- const struct relabsd_config * const config,
- struct input_absinfo * const absinfo,
- unsigned int rel_code
+ const struct relabsd_config * const config
)
{
- enum relabsd_axis rad_code;
- unsigned int abs_code;
+ int i;
+ struct input_absinfo absinfo;
+ unsigned int abs_code, rel_code;
- rad_code = relabsd_axis_convert_evdev_rel(rel_code, &abs_code);
+ for (i = RELABSD_VALID_AXES_COUNT; i --> 0;)
+ {
+ if (config->axis[i].enabled)
+ {
+ rel_code = relabsd_axis_to_rel((enum relabsd_axis) i);
+ abs_code = relabsd_axis_to_abs((enum relabsd_axis) i);
+
+ relabsd_config_get_absinfo(config, (enum relabsd_axis) i, &absinfo);
+ libevdev_disable_event_code(dev->dev, EV_REL, rel_code);
+ libevdev_enable_event_code(dev->dev, EV_ABS, abs_code, &absinfo);
+ }
+ }
- relabsd_config_get_absinfo(config, rad_code, absinfo);
- libevdev_disable_event_code(dev->dev, EV_REL, rel_code);
- libevdev_enable_event_code(dev->dev, EV_ABS, abs_code, absinfo);
}
int relabsd_device_create
@@ -46,7 +53,6 @@ int relabsd_device_create
const struct relabsd_config * const config
)
{
- struct input_absinfo absinfo;
int fd;
fd = open(config->input_file, O_RDONLY);
@@ -63,10 +69,7 @@ int relabsd_device_create
return -1;
}
- if
- (
- libevdev_new_from_fd(fd, &(dev->dev)) < 0
- )
+ if (libevdev_new_from_fd(fd, &(dev->dev)) < 0)
{
_FATAL
(
@@ -84,12 +87,7 @@ int relabsd_device_create
libevdev_enable_event_type(dev->dev, EV_ABS);
- replace_rel_axis(dev, config, &absinfo, REL_X);
- replace_rel_axis(dev, config, &absinfo, REL_Y);
- replace_rel_axis(dev, config, &absinfo, REL_Z);
- replace_rel_axis(dev, config, &absinfo, REL_RX);
- replace_rel_axis(dev, config, &absinfo, REL_RY);
- replace_rel_axis(dev, config, &absinfo, REL_RZ);
+ replace_rel_axes(dev, config);
if
(