Hello everyone,

after some headaches I have found a solution to a compile problem in a program using osgGA::GUIEventHandler and linux/input.h (neccesary for make work an old joystick model, not possible to be modified). Here is an exctract of the code which throw the error "Expected unqualified id before :" for lines 619 and 622 :

    switch (ea.getEventType())
    {

        case (osgGA::GUIEventAdapter::FRAME):
        {
            osgViewer::View* view = dynamic_cast<osgViewer::View*>(&gUIActionAdapter);
            if (view == NULL) return false;

            updateResolution(view);
            break;
        }
        case (osgGA::GUIEventAdapter::KEYUP):
        {
            switch (ea.getKey()) {
                case ('f'):
                    arbreUtile->setPropValue<bool>("graphic.windows.fullScreen", !arbreUtile->getPropValue<bool>("graphic.windows.fullScreen",false));
                    break;
                case (osgGA::GUIEventAdapter::KEY_Pause):
                    arbreUtile->setPropValue<bool>("sim.pause",! arbreUtile->getPropValue<bool>("sim.pause",false));
                    break;
                case (osgGA::GUIEventAdapter::KEY_F2):  // This is line 619
                    arbreUtile->setPropValue<bool>("graphic.windows.showGui", ! arbreUtile->getPropValue<bool>("graphic.windows.showGui",false));
                    break;
                case (osgGA::GUIEventAdapter::KEY_F12): // This is line 622
                    arbreUtile->setPropValue<bool>("graphic.windows.record", ! arbreUtile->getPropValue<bool>("graphic.windows.record", false));
                    break;
                default:
                    break;
            }
            break;
        }
        default:
            return false;
    }
 
The option "-save-temps" allowed me to have a look at the file after pre-compiler which gives :

    switch (ea.getEventType())
    {

        case (osgGA::GUIEventAdapter::FRAME):
        {
            osgViewer::View* view = dynamic_cast<osgViewer::View*>(&gUIActionAdapter);
            if (view == NULL) return false;

            updateResolution(view);
            break;
        }
        case (osgGA::GUIEventAdapter::KEYUP):
        {
            switch (ea.getKey()) {
                case ('f'):
                    arbreUtile->setPropValue<bool>("graphic.windows.fullScreen", !arbreUtile->getPropValue<bool>("graphic.windows.fullScreen",false));
                    break;
                case (osgGA::GUIEventAdapter::KEY_Pause):
                    arbreUtile->setPropValue<bool>("sim.pause",! arbreUtile->getPropValue<bool>("sim.pause",false));
                    break;
                case (osgGA::GUIEventAdapter::60):  // This is line 619
                    arbreUtile->setPropValue<bool>("graphic.windows.showGui", ! arbreUtile->getPropValue<bool>("graphic.windows.showGui",false));
                    break;
                case (osgGA::GUIEventAdapter::80): // This is line 622
                    arbreUtile->setPropValue<bool>("graphic.windows.record", ! arbreUtile->getPropValue<bool>("graphic.windows.record", false));
                    break;
                default:
                    break;
            }
            break;
        }
        default:
            return false;
    }
 
As you can see, KEY_F2 and KEY_F12 has been replaced by a numeric value, but not KEY_Pause... In fact the file linux/input.h contains a list of define for the keyboard, including :

#define KEY_F2            60
...
#define KEY_F12          88
...
#define KEY_PAUSE    119

Temporally, we had to undef KEY_F2 and KEY_12 in order to compile and link correctly our program.

I you have some hints to do this differently and in a cleaner way :-) I'm ready to test other solutions (but I cannot exclude linux/input.h)

Thanks,

Cheers

Christian
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to