Cursors, keyboard support, move/resize
[profile/ivi/qtwayland.git] / src / plugins / platforms / wayland / qwaylandinputdevice.h
1 #ifndef QWAYLANDINPUTDEVICE_H
2 #define QWAYLANDINPUTDEVICE_H
3
4 #include <QSocketNotifier>
5 #include <QObject>
6 #include <QtGui/QPlatformIntegration>
7 #include <QtGui/QPlatformScreen>
8
9 #include <wayland-client.h>
10 #include "qwaylandwindowsurface.h"
11
12 QT_BEGIN_NAMESPACE
13
14 class QWaylandWindow;
15
16 class QWaylandInputDevice {
17 public:
18     QWaylandInputDevice(struct wl_display *display, uint32_t id);
19     void attach(QWaylandBuffer *buffer, int x, int y);
20
21 private:
22     struct wl_display *mDisplay;
23     struct wl_input_device *mInputDevice;
24     QWaylandWindow *mPointerFocus;
25     QWaylandWindow *mKeyboardFocus;
26     static const struct wl_input_device_listener inputDeviceListener;
27     Qt::MouseButtons mButtons;
28     QPoint mSurfacePos;
29     QPoint mGlobalPos;
30     struct xkb_desc *mXkb;
31     Qt::KeyboardModifiers mModifiers;
32     uint32_t mTime;
33
34     static void inputHandleMotion(void *data,
35                                   struct wl_input_device *input_device,
36                                   uint32_t time,
37                                   int32_t x, int32_t y,
38                                   int32_t sx, int32_t sy);
39     static void inputHandleButton(void *data,
40                                   struct wl_input_device *input_device,
41                                   uint32_t time, uint32_t button, uint32_t state);
42     static void inputHandleKey(void *data,
43                                struct wl_input_device *input_device,
44                                uint32_t time, uint32_t key, uint32_t state);
45     static void inputHandlePointerFocus(void *data,
46                                         struct wl_input_device *input_device,
47                                         uint32_t time, struct wl_surface *surface,
48                                         int32_t x, int32_t y, int32_t sx, int32_t sy);
49     static void inputHandleKeyboardFocus(void *data,
50                                          struct wl_input_device *input_device,
51                                          uint32_t time,
52                                          struct wl_surface *surface,
53                                          struct wl_array *keys);
54 };
55
56 QT_END_NAMESPACE
57
58 #endif