Skip to content

Commit b2f3af2

Browse files
zhangxianwei8raveit65
authored andcommitted
media-keys: Make sound changes quiet with Alt
<Alt>+volume control keys will change the sound, without playing a notification sound, which can be useful when things need to be quiet. This uses the settings stored in GSettings for those audio keys. Signed-off-by: Zhang Xianwei <zhang.xianwei8@zte.com.cn>
1 parent 0fdb1cd commit b2f3af2

File tree

3 files changed

+47
-5
lines changed

3 files changed

+47
-5
lines changed

data/org.mate.SettingsDaemon.plugins.media-keys.gschema.xml.in

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,21 @@
4040
<summary>Volume up</summary>
4141
<description>Binding to raise the system volume.</description>
4242
</key>
43+
<key name="volume-mute-quiet" type="s">
44+
<default>'&lt;Alt&gt;XF86AudioMute'</default>
45+
<summary>Mute the audio quietly</summary>
46+
<description>Binding to mute the system volume quietly.</description>
47+
</key>
48+
<key name="volume-down-quiet" type="s">
49+
<default>'&lt;Alt&gt;XF86AudioLowerVolume'</default>
50+
<summary>Turn the volume down quietly</summary>
51+
<description>Binding to lower the system volume quietly.</description>
52+
</key>
53+
<key name="volume-up-quiet" type="s">
54+
<default>'&lt;Alt&gt;XF86AudioRaiseVolume'</default>
55+
<summary>Turn the volume up quietly</summary>
56+
<description>Binding to raise the system volume quietly.</description>
57+
</key>
4358
<key name="power" type="s">
4459
<default>'&lt;Control&gt;&lt;Alt&gt;Delete'</default>
4560
<summary>Shut down</summary>

plugins/media-keys/acme.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ enum {
3232
MUTE_KEY,
3333
VOLUME_DOWN_KEY,
3434
VOLUME_UP_KEY,
35+
MUTE_QUIET_KEY,
36+
VOLUME_DOWN_QUIET_KEY,
37+
VOLUME_UP_QUIET_KEY,
3538
POWER_KEY,
3639
EJECT_KEY,
3740
HOME_KEY,
@@ -74,6 +77,9 @@ static struct {
7477
{ MUTE_KEY, "volume-mute", NULL, NULL },
7578
{ VOLUME_DOWN_KEY, "volume-down", NULL, NULL },
7679
{ VOLUME_UP_KEY, "volume-up", NULL, NULL },
80+
{ MUTE_QUIET_KEY, "volume-mute-quiet", NULL, NULL },
81+
{ VOLUME_DOWN_QUIET_KEY, "volume-down-quiet", NULL, NULL },
82+
{ VOLUME_UP_QUIET_KEY, "volume-up-quiet", NULL, NULL },
7783
{ POWER_KEY, "power", NULL, NULL },
7884
{ EJECT_KEY, "eject", NULL, NULL },
7985
{ HOME_KEY, "home", NULL, NULL },

plugins/media-keys/msd-media-keys-manager.c

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -634,7 +634,8 @@ static void
634634
update_dialog (MsdMediaKeysManager *manager,
635635
guint volume,
636636
gboolean muted,
637-
gboolean sound_changed)
637+
gboolean sound_changed,
638+
gboolean quiet)
638639
{
639640
if (muted)
640641
volume = 0.0;
@@ -651,7 +652,7 @@ update_dialog (MsdMediaKeysManager *manager,
651652
dialog_show (manager);
652653

653654
#ifdef HAVE_LIBCANBERRA
654-
if (sound_changed != FALSE && muted == FALSE)
655+
if (quiet == FALSE && sound_changed != FALSE && muted == FALSE)
655656
ca_gtk_play_for_widget (manager->priv->dialog, 0,
656657
CA_PROP_EVENT_ID, "audio-volume-change",
657658
CA_PROP_EVENT_DESCRIPTION, "Volume changed through key press",
@@ -663,7 +664,9 @@ update_dialog (MsdMediaKeysManager *manager,
663664
}
664665

665666
static void
666-
do_sound_action (MsdMediaKeysManager *manager, int type)
667+
do_sound_action (MsdMediaKeysManager *manager,
668+
int type,
669+
gboolean quiet)
667670
{
668671
gboolean muted;
669672
gboolean muted_last;
@@ -735,7 +738,8 @@ do_sound_action (MsdMediaKeysManager *manager, int type)
735738
update_dialog (manager,
736739
CLAMP (100 * volume / (volume_max - volume_min), 0, 100),
737740
muted,
738-
sound_changed);
741+
sound_changed,
742+
quiet);
739743
}
740744

741745
static void
@@ -1099,7 +1103,22 @@ do_action (MsdMediaKeysManager *manager,
10991103
case VOLUME_DOWN_KEY:
11001104
case VOLUME_UP_KEY:
11011105
#ifdef HAVE_LIBMATEMIXER
1102-
do_sound_action (manager, type);
1106+
do_sound_action (manager, type, FALSE);
1107+
#endif
1108+
break;
1109+
case MUTE_QUIET_KEY:
1110+
#ifdef HAVE_LIBMATEMIXER
1111+
do_sound_action (manager, MUTE_KEY, TRUE);
1112+
#endif
1113+
break;
1114+
case VOLUME_DOWN_QUIET_KEY:
1115+
#ifdef HAVE_LIBMATEMIXER
1116+
do_sound_action (manager, VOLUME_DOWN_KEY, TRUE);
1117+
#endif
1118+
break;
1119+
case VOLUME_UP_QUIET_KEY:
1120+
#ifdef HAVE_LIBMATEMIXER
1121+
do_sound_action (manager, VOLUME_UP_KEY, TRUE);
11031122
#endif
11041123
break;
11051124
case POWER_KEY:
@@ -1250,6 +1269,8 @@ acme_filter_events (GdkXEvent *xevent,
12501269
switch (keys[i].key_type) {
12511270
case VOLUME_DOWN_KEY:
12521271
case VOLUME_UP_KEY:
1272+
case VOLUME_DOWN_QUIET_KEY:
1273+
case VOLUME_UP_QUIET_KEY:
12531274
/* auto-repeatable keys */
12541275
if (xev->type != KeyPress) {
12551276
return GDK_FILTER_CONTINUE;

0 commit comments

Comments
 (0)