[gtk+/wip/wayland-tablet: 1864/1865] wayland: Translate pen buttons into button events
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/wayland-tablet: 1864/1865] wayland: Translate pen buttons into button events
- Date: Tue, 26 Jan 2016 22:46:55 +0000 (UTC)
commit e7ad0237e22fbc25bcffb0ea90bc7b66192331b6
Author: Carlos Garnacho <carlosg gnome org>
Date: Mon Jun 22 18:28:46 2015 +0200
wayland: Translate pen buttons into button events
up/down already take GDK_BUTTON_PRIMARY, we translate BTN_STYLUS(2)
into GDK_BUTTON_MIDDLE/SECONDARY.
gdk/wayland/gdkdevice-wayland.c | 42 +++++++++++++++++++++++++++++++++-----
1 files changed, 36 insertions(+), 6 deletions(-)
---
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index ec0daba..561ade6 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -40,6 +40,7 @@
#include <sys/time.h>
#include <sys/mman.h>
+#include <linux/input.h>
#define BUTTON_BASE (BTN_LEFT - 1) /* Used to translate to 1-indexed buttons */
@@ -3200,6 +3201,40 @@ tablet_tool_handle_tilt (void *data,
}
static void
+tablet_tool_handle_button (void *data,
+ struct zwp_tablet_tool_v1 *wp_tablet_tool,
+ uint32_t serial,
+ uint32_t button,
+ uint32_t state)
+{
+ GdkWaylandTabletToolData *tool = data;
+ GdkWaylandTabletData *tablet = tool->current_tablet;
+ GdkEventType evtype;
+ guint n_button;
+
+ if (!tablet->pointer_info.focus)
+ return;
+
+ tablet->pointer_info.press_serial = serial;
+
+ if (button == BTN_STYLUS)
+ n_button = GDK_BUTTON_SECONDARY;
+ else if (button == BTN_STYLUS2)
+ n_button = GDK_BUTTON_MIDDLE;
+ else
+ return;
+
+ if (state == ZWP_TABLET_TOOL_V1_BUTTON_STATE_PRESSED)
+ evtype = GDK_BUTTON_PRESS;
+ else if (state == ZWP_TABLET_TOOL_V1_BUTTON_STATE_RELEASED)
+ evtype = GDK_BUTTON_RELEASE;
+ else
+ return;
+
+ tablet_create_button_event_frame (tablet, evtype, n_button);
+}
+
+static void
tablet_tool_handle_frame (void *data,
struct zwp_tablet_tool_v1 *wl_tablet_tool,
uint32_t time)
@@ -3223,11 +3258,6 @@ tablet_tool_handle_frame (void *data,
gdk_wayland_tablet_flush_frame_event (tablet, time);
}
-static void
-tablet_handler_placeholder ()
-{
-}
-
static const struct zwp_tablet_tool_v1_listener tablet_tool_listener = {
tablet_tool_handle_type,
tablet_tool_handle_hwserial,
@@ -3243,7 +3273,7 @@ static const struct zwp_tablet_tool_v1_listener tablet_tool_listener = {
tablet_tool_handle_pressure,
tablet_tool_handle_distance,
tablet_tool_handle_tilt,
- tablet_handler_placeholder, /* button_state */
+ tablet_tool_handle_button,
tablet_tool_handle_frame,
};
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]