Vrui 增加自定义事件

#include <Vrui/Application.h>
#include <GL/GLObject.h>
#include <Vrui/Vrui.h>
#include <X11/Xlib.h>
#include <X11/keysym.h>
class MagicSand : public Vrui::Application, public GLObject
{
public:
    MagicSand(int & argc, char ** argv)
        :Vrui::Application(argc, argv)

    {

    }

    ~MagicSand()
    {

    }
public:
    virtual void initContext(GLContextData & contextData) const
    {

    }


    virtual void display(GLContextData & contextData) const
    {


    }

    static void EventProcess(XEvent & event)
    {

        switch (event.type)
        {
        case KeyPress:
            {
                KeySym keySym;
                XKeyEvent keyEvent=event.xkey;
                keySym=XLookupKeysym(&keyEvent,0);
                if (keySym == XK_0)
                {
                    std::cout << "0" << std::endl;
                }
                else if (keySym == XK_1)
                {
                    std::cout << "1" << std::endl;
                }
                break;
            }

        case KeyRelease:
            break;
        default:
            break;
        }
    }

    void run(void)
    {
        setFrameFunction(frameWrapper,this);
        setDisplayFunction(displayWrapper,this);
        setSoundFunction(soundWrapper,this);
        Vrui::mainLoop(EventProcess);
    }

};

VRUI_APPLICATION_RUN(MagicSand)

 

posted @ 2016-07-26 15:52  20118281131  阅读(327)  评论(0编辑  收藏  举报