if ( window )
{
+ fgState.Modifiers = fgPlatformGetModifiers( );
+
/* Checking for CTRL, ALT, and SHIFT key positions: Key Down! */
if ( !lControl && GetAsyncKeyState ( VK_LCONTROL ) )
{
rAlt = 0;
}
+
+ fgState.Modifiers = INVALID_MODIFIERS;
}
switch( uMsg )
}
break;
- case 0x020a:
- /* Should be WM_MOUSEWHEEL but my compiler doesn't recognize it */
+ case WM_MOUSEWHEEL:
{
int wheel_number = LOWORD( wParam );
short ticks = ( short )HIWORD( wParam );
/*
* XXX Should use WHEEL_DELTA instead of 120
*/
- if ( abs ( fgState.MouseWheelTicks ) > 120 )
+ if ( abs ( fgState.MouseWheelTicks ) >= 120 )
{
int direction = ( fgState.MouseWheelTicks > 0 ) ? 1 : -1;
/*
* XXX Should use WHEEL_DELTA instead of 120
*/
- while( abs ( fgState.MouseWheelTicks ) > 120 )
+ while( abs ( fgState.MouseWheelTicks ) >= 120 )
{
if( FETCH_WCB( *window, MouseWheel ) )
INVOKE_WCB( *window, MouseWheel,
KEY( VK_RIGHT, GLUT_KEY_RIGHT );
KEY( VK_DOWN, GLUT_KEY_DOWN );
KEY( VK_INSERT, GLUT_KEY_INSERT );
- KEY( VK_LCONTROL, GLUT_KEY_CTRL_L );
- KEY( VK_RCONTROL, GLUT_KEY_CTRL_R );
- KEY( VK_LSHIFT, GLUT_KEY_SHIFT_L );
- KEY( VK_RSHIFT, GLUT_KEY_SHIFT_R );
- KEY( VK_LMENU, GLUT_KEY_ALT_L );
- KEY( VK_RMENU, GLUT_KEY_ALT_R );
+
+ case VK_LCONTROL: case VK_RCONTROL: case VK_CONTROL:
+ case VK_LSHIFT: case VK_RSHIFT: case VK_SHIFT:
+ case VK_LMENU: case VK_RMENU: case VK_MENU:
+ /* These keypresses and releases are handled earlier in the function */
+ break;
case VK_DELETE:
/* The delete key should be treated as an ASCII keypress: */
KEY( VK_RIGHT, GLUT_KEY_RIGHT );
KEY( VK_DOWN, GLUT_KEY_DOWN );
KEY( VK_INSERT, GLUT_KEY_INSERT );
- KEY( VK_LCONTROL, GLUT_KEY_CTRL_L );
- KEY( VK_RCONTROL, GLUT_KEY_CTRL_R );
- KEY( VK_LSHIFT, GLUT_KEY_SHIFT_L );
- KEY( VK_RSHIFT, GLUT_KEY_SHIFT_R );
- KEY( VK_LMENU, GLUT_KEY_ALT_L );
- KEY( VK_RMENU, GLUT_KEY_ALT_R );
+
+ case VK_LCONTROL: case VK_RCONTROL: case VK_CONTROL:
+ case VK_LSHIFT: case VK_RSHIFT: case VK_SHIFT:
+ case VK_LMENU: case VK_RMENU: case VK_MENU:
+ /* These keypresses and releases are handled earlier in the function */
+ break;
case VK_DELETE:
/* The delete key should be treated as an ASCII keypress: */