[PATCH libinput 1/2] tablet: rely on libwacom for the list of axis capabilities

Benjamin Tissoires benjamin.tissoires at gmail.com
Wed Mar 11 13:12:58 PDT 2015


On Tue, Mar 10, 2015 at 1:03 AM, Peter Hutterer
<peter.hutterer at who-t.net> wrote:
> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
> ---
>  configure.ac       |  2 +-
>  src/evdev-tablet.c | 56 +++++++++++++++++++++++++-----------------------------
>  2 files changed, 27 insertions(+), 31 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index 85db1fd..038022e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -172,7 +172,7 @@ AC_ARG_ENABLE(libwacom,
>               [use_libwacom="$enableval"],
>               [use_libwacom="yes"])
>  if test "x$use_libwacom" = "xyes"; then
> -       PKG_CHECK_MODULES(LIBWACOM, [libwacom], [HAVE_LIBWACOM="yes"])
> +       PKG_CHECK_MODULES(LIBWACOM, [libwacom >= 0.12], [HAVE_LIBWACOM="yes"])
>         AC_DEFINE(HAVE_LIBWACOM, 1, [Build with libwacom])
>  fi
>
> diff --git a/src/evdev-tablet.c b/src/evdev-tablet.c
> index 3e3924c..c4b4154 100644
> --- a/src/evdev-tablet.c
> +++ b/src/evdev-tablet.c
> @@ -592,6 +592,7 @@ tool_set_bits_from_libwacom(const struct tablet_dispatch *tablet,
>         const WacomStylus *s = NULL;
>         int code;
>         WacomStylusType type;
> +       WacomAxisTypeFlags axes;
>
>         db = libwacom_database_new();
>         if (!db) {
> @@ -617,38 +618,33 @@ tool_set_bits_from_libwacom(const struct tablet_dispatch *tablet,
>                 copy_button_cap(tablet, tool, BTN_TOUCH);
>         }
>
> -       /* Eventually we want libwacom to tell us each axis on each device
> -          separately. */
> -       switch(type) {
> -       case WSTYLUS_AIRBRUSH:
> +       if (libwacom_stylus_has_wheel(s))
> +               copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_REL_WHEEL);
> +
> +       axes = libwacom_stylus_get_axes(s);
> +
> +       if (axes & WACOM_AXIS_TYPE_TILT) {
> +               /* tilt on the puck is converted to rotation */
> +               if (type == WSTYLUS_PUCK) {
> +                       set_bit(tool->axis_caps,
> +                               LIBINPUT_TABLET_AXIS_ROTATION_Z);
> +               } else {
> +                       copy_axis_cap(tablet,
> +                                     tool,
> +                                     LIBINPUT_TABLET_AXIS_TILT_X);
> +                       copy_axis_cap(tablet,
> +                                     tool,
> +                                     LIBINPUT_TABLET_AXIS_TILT_Y);
> +               }
> +       }
> +       if (axes & WACOM_AXIS_TYPE_ROTATION_Z)
> +               copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_ROTATION_Z);
> +       if (axes & WACOM_AXIS_TYPE_DISTANCE)
> +               copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_DISTANCE);
> +       if (axes & WACOM_AXIS_TYPE_SLIDER)
>                 copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_SLIDER);
> -               /* fall-through */
> -       case WSTYLUS_MARKER:
> -               if (type == WSTYLUS_MARKER)
> -                       copy_axis_cap(tablet, tool,
> -                                     LIBINPUT_TABLET_AXIS_ROTATION_Z);
> -               /* fallthrough */
> -       case WSTYLUS_GENERAL:
> -       case WSTYLUS_INKING:
> -       case WSTYLUS_CLASSIC:
> -       case WSTYLUS_STROKE:
> +       if (axes & WACOM_AXIS_TYPE_PRESSURE)
>                 copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_PRESSURE);
> -               copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_DISTANCE);
> -               copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_TILT_X);
> -               copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_TILT_Y);
> -               break;
> -       case WSTYLUS_PUCK:
> -               copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_ROTATION_Z);
> -               copy_axis_cap(tablet, tool, LIBINPUT_TABLET_AXIS_DISTANCE);
> -               /* lens cursors don't have a wheel */
> -               if (!libwacom_stylus_has_lens(s))
> -                       copy_axis_cap(tablet,
> -                                     tool,
> -                                     LIBINPUT_TABLET_AXIS_REL_WHEEL);

We are missing the REL_WHEEL axis with this change. But this should be
addressed in libwacom.

For the series,
Reviewed-by: Benjamin Tissoires <benjamin.tissoires at gmail.com>

Cheers,
Benjamin

> -               break;
> -       default:
> -               break;
> -       }
>
>         rc = 0;
>  out:
> --
> 2.1.0
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list