X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Ffreeglut_main.c;h=25c8e38ba35022776c0348078b9a62d397f68823;hb=0b29e3bf6d3736fa2dac4dfd792db622d490f004;hp=b1d7165442c86700a62f367c89cc98974ae427d0;hpb=bc0d27e8c973c916fc87fa752e60a9de7d54b55b;p=freeglut diff --git a/src/freeglut_main.c b/src/freeglut_main.c index b1d7165..25c8e38 100644 --- a/src/freeglut_main.c +++ b/src/freeglut_main.c @@ -62,8 +62,22 @@ struct GXKeyList { short vkStart; POINT ptStart; }; +/*__declspec(dllimport) struct GXKeyList GXGetDefaultKeys(int iOptions); +__declspec(dllimport) int GXOpenInput(); +#include "my_gx.h"*/ + extern void wince_GetDefaultKeys(void* nData, int iOptions); extern void wince_OpenInput(); + +/*void wince_GetDefaultKeys(void* nData, int iOptions) +{ + *(struct GXKeyList*)nData = GXGetDefaultKeys(iOptions); +} +void wince_OpenInput() +{ + GXOpenInput(); +}*/ + #endif #ifndef MAX @@ -157,7 +171,7 @@ static void fghReshapeWindowByHandle ( SFG_WindowHandleType handle, SWP_NOZORDER ); } -#endif //TARGET_HOST_WINCE +#endif /* TARGET_HOST_WINCE */ /* * XXX Should update {window->State.OldWidth, window->State.OldHeight} @@ -290,7 +304,7 @@ static void fghcbCheckJoystickPolls( SFG_Window *window, { #if !TARGET_HOST_WINCE fgJoystickPollWindow( window ); -#endif //!TARGET_HOST_WINCE +#endif /* !TARGET_HOST_WINCE */ window->State.JoystickLastPoll = checkTime; } @@ -954,10 +968,13 @@ void FGAPIENTRY glutMainLoopEvent( void ) char keys[32]; XQueryKeymap( fgDisplay.Display, keys ); /* Look at X11 keystate to detect repeat mode */ - if ( keys[event.xkey.keycode>>3] & (1<<(event.xkey.keycode%8)) ) - window->State.KeyRepeating = GL_TRUE; - else - window->State.KeyRepeating = GL_FALSE; + if ( event.xkey.keycode<256 ) /* XQueryKeymap is limited to 256 keycodes */ + { + if ( keys[event.xkey.keycode>>3] & (1<<(event.xkey.keycode%8)) ) + window->State.KeyRepeating = GL_TRUE; + else + window->State.KeyRepeating = GL_FALSE; + } } } else @@ -1287,7 +1304,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, #if TARGET_HOST_WINCE // Take over button handling wince_OpenInput(); -#endif //TARGET_HOST_WINCE +#endif /* TARGET_HOST_WINCE */ break; case WM_SIZE: @@ -1305,7 +1322,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, #else window->State.Width = LOWORD(lParam); window->State.Height = HIWORD(lParam); -#endif //TARGET_HOST_WINCE +#endif /* TARGET_HOST_WINCE */ } break; @@ -1405,7 +1422,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, #else window->State.MouseX = LOWORD( lParam ); window->State.MouseY = HIWORD( lParam ); -#endif //TARGET_HOST_WINCE +#endif /* TARGET_HOST_WINCE */ if ( window->ActiveMenu ) { @@ -1445,7 +1462,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, #else window->State.MouseX = LOWORD( lParam ); window->State.MouseY = HIWORD( lParam ); -#endif //TARGET_HOST_WINCE +#endif /* TARGET_HOST_WINCE */ switch( uMsg ) { @@ -1488,7 +1505,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, if( button == GLUT_RIGHT_BUTTON ) button = GLUT_LEFT_BUTTON; } -#endif //!TARGET_HOST_WINCE +#endif /* !TARGET_HOST_WINCE */ if( button == -1 ) return DefWindowProc( hWnd, uMsg, lParam, wParam ); @@ -1650,7 +1667,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, { #if TARGET_HOST_WINCE struct GXKeyList gxKeyList; -#endif //TARGET_HOST_WINCE +#endif /* TARGET_HOST_WINCE */ int keypress = -1; POINT mouse_pos ; @@ -1812,7 +1829,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, ( (char)wParam, window->State.MouseX, window->State.MouseY ) ); -#endif //!TARGET_HOST_WINCE +#endif /* !TARGET_HOST_WINCE */ } } @@ -1952,7 +1969,7 @@ LRESULT CALLBACK fgWindowProc( HWND hWnd, UINT uMsg, WPARAM wParam, break ; } } -#endif //!TARGET_HOST_WINCE +#endif /* !TARGET_HOST_WINCE */ /* We need to pass the message on to the operating system as well */ lRet = DefWindowProc( hWnd, uMsg, wParam, lParam );