diff options
Diffstat (limited to 'plugins/media-keys')
-rw-r--r-- | plugins/media-keys/acme.h | 6 | ||||
-rw-r--r-- | plugins/media-keys/msd-media-keys-manager.c | 31 |
2 files changed, 32 insertions, 5 deletions
diff --git a/plugins/media-keys/acme.h b/plugins/media-keys/acme.h index 8ab55fe..8d6aba2 100644 --- a/plugins/media-keys/acme.h +++ b/plugins/media-keys/acme.h @@ -32,6 +32,9 @@ enum { MUTE_KEY, VOLUME_DOWN_KEY, VOLUME_UP_KEY, + MUTE_QUIET_KEY, + VOLUME_DOWN_QUIET_KEY, + VOLUME_UP_QUIET_KEY, POWER_KEY, EJECT_KEY, HOME_KEY, @@ -74,6 +77,9 @@ static struct { { MUTE_KEY, "volume-mute", NULL, NULL }, { VOLUME_DOWN_KEY, "volume-down", NULL, NULL }, { VOLUME_UP_KEY, "volume-up", NULL, NULL }, + { MUTE_QUIET_KEY, "volume-mute-quiet", NULL, NULL }, + { VOLUME_DOWN_QUIET_KEY, "volume-down-quiet", NULL, NULL }, + { VOLUME_UP_QUIET_KEY, "volume-up-quiet", NULL, NULL }, { POWER_KEY, "power", NULL, NULL }, { EJECT_KEY, "eject", NULL, NULL }, { HOME_KEY, "home", NULL, NULL }, diff --git a/plugins/media-keys/msd-media-keys-manager.c b/plugins/media-keys/msd-media-keys-manager.c index a4e958a..33ac891 100644 --- a/plugins/media-keys/msd-media-keys-manager.c +++ b/plugins/media-keys/msd-media-keys-manager.c @@ -634,7 +634,8 @@ static void update_dialog (MsdMediaKeysManager *manager, guint volume, gboolean muted, - gboolean sound_changed) + gboolean sound_changed, + gboolean quiet) { if (muted) volume = 0.0; @@ -651,7 +652,7 @@ update_dialog (MsdMediaKeysManager *manager, dialog_show (manager); #ifdef HAVE_LIBCANBERRA - if (sound_changed != FALSE && muted == FALSE) + if (quiet == FALSE && sound_changed != FALSE && muted == FALSE) ca_gtk_play_for_widget (manager->priv->dialog, 0, CA_PROP_EVENT_ID, "audio-volume-change", CA_PROP_EVENT_DESCRIPTION, "Volume changed through key press", @@ -663,7 +664,9 @@ update_dialog (MsdMediaKeysManager *manager, } static void -do_sound_action (MsdMediaKeysManager *manager, int type) +do_sound_action (MsdMediaKeysManager *manager, + int type, + gboolean quiet) { gboolean muted; gboolean muted_last; @@ -735,7 +738,8 @@ do_sound_action (MsdMediaKeysManager *manager, int type) update_dialog (manager, CLAMP (100 * volume / (volume_max - volume_min), 0, 100), muted, - sound_changed); + sound_changed, + quiet); } static void @@ -1099,7 +1103,22 @@ do_action (MsdMediaKeysManager *manager, case VOLUME_DOWN_KEY: case VOLUME_UP_KEY: #ifdef HAVE_LIBMATEMIXER - do_sound_action (manager, type); + do_sound_action (manager, type, FALSE); +#endif + break; + case MUTE_QUIET_KEY: +#ifdef HAVE_LIBMATEMIXER + do_sound_action (manager, MUTE_KEY, TRUE); +#endif + break; + case VOLUME_DOWN_QUIET_KEY: +#ifdef HAVE_LIBMATEMIXER + do_sound_action (manager, VOLUME_DOWN_KEY, TRUE); +#endif + break; + case VOLUME_UP_QUIET_KEY: +#ifdef HAVE_LIBMATEMIXER + do_sound_action (manager, VOLUME_UP_KEY, TRUE); #endif break; case POWER_KEY: @@ -1250,6 +1269,8 @@ acme_filter_events (GdkXEvent *xevent, switch (keys[i].key_type) { case VOLUME_DOWN_KEY: case VOLUME_UP_KEY: + case VOLUME_DOWN_QUIET_KEY: + case VOLUME_UP_QUIET_KEY: /* auto-repeatable keys */ if (xev->type != KeyPress) { return GDK_FILTER_CONTINUE; |