a4428eea93d9120f8f4ff8a4bc06a3f6da4cc3ea
[platform/core/uifw/libds-tizen.git] / src / input_devicemgr / input_devicemgr.h
1 #ifndef DS_TIZEN_DEVICEMGR_H
2 #define DS_TIZEN_DEVICEMGR_H
3
4 #include <stdbool.h>
5 #include <linux/uinput.h>
6 #include <wayland-server.h>
7 #include <tizen-extension-server-protocol.h>
8 #include <libds/interfaces/input_device.h>
9 #include <libds/seat.h>
10
11 struct ds_tizen_input_devicemgr_device {
12     char *name;
13     struct ds_input_device *input_device;
14     int ref;
15
16     bool created;
17
18     struct {
19         struct wl_list pressed;
20     } key;
21
22     struct {
23         unsigned int pressed;
24     } touch;
25
26     struct {
27         unsigned int pressed;
28     } mouse;
29 };
30
31 struct ds_tizen_input_devicemgr {
32     struct wl_global *global;
33     struct wl_display *display;
34     struct ds_backend *backend;
35     struct ds_seat *seat;
36
37     struct {
38         struct wl_signal destroy;
39     } events;
40
41     struct wl_listener new_input;
42     struct wl_listener backend_destroy;
43     struct wl_listener seat_destroy;
44     struct {
45         struct ds_tizen_input_devicemgr_device *kbd;
46         struct ds_tizen_input_devicemgr_device *ptr;
47         struct ds_tizen_input_devicemgr_device *touch;
48     } devices;
49
50     struct wl_list clients;
51
52     struct wl_list keymap_list;
53
54     struct wl_list blocked_keys;
55     struct wl_resource *block_resource;
56     struct wl_event_source *timer;
57     struct ds_seat_keyboard_grab *grab;
58     int touch_max_count;
59
60     struct {
61         uint32_t width;
62         uint32_t height;
63     } output;
64 };
65
66 struct ds_tizen_input_devicemgr_client {
67     struct wl_resource *resource;
68     bool init;
69     uint32_t clas;
70     struct wl_list link; // ds_tizen_input_devicemgr::clients
71 };
72
73 struct ds_tizen_input_devicemgr_key_info {
74     int keycode;
75     struct wl_list link; // ds_tizen_input_devicemgr::pressed_keys;
76 };
77
78 #endif