]> git.sesse.net Git - vlc/blobdiff - modules/control/hotkeys.c
Added a "key-rate-normal" to reset input playback rate to 1x
[vlc] / modules / control / hotkeys.c
index b11e8a65fb0f76d963cbe7d9bfe5f5c7bf34c1ce..490bae9f643296d8fc10b87909af719da9982943 100644 (file)
@@ -244,7 +244,7 @@ static void Run( intf_thread_t *p_intf )
         /* Video Output actions */
         else if( i_action == ACTIONID_SNAPSHOT )
         {
-            if( p_vout ) vout_Control( p_vout, VOUT_SNAPSHOT );
+            if( p_vout ) var_TriggerCallback( p_vout, "video-snapshot" );
         }
         else if( i_action == ACTIONID_TOGGLE_FULLSCREEN )
         {
@@ -609,10 +609,44 @@ static void Run( intf_thread_t *p_intf )
                 }
                 free( val.psz_string );
             }
-            else if( i_action == ACTIONID_TOGGLE_SCALING && p_vout )
+            else if( i_action == ACTIONID_TOGGLE_AUTOSCALE && p_vout )
             {
-                bool b_scaling = var_GetBool( p_vout, "scaling" );
-                var_SetBool( p_vout, "scaling", !b_scaling );
+                float f_scalefactor = var_GetFloat( p_vout, "scale" );
+                if ( f_scalefactor != 1.0 )
+                {
+                    var_SetFloat( p_vout, "scale", 1.0 );
+                    vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
+                                         _("Zooming reset") );
+                }
+                else
+                {
+                    bool b_autoscale = !var_GetBool( p_vout, "autoscale" );
+                    var_SetBool( p_vout, "autoscale", b_autoscale );
+                    if( b_autoscale )
+                        vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
+                                         _("Scaled to screen") );
+                    else
+                        vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
+                                         _("Original Size") );
+                }
+            }
+            else if( i_action == ACTIONID_SCALE_UP && p_vout )
+            {
+               float f_scalefactor;
+
+               f_scalefactor = var_GetFloat( p_vout, "scale" );
+               if( f_scalefactor < 10. )
+                   f_scalefactor += .1;
+               var_SetFloat( p_vout, "scale", f_scalefactor );
+            }
+            else if( i_action == ACTIONID_SCALE_DOWN && p_vout )
+            {
+               float f_scalefactor;
+
+               f_scalefactor = var_GetFloat( p_vout, "scale" );
+               if( f_scalefactor > .3 )
+                   f_scalefactor -= .1;
+               var_SetFloat( p_vout, "scale", f_scalefactor );
             }
             else if( i_action == ACTIONID_DEINTERLACE && p_vout )
             {
@@ -723,6 +757,12 @@ static void Run( intf_thread_t *p_intf )
                 vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
                                  _("Slower") );
             }
+            else if( i_action == ACTIONID_RATE_NORMAL )
+            {
+                var_SetInteger( p_input, "rate", INPUT_RATE_DEFAULT );
+                vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
+                                 _("1x") );
+            }
             else if( i_action == ACTIONID_POSITION && b_seekable )
             {
                 DisplayPosition( p_intf, p_vout, p_input );
@@ -902,9 +942,8 @@ static int SpecialKeyEvent( vlc_object_t *libvlc, char const *psz_var,
                             void *p_data )
 {
     intf_thread_t *p_intf = (intf_thread_t *)p_data;
-    int i_action;
+    int i_action = 0;
 
-    (void)libvlc;
     (void)psz_var;
     (void)oldval;
 
@@ -926,6 +965,9 @@ static int SpecialKeyEvent( vlc_object_t *libvlc, char const *psz_var,
         case KEY_MOUSEWHEELRIGHT:
             i_action = ACTIONID_JUMP_FORWARD_EXTRASHORT;
             break;
+        case KEY_MENU:
+            var_SetBool( libvlc, "intf-popupmenu", true );
+            break;
         default:
           return VLC_SUCCESS;
     }