MeVisLabToolboxReference
|
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