diff -urN gsd.orig/data/apps_gnome_settings_daemon_keybindings.schemas.in gsd.new/data/apps_gnome_settings_daemon_keybindings.schemas.in
--- gsd.orig/data/apps_gnome_settings_daemon_keybindings.schemas.in 2010-10-15 11:27:47.461830030 +0100
+++ gsd.new/data/apps_gnome_settings_daemon_keybindings.schemas.in 2010-10-15 11:27:53.362405904 +0100
@@ -131,6 +131,17 @@
+
+ /schemas/apps/gnome_settings_daemon/keybindings/screensaver_alternative
+ /apps/gnome_settings_daemon/keybindings/screensaver_alternative
+ string
+ XF86ScreenSaver
+
+ Lock screen (Alt Binding)
+ Alternative key binding to lock the screen.
+
+
+
/schemas/apps/gnome_settings_daemon/keybindings/help
@@ -236,5 +247,16 @@
+
+ /schemas/apps/gnome_settings_daemon/keybindings/display
+ /apps/gnome_settings_daemon/keybindings/display
+ string
+ XF86Display
+
+ Toggle External Display
+ Binding to toggle the use of an external display.
+
+
+
diff -urN gsd.orig/plugins/media-keys/acme.h gsd.new/plugins/media-keys/acme.h
--- gsd.orig/plugins/media-keys/acme.h 2010-10-15 11:27:47.469241631 +0100
+++ gsd.new/plugins/media-keys/acme.h 2010-10-15 11:27:53.363324295 +0100
@@ -46,6 +46,7 @@
STOP_KEY,
PREVIOUS_KEY,
NEXT_KEY,
+ DISPLAY_KEY, /* To allow mapping to dispswitch functionality */
HANDLED_KEYS
};
@@ -73,6 +74,7 @@
{ STOP_KEY, GCONF_BINDING_DIR "/stop", NULL },
{ PREVIOUS_KEY, GCONF_BINDING_DIR "/previous", NULL },
{ NEXT_KEY, GCONF_BINDING_DIR "/next", NULL },
+ { DISPLAY_KEY, GCONF_BINDING_DIR "/display", NULL },
};
#endif /* __ACME_H__ */
diff -urN gsd.orig/plugins/media-keys/gsd-media-keys-manager.c gsd.new/plugins/media-keys/gsd-media-keys-manager.c
--- gsd.orig/plugins/media-keys/gsd-media-keys-manager.c 2010-10-15 11:27:47.467649253 +0100
+++ gsd.new/plugins/media-keys/gsd-media-keys-manager.c 2010-10-15 11:27:53.368079533 +0100
@@ -661,6 +661,27 @@
gconf_client_set_bool (client, TOUCHPAD_ENABLED_KEY, !state, NULL);
}
+static void
+do_display_action (GsdMediaKeysManager *manager)
+{
+ gchar *command;
+ gchar *dispswitch;
+
+ if ((dispswitch = g_find_program_in_path ("dispswitch")) == NULL ) {
+ /* Fall back to known location */
+ dispswitch = g_strdup("/usr/X11/bin/dispswitch");
+ }
+
+ command = g_strdup_printf("%s -toggle", dispswitch );
+
+ if ( command != NULL ) {
+ execute (manager, command, FALSE, FALSE);
+ }
+
+ g_free (dispswitch);
+ g_free (command);
+}
+
#ifdef HAVE_PULSE
static void
update_dialog (GsdMediaKeysManager *manager,
@@ -997,6 +1018,9 @@
case NEXT_KEY:
return do_multimedia_player_action (manager, "Next");
break;
+ case DISPLAY_KEY:
+ do_display_action (manager);
+ break;
default:
g_assert_not_reached ();
}
diff -urN gsd.orig/plugins/xrandr/gsd-xrandr-manager.c gsd.new/plugins/xrandr/gsd-xrandr-manager.c
--- gsd.orig/plugins/xrandr/gsd-xrandr-manager.c 2010-10-15 11:27:47.481185456 +0100
+++ gsd.new/plugins/xrandr/gsd-xrandr-manager.c 2010-10-15 11:34:56.736605248 +0100
@@ -2248,7 +2248,7 @@
{
manager->priv = GSD_XRANDR_MANAGER_GET_PRIVATE (manager);
- manager->priv->switch_video_mode_keycode = get_keycode_for_keysym_name (VIDEO_KEYSYM);
+ manager->priv->switch_video_mode_keycode = 0; /* get_keycode_for_keysym_name (VIDEO_KEYSYM);*/
manager->priv->rotate_windows_keycode = get_keycode_for_keysym_name (ROTATE_KEYSYM);
manager->priv->current_fn_f7_config = -1;