00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #pragma once
00025
00026 #include "cinder/Cinder.h"
00027 #include "cinder/app/Event.h"
00028
00029 namespace cinder{ namespace app{
00030
00032 class KeyEvent : public Event {
00033 public:
00034 KeyEvent() : Event()
00035 {}
00036 KeyEvent( WindowRef win, int aCode, uint32_t aChar32, char aChar, unsigned int aModifiers, unsigned int aNativeKeyCode )
00037 : Event( win ), mCode( aCode ), mChar32( aChar32 ), mChar( aChar ), mModifiers( aModifiers ), mNativeKeyCode( aNativeKeyCode )
00038 {}
00039
00041 char getChar() const { return mChar; }
00043 uint32_t getCharUtf32() const { return mChar32; }
00044 #if ! defined( CINDER_COCOA_TOUCH )
00045
00046 int getCode() const { return mCode; }
00048 bool isShiftDown() const { return (mModifiers & SHIFT_DOWN) ? true : false; }
00050 bool isAltDown() const { return (mModifiers & ALT_DOWN) ? true : false; }
00052 bool isControlDown() const { return (mModifiers & CTRL_DOWN) ? true : false; }
00054 bool isMetaDown() const { return (mModifiers & META_DOWN) ? true : false; }
00056 bool isAccelDown() const { return (mModifiers & ACCEL_DOWN) ? true : false; }
00058 int getNativeKeyCode() const { return mNativeKeyCode; }
00059
00061 static int translateNativeKeyCode( int nativeKeyCode );
00062
00063 enum { SHIFT_DOWN = 0x0008,
00064 ALT_DOWN = 0x0010,
00065 CTRL_DOWN = 0x0020,
00066 META_DOWN = 0x0040,
00067 #if defined( CINDER_MSW )
00068 ACCEL_DOWN = CTRL_DOWN
00069 #else
00070 ACCEL_DOWN = META_DOWN
00071 #endif
00072 };
00073 #endif
00074
00075
00076 enum {
00077 KEY_UNKNOWN = 0,
00078 KEY_FIRST = 0,
00079 KEY_BACKSPACE = 8,
00080 KEY_TAB = 9,
00081 KEY_CLEAR = 12,
00082 KEY_RETURN = 13,
00083 KEY_PAUSE = 19,
00084 KEY_ESCAPE = 27,
00085 KEY_SPACE = 32,
00086 KEY_EXCLAIM = 33,
00087 KEY_QUOTEDBL = 34,
00088 KEY_HASH = 35,
00089 KEY_DOLLAR = 36,
00090 KEY_AMPERSAND = 38,
00091 KEY_QUOTE = 39,
00092 KEY_LEFTPAREN = 40,
00093 KEY_RIGHTPAREN = 41,
00094 KEY_ASTERISK = 42,
00095 KEY_PLUS = 43,
00096 KEY_COMMA = 44,
00097 KEY_MINUS = 45,
00098 KEY_PERIOD = 46,
00099 KEY_SLASH = 47,
00100 KEY_0 = 48,
00101 KEY_1 = 49,
00102 KEY_2 = 50,
00103 KEY_3 = 51,
00104 KEY_4 = 52,
00105 KEY_5 = 53,
00106 KEY_6 = 54,
00107 KEY_7 = 55,
00108 KEY_8 = 56,
00109 KEY_9 = 57,
00110 KEY_COLON = 58,
00111 KEY_SEMICOLON = 59,
00112 KEY_LESS = 60,
00113 KEY_EQUALS = 61,
00114 KEY_GREATER = 62,
00115 KEY_QUESTION = 63,
00116 KEY_AT = 64,
00117
00118 KEY_LEFTBRACKET = 91,
00119 KEY_BACKSLASH = 92,
00120 KEY_RIGHTBRACKET= 93,
00121 KEY_CARET = 94,
00122 KEY_UNDERSCORE = 95,
00123 KEY_BACKQUOTE = 96,
00124 KEY_a = 97,
00125 KEY_b = 98,
00126 KEY_c = 99,
00127 KEY_d = 100,
00128 KEY_e = 101,
00129 KEY_f = 102,
00130 KEY_g = 103,
00131 KEY_h = 104,
00132 KEY_i = 105,
00133 KEY_j = 106,
00134 KEY_k = 107,
00135 KEY_l = 108,
00136 KEY_m = 109,
00137 KEY_n = 110,
00138 KEY_o = 111,
00139 KEY_p = 112,
00140 KEY_q = 113,
00141 KEY_r = 114,
00142 KEY_s = 115,
00143 KEY_t = 116,
00144 KEY_u = 117,
00145 KEY_v = 118,
00146 KEY_w = 119,
00147 KEY_x = 120,
00148 KEY_y = 121,
00149 KEY_z = 122,
00150 KEY_DELETE = 127,
00151
00152 KEY_KP0 = 256,
00153 KEY_KP1 = 257,
00154 KEY_KP2 = 258,
00155 KEY_KP3 = 259,
00156 KEY_KP4 = 260,
00157 KEY_KP5 = 261,
00158 KEY_KP6 = 262,
00159 KEY_KP7 = 263,
00160 KEY_KP8 = 264,
00161 KEY_KP9 = 265,
00162 KEY_KP_PERIOD = 266,
00163 KEY_KP_DIVIDE = 267,
00164 KEY_KP_MULTIPLY = 268,
00165 KEY_KP_MINUS = 269,
00166 KEY_KP_PLUS = 270,
00167 KEY_KP_ENTER = 271,
00168 KEY_KP_EQUALS = 272,
00169
00170 KEY_UP = 273,
00171 KEY_DOWN = 274,
00172 KEY_RIGHT = 275,
00173 KEY_LEFT = 276,
00174 KEY_INSERT = 277,
00175 KEY_HOME = 278,
00176 KEY_END = 279,
00177 KEY_PAGEUP = 280,
00178 KEY_PAGEDOWN = 281,
00179
00180 KEY_F1 = 282,
00181 KEY_F2 = 283,
00182 KEY_F3 = 284,
00183 KEY_F4 = 285,
00184 KEY_F5 = 286,
00185 KEY_F6 = 287,
00186 KEY_F7 = 288,
00187 KEY_F8 = 289,
00188 KEY_F9 = 290,
00189 KEY_F10 = 291,
00190 KEY_F11 = 292,
00191 KEY_F12 = 293,
00192 KEY_F13 = 294,
00193 KEY_F14 = 295,
00194 KEY_F15 = 296,
00195
00196 KEY_NUMLOCK = 300,
00197 KEY_CAPSLOCK = 301,
00198 KEY_SCROLLOCK = 302,
00199 KEY_RSHIFT = 303,
00200 KEY_LSHIFT = 304,
00201 KEY_RCTRL = 305,
00202 KEY_LCTRL = 306,
00203 KEY_RALT = 307,
00204 KEY_LALT = 308,
00205 KEY_RMETA = 309,
00206 KEY_LMETA = 310,
00207 KEY_LSUPER = 311,
00208 KEY_RSUPER = 312,
00209 KEY_MODE = 313,
00210 KEY_COMPOSE = 314,
00211
00212 KEY_HELP = 315,
00213 KEY_PRINT = 316,
00214 KEY_SYSREQ = 317,
00215 KEY_BREAK = 318,
00216 KEY_MENU = 319,
00217 KEY_POWER = 320,
00218 KEY_EURO = 321,
00219 KEY_UNDO = 322,
00220
00221 KEY_LAST
00222 };
00223
00224 protected:
00225 int mCode;
00226 uint32_t mChar32;
00227 char mChar;
00228 unsigned int mModifiers;
00229 unsigned int mNativeKeyCode;
00230 WindowRef mWindow;
00231 };
00232
00233 } }