Index: lib/rb-util.h
===================================================================
--- lib/rb-util.h	(revision 5780)
+++ lib/rb-util.h	(working copy)
@@ -38,6 +38,10 @@
 
 G_BEGIN_DECLS
 
+/* Offsets for seeking forward, and rewinding in seconds */
+#define FFWD_OFFSET 20
+#define RWD_OFFSET 10
+
 gboolean rb_true_function (gpointer dummy);
 gboolean rb_false_function (gpointer dummy);
 gpointer rb_null_function (gpointer dummy);
Index: plugins/lirc/rb-lirc-plugin.c
===================================================================
--- plugins/lirc/rb-lirc-plugin.c	(revision 5778)
+++ plugins/lirc/rb-lirc-plugin.c	(working copy)
@@ -160,9 +160,9 @@
 		} else if (strcmp (str, RB_IR_COMMAND_PREVIOUS) == 0) {
 			rb_shell_player_do_previous (plugin->shell_player, NULL);
 		} else if (strcmp (str, RB_IR_COMMAND_SEEK_FORWARD) == 0) {
-			rb_shell_player_seek (plugin->shell_player, 10);
+			rb_shell_player_seek (plugin->shell_player, FFWD_OFFSET);
 		} else if (strcmp (str, RB_IR_COMMAND_SEEK_BACKWARD) == 0) {
-			rb_shell_player_seek (plugin->shell_player, -10);
+			rb_shell_player_seek (plugin->shell_player, -RWD_OFFSET);
 		} else if (strcmp (str, RB_IR_COMMAND_VOLUME_UP) == 0) {
 			rb_shell_player_set_volume_relative (plugin->shell_player, 0.1, NULL);
 		} else if (strcmp (str, RB_IR_COMMAND_VOLUME_DOWN) == 0) {
Index: plugins/mmkeys/rb-mmkeys-plugin.c
===================================================================
--- plugins/mmkeys/rb-mmkeys-plugin.c	(revision 5778)
+++ plugins/mmkeys/rb-mmkeys-plugin.c	(working copy)
@@ -115,6 +115,22 @@
 		rb_shell_player_do_previous (plugin->shell_player, NULL);
 	} else if (strcmp (key, "Next") == 0) {
 		rb_shell_player_do_next (plugin->shell_player, NULL);
+	} else if (strcmp (key, "Repeat") == 0) {
+		gboolean shuffle, repeat;
+
+		if (rb_shell_player_get_playback_state (plugin->shell_player, &shuffle, &repeat)) {
+			rb_shell_player_set_playback_state (plugin->shell_player, shuffle, !repeat);
+		}
+	} else if (strcmp (key, "Shuffle") == 0) {
+		gboolean shuffle, repeat;
+
+		if (rb_shell_player_get_playback_state (plugin->shell_player, &shuffle, &repeat)) {
+			rb_shell_player_set_playback_state (plugin->shell_player, !shuffle, repeat);
+		}
+	} else if (strcmp (key, "FastForward") == 0) {
+		rb_shell_player_seek (plugin->shell_player, FFWD_OFFSET);
+	} else if (strcmp (key, "Rewind") == 0) {
+		rb_shell_player_seek (plugin->shell_player, -RWD_OFFSET);
 	}
 }
 
