diff options
Diffstat (limited to 'src/core/keybindings.c')
-rw-r--r-- | src/core/keybindings.c | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/core/keybindings.c b/src/core/keybindings.c index 8439ea830..bfc06c3c6 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -53,6 +53,10 @@ #include <X11/XKBlib.h> #endif +#ifdef HAVE_WAYLAND +#include "meta-wayland-private.h" +#endif + #define SCHEMA_COMMON_KEYBINDINGS "org.gnome.desktop.wm.keybindings" #define SCHEMA_MUTTER_KEYBINDINGS "org.gnome.mutter.keybindings" @@ -4081,6 +4085,40 @@ handle_set_spew_mark (MetaDisplay *display, meta_verbose ("-- MARK MARK MARK MARK --\n"); } +#ifdef HAVE_WAYLAND +static void +handle_switch_vt (MetaDisplay *display, + MetaScreen *screen, + MetaWindow *window, + XIDeviceEvent *event, + MetaKeyBinding *binding, + gpointer dummy) +{ + gint vt = binding->handler->data; + MetaWaylandCompositor *compositor; + MetaTTY *tty; + + compositor = meta_wayland_compositor_get_default (); + tty = meta_wayland_compositor_get_tty (compositor); + + if (tty) + { + GError *error; + + error = NULL; + if (!meta_tty_activate_vt (tty, vt, &error)) + { + g_warning ("Failed to switch VT: %s", error->message); + g_error_free (error); + } + } + else + { + g_debug ("Ignoring VT switch keybinding, not running as VT manager"); + } +} +#endif + /** * meta_keybindings_set_custom_handler: * @name: The name of the keybinding to set @@ -4405,6 +4443,60 @@ init_builtin_key_bindings (MetaDisplay *display) META_KEYBINDING_ACTION_SET_SPEW_MARK, handle_set_spew_mark, 0); +#ifdef HAVE_WAYLAND + if (meta_is_wayland_compositor ()) + { + add_builtin_keybinding (display, + "switch-to-session-1", + mutter_keybindings, + META_KEY_BINDING_NONE, + META_KEYBINDING_ACTION_NONE, + handle_switch_vt, 1); + + add_builtin_keybinding (display, + "switch-to-session-2", + mutter_keybindings, + META_KEY_BINDING_NONE, + META_KEYBINDING_ACTION_NONE, + handle_switch_vt, 2); + + add_builtin_keybinding (display, + "switch-to-session-3", + mutter_keybindings, + META_KEY_BINDING_NONE, + META_KEYBINDING_ACTION_NONE, + handle_switch_vt, 3); + + add_builtin_keybinding (display, + "switch-to-session-4", + mutter_keybindings, + META_KEY_BINDING_NONE, + META_KEYBINDING_ACTION_NONE, + handle_switch_vt, 4); + + add_builtin_keybinding (display, + "switch-to-session-5", + mutter_keybindings, + META_KEY_BINDING_NONE, + META_KEYBINDING_ACTION_NONE, + handle_switch_vt, 5); + + add_builtin_keybinding (display, + "switch-to-session-6", + mutter_keybindings, + META_KEY_BINDING_NONE, + META_KEYBINDING_ACTION_NONE, + handle_switch_vt, 6); + + add_builtin_keybinding (display, + "switch-to-session-7", + mutter_keybindings, + META_KEY_BINDING_NONE, + META_KEYBINDING_ACTION_NONE, + handle_switch_vt, 7); + } +#endif + #undef REVERSES_AND_REVERSED /************************ PER WINDOW BINDINGS ************************/ |