From Daniel Sjölie, updates to the GUIEventAdapter and GLUTEventAdapter to handle
key and key down, modifiers and funcion keys.
This commit is contained in:
@@ -35,12 +35,31 @@ public:
|
||||
RELEASE,
|
||||
DRAG,
|
||||
MOVE,
|
||||
KEYBOARD,
|
||||
KEYDOWN,
|
||||
KEYUP,
|
||||
FRAME,
|
||||
RESIZE,
|
||||
NONE
|
||||
};
|
||||
|
||||
enum ModKeyMask {
|
||||
MOD_LEFT_SHIFT = 0x0001,
|
||||
MOD_RIGHT_SHIFT = 0x0002,
|
||||
MOD_LEFT_CTRL = 0x0040,
|
||||
MOD_RIGHT_CTRL = 0x0080,
|
||||
MOD_LEFT_ALT = 0x0100,
|
||||
MOD_RIGHT_ALT = 0x0200,
|
||||
MOD_LEFT_META = 0x0400,
|
||||
MOD_RIGHT_META = 0x0800,
|
||||
MOD_NUM_LOCK = 0x1000,
|
||||
MOD_CAPS_LOCK = 0x2000,
|
||||
MOD_CTRL = (MOD_LEFT_CTRL|MOD_RIGHT_CTRL),
|
||||
MOD_SHIFT = (MOD_LEFT_SHIFT|MOD_RIGHT_SHIFT),
|
||||
MOD_ALT = (MOD_LEFT_ALT|MOD_RIGHT_ALT),
|
||||
MOD_META = (MOD_LEFT_META|MOD_RIGHT_META)
|
||||
};
|
||||
|
||||
|
||||
/** Get the EventType of the GUI event.*/
|
||||
virtual EventType getEventType() const = 0;
|
||||
|
||||
@@ -71,6 +90,9 @@ public:
|
||||
/** current mouse button state */
|
||||
virtual unsigned int getButtonMask() const = 0;
|
||||
|
||||
/** current modkey state */
|
||||
virtual unsigned int getModKeyMask() const = 0;
|
||||
|
||||
/** time in seconds of event. */
|
||||
virtual double time() const = 0;
|
||||
|
||||
|
||||
@@ -49,6 +49,9 @@ class OSGGLUT_EXPORT GLUTEventAdapter : public osgGA::GUIEventAdapter
|
||||
/** current mouse button state */
|
||||
virtual unsigned int getButtonMask() const { return _buttonMask; }
|
||||
|
||||
/** current modkey state */
|
||||
virtual unsigned int getModKeyMask() const;
|
||||
|
||||
/** time in seconds of event. */
|
||||
virtual double time() const { return _time; }
|
||||
|
||||
@@ -72,7 +75,8 @@ class OSGGLUT_EXPORT GLUTEventAdapter : public osgGA::GUIEventAdapter
|
||||
void adaptMouse(double t,int button, int state, int x, int y);
|
||||
|
||||
/** method for adapting keyboard events.*/
|
||||
void adaptKeyboard(double t,unsigned char key, int x, int y );
|
||||
void adaptKeyboard( double t, unsigned char key,
|
||||
int x, int y, bool keydown );
|
||||
|
||||
/** method for adapting frame events, i.e. idle/display callback.*/
|
||||
void adaptFrame(double t);
|
||||
|
||||
@@ -113,6 +113,8 @@ class OSGGLUT_EXPORT Viewer : public Window, public osgGA::GUIActionAdapter
|
||||
osg::AnimationPath* getAnimationPath() { return _animationPath.get(); }
|
||||
const osg::AnimationPath* getAnimationPath() const { return _animationPath.get(); }
|
||||
|
||||
int mapWindowXYToViewport(int x, int y);
|
||||
|
||||
protected:
|
||||
|
||||
virtual void clear();
|
||||
@@ -122,10 +124,9 @@ class OSGGLUT_EXPORT Viewer : public Window, public osgGA::GUIActionAdapter
|
||||
virtual void mouseMotion(int x, int y);
|
||||
virtual void mousePassiveMotion(int x, int y);
|
||||
virtual void mouse(int button, int state, int x, int y);
|
||||
virtual void keyboard(unsigned char key, int x, int y);
|
||||
virtual void keyboard(int key, int x, int y, bool keydown = true);
|
||||
|
||||
void setFocusedViewport(unsigned int pos);
|
||||
int mapWindowXYToViewport(int x, int y);
|
||||
|
||||
void showStats(unsigned int i); // gwm 24.09.01 pass the viewport to collect sta for each viewport
|
||||
|
||||
|
||||
@@ -41,8 +41,10 @@ class OSGGLUT_EXPORT Window
|
||||
static void mousePassiveMotionCB(int x, int y);
|
||||
static void mouseCB(int button, int state, int x, int y);
|
||||
static void keyboardCB(unsigned char key, int x, int y );
|
||||
static void keyboardUpCB(unsigned char key, int x, int y );
|
||||
|
||||
static void specialCB(int key, int x, int y);
|
||||
static void specialUpCB(int key, int x, int y);
|
||||
static void spaceballMotionCB(int x, int y, int z);
|
||||
static void spaceballRotateCB(int x, int y, int z);
|
||||
static void spaceballButtonCB(int button, int state);
|
||||
@@ -52,9 +54,9 @@ class OSGGLUT_EXPORT Window
|
||||
virtual void mouseMotion(int x, int y);
|
||||
virtual void mousePassiveMotion(int x, int y);
|
||||
virtual void mouse(int button, int state, int x, int y);
|
||||
virtual void keyboard(unsigned char key, int x, int y);
|
||||
virtual void keyboard(int key, int x, int y, bool keydown);
|
||||
|
||||
virtual void special(int key, int x, int y);
|
||||
virtual void special(int key, int x, int y, bool keydown);
|
||||
virtual void spaceballMotion(int x, int y, int z);
|
||||
virtual void spaceballRotate(int x, int y, int z);
|
||||
virtual void spaceballButton(int button, int state);
|
||||
|
||||
Reference in New Issue
Block a user