[PATCH libinput 16/24] tablet: Emit axis events on v/h stylus tilt changes.

Peter Hutterer peter.hutterer at who-t.net
Sun Apr 27 22:07:40 PDT 2014


On Mon, Apr 21, 2014 at 07:11:25PM +0200, Carlos Garnacho wrote:
> Those are normalized to be in the [-1..1] range.
> 
> Signed-off-by: Carlos Garnacho <carlosg at gnome.org>
> ---
>  src/evdev-tablet.c | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/src/evdev-tablet.c b/src/evdev-tablet.c
> index 70f3210..cc55c74 100644
> --- a/src/evdev-tablet.c
> +++ b/src/evdev-tablet.c
> @@ -245,6 +245,16 @@ normalize_axis(const struct axis_info *axis_info)
>  	double range = axis_info->abs.maximum - axis_info->abs.minimum;
>  	double value = (axis_info->abs.value + axis_info->abs.minimum) / range;
>  
> +	switch (axis_info->axis) {
> +	case LIBINPUT_POINTER_AXIS_VERTICAL_TILT:
> +	case LIBINPUT_POINTER_AXIS_HORIZONTAL_TILT:
> +		/* Map to the (-1,1) range */
> +		value = (value * 2) - 1;
> +		break;
> +	default:
> +		break;
> +	}
> +
>  	return value;
>  }
>  
> @@ -412,6 +422,19 @@ static struct evdev_dispatch_interface tablet_interface = {
>  	tablet_destroy
>  };
>  
> +static void
> +tablet_init_axes(struct tablet_dispatch *tablet,
> +		 struct evdev_device *device)
> +{
> +	if (libevdev_has_event_code(device->evdev, EV_ABS, ABS_TILT_X) &&
> +	    libevdev_has_event_code(device->evdev, EV_ABS, ABS_TILT_Y)) {
> +		tablet_add_axis(tablet, device, ABS_TILT_X,
> +				LIBINPUT_POINTER_AXIS_HORIZONTAL_TILT);
> +		tablet_add_axis(tablet, device, ABS_TILT_Y,
> +				LIBINPUT_POINTER_AXIS_VERTICAL_TILT);
> +	}

this should be documented. i'm not sure whether there's a tablet that only
does one direction of tilt and I'm fine with not worrying about it. but it
should be documented.

Cheers,
   Peter

> +}
> +
>  static int
>  tablet_init(struct tablet_dispatch *tablet,
>  	    struct evdev_device *device)
> @@ -421,6 +444,8 @@ tablet_init(struct tablet_dispatch *tablet,
>  	tablet->status = TABLET_NONE;
>  	tablet->state.tool = LIBINPUT_TOOL_NONE;
>  
> +	tablet_init_axes(tablet, device);
> +
>  	return 0;
>  }
>  
> -- 
> 1.9.0


More information about the wayland-devel mailing list