remove libds stuffs
[platform/core/uifw/libds-tizen.git] / src / libds-tizen / keyrouter / keyrouter.h
1 #ifndef DS_TIZEN_KEYROUTER_H
2 #define DS_TIZEN_KEYROUTER_H
3
4 #include <stdbool.h>
5 #include <wayland-server.h>
6 #include <tizen-extension-server-protocol.h>
7
8 #define KEYROUTER_MAX_KEYS 512
9
10 struct ds_tizen_keyrouter_key_info
11 {
12         void *data;
13         struct wl_list link;
14 };
15
16 struct ds_tizen_keyrouter_grabbed
17 {
18     int keycode;
19
20     struct {
21         struct wl_list excl;
22         struct wl_list or_excl;
23         struct wl_list top;
24         struct wl_list shared;
25     } grab;
26
27     struct wl_list pressed;
28 };
29
30 struct ds_tizen_keyrouter_grab
31 {
32     struct ds_tizen_keyrouter_grabbed *hard_keys;
33
34     void *focus_client;
35     void *top_client;
36 };
37
38 struct ds_tizen_keyrouter_key_options
39 {
40     bool enabled;
41     bool no_privilege;
42 };
43
44 struct ds_tizen_keyrouter
45 {
46     struct wl_global *global;
47
48     struct wl_list clients;
49
50     struct wl_listener display_destroy;
51
52     struct {
53         struct wl_signal destroy;
54     } events;
55
56     struct ds_tizen_keyrouter_key_options *opts;
57
58     struct ds_tizen_keyrouter_grab *keyrouter_grab;
59 };
60
61 struct ds_tizen_keyrouter_client
62 {
63     struct ds_tizen_keyrouter *keyrouter;
64
65     struct wl_resource *resource;
66
67     bool grabbed;
68
69     struct wl_list link; // ds_tizen_keyrouter::clients
70 };
71
72 struct ds_tizen_grab_data
73 {
74         int key;
75         int mode;
76         int err;
77 };
78
79 struct ds_tizen_ungrab_data
80 {
81         int key;
82         int err;
83 };
84
85 struct ds_tizen_keyrouter_grab *
86 keyrouter_grab_create(void);
87 void
88 keyrouter_grab_destroy(struct ds_tizen_keyrouter_grab *keyrouter_grab);
89 int
90 keyrouter_grab_grab_key(struct ds_tizen_keyrouter_grab *keyrouter_grab,
91         int type, int keycode, void *data);
92 void
93 keyrouter_grab_ungrab_key(struct ds_tizen_keyrouter_grab *keyrouter_grab,
94         int type, int keycode, void *data);
95 int
96 keyrouter_grab_key_process(struct ds_tizen_keyrouter_grab *keyrouter_grab,
97         int keycode, int pressed, struct wl_list *delivery_list);
98 void
99 keyrouter_grab_set_focus_client(struct ds_tizen_keyrouter_grab *keyrouter_grab,
100         void *focus_client);
101 void
102 keyrouter_grab_set_top_client(struct ds_tizen_keyrouter_grab *keyrouter_grab,
103         void *top_client);
104 bool
105 keyrouter_grab_check_grabbed_key(struct ds_tizen_keyrouter_grab *keyrouter_grab,
106         int keycode);
107
108 #endif