00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef OIS_Keyboard_H
00024 #define OIS_Keyboard_H
00025 #include "OISObject.h"
00026 #include "OISEvents.h"
00027
00028 namespace OIS
00029 {
00031 enum KeyCode
00032 {
00033 KC_UNASSIGNED = 0x00,
00034 KC_ESCAPE = 0x01,
00035 KC_1 = 0x02,
00036 KC_2 = 0x03,
00037 KC_3 = 0x04,
00038 KC_4 = 0x05,
00039 KC_5 = 0x06,
00040 KC_6 = 0x07,
00041 KC_7 = 0x08,
00042 KC_8 = 0x09,
00043 KC_9 = 0x0A,
00044 KC_0 = 0x0B,
00045 KC_MINUS = 0x0C,
00046 KC_EQUALS = 0x0D,
00047 KC_BACK = 0x0E,
00048 KC_TAB = 0x0F,
00049 KC_Q = 0x10,
00050 KC_W = 0x11,
00051 KC_E = 0x12,
00052 KC_R = 0x13,
00053 KC_T = 0x14,
00054 KC_Y = 0x15,
00055 KC_U = 0x16,
00056 KC_I = 0x17,
00057 KC_O = 0x18,
00058 KC_P = 0x19,
00059 KC_LBRACKET = 0x1A,
00060 KC_RBRACKET = 0x1B,
00061 KC_RETURN = 0x1C,
00062 KC_LCONTROL = 0x1D,
00063 KC_A = 0x1E,
00064 KC_S = 0x1F,
00065 KC_D = 0x20,
00066 KC_F = 0x21,
00067 KC_G = 0x22,
00068 KC_H = 0x23,
00069 KC_J = 0x24,
00070 KC_K = 0x25,
00071 KC_L = 0x26,
00072 KC_SEMICOLON = 0x27,
00073 KC_APOSTROPHE = 0x28,
00074 KC_GRAVE = 0x29,
00075 KC_LSHIFT = 0x2A,
00076 KC_BACKSLASH = 0x2B,
00077 KC_Z = 0x2C,
00078 KC_X = 0x2D,
00079 KC_C = 0x2E,
00080 KC_V = 0x2F,
00081 KC_B = 0x30,
00082 KC_N = 0x31,
00083 KC_M = 0x32,
00084 KC_COMMA = 0x33,
00085 KC_PERIOD = 0x34,
00086 KC_SLASH = 0x35,
00087 KC_RSHIFT = 0x36,
00088 KC_MULTIPLY = 0x37,
00089 KC_LMENU = 0x38,
00090 KC_SPACE = 0x39,
00091 KC_CAPITAL = 0x3A,
00092 KC_F1 = 0x3B,
00093 KC_F2 = 0x3C,
00094 KC_F3 = 0x3D,
00095 KC_F4 = 0x3E,
00096 KC_F5 = 0x3F,
00097 KC_F6 = 0x40,
00098 KC_F7 = 0x41,
00099 KC_F8 = 0x42,
00100 KC_F9 = 0x43,
00101 KC_F10 = 0x44,
00102 KC_NUMLOCK = 0x45,
00103 KC_SCROLL = 0x46,
00104 KC_NUMPAD7 = 0x47,
00105 KC_NUMPAD8 = 0x48,
00106 KC_NUMPAD9 = 0x49,
00107 KC_SUBTRACT = 0x4A,
00108 KC_NUMPAD4 = 0x4B,
00109 KC_NUMPAD5 = 0x4C,
00110 KC_NUMPAD6 = 0x4D,
00111 KC_ADD = 0x4E,
00112 KC_NUMPAD1 = 0x4F,
00113 KC_NUMPAD2 = 0x50,
00114 KC_NUMPAD3 = 0x51,
00115 KC_NUMPAD0 = 0x52,
00116 KC_DECIMAL = 0x53,
00117 KC_OEM_102 = 0x56,
00118 KC_F11 = 0x57,
00119 KC_F12 = 0x58,
00120 KC_F13 = 0x64,
00121 KC_F14 = 0x65,
00122 KC_F15 = 0x66,
00123 KC_KANA = 0x70,
00124 KC_ABNT_C1 = 0x73,
00125 KC_CONVERT = 0x79,
00126 KC_NOCONVERT = 0x7B,
00127 KC_YEN = 0x7D,
00128 KC_ABNT_C2 = 0x7E,
00129 KC_NUMPADEQUALS= 0x8D,
00130 KC_PREVTRACK = 0x90,
00131 KC_AT = 0x91,
00132 KC_COLON = 0x92,
00133 KC_UNDERLINE = 0x93,
00134 KC_KANJI = 0x94,
00135 KC_STOP = 0x95,
00136 KC_AX = 0x96,
00137 KC_UNLABELED = 0x97,
00138 KC_NEXTTRACK = 0x99,
00139 KC_NUMPADENTER = 0x9C,
00140 KC_RCONTROL = 0x9D,
00141 KC_MUTE = 0xA0,
00142 KC_CALCULATOR = 0xA1,
00143 KC_PLAYPAUSE = 0xA2,
00144 KC_MEDIASTOP = 0xA4,
00145 KC_VOLUMEDOWN = 0xAE,
00146 KC_VOLUMEUP = 0xB0,
00147 KC_WEBHOME = 0xB2,
00148 KC_NUMPADCOMMA = 0xB3,
00149 KC_DIVIDE = 0xB5,
00150 KC_SYSRQ = 0xB7,
00151 KC_RMENU = 0xB8,
00152 KC_PAUSE = 0xC5,
00153 KC_HOME = 0xC7,
00154 KC_UP = 0xC8,
00155 KC_PGUP = 0xC9,
00156 KC_LEFT = 0xCB,
00157 KC_RIGHT = 0xCD,
00158 KC_END = 0xCF,
00159 KC_DOWN = 0xD0,
00160 KC_PGDOWN = 0xD1,
00161 KC_INSERT = 0xD2,
00162 KC_DELETE = 0xD3,
00163 KC_LWIN = 0xDB,
00164 KC_RWIN = 0xDC,
00165 KC_APPS = 0xDD,
00166 KC_POWER = 0xDE,
00167 KC_SLEEP = 0xDF,
00168 KC_WAKE = 0xE3,
00169 KC_WEBSEARCH = 0xE5,
00170 KC_WEBFAVORITES= 0xE6,
00171 KC_WEBREFRESH = 0xE7,
00172 KC_WEBSTOP = 0xE8,
00173 KC_WEBFORWARD = 0xE9,
00174 KC_WEBBACK = 0xEA,
00175 KC_MYCOMPUTER = 0xEB,
00176 KC_MAIL = 0xEC,
00177 KC_MEDIASELECT = 0xED
00178 };
00179
00183 class _OISExport KeyEvent : public EventArg
00184 {
00185 public:
00186 KeyEvent( Object* obj, KeyCode kc, unsigned int txt ) : EventArg(obj), key(kc), text(txt) {}
00187 virtual ~KeyEvent() {}
00188
00190 const KeyCode key;
00192 unsigned int text;
00193 };
00194
00199 class _OISExport KeyListener
00200 {
00201 public:
00202 virtual ~KeyListener() {}
00203 virtual bool keyPressed( const KeyEvent &arg ) = 0;
00204 virtual bool keyReleased( const KeyEvent &arg ) = 0;
00205 };
00206
00211 class _OISExport Keyboard : public Object
00212 {
00213 public:
00214 virtual ~Keyboard() {};
00215
00222 virtual bool isKeyDown( KeyCode key ) = 0;
00223
00231 virtual void setEventCallback( KeyListener *keyListener ) {listener=keyListener;}
00232
00237 KeyListener* getEventCallback() {return listener;}
00238
00240 enum TextTranslationMode
00241 {
00242 Off,
00243 Unicode,
00244 Ascii
00245 };
00246
00256 virtual void setTextTranslation( TextTranslationMode mode );
00257
00262 TextTranslationMode getTextTranslation(){return mTextMode;}
00263
00274 virtual const std::string& getAsString( KeyCode kc ) = 0;
00275
00277 enum Modifier
00278 {
00279 Shift = 0x0000001,
00280 Ctrl = 0x0000010,
00281 Alt = 0x0000100
00282 };
00283
00288 bool isModifierDown( Modifier mod );
00289
00295 virtual void copyKeyStates( char keys[256] ) = 0;
00296
00297 protected:
00298 Keyboard();
00299
00301 unsigned int mModifiers;
00302
00304 KeyListener *listener;
00305
00307 TextTranslationMode mTextMode;
00308 };
00309 }
00310 #endif