aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backend/multi/backend.c8
-rw-r--r--examples/shared.c11
-rw-r--r--include/wlr/backend/multi.h2
3 files changed, 19 insertions, 2 deletions
diff --git a/backend/multi/backend.c b/backend/multi/backend.c
index 8026e970..a5913f5d 100644
--- a/backend/multi/backend.c
+++ b/backend/multi/backend.c
@@ -113,3 +113,11 @@ void wlr_multi_backend_add(struct wlr_backend *multi,
list_add(multi->state->backends, sub);
}
+
+struct wlr_session *wlr_multi_get_session(struct wlr_backend *base) {
+ if (base->impl != &backend_impl)
+ return NULL;
+
+ struct wlr_backend_state *multi = base->state;
+ return multi->session;
+}
diff --git a/examples/shared.c b/examples/shared.c
index bd5f7ec5..27e5b9ca 100644
--- a/examples/shared.c
+++ b/examples/shared.c
@@ -9,6 +9,7 @@
#include <wayland-server-protocol.h>
#include <wlr/backend.h>
#include <wlr/backend/session.h>
+#include <wlr/backend/multi.h>
#include <wlr/types/wlr_output.h>
#include <wlr/types/wlr_input_device.h>
#include <wlr/util/log.h>
@@ -44,8 +45,14 @@ static void keyboard_key_notify(struct wl_listener *listener, void *data) {
}
if (sym == XKB_KEY_Escape) {
wl_display_terminate(kbstate->compositor->display);
- } else if (key_state == WLR_KEY_PRESSED && sym >= XKB_KEY_F1 && sym <= XKB_KEY_F12) {
- wlr_session_change_vt(kbstate->compositor->session, sym - XKB_KEY_F1 + 1);
+ } else if (key_state == WLR_KEY_PRESSED &&
+ sym >= XKB_KEY_XF86Switch_VT_1 &&
+ sym <= XKB_KEY_XF86Switch_VT_12) {
+ struct wlr_session *session =
+ wlr_multi_get_session(kbstate->compositor->backend);
+ if (session) {
+ wlr_session_change_vt(session, sym - XKB_KEY_XF86Switch_VT_1 + 1);
+ }
}
}
xkb_state_update_key(kbstate->xkb_state, keycode,
diff --git a/include/wlr/backend/multi.h b/include/wlr/backend/multi.h
index 8b68284d..048c4043 100644
--- a/include/wlr/backend/multi.h
+++ b/include/wlr/backend/multi.h
@@ -10,4 +10,6 @@ struct wlr_backend *wlr_multi_backend_create(struct wlr_session *session,
void wlr_multi_backend_add(struct wlr_backend *multi,
struct wlr_backend *backend);
+struct wlr_session *wlr_multi_get_session(struct wlr_backend *base);
+
#endif