diff options
-rw-r--r-- | include/client/registry.h | 1 | ||||
-rw-r--r-- | wayland/registry.c | 38 |
2 files changed, 39 insertions, 0 deletions
diff --git a/include/client/registry.h b/include/client/registry.h index a6901990..5e47b18e 100644 --- a/include/client/registry.h +++ b/include/client/registry.h | |||
@@ -16,6 +16,7 @@ struct registry { | |||
16 | struct wl_compositor *compositor; | 16 | struct wl_compositor *compositor; |
17 | struct wl_display *display; | 17 | struct wl_display *display; |
18 | struct wl_pointer *pointer; | 18 | struct wl_pointer *pointer; |
19 | struct wl_keyboard *keyboard; | ||
19 | struct wl_seat *seat; | 20 | struct wl_seat *seat; |
20 | struct wl_shell *shell; | 21 | struct wl_shell *shell; |
21 | struct wl_shm *shm; | 22 | struct wl_shm *shm; |
diff --git a/wayland/registry.c b/wayland/registry.c index 11e6e51d..883c69d3 100644 --- a/wayland/registry.c +++ b/wayland/registry.c | |||
@@ -38,6 +38,40 @@ static const struct wl_output_listener output_listener = { | |||
38 | .scale = display_handle_scale | 38 | .scale = display_handle_scale |
39 | }; | 39 | }; |
40 | 40 | ||
41 | static void keyboard_handle_keymap(void *data, struct wl_keyboard *keyboard, | ||
42 | uint32_t format, int fd, uint32_t size) { | ||
43 | } | ||
44 | |||
45 | static void keyboard_handle_enter(void *data, struct wl_keyboard *keyboard, | ||
46 | uint32_t serial, struct wl_surface *surface, struct wl_array *keys) { | ||
47 | } | ||
48 | |||
49 | static void keyboard_handle_leave(void *data, struct wl_keyboard *keyboard, | ||
50 | uint32_t serial, struct wl_surface *surface) { | ||
51 | } | ||
52 | |||
53 | static void keyboard_handle_key(void *data, struct wl_keyboard *keyboard, | ||
54 | uint32_t serial, uint32_t time, uint32_t key, uint32_t state_w) { | ||
55 | } | ||
56 | |||
57 | static void keyboard_handle_modifiers(void *data, struct wl_keyboard *keyboard, | ||
58 | uint32_t serial, uint32_t mods_depressed, uint32_t mods_latched, | ||
59 | uint32_t mods_locked, uint32_t group) { | ||
60 | } | ||
61 | |||
62 | static void keyboard_handle_repeat_info(void *data, struct wl_keyboard *keyboard, | ||
63 | int32_t rate, int32_t delay) { | ||
64 | } | ||
65 | |||
66 | static const struct wl_keyboard_listener keyboard_listener = { | ||
67 | .keymap = keyboard_handle_keymap, | ||
68 | .enter = keyboard_handle_enter, | ||
69 | .leave = keyboard_handle_leave, | ||
70 | .key = keyboard_handle_key, | ||
71 | .modifiers = keyboard_handle_modifiers, | ||
72 | .repeat_info = keyboard_handle_repeat_info | ||
73 | }; | ||
74 | |||
41 | static void registry_global(void *data, struct wl_registry *registry, | 75 | static void registry_global(void *data, struct wl_registry *registry, |
42 | uint32_t name, const char *interface, uint32_t version) { | 76 | uint32_t name, const char *interface, uint32_t version) { |
43 | struct registry *reg = data; | 77 | struct registry *reg = data; |
@@ -51,6 +85,10 @@ static void registry_global(void *data, struct wl_registry *registry, | |||
51 | } else if (strcmp(interface, wl_seat_interface.name) == 0) { | 85 | } else if (strcmp(interface, wl_seat_interface.name) == 0) { |
52 | reg->seat = wl_registry_bind(registry, name, &wl_seat_interface, version); | 86 | reg->seat = wl_registry_bind(registry, name, &wl_seat_interface, version); |
53 | reg->pointer = wl_seat_get_pointer(reg->seat); | 87 | reg->pointer = wl_seat_get_pointer(reg->seat); |
88 | reg->keyboard = wl_seat_get_keyboard(reg->seat); | ||
89 | if (reg->keyboard) { | ||
90 | wl_keyboard_add_listener(reg->keyboard, &keyboard_listener, reg); | ||
91 | } | ||
54 | } else if (strcmp(interface, wl_output_interface.name) == 0) { | 92 | } else if (strcmp(interface, wl_output_interface.name) == 0) { |
55 | struct wl_output *output = wl_registry_bind(registry, name, &wl_output_interface, version); | 93 | struct wl_output *output = wl_registry_bind(registry, name, &wl_output_interface, version); |
56 | struct output_state *ostate = malloc(sizeof(struct output_state)); | 94 | struct output_state *ostate = malloc(sizeof(struct output_state)); |