Index: gnome-settings-daemon-2.27.91/data/apps_gnome_settings_daemon_keybindings.schemas.in
===================================================================
--- gnome-settings-daemon-2.27.91.orig/data/apps_gnome_settings_daemon_keybindings.schemas.in
+++ gnome-settings-daemon-2.27.91/data/apps_gnome_settings_daemon_keybindings.schemas.in
@@ -14,6 +14,17 @@
+ /schemas/apps/gnome_settings_daemon/toggle_mute
+ /apps/gnome_settings_daemon/toggle_mute
+ bool
+ TRUE
+
+ Toggle Mute
+ Toggle the sound mixer's mute status when then mute button is pressed.
+
+
+
+
/schemas/apps/gnome_settings_daemon/keybindings/volume_mute
/apps/gnome_settings_daemon/keybindings/volume_mute
string
Index: gnome-settings-daemon-2.27.91/plugins/media-keys/gsd-media-keys-manager.c
===================================================================
--- gnome-settings-daemon-2.27.91.orig/plugins/media-keys/gsd-media-keys-manager.c
+++ gnome-settings-daemon-2.27.91/plugins/media-keys/gsd-media-keys-manager.c
@@ -632,8 +632,10 @@ do_sound_action (GsdMediaKeysManager *ma
int type)
{
gboolean muted;
+ gboolean toggle_mute;
guint vol, norm_vol_step;
int vol_step;
+ GError *error;
if (manager->priv->stream == NULL)
return;
@@ -654,7 +656,23 @@ do_sound_action (GsdMediaKeysManager *ma
switch (type) {
case MUTE_KEY:
muted = !muted;
- gvc_mixer_stream_change_is_muted (manager->priv->stream, muted);
+
+ error = NULL;
+ toggle_mute = gconf_client_get_bool (manager->priv->conf_client,
+ GCONF_MISC_DIR "/toggle_mute",
+ &error);
+
+ if (error) {
+ toggle_mute = TRUE;
+ g_error_free (error);
+ }
+
+ if (toggle_mute)
+ gvc_mixer_stream_change_is_muted (manager->priv->stream,
+ muted);
+ else
+ gvc_mixer_stream_change_is_muted (manager->priv->stream,
+ TRUE);
break;
case VOLUME_DOWN_KEY:
if (!muted && (vol <= norm_vol_step)) {