summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2021-10-18 15:16:17 +0200
committerBastien Nocera <hadess@hadess.net>2021-10-18 15:17:08 +0200
commit4a3f4201ea29c03500ce7a6896072e2f4e65dc32 (patch)
treed697d95fdaa7507b0d11fdfd67b2cfb92164a04f
parent50cb6eef306aa9139941ecbc4a9f6239505cefe0 (diff)
downloadgnome-settings-daemon-4a3f4201ea29c03500ce7a6896072e2f4e65dc32.tar.gz
media-keys: Add support for Rewind, FastForward, Repeat and Shuffle keys
As were supported in gnome-settings-daemon's MediaKeys.
-rw-r--r--plugins/media-keys/gsd-media-keys-manager.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 48894f82..2f898d59 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -101,6 +101,9 @@
#define TOUCHPAD_ENABLED_KEY "send-events"
#define HIGH_CONTRAST "HighContrast"
+#define REWIND_MSEC (-10 * 1000)
+#define FASTFORWARD_MSEC (45 * 1000)
+
#define VOLUME_STEP "volume-step"
#define VOLUME_STEP_PRECISE 2
#define MAX_VOLUME 65536.0
@@ -1715,8 +1718,21 @@ do_multimedia_player_action (GsdMediaKeysManager *manager,
g_debug ("Media key '%s' pressed", key);
if (mpris_controller_get_has_active_player (priv->mpris_controller)) {
- if (mpris_controller_key (priv->mpris_controller, key))
+ if (g_str_equal (key, "Rewind")) {
+ if (mpris_controller_seek (priv->mpris_controller, REWIND_MSEC))
+ return TRUE;
+ } else if (g_str_equal (key, "FastForward")) {
+ if (mpris_controller_seek (priv->mpris_controller, FASTFORWARD_MSEC))
+ return TRUE;
+ } else if (g_str_equal (key, "LoopStatus")) {
+ if (mpris_controller_toggle (priv->mpris_controller, "LoopStatus"))
+ return TRUE;
+ } else if (g_str_equal (key, "Shuffle")) {
+ if (mpris_controller_toggle (priv->mpris_controller, "Shuffle"))
+ return TRUE;
+ } else if (mpris_controller_key (priv->mpris_controller, key)) {
return TRUE;
+ }
}
/* Popup a dialog with an (/) icon */