diff --git a/data/org.gnome.mutter.gschema.xml.in b/data/org.gnome.mutter.gschema.xml.in index 7e59c1650..95aa42e1d 100644 --- a/data/org.gnome.mutter.gschema.xml.in +++ b/data/org.gnome.mutter.gschema.xml.in @@ -156,5 +156,10 @@ Cancel tab popup + + + Rotates the built-in monitor configuration + + diff --git a/src/core/keybindings.c b/src/core/keybindings.c index f2aafdd4e..c7e3c8869 100644 --- a/src/core/keybindings.c +++ b/src/core/keybindings.c @@ -44,6 +44,7 @@ #define KEY_GRAVE 0x29 /* assume the use of xf86-input-keyboard */ #endif +#include "backends/meta-monitor-manager-private.h" #include "backends/meta-logical-monitor.h" #include "backends/x11/meta-backend-x11.h" #include "x11/window-x11.h" @@ -3327,6 +3328,21 @@ handle_switch_vt (MetaDisplay *display, } #endif /* HAVE_NATIVE_BACKEND */ +static void +handle_rotate_monitor (MetaDisplay *display, + MetaScreen *screen, + MetaWindow *window, + ClutterKeyEvent *event, + MetaKeyBinding *binding, + gpointer dummy) +{ + MetaBackend *backend = meta_get_backend (); + MetaMonitorManager *monitor_manager = + meta_backend_get_monitor_manager (backend); + + meta_monitor_manager_rotate_monitor (monitor_manager); +} + /** * meta_keybindings_set_custom_handler: * @name: The name of the keybinding to set @@ -3616,6 +3632,13 @@ init_builtin_key_bindings (MetaDisplay *display) META_KEYBINDING_ACTION_SET_SPEW_MARK, handle_set_spew_mark, 0); + add_builtin_keybinding (display, + "rotate-monitor", + mutter_keybindings, + META_KEY_BINDING_NONE, + META_KEYBINDING_ACTION_ROTATE_MONITOR, + handle_rotate_monitor, 0); + #ifdef HAVE_NATIVE_BACKEND MetaBackend *backend = meta_get_backend (); if (META_IS_BACKEND_NATIVE (backend)) diff --git a/src/meta/prefs.h b/src/meta/prefs.h index 988763470..961d5abc3 100644 --- a/src/meta/prefs.h +++ b/src/meta/prefs.h @@ -357,6 +357,7 @@ typedef enum _MetaKeyBindingAction META_KEYBINDING_ACTION_OVERLAY_KEY, META_KEYBINDING_ACTION_ISO_NEXT_GROUP, META_KEYBINDING_ACTION_ALWAYS_ON_TOP, + META_KEYBINDING_ACTION_ROTATE_MONITOR, META_KEYBINDING_ACTION_LAST } MetaKeyBindingAction;