diff --git a/examples/osganimate/osganimate.cpp b/examples/osganimate/osganimate.cpp index 9b9ed643b..b18b56072 100644 --- a/examples/osganimate/osganimate.cpp +++ b/examples/osganimate/osganimate.cpp @@ -257,6 +257,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgbillboard/osgbillboard.cpp b/examples/osgbillboard/osgbillboard.cpp index dda0ce247..55f72b2f6 100644 --- a/examples/osgbillboard/osgbillboard.cpp +++ b/examples/osgbillboard/osgbillboard.cpp @@ -220,5 +220,8 @@ int main( int argc, char **argv ) } + // wait for all cull and draw threads to complete before exit. + viewer.sync(); + return 0; } diff --git a/examples/osgcallback/osgcallback.cpp b/examples/osgcallback/osgcallback.cpp index 8ef5da5e2..d42e8bbf7 100644 --- a/examples/osgcallback/osgcallback.cpp +++ b/examples/osgcallback/osgcallback.cpp @@ -196,6 +196,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgclip/osgclip.cpp b/examples/osgclip/osgclip.cpp index d893be143..02761597a 100644 --- a/examples/osgclip/osgclip.cpp +++ b/examples/osgclip/osgclip.cpp @@ -196,6 +196,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgcluster/osgcluster.cpp b/examples/osgcluster/osgcluster.cpp index 3934ba612..1db9b5cc8 100644 --- a/examples/osgcluster/osgcluster.cpp +++ b/examples/osgcluster/osgcluster.cpp @@ -222,7 +222,9 @@ int main( int argc, char **argv ) viewer.frame(); } - + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); // if we are master clean up by telling all slaves that we're going down. if (viewerMode==MASTER) diff --git a/examples/osgcopy/osgcopy.cpp b/examples/osgcopy/osgcopy.cpp index 367feb7b8..be16a727b 100644 --- a/examples/osgcopy/osgcopy.cpp +++ b/examples/osgcopy/osgcopy.cpp @@ -240,6 +240,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgcubemap/osgcubemap.cpp b/examples/osgcubemap/osgcubemap.cpp index 8c33c3f49..4828916eb 100644 --- a/examples/osgcubemap/osgcubemap.cpp +++ b/examples/osgcubemap/osgcubemap.cpp @@ -135,6 +135,9 @@ int main(int argc, char *argv[]) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osggeodemo/osggeodemo.cpp b/examples/osggeodemo/osggeodemo.cpp index fb1d65d9d..4b1cd4447 100644 --- a/examples/osggeodemo/osggeodemo.cpp +++ b/examples/osggeodemo/osggeodemo.cpp @@ -180,6 +180,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osggeometry/osggeometry.cpp b/examples/osggeometry/osggeometry.cpp index f4d01049b..8e8ef614f 100644 --- a/examples/osggeometry/osggeometry.cpp +++ b/examples/osggeometry/osggeometry.cpp @@ -703,6 +703,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osghangglide/osghangglide.cpp b/examples/osghangglide/osghangglide.cpp index 14a86ccda..dcf8e9e7e 100644 --- a/examples/osghangglide/osghangglide.cpp +++ b/examples/osghangglide/osghangglide.cpp @@ -162,6 +162,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osghud/osghud.cpp b/examples/osghud/osghud.cpp index 9706a237b..b522bfcf1 100644 --- a/examples/osghud/osghud.cpp +++ b/examples/osghud/osghud.cpp @@ -181,5 +181,8 @@ int main( int argc, char **argv ) } + // wait for all cull and draw threads to complete before exit. + viewer.sync(); + return 0; } diff --git a/examples/osgimpostor/osgimpostor.cpp b/examples/osgimpostor/osgimpostor.cpp index 6e0ab5453..b628ae93b 100644 --- a/examples/osgimpostor/osgimpostor.cpp +++ b/examples/osgimpostor/osgimpostor.cpp @@ -9,10 +9,6 @@ #include -#include -#include -#include - #include #include "TestManipulator.h" diff --git a/examples/osgkeyboard/osgkeyboard.cpp b/examples/osgkeyboard/osgkeyboard.cpp index a91248211..42689b39d 100644 --- a/examples/osgkeyboard/osgkeyboard.cpp +++ b/examples/osgkeyboard/osgkeyboard.cpp @@ -327,8 +327,9 @@ int main( int argc, char **argv ) viewer.frame(); } - - //viewer.sync(); + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osglight/osglight.cpp b/examples/osglight/osglight.cpp index a77cb5e42..e01657f1b 100644 --- a/examples/osglight/osglight.cpp +++ b/examples/osglight/osglight.cpp @@ -371,6 +371,9 @@ int main( int argc, char **argv ) // fire off the cull and draw traversals of the scene. viewer.frame(); + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); } diff --git a/examples/osglightpoint/osglightpoint.cpp b/examples/osglightpoint/osglightpoint.cpp index 56e60312f..847ce3cf9 100644 --- a/examples/osglightpoint/osglightpoint.cpp +++ b/examples/osglightpoint/osglightpoint.cpp @@ -184,6 +184,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osglogo/osglogo.cpp b/examples/osglogo/osglogo.cpp index 1f30a18f2..14acce987 100644 --- a/examples/osglogo/osglogo.cpp +++ b/examples/osglogo/osglogo.cpp @@ -460,6 +460,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgmultitexture/osgmultitexture.cpp b/examples/osgmultitexture/osgmultitexture.cpp index 0aba8f0e4..c8a4c2955 100644 --- a/examples/osgmultitexture/osgmultitexture.cpp +++ b/examples/osgmultitexture/osgmultitexture.cpp @@ -107,6 +107,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgoccluder/osgoccluder.cpp b/examples/osgoccluder/osgoccluder.cpp index e0a3ade97..bdf0a4ec7 100644 --- a/examples/osgoccluder/osgoccluder.cpp +++ b/examples/osgoccluder/osgoccluder.cpp @@ -369,7 +369,7 @@ int main( int argc, char **argv ) } - //viewer.sync(); + viewer.sync(); return 0; } diff --git a/examples/osgparticle/osgparticle.cpp b/examples/osgparticle/osgparticle.cpp index f0539098f..211ccab59 100644 --- a/examples/osgparticle/osgparticle.cpp +++ b/examples/osgparticle/osgparticle.cpp @@ -385,7 +385,9 @@ int main(int argc, char **argv) viewer.setSceneData(root); // create the windows and run the threads. - viewer.realize(Producer::CameraGroup::ThreadPerCamera); + // viewer.realize(Producer::CameraGroup::ThreadPerCamera); + // run single threaded since osgParticle still writes during cull. + viewer.realize(Producer::CameraGroup::SingleThreaded); while( !viewer.done() ) { @@ -400,6 +402,9 @@ int main(int argc, char **argv) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgpbuffer/osgpbuffer.cpp b/examples/osgpbuffer/osgpbuffer.cpp index f278a4178..ea091e198 100644 --- a/examples/osgpbuffer/osgpbuffer.cpp +++ b/examples/osgpbuffer/osgpbuffer.cpp @@ -10,10 +10,6 @@ #include #include -#include -#include -#include - #include #include @@ -663,6 +659,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); delete g_pPixelBuffer; diff --git a/examples/osgprerender/osgprerender.cpp b/examples/osgprerender/osgprerender.cpp index 1183000c1..1f7e8a267 100644 --- a/examples/osgprerender/osgprerender.cpp +++ b/examples/osgprerender/osgprerender.cpp @@ -439,6 +439,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgreflect/osgreflect.cpp b/examples/osgreflect/osgreflect.cpp index 8b41c8191..012543e98 100644 --- a/examples/osgreflect/osgreflect.cpp +++ b/examples/osgreflect/osgreflect.cpp @@ -403,6 +403,9 @@ int main( int argc, char **argv ) } + // wait for all cull and draw threads to complete before exit. + viewer.sync(); + return 0; } diff --git a/examples/osgscribe/osgscribe.cpp b/examples/osgscribe/osgscribe.cpp index 0cf2d33d8..56371ed5c 100644 --- a/examples/osgscribe/osgscribe.cpp +++ b/examples/osgscribe/osgscribe.cpp @@ -9,10 +9,6 @@ #include #include -#include -#include -#include - #include #include @@ -124,6 +120,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgsequence/osgsequence.cpp b/examples/osgsequence/osgsequence.cpp index 81c1ee0fb..a2a82c0b5 100644 --- a/examples/osgsequence/osgsequence.cpp +++ b/examples/osgsequence/osgsequence.cpp @@ -6,8 +6,6 @@ #include -#include - #include @@ -196,6 +194,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgshadowtexture/osgshadowtexture.cpp b/examples/osgshadowtexture/osgshadowtexture.cpp index 1a7e305a4..206cee36e 100644 --- a/examples/osgshadowtexture/osgshadowtexture.cpp +++ b/examples/osgshadowtexture/osgshadowtexture.cpp @@ -11,11 +11,6 @@ #include #include -#include -#include -#include - - #include @@ -235,6 +230,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgshape/osgshape.cpp b/examples/osgshape/osgshape.cpp index faa23f455..3d7245817 100644 --- a/examples/osgshape/osgshape.cpp +++ b/examples/osgshape/osgshape.cpp @@ -3,8 +3,6 @@ #include #include -#include - #include #include @@ -138,6 +136,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgstereoimage/osgstereoimage.cpp b/examples/osgstereoimage/osgstereoimage.cpp index 28610b752..925112c21 100644 --- a/examples/osgstereoimage/osgstereoimage.cpp +++ b/examples/osgstereoimage/osgstereoimage.cpp @@ -467,6 +467,9 @@ int main( int argc, char **argv ) } + // wait for all cull and draw threads to complete before exit. + viewer.sync(); + return 0; } diff --git a/examples/osgteapot/osgteapot.cpp b/examples/osgteapot/osgteapot.cpp index 1d2acf410..33f1404b2 100644 --- a/examples/osgteapot/osgteapot.cpp +++ b/examples/osgteapot/osgteapot.cpp @@ -4,8 +4,6 @@ #include -#include - #include @@ -369,6 +367,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgtext/osgtext.cpp b/examples/osgtext/osgtext.cpp index d6fc14723..5813300f6 100644 --- a/examples/osgtext/osgtext.cpp +++ b/examples/osgtext/osgtext.cpp @@ -534,6 +534,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/examples/osgtexture1D/osgtexture1D.cpp b/examples/osgtexture1D/osgtexture1D.cpp index 8b0a2a5b4..d89131e3f 100644 --- a/examples/osgtexture1D/osgtexture1D.cpp +++ b/examples/osgtexture1D/osgtexture1D.cpp @@ -3,10 +3,6 @@ #include #include -#include -#include -#include - #include #include @@ -214,6 +210,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); } else { diff --git a/examples/osgtexture2D/osgtexture2D.cpp b/examples/osgtexture2D/osgtexture2D.cpp index 548ba2281..afc7f5cd3 100644 --- a/examples/osgtexture2D/osgtexture2D.cpp +++ b/examples/osgtexture2D/osgtexture2D.cpp @@ -6,10 +6,6 @@ #include #include -#include -#include -#include - #include #include @@ -454,6 +450,9 @@ int main( int argc, char **argv ) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); } else { diff --git a/examples/osgtexture3D/osgtexture3D.cpp b/examples/osgtexture3D/osgtexture3D.cpp index 7f76122fd..24919b893 100644 --- a/examples/osgtexture3D/osgtexture3D.cpp +++ b/examples/osgtexture3D/osgtexture3D.cpp @@ -5,10 +5,6 @@ #include #include -#include -#include -#include - #include #include @@ -283,6 +279,9 @@ int main( int argc, char **argv ) } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); } return 0; diff --git a/examples/osgvertexprogram/osgvertexprogram.cpp b/examples/osgvertexprogram/osgvertexprogram.cpp index 6bcc86520..4f9c9f455 100644 --- a/examples/osgvertexprogram/osgvertexprogram.cpp +++ b/examples/osgvertexprogram/osgvertexprogram.cpp @@ -19,8 +19,6 @@ #include #include -#include - #include #include @@ -419,6 +417,9 @@ int main(int argc, char *argv[]) viewer.frame(); } + + // wait for all cull and draw threads to complete before exit. + viewer.sync(); return 0; } diff --git a/src/osgProducer/EventAdapter.cpp b/src/osgProducer/EventAdapter.cpp index d174592e5..4d8214e8e 100644 --- a/src/osgProducer/EventAdapter.cpp +++ b/src/osgProducer/EventAdapter.cpp @@ -191,114 +191,120 @@ bool EventAdapter::initKeySymbolMap() { #ifdef WIN32 -/* - // not mapped yet as I can't see an - // obvious mapping to X11/osgGA::GUIEventAdapter::KeySymbol. - s_keySymbolMap[VK_CAPITAL] = ; - s_keySymbolMap[VK_CONVERT] = ; - s_keySymbolMap[VK_NONCONVERT] = ; - s_keySymbolMap[VK_ACCEPT] = ; - s_keySymbolMap[VK_SNAPSHOT] = ; - s_keySymbolMap[VK_LWIN] = ; - s_keySymbolMap[VK_RWIN] = ; - s_keySymbolMap[VK_APPS] = ; + #if 0 - s_keySymbolMap[VK_ATTN] = ; - s_keySymbolMap[VK_CRSEL] = ; - s_keySymbolMap[VK_EXSEL] = ; - s_keySymbolMap[VK_EREOF] = ; - s_keySymbolMap[VK_PLAY] = ; - s_keySymbolMap[VK_ZOOM] = ; - s_keySymbolMap[VK_NONAME] = ; - s_keySymbolMap[VK_PA1] = ; -*/ + /* + // not mapped yet as I can't see an + // obvious mapping to X11/osgGA::GUIEventAdapter::KeySymbol. + s_keySymbolMap[VK_CAPITAL] = ; + s_keySymbolMap[VK_CONVERT] = ; + s_keySymbolMap[VK_NONCONVERT] = ; + s_keySymbolMap[VK_ACCEPT] = ; + s_keySymbolMap[VK_SNAPSHOT] = ; - // mapped to osgGA::GUIEventAdapter::KeySymbol - s_keySymbolMap[VK_CANCEL] = KEY_Cancel; + s_keySymbolMap[VK_LWIN] = ; + s_keySymbolMap[VK_RWIN] = ; + s_keySymbolMap[VK_APPS] = ; - s_keySymbolMap[VK_BACK] = KEY_BackSpace; - s_keySymbolMap[VK_TAB] = KEY_Tab; + s_keySymbolMap[VK_ATTN] = ; + s_keySymbolMap[VK_CRSEL] = ; + s_keySymbolMap[VK_EXSEL] = ; + s_keySymbolMap[VK_EREOF] = ; + s_keySymbolMap[VK_PLAY] = ; + s_keySymbolMap[VK_ZOOM] = ; + s_keySymbolMap[VK_NONAME] = ; + s_keySymbolMap[VK_PA1] = ; + */ - s_keySymbolMap[VK_CLEAR] = KEY_Clear; - s_keySymbolMap[VK_RETURN] = KEY_Return; + // mapped to osgGA::GUIEventAdapter::KeySymbol + s_keySymbolMap[VK_CANCEL] = KEY_Cancel; - s_keySymbolMap[VK_SHIFT] = KEY_Shift_Lock; - s_keySymbolMap[VK_CONTROL] = KEY_Control_L; - s_keySymbolMap[VK_MENU] = KEY_Menu; - s_keySymbolMap[VK_PAUSE ] = KEY_Pause; + s_keySymbolMap[VK_BACK] = KEY_BackSpace; + s_keySymbolMap[VK_TAB] = KEY_Tab; - s_keySymbolMap[VK_ESCAPE] = KEY_Escape; + s_keySymbolMap[VK_CLEAR] = KEY_Clear; + s_keySymbolMap[VK_RETURN] = KEY_Return; - s_keySymbolMap[VK_MODECHANGE] = KEY_Mode_switch; + s_keySymbolMap[VK_SHIFT] = KEY_Shift_Lock; + s_keySymbolMap[VK_CONTROL] = KEY_Control_L; + s_keySymbolMap[VK_MENU] = KEY_Menu; + s_keySymbolMap[VK_PAUSE ] = KEY_Pause; - s_keySymbolMap[VK_SPACE] = KEY_Space; - s_keySymbolMap[VK_PRIOR] = KEY_Prior; - s_keySymbolMap[VK_NEXT] = KEY_Next; - s_keySymbolMap[VK_END] = KEY_End; - s_keySymbolMap[VK_HOME] = KEY_Home; - s_keySymbolMap[VK_LEFT] = KEY_Left; - s_keySymbolMap[VK_UP] = KEY_Up; - s_keySymbolMap[VK_RIGHT] = KEY_Right; - s_keySymbolMap[VK_DOWN] = KEY_Down; - s_keySymbolMap[VK_SELECT] = KEY_Select; - s_keySymbolMap[VK_PRINT] = KEY_Print; - s_keySymbolMap[VK_EXECUTE] = KEY_Execute; - s_keySymbolMap[VK_INSERT] = KEY_Insert; - s_keySymbolMap[VK_DELETE] = KEY_Delete; - s_keySymbolMap[VK_HELP] = KEY_Help; + s_keySymbolMap[VK_ESCAPE] = KEY_Escape; - s_keySymbolMap[VK_NUMPAD0] = KEY_KP_0; - s_keySymbolMap[VK_NUMPAD1] = KEY_KP_1; - s_keySymbolMap[VK_NUMPAD2] = KEY_KP_2; - s_keySymbolMap[VK_NUMPAD3] = KEY_KP_3; - s_keySymbolMap[VK_NUMPAD4] = KEY_KP_4; - s_keySymbolMap[VK_NUMPAD5] = KEY_KP_5; - s_keySymbolMap[VK_NUMPAD6] = KEY_KP_6; - s_keySymbolMap[VK_NUMPAD7] = KEY_KP_7; - s_keySymbolMap[VK_NUMPAD8] = KEY_KP_8; - s_keySymbolMap[VK_NUMPAD9] = KEY_KP_9; - s_keySymbolMap[VK_MULTIPLY] = KEY_KP_Multiply; - s_keySymbolMap[VK_ADD] = KEY_KP_Add; - s_keySymbolMap[VK_SEPARATOR] = KEY_KP_Separator; - s_keySymbolMap[VK_SUBTRACT] = KEY_KP_Subtract; - s_keySymbolMap[VK_DECIMAL] = KEY_KP_Decimal; - s_keySymbolMap[VK_DIVIDE] = KEY_KP_Divide; - s_keySymbolMap[VK_F1] = KEY_F1; - s_keySymbolMap[VK_F2] = KEY_F2; - s_keySymbolMap[VK_F3] = KEY_F3; - s_keySymbolMap[VK_F4] = KEY_F4; - s_keySymbolMap[VK_F5] = KEY_F5; - s_keySymbolMap[VK_F6] = KEY_F6; - s_keySymbolMap[VK_F7] = KEY_F7; - s_keySymbolMap[VK_F8] = KEY_F8; - s_keySymbolMap[VK_F9] = KEY_F9; - s_keySymbolMap[VK_F10] = KEY_F10; - s_keySymbolMap[VK_F11] = KEY_F11; - s_keySymbolMap[VK_F12] = KEY_F12; - s_keySymbolMap[VK_F13] = KEY_F13; - s_keySymbolMap[VK_F14] = KEY_F14; - s_keySymbolMap[VK_F15] = KEY_F15; - s_keySymbolMap[VK_F16] = KEY_F16; - s_keySymbolMap[VK_F17] = KEY_F17; - s_keySymbolMap[VK_F18] = KEY_F18; - s_keySymbolMap[VK_F19] = KEY_F19; - s_keySymbolMap[VK_F20] = KEY_F20; - s_keySymbolMap[VK_F21] = KEY_F21; - s_keySymbolMap[VK_F22] = KEY_F22; - s_keySymbolMap[VK_F23] = KEY_F23; - s_keySymbolMap[VK_F24] = KEY_F24; + s_keySymbolMap[VK_MODECHANGE] = KEY_Mode_switch; - s_keySymbolMap[VK_NUMLOCK] = KEY_Num_Lock; - s_keySymbolMap[VK_SCROLL] = KEY_Scroll_Lock; + s_keySymbolMap[VK_SPACE] = KEY_Space; + s_keySymbolMap[VK_PRIOR] = KEY_Prior; + s_keySymbolMap[VK_NEXT] = KEY_Next; + s_keySymbolMap[VK_END] = KEY_End; + s_keySymbolMap[VK_HOME] = KEY_Home; + s_keySymbolMap[VK_LEFT] = KEY_Left; + s_keySymbolMap[VK_UP] = KEY_Up; + s_keySymbolMap[VK_RIGHT] = KEY_Right; + s_keySymbolMap[VK_DOWN] = KEY_Down; + s_keySymbolMap[VK_SELECT] = KEY_Select; + s_keySymbolMap[VK_PRINT] = KEY_Print; + s_keySymbolMap[VK_EXECUTE] = KEY_Execute; + s_keySymbolMap[VK_INSERT] = KEY_Insert; + s_keySymbolMap[VK_DELETE] = KEY_Delete; + s_keySymbolMap[VK_HELP] = KEY_Help; - s_keySymbolMap[VK_LSHIFT] = KEY_Shift_L; - s_keySymbolMap[VK_RSHIFT] = KEY_Shift_R; - s_keySymbolMap[VK_LCONTROL] = KEY_Control_L; - s_keySymbolMap[VK_RCONTROL] = KEY_Control_R; - s_keySymbolMap[VK_LMENU] = KEY_Menu; - s_keySymbolMap[VK_RMENU] = KEY_Menu; - s_keySymbolMap[VK_OEM_CLEAR] = KEY_Clear; + s_keySymbolMap[VK_NUMPAD0] = KEY_KP_0; + s_keySymbolMap[VK_NUMPAD1] = KEY_KP_1; + s_keySymbolMap[VK_NUMPAD2] = KEY_KP_2; + s_keySymbolMap[VK_NUMPAD3] = KEY_KP_3; + s_keySymbolMap[VK_NUMPAD4] = KEY_KP_4; + s_keySymbolMap[VK_NUMPAD5] = KEY_KP_5; + s_keySymbolMap[VK_NUMPAD6] = KEY_KP_6; + s_keySymbolMap[VK_NUMPAD7] = KEY_KP_7; + s_keySymbolMap[VK_NUMPAD8] = KEY_KP_8; + s_keySymbolMap[VK_NUMPAD9] = KEY_KP_9; + s_keySymbolMap[VK_MULTIPLY] = KEY_KP_Multiply; + s_keySymbolMap[VK_ADD] = KEY_KP_Add; + s_keySymbolMap[VK_SEPARATOR] = KEY_KP_Separator; + s_keySymbolMap[VK_SUBTRACT] = KEY_KP_Subtract; + s_keySymbolMap[VK_DECIMAL] = KEY_KP_Decimal; + s_keySymbolMap[VK_DIVIDE] = KEY_KP_Divide; + s_keySymbolMap[VK_F1] = KEY_F1; + s_keySymbolMap[VK_F2] = KEY_F2; + s_keySymbolMap[VK_F3] = KEY_F3; + s_keySymbolMap[VK_F4] = KEY_F4; + s_keySymbolMap[VK_F5] = KEY_F5; + s_keySymbolMap[VK_F6] = KEY_F6; + s_keySymbolMap[VK_F7] = KEY_F7; + s_keySymbolMap[VK_F8] = KEY_F8; + s_keySymbolMap[VK_F9] = KEY_F9; + s_keySymbolMap[VK_F10] = KEY_F10; + s_keySymbolMap[VK_F11] = KEY_F11; + s_keySymbolMap[VK_F12] = KEY_F12; + s_keySymbolMap[VK_F13] = KEY_F13; + s_keySymbolMap[VK_F14] = KEY_F14; + s_keySymbolMap[VK_F15] = KEY_F15; + s_keySymbolMap[VK_F16] = KEY_F16; + s_keySymbolMap[VK_F17] = KEY_F17; + s_keySymbolMap[VK_F18] = KEY_F18; + s_keySymbolMap[VK_F19] = KEY_F19; + s_keySymbolMap[VK_F20] = KEY_F20; + s_keySymbolMap[VK_F21] = KEY_F21; + s_keySymbolMap[VK_F22] = KEY_F22; + s_keySymbolMap[VK_F23] = KEY_F23; + s_keySymbolMap[VK_F24] = KEY_F24; + + s_keySymbolMap[VK_NUMLOCK] = KEY_Num_Lock; + s_keySymbolMap[VK_SCROLL] = KEY_Scroll_Lock; + + s_keySymbolMap[VK_LSHIFT] = KEY_Shift_L; + s_keySymbolMap[VK_RSHIFT] = KEY_Shift_R; + s_keySymbolMap[VK_LCONTROL] = KEY_Control_L; + s_keySymbolMap[VK_RCONTROL] = KEY_Control_R; + s_keySymbolMap[VK_LMENU] = KEY_Menu; + s_keySymbolMap[VK_RMENU] = KEY_Menu; + s_keySymbolMap[VK_OEM_CLEAR] = KEY_Clear; + #endif + + #else // no mapping required for non windows (i.e. X11 based)