* hotkeys.h: keycode defines
*****************************************************************************
* Copyright (C) 2003 VideoLAN
- * $Id: vlc_keys.h,v 1.13 2004/01/25 18:17:08 zorglub Exp $
+ * $Id$
*
* Authors: Sigmund Augdal <sigmunau@idi.ntnu.no>
*
#define KEY_PAGEDOWN 0x00180000
#define KEY_TAB 0x00190000
#define KEY_BACKSPACE 0x001A0000
+#define KEY_MOUSEWHEELUP 0x001B0000
+#define KEY_MOUSEWHEELDOWN 0x001C0000
#define KEY_ASCII 0x0000007F
#define KEY_UNSET 0
{ "Page Down", KEY_PAGEDOWN },
{ "Tab", KEY_TAB },
{ "Backspace", KEY_BACKSPACE },
+ { "Mouse Wheel Up", KEY_MOUSEWHEELUP },
+ { "Mouse Wheel Down", KEY_MOUSEWHEELDOWN },
{ "a", 'a' },
{ "b", 'b' },
{ "c", 'c' },
SkinObject( pIntf ), m_rWindowManager( rWindowManager ),
m_left( left ), m_top( top ), m_width( 0 ), m_height( 0 ),
m_pActiveLayout( NULL ), m_pLastHitControl( NULL ),
- m_pCapturingControl( NULL ), m_pFocusControl( NULL ), m_varVisible( pIntf )
+ m_pCapturingControl( NULL ), m_pFocusControl( NULL ), m_varVisible( pIntf ),
+ m_currModifier( 0 )
{
// Register as a moving window
m_rWindowManager.registerWindow( *this );
if( m_pFocusControl )
{
m_pFocusControl->handleEvent( rEvtKey );
+ return;
}
// Only do the action when the key is down
- else if( rEvtKey.getAsString().find( "key:down") != string::npos )
+ if( rEvtKey.getAsString().find( "key:down") != string::npos )
{
//XXX not to be hardcoded !
// Ctrl-S = Change skin
var_Set( getIntf()->p_vlc, "key-pressed", val );
}
+
+ // Always store the modifier, which can be needed for scroll events
+ m_currModifier = rEvtKey.getMod();
}
// Get the control hit by the mouse
CtrlGeneric *pNewHitControl = findHitControl( rEvtScroll.getXPos(),
rEvtScroll.getYPos());
-
setLastHit( pNewHitControl );
// Send a mouse event to the hit control, or to the control
{
pActiveControl->handleEvent( rEvtScroll );
}
+ else
+ {
+ // Treat the scroll event as a hotkey
+ vlc_value_t val;
+ if( rEvtScroll.getDirection() == EvtScroll::kUp )
+ {
+ val.i_int = KEY_MOUSEWHEELUP;
+ }
+ else
+ {
+ val.i_int = KEY_MOUSEWHEELDOWN;
+ }
+ // Add the modifiers
+ val.i_int |= m_currModifier;
+
+ var_Set( getIntf()->p_vlc, "key-pressed", val );
+ }
}
list<Anchor*> m_anchorList;
/// Variable for the visibility of the window
VarBoolImpl m_varVisible;
+ /// Current key modifier (also used for mouse)
+ int m_currModifier;
/// Method called when the observed variable is modified
virtual void onUpdate( Subject<VarBool> &rVariable );
* preferences_widgets.cpp : wxWindows plugin for vlc
*****************************************************************************
* Copyright (C) 2000-2004 VideoLAN
- * $Id: preferences_widgets.cpp,v 1.23 2004/01/29 17:04:01 gbazin Exp $
+ * $Id$
*
* Authors: Gildas Bazin <gbazin@netcourrier.com>
* Sigmund Augdal <sigmunau@idi.ntnu.no>
wxT("Page Down"),
wxT("Tab"),
wxT("Backspace"),
+ wxT("Mouse Wheel Up"),
+ wxT("Mouse Wheel Down"),
wxT("a"),
wxT("b"),
wxT("c"),
}
break;
+ case WM_MOUSEWHEEL:
+ if( GET_WHEEL_DELTA_WPARAM( msg.wParam ) > 0 )
+ {
+ val.i_int = KEY_MOUSEWHEELUP;
+ }
+ else
+ {
+ val.i_int = KEY_MOUSEWHEELDOWN;
+ }
+ if( val.i_int )
+ {
+ if( GetKeyState(VK_CONTROL) & 0x8000 )
+ {
+ val.i_int |= KEY_MODIFIER_CTRL;
+ }
+ if( GetKeyState(VK_SHIFT) & 0x8000 )
+ {
+ val.i_int |= KEY_MODIFIER_SHIFT;
+ }
+ if( GetKeyState(VK_MENU) & 0x8000 )
+ {
+ val.i_int |= KEY_MODIFIER_ALT;
+ }
+
+ var_Set( p_event->p_vlc, "key-pressed", val );
+ }
+ break;
+
case WM_VLC_CHANGE_TEXT:
if( p_event->p_vout->p_sys->b_using_overlay )
SetWindowText( p_event->p_vout->p_sys->hwnd,