mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-18 06:47:31 -04:00
backend/wayland: Add wlr_wl_backend_set_grab_input_shortcut
Note: For the function to work, keyboard_listener in backend/wayland/seat.c now passes wlr_wl_seat instead of wlr_keyboard by using this function, a compositor can specify a keyboard shortcut that when pressed, will disable the keyboard shortcuts and confine the pointer to the currently focused wayland output, if the system compositor supports these features. Signed-off-by: Lahav T <lahavts@gmail.com>
This commit is contained in:
parent
41494244df
commit
fae0a7d493
5 changed files with 200 additions and 5 deletions
|
|
@ -18,6 +18,8 @@
|
|||
struct wlr_wl_backend {
|
||||
struct wlr_backend backend;
|
||||
|
||||
uint32_t input_grab_modifiers_mask; //for input grab.
|
||||
xkb_keysym_t input_grab_keysym; //for input grab.
|
||||
/* local state */
|
||||
bool started;
|
||||
struct wl_display *local_display;
|
||||
|
|
@ -49,6 +51,9 @@ struct wlr_wl_backend {
|
|||
struct xdg_activation_v1 *activation_v1;
|
||||
struct wl_subcompositor *subcompositor;
|
||||
struct wp_viewporter *viewporter;
|
||||
struct zwp_pointer_constraints_v1 *pointer_constraints;
|
||||
struct zwp_keyboard_shortcuts_inhibit_manager_v1 *shortcuts_inhibit_manager;
|
||||
struct zwp_keyboard_shortcuts_inhibitor_v1 *shortcuts_inhibit;
|
||||
char *drm_render_name;
|
||||
};
|
||||
|
||||
|
|
@ -134,6 +139,7 @@ struct wlr_wl_seat {
|
|||
struct wlr_wl_pointer *active_pointer;
|
||||
struct wl_list pointers; // wlr_wl_pointer.link
|
||||
|
||||
struct wl_surface *grab_surface; //for fake grabbing input. may be NULL when keyboard focus is not on any wayland output
|
||||
struct zwp_pointer_gesture_swipe_v1 *gesture_swipe;
|
||||
struct zwp_pointer_gesture_pinch_v1 *gesture_pinch;
|
||||
struct zwp_pointer_gesture_hold_v1 *gesture_hold;
|
||||
|
|
@ -150,6 +156,8 @@ struct wlr_wl_seat {
|
|||
struct wlr_tablet_tool wlr_tablet_tool;
|
||||
struct zwp_tablet_pad_v2 *zwp_tablet_pad_v2;
|
||||
struct wlr_tablet_pad wlr_tablet_pad;
|
||||
struct zwp_confined_pointer_v1 *confined_pointer;
|
||||
bool has_grab; //for fake grabbing input. may be NULL when no grab was initiated yet.
|
||||
|
||||
struct wl_list link; // wlr_wl_backend.seats
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include <wayland-server-core.h>
|
||||
#include <wlr/backend.h>
|
||||
#include <wlr/types/wlr_output.h>
|
||||
#include <xkbcommon/xkbcommon.h>
|
||||
|
||||
struct wlr_input_device;
|
||||
|
||||
|
|
@ -23,6 +24,15 @@ struct wlr_backend *wlr_wl_backend_create(struct wl_display *display,
|
|||
*/
|
||||
struct wl_display *wlr_wl_backend_get_remote_display(struct wlr_backend *backend);
|
||||
|
||||
/**
|
||||
* Sets the keyboard shortcut for toggle grabbing input of the focused wayland backend output.
|
||||
*
|
||||
* If modifiers_mask and keysym are zero or null, no shortcut will be used.
|
||||
*
|
||||
*/
|
||||
void wlr_wl_backend_set_grab_input_shortcut(struct wlr_backend *backend, uint32_t modifiers_mask,
|
||||
xkb_keysym_t keysym);
|
||||
|
||||
/**
|
||||
* Adds a new output to this backend.
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue