MeVisLabToolboxReference
MeVisLab/Standard/Sources/Inventor/SoUtils/SoKeyGrabber.h
Go to the documentation of this file.
00001 // **InsertLicense** code
00002 //----------------------------------------------------------------------------------
00004 
00009 //----------------------------------------------------------------------------------
00010 #ifndef __SoKeyGrabber_H
00011 #define __SoKeyGrabber_H
00012 
00013 #include <Inventor/fields/SoFields.h>
00014 #include <Inventor/nodes/SoSeparator.h>
00015 #include <Inventor/nodes/SoSubNode.h>
00016 
00018 enum KeyType {
00020     ANY = 0,
00021 
00023     LEFT_SHIFT = 0xffe1,
00024     RIGHT_SHIFT = 0xffe2,
00025     LEFT_CONTROL = 0xffe3,
00026     RIGHT_CONTROL = 0xffe4,
00027     LEFT_ALT = 0xffe9,
00028     RIGHT_ALT = 0xffea,
00030 
00032     NUMBER_0 = 0x030,
00033     NUMBER_1 = 0x031,
00034     NUMBER_2 = 0x032,
00035     NUMBER_3 = 0x033,
00036     NUMBER_4 = 0x034,
00037     NUMBER_5 = 0x035,
00038     NUMBER_6 = 0x036,
00039     NUMBER_7 = 0x037,
00040     NUMBER_8 = 0x038,
00041     NUMBER_9 = 0x039,
00043 
00044 
00046     A = 0x061,
00047     B = 0x062,
00048     C = 0x063,
00049     D = 0x064,
00050     E = 0x065,
00051     F = 0x066,
00052     G = 0x067,
00053     H = 0x068,
00054     I = 0x069,
00055     J = 0x06a,
00056     K = 0x06b,
00057     L = 0x06c,
00058     M = 0x06d,
00059     N = 0x06e,
00060     O = 0x06f,
00061     P = 0x070,
00062     Q = 0x071,
00063     R = 0x072,
00064     S = 0x073,
00065     T = 0x074,
00066     U = 0x075,
00067     V = 0x076,
00068     W = 0x077,
00069     X = 0x078,
00070     Y = 0x079,
00071     Z = 0x07a,
00073 
00074 
00076     HOME = 0xff50,
00077     LEFT_ARROW = 0xff51,
00078     UP_ARROW = 0xff52,
00079     RIGHT_ARROW = 0xff53,
00080     DOWN_ARROW = 0xff54,
00081     PAGE_UP = 0xff55,
00082     PAGE_DOWN = 0xff56,
00083     PRIOR = 0xff55,
00084     NEXT = 0xff56,
00085     END = 0xff57,
00087 
00088 
00090     PAD_ENTER = 0xff8d,
00091     PAD_F1 = 0xff91,
00092     PAD_F2 = 0xff92,
00093     PAD_F3 = 0xff93,
00094     PAD_F4 = 0xff94,
00095 
00096     PAD_0 = 0xff9e,
00097     PAD_1 = 0xff9c,
00098     PAD_2 = 0xff99,
00099     PAD_3 = 0xff9b,
00100     PAD_4 = 0xff96,
00101     PAD_5 = 0xff9d,
00102     PAD_6 = 0xff98,
00103     PAD_7 = 0xff95,
00104     PAD_8 = 0xff97,
00105     PAD_9 = 0xff9a,
00106 
00107     PAD_ADD = 0xffab,
00108     PAD_SUBTRACT = 0xffad,
00109     PAD_MULTIPLY = 0xffaa,
00110     PAD_DIVIDE = 0xffaf,
00111 
00112     PAD_SPACE = 0xff8d,
00113     PAD_TAB = 0xff89,
00114     PAD_INSERT = 0xff9e,
00115     PAD_DELETE = 0xff9f,
00116     PAD_PERIOD = 0xff9f,
00118 
00120     F1 = 0xffbe,
00121     F2 = 0xffbf,
00122     F3 = 0xffc0,
00123     F4 = 0xffc1,
00124     F5 = 0xffc2,
00125     F6 = 0xffc3,
00126     F7 = 0xffc4,
00127     F8 = 0xffc5,
00128     F9 = 0xffc6,
00129     F10 = 0xffc7,
00130     F11 = 0xffc8,
00131     F12 = 0xffc9,
00133 
00134 
00136     BACKSPACE = 0xff08,
00137     TAB = 0xff09,
00138     RETURN = 0xff0d,
00139     ENTER = 0xff0d,
00140     PAUSE = 0xff13,
00141     SCROLL_LOCK = 0xff14,
00142     ESCAPE = 0xff1b,
00143 #ifdef WIN32
00144         KEY_DELETE = 0xFFFF,
00145 #else
00146         DELETE = 0xffff,
00147     KEY_DELETE = DELETE,
00148 #endif
00149     PRINT = 0xff61,
00150     INSERT = 0xff63,
00151     NUM_LOCK = 0xff7f,
00152     CAPS_LOCK = 0xffe5,
00153     SHIFT_LOCK = 0xffe6,
00154 
00155     SPACE = 0x020,
00156     APOSTROPHE = 0x027,
00157     COMMA = 0x02c,
00158     MINUS = 0x02d,
00159     PERIOD = 0x02e,
00160     SLASH = 0x02f,
00161 
00162     SEMICOLON = 0x03b,
00163     EQUAL = 0x03d,
00164 
00165     BRACKETLEFT = 0x05b,
00166     BACKSLASH = 0x05c,
00167     BRACKETRIGHT = 0x05d,
00168     GRAVE = 0x060
00170 
00171     };
00172 
00173 //=============================================================
00176 //=============================================================
00177 class SoKeyGrabber : public SoNode {
00178 
00179    SO_NODE_HEADER(SoKeyGrabber);
00180 
00181  public:
00182    SoSFBool  on;
00183 
00184    SoSFTrigger keyPressed;
00185    SoSFTrigger keyReleased;
00186    SoSFBool    shiftPressed;
00187    SoSFBool    ctrlPressed;
00188    SoSFBool    altPressed;
00189 
00190    SoSFEnum  lastKey;
00191    SoSFEnum  key0;
00192    SoSFEnum  key1;
00193    SoSFEnum  key2;
00194    SoSFEnum  key3;
00195    SoSFEnum  key4;
00196    SoSFTrigger key0Pressed;
00197    SoSFTrigger key1Pressed;
00198    SoSFTrigger key2Pressed;
00199    SoSFTrigger key3Pressed;
00200    SoSFTrigger key4Pressed;
00201 
00202    static void    initClass();
00203 
00204    // Constructor
00205    SoKeyGrabber();
00206 
00207    virtual void handleEvent(SoHandleEventAction *action);
00208    virtual void GLRender(SoGLRenderAction * /* action */) {};
00209 
00210  protected:
00211    virtual ~SoKeyGrabber();
00212 
00213  private:
00214    SoSFTrigger *_triggers[5];
00215    SoSFEnum    *_keys[5];
00216 };
00217 
00218 #endif
00219 
00220 
00221 
00222 
00223