]> git.sesse.net Git - vlc/blobdiff - modules/video_output/directx/events.c
* modules/video_output/directx/events.c: implemented the same shortcuts as in the...
[vlc] / modules / video_output / directx / events.c
index 3a3367a78e094030821512c8d42530bf8d77620f..38cf06d89855409f45ef33252e6f3a490df2480c 100644 (file)
@@ -2,7 +2,7 @@
  * events.c: Windows DirectX video output events handler
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: events.c,v 1.11 2003/02/01 18:54:10 sam Exp $
+ * $Id: events.c,v 1.15 2003/05/17 14:36:19 gbazin Exp $
  *
  * Authors: Gildas Bazin <gbazin@netcourrier.com>
  *
@@ -35,8 +35,6 @@
 #include <vlc/input.h>
 #include <vlc/vout.h>
 
-#include "netutils.h"
-
 #include <windows.h>
 #include <windowsx.h>
 #include <shellapi.h>
@@ -64,7 +62,7 @@ static long FAR PASCAL DirectXEventProc ( HWND hwnd, UINT message,
 void DirectXEventThread( event_thread_t *p_event )
 {
     MSG msg;
-    POINT old_mouse_pos;
+    POINT old_mouse_pos = {0,0};
     vlc_value_t val;
     int i_width, i_height, i_x, i_y;
 
@@ -130,7 +128,47 @@ void DirectXEventThread( event_thread_t *p_event )
             ShowCursor( FALSE );
             break;
 
+        case WM_LBUTTONDOWN:
+            var_Get( p_event->p_vout, "mouse-button-down", &val );
+            val.i_int |= 1;
+            var_Set( p_event->p_vout, "mouse-button-down", val );
+            break;
+
+        case WM_LBUTTONUP:
+            var_Get( p_event->p_vout, "mouse-button-down", &val );
+            val.i_int &= ~1;
+            var_Set( p_event->p_vout, "mouse-button-down", val );
+
+            val.b_bool = VLC_TRUE;
+            var_Set( p_event->p_vout, "mouse-clicked", val );
+            break;
+
+        case WM_LBUTTONDBLCLK:
+            p_event->p_vout->p_sys->i_changes |= VOUT_FULLSCREEN_CHANGE;
+            break;
+
+        case WM_MBUTTONDOWN:
+            var_Get( p_event->p_vout, "mouse-button-down", &val );
+            val.i_int |= 2;
+            var_Set( p_event->p_vout, "mouse-button-down", val );
+            break;
+
+        case WM_MBUTTONUP:
+            var_Get( p_event->p_vout, "mouse-button-down", &val );
+            val.i_int &= ~2;
+            var_Set( p_event->p_vout, "mouse-button-down", val );
+            break;
+
+        case WM_RBUTTONDOWN:
+            var_Get( p_event->p_vout, "mouse-button-down", &val );
+            val.i_int |= 4;
+            var_Set( p_event->p_vout, "mouse-button-down", val );
+            break;
+
         case WM_RBUTTONUP:
+            var_Get( p_event->p_vout, "mouse-button-down", &val );
+            val.i_int &= ~4;
+            var_Set( p_event->p_vout, "mouse-button-down", val );
             {
                 intf_thread_t *p_intf;
                 p_intf = vlc_object_find( p_event, VLC_OBJECT_INTF,
@@ -143,18 +181,6 @@ void DirectXEventThread( event_thread_t *p_event )
             }
             break;
 
-        case WM_LBUTTONUP:
-            val.b_bool = VLC_TRUE;
-            var_Set( p_event->p_vout, "mouse-clicked", val );
-            break;
-
-        case WM_LBUTTONDOWN:
-            break;
-
-        case WM_LBUTTONDBLCLK:
-            p_event->p_vout->p_sys->i_changes |= VOUT_FULLSCREEN_CHANGE;
-            break;
-
         case WM_KEYDOWN:
             /* the key events are first processed here. The next
              * message processed by this main message loop will be the
@@ -163,35 +189,65 @@ void DirectXEventThread( event_thread_t *p_event )
             switch( msg.wParam )
             {
             case VK_ESCAPE:
-                /* exit application */
-                p_event->p_vlc->b_die = VLC_TRUE;
+                if( p_event->p_vout->b_fullscreen )
+                {
+                    p_event->p_vout->i_changes |= VOUT_FULLSCREEN_CHANGE;
+                }
+                else
+                {
+                    /* exit application */
+                    p_event->p_vout->p_vlc->b_die = VLC_TRUE;
+                }
                 break;
 
-            case VK_SPACE:
-            {
-                vlc_object_t *p_input = vlc_object_find( p_event->p_vout,
-                    VLC_OBJECT_INPUT, FIND_ANYWHERE );
-                if( p_input )
+            case VK_MENU:
                 {
-                    input_SetStatus( (input_thread_t *)p_input,
-                                     INPUT_STATUS_PAUSE );
-                    vlc_object_release( p_input );
+                    intf_thread_t *p_intf;
+                    p_intf = vlc_object_find( p_event->p_vout, VLC_OBJECT_INTF,
+                                              FIND_ANYWHERE );
+                    if( p_intf )
+                    {
+                        p_intf->b_menu_change = 1;
+                        vlc_object_release( p_intf );
+                    }
                 }
                 break;
-            }
 
-            case VK_F1: network_ChannelJoin( p_event, 1 ); break;
-            case VK_F2: network_ChannelJoin( p_event, 2 ); break;
-            case VK_F3: network_ChannelJoin( p_event, 3 ); break;
-            case VK_F4: network_ChannelJoin( p_event, 4 ); break;
-            case VK_F5: network_ChannelJoin( p_event, 5 ); break;
-            case VK_F6: network_ChannelJoin( p_event, 6 ); break;
-            case VK_F7: network_ChannelJoin( p_event, 7 ); break;
-            case VK_F8: network_ChannelJoin( p_event, 8 ); break;
-            case VK_F9: network_ChannelJoin( p_event, 9 ); break;
-            case VK_F10: network_ChannelJoin( p_event, 10 ); break;
-            case VK_F11: network_ChannelJoin( p_event, 11 ); break;
-            case VK_F12: network_ChannelJoin( p_event, 12 ); break;
+            case VK_LEFT:
+                input_Seek( p_event->p_vout, -5,
+                            INPUT_SEEK_SECONDS | INPUT_SEEK_CUR );
+                break;
+            case VK_RIGHT:
+                input_Seek( p_event->p_vout, 5,
+                            INPUT_SEEK_SECONDS | INPUT_SEEK_CUR );
+                break;
+            case VK_UP:
+                input_Seek( p_event->p_vout, 60,
+                            INPUT_SEEK_SECONDS | INPUT_SEEK_CUR );
+                break;
+            case VK_DOWN:
+                input_Seek( p_event->p_vout, -60,
+                            INPUT_SEEK_SECONDS | INPUT_SEEK_CUR );
+                break;
+            case VK_HOME:
+                input_Seek( p_event->p_vout, 0,
+                            INPUT_SEEK_BYTES | INPUT_SEEK_SET );
+                break;
+            case VK_END:
+                input_Seek( p_event->p_vout, 0,
+                            INPUT_SEEK_BYTES | INPUT_SEEK_END );
+                break;
+            case VK_PRIOR:
+                input_Seek( p_event->p_vout, 900,
+                            INPUT_SEEK_SECONDS | INPUT_SEEK_CUR );
+                break;
+            case VK_NEXT:
+                input_Seek( p_event->p_vout, -900,
+                            INPUT_SEEK_SECONDS | INPUT_SEEK_CUR );
+                break;
+            case VK_SPACE:
+                input_SetStatus( p_event->p_vout, INPUT_STATUS_PAUSE );
+                break;
             }
             TranslateMessage(&msg);
             break;
@@ -210,29 +266,6 @@ void DirectXEventThread( event_thread_t *p_event )
                 p_event->p_vout->p_sys->i_changes |= VOUT_FULLSCREEN_CHANGE;
                 break;
 
-            case 'c':                                /* toggle grayscale */
-            case 'C':
-                p_event->p_vout->b_grayscale = ! p_event->p_vout->b_grayscale;
-                p_event->p_vout->p_sys->i_changes |= VOUT_GRAYSCALE_CHANGE;
-                break;
-
-            case 'i':                                     /* toggle info */
-            case 'I':
-                p_event->p_vout->b_info = ! p_event->p_vout->b_info;
-                p_event->p_vout->p_sys->i_changes |= VOUT_INFO_CHANGE;
-                break;
-
-            case 's':                                  /* toggle scaling */
-            case 'S':
-                p_event->p_vout->b_scale = ! p_event->p_vout->b_scale;
-                p_event->p_vout->p_sys->i_changes |= VOUT_SCALE_CHANGE;
-                break;
-
-            case ' ':                                /* toggle interface */
-                p_event->p_vout->b_interface = ! p_event->p_vout->b_interface;
-                p_event->p_vout->p_sys->i_changes |= VOUT_INTF_CHANGE;
-                break;
-
             default:
                 break;
             }