Checks whether or not the tablet can report the specified axis, so callers can get an idea of a tablet's capabilities.
Signed-off-by: Stephen Chandler Paul <thatsly...@gmail.com> --- src/evdev-tablet.c | 8 ++++++++ src/evdev.h | 3 +++ src/libinput.c | 14 ++++++++++++++ src/libinput.h | 13 +++++++++++++ 4 files changed, 38 insertions(+) diff --git a/src/evdev-tablet.c b/src/evdev-tablet.c index 31dd8d7..954c77b 100644 --- a/src/evdev-tablet.c +++ b/src/evdev-tablet.c @@ -512,3 +512,11 @@ evdev_tablet_create(struct evdev_device *device) return &tablet->base; } + +int +evdev_tablet_has_axis(struct evdev_device *device, enum libinput_tablet_axis axis) +{ + return libevdev_has_event_code(device->evdev, + EV_ABS, + axis_to_evcode(axis)); +} diff --git a/src/evdev.h b/src/evdev.h index bfa47b1..5447503 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -130,6 +130,9 @@ evdev_mt_touchpad_create(struct evdev_device *device); struct evdev_dispatch * evdev_tablet_create(struct evdev_device *device); +int +evdev_tablet_has_axis(struct evdev_device *device, enum libinput_tablet_axis axis); + void evdev_device_proces_event(struct libinput_event *event); diff --git a/src/libinput.c b/src/libinput.c index 9aa7cbc..a7de795 100644 --- a/src/libinput.c +++ b/src/libinput.c @@ -587,6 +587,20 @@ libinput_event_tablet_get_seat_button_count(struct libinput_event_tablet *event) return event->seat_button_count; } +LIBINPUT_EXPORT int +libinput_tablet_has_axis(struct libinput_device *device, + enum libinput_tablet_axis axis) +{ + struct evdev_device *evdev_device = NULL; + + if (!libinput_device_has_capability(device, LIBINPUT_DEVICE_CAP_TABLET)) + return 0; + + evdev_device = container_of(device, evdev_device, base); + + return evdev_tablet_has_axis(evdev_device, axis); +} + LIBINPUT_EXPORT enum libinput_tool_type libinput_tool_get_type(struct libinput_tool *tool) { diff --git a/src/libinput.h b/src/libinput.h index a9ad379..bde15a1 100644 --- a/src/libinput.h +++ b/src/libinput.h @@ -362,6 +362,19 @@ struct libinput_device * libinput_event_get_device(struct libinput_event *event); /** + * @ingroup device + * + * Checks whether or not a tablet supports the specified axis. The device must + * have the @ref LIBINPUT_DEVICE_CAP_TABLET capability. + * + * @return 1 if the axis is supported, 0 if the axis is not supported or the + * device does not have the @ref LIBINPUT_DEVICE_CAP_TABLET capability. + */ +int +libinput_tablet_has_axis(struct libinput_device *device, + enum libinput_tablet_axis axis); + +/** * @ingroup event * * Return the pointer event that is this input event. If the event type does -- 1.8.5.5 _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel