| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/relabsd_device.c')
| -rw-r--r-- | src/relabsd_device.c | 40 |
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 ( |


