#ifndef LABWC_INPUT_H
#define LABWC_INPUT_H
-struct seat;
+#include <wayland-server-core.h>
+
+struct input {
+ struct wlr_input_device *wlr_input_device;
+ struct seat *seat;
+ /* Set for pointer/touch devices */
+ double scroll_factor;
+ struct wl_listener destroy;
+ struct wl_list link; /* seat.inputs */
+};
void input_handlers_init(struct seat *seat);
void input_handlers_finish(struct seat *seat);
#include <stdbool.h>
#include <xkbcommon/xkbcommon.h>
+#include "input/input.h"
-struct seat;
-struct keyboard;
-struct wlr_keyboard;
+/*
+ * Virtual keyboards should not belong to seat->keyboard_group. As a result we
+ * need to be able to ascertain which wlr_keyboard key/modifier events come from
+ * and we achieve that by using `struct keyboard` which inherits `struct input`
+ * and adds keyboard specific listeners and a wlr_keyboard pointer.
+ */
+struct keyboard {
+ struct input base;
+ struct wlr_keyboard *wlr_keyboard;
+ bool is_virtual;
+ struct wl_listener modifiers;
+ struct wl_listener key;
+ /* key repeat for compositor keybinds */
+ uint32_t keybind_repeat_keycode;
+ int32_t keybind_repeat_rate;
+ struct wl_event_source *keybind_repeat;
+};
void keyboard_reset_current_keybind(void);
void keyboard_configure(struct seat *seat, struct wlr_keyboard *kb,
LAB_INPUT_STATE_WINDOW_SWITCHER,
};
-struct input {
- struct wlr_input_device *wlr_input_device;
- struct seat *seat;
- /* Set for pointer/touch devices */
- double scroll_factor;
- struct wl_listener destroy;
- struct wl_list link; /* seat.inputs */
-};
-
-/*
- * Virtual keyboards should not belong to seat->keyboard_group. As a result we
- * need to be able to ascertain which wlr_keyboard key/modifier events come from
- * and we achieve that by using `struct keyboard` which inherits `struct input`
- * and adds keyboard specific listeners and a wlr_keyboard pointer.
- */
-struct keyboard {
- struct input base;
- struct wlr_keyboard *wlr_keyboard;
- bool is_virtual;
- struct wl_listener modifiers;
- struct wl_listener key;
- /* key repeat for compositor keybinds */
- uint32_t keybind_repeat_keycode;
- int32_t keybind_repeat_rate;
- struct wl_event_source *keybind_repeat;
-};
-
struct seat {
struct wlr_seat *seat;
struct server *server;
struct wl_listener new_virtual_keyboard;
};
-struct lab_data_buffer;
-struct workspace;
-
-enum lab_cycle_dir {
- LAB_CYCLE_DIR_NONE,
- LAB_CYCLE_DIR_FORWARD,
- LAB_CYCLE_DIR_BACKWARD,
-};
-
struct server {
struct wl_display *wl_display;
struct wl_event_loop *wl_event_loop; /* Can be used for timer events */
pid_t primary_client_pid;
};
-struct constraint {
- struct seat *seat;
- struct wlr_pointer_constraint_v1 *constraint;
- struct wl_listener destroy;
-};
-
void xdg_popup_create(struct view *view, struct wlr_xdg_popup *wlr_popup);
void xdg_shell_init(struct server *server);
void xdg_shell_finish(struct server *server);
#include <stdbool.h>
#include <wayland-server-core.h>
+enum lab_cycle_dir {
+ LAB_CYCLE_DIR_NONE,
+ LAB_CYCLE_DIR_FORWARD,
+ LAB_CYCLE_DIR_BACKWARD,
+};
+
/* TODO: add field with keyboard layout? */
enum window_switcher_field_content {
LAB_FIELD_NONE = 0,
#define LAB_CURSOR_SHAPE_V1_VERSION 1
+struct constraint {
+ struct seat *seat;
+ struct wlr_pointer_constraint_v1 *constraint;
+ struct wl_listener destroy;
+};
+
static const char * const *cursor_names = NULL;
/* Usual cursor names */
#include <wlr/types/wlr_virtual_keyboard_v1.h>
#include <wlr/types/wlr_xdg_shell.h>
#include "common/mem.h"
+#include "input/keyboard.h"
#include "node.h"
#include "output.h"
#include "view.h"