diff options
Diffstat (limited to 'include/wlr')
-rw-r--r-- | include/wlr/backend.h | 8 | ||||
-rw-r--r-- | include/wlr/types.h | 93 |
2 files changed, 95 insertions, 6 deletions
diff --git a/include/wlr/backend.h b/include/wlr/backend.h index 32d96a8d..db85c169 100644 --- a/include/wlr/backend.h +++ b/include/wlr/backend.h @@ -12,14 +12,10 @@ struct wlr_backend { struct wlr_backend_state *state; struct { + struct wl_signal input_add; + struct wl_signal input_remove; struct wl_signal output_add; struct wl_signal output_remove; - struct wl_signal keyboard_add; - struct wl_signal keyboard_remove; - struct wl_signal pointer_add; - struct wl_signal pointer_remove; - struct wl_signal touch_add; - struct wl_signal touch_remove; } events; }; diff --git a/include/wlr/types.h b/include/wlr/types.h index 51ea45cf..a65b5d9c 100644 --- a/include/wlr/types.h +++ b/include/wlr/types.h @@ -50,4 +50,97 @@ void wlr_output_destroy(struct wlr_output *output); void wlr_output_effective_resolution(struct wlr_output *output, int *width, int *height); +// TODO: keymaps + +struct wlr_keyboard_state; +struct wlr_keyboard_impl; + +struct wlr_keyboard { + struct wlr_keyboard_state *state; + struct wlr_keyboard_impl *impl; + + struct { + struct wl_signal key; + struct wl_signal mods; + } events; +}; + +struct wlr_pointer_state; +struct wlr_pointer_impl; + +struct wlr_pointer { + struct wlr_pointer_state *state; + struct wlr_pointer_impl *impl; + + struct { + struct wl_signal motion; + struct wl_signal motion_absolute; + struct wl_signal button; + struct wl_signal axis; + } events; +}; + +struct wlr_pointer_motion { + double delta_x, delta_y; +}; + +struct wlr_pointer_motion_absolute { + double x_mm, y_mm; + double width_mm, height_mm; +}; + +enum wlr_button_state { + WLR_BUTTON_DEPRESSED, + WLR_BUTTON_RELEASED +}; + +struct wlr_pointer_button { + uint32_t button; + enum wlr_button_state state; +}; + +enum wlr_axis_source { + WLR_AXIS_SOURCE_WHEEL, + WLR_AXIS_SOURCE_FINGER, + WLR_AXIS_SOURCE_CONTINUOUS, + WLR_AXIS_SOURCE_WHEEL_TILT, +}; + +enum wlr_axis_orientation { + WLR_AXIS_ORIENTATION_VERTICAL, + WLR_AXIS_ORIENTATION_HORIZONTAL +}; + +struct wlr_pointer_axis { + enum wlr_axis_source source; + enum wlr_axis_orientation orientation; + double delta; +}; + +// TODO: touch +// TODO: tablet & tablet tool +// TODO: gestures +// TODO: switch + +enum wlr_input_device_type { + WLR_INPUT_DEVICE_KEYBOARD, + WLR_INPUT_DEVICE_POINTER, + WLR_INPUT_DEVICE_TOUCH, + WLR_INPUT_DEVICE_TABLET_PEN, + WLR_INPUT_DEVICE_TABLET_PAD, + WLR_INPUT_DEVICE_GESTURE, + WLR_INPUT_DEVICE_SWITCH, +}; + +struct wlr_input_device { + enum wlr_input_device_type type; + int vendor, product; + char *name; + union { + void *_device; + struct wlr_keyboard *keyboard; + struct wlr_pointer *pointer; + }; +}; + #endif |