Index: libs/libmythtv/tv_play.cpp
===================================================================
--- libs/libmythtv/tv_play.cpp	(revision 7530)
+++ libs/libmythtv/tv_play.cpp	(working copy)
@@ -80,6 +80,7 @@
     REG_KEY("TV Playback", "PAUSE", "Pause", "P");
     REG_KEY("TV Playback", "DELETE", "Delete Program", "D");
     REG_KEY("TV Playback", "SEEKFFWD", "Fast Forward", "Right");
+    REG_KEY("TV Playback", "SEEKFFWD2", "Fast Forward 2", "F12"); 
     REG_KEY("TV Playback", "SEEKRWND", "Rewind", "Left");
     REG_KEY("TV Playback", "CHANNELUP", "Channel up", "Up");
     REG_KEY("TV Playback", "CHANNELDOWN", "Channel down", "Down");
@@ -172,7 +173,7 @@
 TV::TV(void)
     : QObject(NULL, "TV"),
       // Configuration variables from database
-      baseFilters(""), fftime(0), rewtime(0),
+      baseFilters(""), fftime(0), fftime2(0), rewtime(0),
       jumptime(0), usePicControls(false), smartChannelChange(false),
       MuteIndividualChannels(false), arrowAccel(false), osd_display_time(0),
       autoCommercialSkip(false), tryUnflaggedSkip(false),
@@ -267,6 +268,7 @@
 
     baseFilters         += gContext->GetSetting("CustomFilters");
     fftime               = gContext->GetNumSetting("FastForwardAmount", 30);
+    fftime2              = gContext->GetNumSetting("FastForwardAmount2", 5);
     rewtime              = gContext->GetNumSetting("RewindAmount", 5);
     jumptime             = gContext->GetNumSetting("JumpAmount", 10);
     usePicControls       = gContext->GetNumSetting("UseOutputPictureControls",0);
@@ -1933,9 +1935,20 @@
             else
                 ChangeFFRew(1);
         }
-        else if (action == "FFWDSTICKY")
+        else if (action == "SEEKFFWD2")
         {
             if (channelqueued)
+                DoArbSeek(ARBSEEK_FORWARD);
+            else if (paused)
+                DoSeek(1.001 / frameRate, tr("Forward"));
+            else 
+            {
+                DoSeek(fftime2, tr("Skip Ahead 2"));
+            }
+        }
+         else if (action == "FFWDSTICKY")
+        {
+            if (channelqueued)
                 DoArbSeek(ARBSEEK_END);
             else if (paused)
                 DoSeek(1.0, tr("Forward"));
Index: libs/libmythtv/tv_play.h
===================================================================
--- libs/libmythtv/tv_play.h	(revision 7530)
+++ libs/libmythtv/tv_play.h	(working copy)
@@ -264,6 +264,7 @@
     // Configuration variables from database
     QString baseFilters;
     int     fftime;
+    int     fftime2;
     int     rewtime;
     int     jumptime;
     bool    usePicControls;
Index: programs/mythfrontend/globalsettings.cpp
===================================================================
--- programs/mythfrontend/globalsettings.cpp	(revision 7530)
+++ programs/mythfrontend/globalsettings.cpp	(working copy)
@@ -355,6 +355,18 @@
     return gs;
 }
 
+static HostSpinBox *FastForwardAmount2()
+{
+    HostSpinBox *gs = new HostSpinBox("FastForwardAmount2", 1, 600, 5, 
+                                            true);
+    gs->setLabel(QObject::tr("Fast forward 2 amount (in seconds)"));
+    gs->setValue(5);
+    gs->setHelpText(QObject::tr("How many seconds to skip forward on a secondary fast "
+                    "forward."));
+    return gs;
+}
+
+
 static HostSpinBox *RewindAmount()
 {
     HostSpinBox *gs = new HostSpinBox("RewindAmount", 1, 600, 5, true);
@@ -2991,6 +3003,7 @@
     VerticalConfigurationGroup* seek = new VerticalConfigurationGroup(false);
     seek->setLabel(QObject::tr("Seeking"));
     seek->addChild(FastForwardAmount());
+    seek->addChild(FastForwardAmount2());
     seek->addChild(RewindAmount());
     seek->addChild(SmartForward());
     seek->addChild(StickyKeys());
