00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __X3DKEYDEVICESENSORNODE_H__
00030 #define __X3DKEYDEVICESENSORNODE_H__
00031
00032 #include "X3DSensorNode.h"
00033 #include <list>
00034 #include <GL/glew.h>
00035 #ifdef MACOSX
00036 #include <GLUT/glut.h>
00037 #else
00038 #include <GL/glut.h>
00039 #endif
00040
00041 namespace H3D {
00042
00048 class H3DAPI_API X3DKeyDeviceSensorNode : public X3DSensorNode {
00049 public:
00050
00052 X3DKeyDeviceSensorNode( Inst< SFBool > _enabled = 0,
00053 Inst< SFNode > _metadata = 0,
00054 Inst< SFBool > _isActive = 0 );
00056 ~X3DKeyDeviceSensorNode();
00057
00064 virtual void glutKeyboardUp( int key,
00065 int modifiers,
00066 bool special_key ) = 0;
00067
00074 virtual void glutKeyboardDown( int key,
00075 int modifiers,
00076 bool special_key ) = 0;
00077
00079 static void glutKeyboardDownCallback( unsigned char key,
00080 int x, int y );
00081
00083 static void glutSpecialDownCallback( int key,
00084 int x, int y );
00085
00087 static void glutKeyboardUpCallback( unsigned char key,
00088 int x, int y );
00089
00091 static void glutSpecialUpCallback( int key,
00092 int x, int y );
00093
00094 private:
00096 static list< X3DKeyDeviceSensorNode * > instances;
00097 };
00098 }
00099
00100 #endif