E:/Download/ois-1.0RC1/src/SDL/SDLKeyboard.cpp

Go to the documentation of this file.
00001 /*
00002 The zlib/libpng License
00003 
00004 Copyright (c) 2006 Phillip Castaneda (pjcast -- www.wreckedgames.com)
00005 
00006 This software is provided 'as-is', without any express or implied warranty. In no event will
00007 the authors be held liable for any damages arising from the use of this software.
00008 
00009 Permission is granted to anyone to use this software for any purpose, including commercial 
00010 applications, and to alter it and redistribute it freely, subject to the following
00011 restrictions:
00012 
00013     1. The origin of this software must not be misrepresented; you must not claim that 
00014                 you wrote the original software. If you use this software in a product, 
00015                 an acknowledgment in the product documentation would be appreciated but is 
00016                 not required.
00017 
00018     2. Altered source versions must be plainly marked as such, and must not be 
00019                 misrepresented as being the original software.
00020 
00021     3. This notice may not be removed or altered from any source distribution.
00022 */
00023 #include "SDL/SDLKeyBoard.h"
00024 #include "SDL/SDLInputManager.h"
00025 #include "OISException.h"
00026 #include "OISEvents.h"
00027 #include <sstream>
00028 
00029 using namespace OIS;
00030 
00031 //-------------------------------------------------------------------//
00032 SDLKeyboard::SDLKeyboard( bool buffered )
00033 {
00034         mBuffered = buffered;
00035         mType = OISKeyboard;
00036         listener = 0;
00037 
00038         //Clear our keyboard state buffer
00039         memset( &KeyBuffer, 0, 256 );
00040 }
00041 
00042 //-------------------------------------------------------------------//
00043 void SDLKeyboard::_initialize()
00044 {
00045         mModifiers = 0;
00046         mSDLBuff = 0;
00047 
00048         mKeyMap.insert( KeyMap::value_type(SDLK_ESCAPE,KC_ESCAPE) );
00049         mKeyMap.insert( KeyMap::value_type(SDLK_1, KC_1) );
00050         mKeyMap.insert( KeyMap::value_type(SDLK_2, KC_2) );
00051         mKeyMap.insert( KeyMap::value_type(SDLK_3, KC_3) );
00052         mKeyMap.insert( KeyMap::value_type(SDLK_4, KC_4) );
00053         mKeyMap.insert( KeyMap::value_type(SDLK_5, KC_5) );
00054         mKeyMap.insert( KeyMap::value_type(SDLK_6, KC_6) );
00055         mKeyMap.insert( KeyMap::value_type(SDLK_7, KC_7) );
00056         mKeyMap.insert( KeyMap::value_type(SDLK_8, KC_8) );
00057         mKeyMap.insert( KeyMap::value_type(SDLK_9, KC_9) );
00058         mKeyMap.insert( KeyMap::value_type(SDLK_0, KC_0) );
00059         mKeyMap.insert( KeyMap::value_type(SDLK_MINUS, KC_MINUS) );
00060         mKeyMap.insert( KeyMap::value_type(SDLK_EQUALS, KC_EQUALS) );
00061         mKeyMap.insert( KeyMap::value_type(SDLK_BACKSPACE, KC_BACK) );
00062         mKeyMap.insert( KeyMap::value_type(SDLK_TAB, KC_TAB) );
00063         mKeyMap.insert( KeyMap::value_type(SDLK_q, KC_Q) );
00064         mKeyMap.insert( KeyMap::value_type(SDLK_w, KC_W) );
00065         mKeyMap.insert( KeyMap::value_type(SDLK_e, KC_E) );
00066         mKeyMap.insert( KeyMap::value_type(SDLK_r, KC_R) );
00067         mKeyMap.insert( KeyMap::value_type(SDLK_t, KC_T) );
00068         mKeyMap.insert( KeyMap::value_type(SDLK_y, KC_Y) );
00069         mKeyMap.insert( KeyMap::value_type(SDLK_u, KC_U) );
00070         mKeyMap.insert( KeyMap::value_type(SDLK_i, KC_I) );
00071         mKeyMap.insert( KeyMap::value_type(SDLK_o, KC_O) );
00072         mKeyMap.insert( KeyMap::value_type(SDLK_p, KC_P) );
00073         mKeyMap.insert( KeyMap::value_type(SDLK_RETURN, KC_RETURN) );
00074         mKeyMap.insert( KeyMap::value_type(SDLK_LCTRL, KC_LCONTROL));
00075         mKeyMap.insert( KeyMap::value_type(SDLK_a, KC_A) );
00076         mKeyMap.insert( KeyMap::value_type(SDLK_s, KC_S) );
00077         mKeyMap.insert( KeyMap::value_type(SDLK_d, KC_D) );
00078         mKeyMap.insert( KeyMap::value_type(SDLK_f, KC_F) );
00079         mKeyMap.insert( KeyMap::value_type(SDLK_g, KC_G) );
00080         mKeyMap.insert( KeyMap::value_type(SDLK_h, KC_H) );
00081         mKeyMap.insert( KeyMap::value_type(SDLK_j, KC_J) );
00082         mKeyMap.insert( KeyMap::value_type(SDLK_k, KC_K) );
00083         mKeyMap.insert( KeyMap::value_type(SDLK_l, KC_L) );
00084         mKeyMap.insert( KeyMap::value_type(SDLK_SEMICOLON, KC_SEMICOLON) );
00085         mKeyMap.insert( KeyMap::value_type(SDLK_COLON, KC_COLON) );
00086         mKeyMap.insert( KeyMap::value_type(SDLK_QUOTE, KC_APOSTROPHE) );
00087         mKeyMap.insert( KeyMap::value_type(SDLK_BACKQUOTE, KC_GRAVE)  );
00088         mKeyMap.insert( KeyMap::value_type(SDLK_LSHIFT, KC_LSHIFT) );
00089         mKeyMap.insert( KeyMap::value_type(SDLK_BACKSLASH, KC_BACKSLASH) );
00090         mKeyMap.insert( KeyMap::value_type(SDLK_SLASH, KC_SLASH) );
00091         mKeyMap.insert( KeyMap::value_type(SDLK_z, KC_Z) );
00092         mKeyMap.insert( KeyMap::value_type(SDLK_x, KC_X) );
00093         mKeyMap.insert( KeyMap::value_type(SDLK_c, KC_C) );
00094         mKeyMap.insert( KeyMap::value_type(SDLK_v, KC_V) );
00095         mKeyMap.insert( KeyMap::value_type(SDLK_b, KC_B) );
00096         mKeyMap.insert( KeyMap::value_type(SDLK_n, KC_N) );
00097         mKeyMap.insert( KeyMap::value_type(SDLK_m, KC_M) );
00098         mKeyMap.insert( KeyMap::value_type(SDLK_COMMA, KC_COMMA)  );
00099         mKeyMap.insert( KeyMap::value_type(SDLK_PERIOD, KC_PERIOD));
00100         mKeyMap.insert( KeyMap::value_type(SDLK_RSHIFT, KC_RSHIFT));
00101         mKeyMap.insert( KeyMap::value_type(SDLK_KP_MULTIPLY, KC_MULTIPLY) );
00102         mKeyMap.insert( KeyMap::value_type(SDLK_LALT, KC_LMENU) );
00103         mKeyMap.insert( KeyMap::value_type(SDLK_SPACE, KC_SPACE));
00104         mKeyMap.insert( KeyMap::value_type(SDLK_CAPSLOCK, KC_CAPITAL) );
00105         mKeyMap.insert( KeyMap::value_type(SDLK_F1, KC_F1) );
00106         mKeyMap.insert( KeyMap::value_type(SDLK_F2, KC_F2) );
00107         mKeyMap.insert( KeyMap::value_type(SDLK_F3, KC_F3) );
00108         mKeyMap.insert( KeyMap::value_type(SDLK_F4, KC_F4) );
00109         mKeyMap.insert( KeyMap::value_type(SDLK_F5, KC_F5) );
00110         mKeyMap.insert( KeyMap::value_type(SDLK_F6, KC_F6) );
00111         mKeyMap.insert( KeyMap::value_type(SDLK_F7, KC_F7) );
00112         mKeyMap.insert( KeyMap::value_type(SDLK_F8, KC_F8) );
00113         mKeyMap.insert( KeyMap::value_type(SDLK_F9, KC_F9) );
00114         mKeyMap.insert( KeyMap::value_type(SDLK_F10, KC_F10) );
00115         mKeyMap.insert( KeyMap::value_type(SDLK_NUMLOCK, KC_NUMLOCK) );
00116         mKeyMap.insert( KeyMap::value_type(SDLK_SCROLLOCK, KC_SCROLL));
00117         mKeyMap.insert( KeyMap::value_type(SDLK_KP7, KC_NUMPAD7) );
00118         mKeyMap.insert( KeyMap::value_type(SDLK_KP8, KC_NUMPAD8) );
00119         mKeyMap.insert( KeyMap::value_type(SDLK_KP9, KC_NUMPAD9) );
00120         mKeyMap.insert( KeyMap::value_type(SDLK_KP_MINUS, KC_SUBTRACT) );
00121         mKeyMap.insert( KeyMap::value_type(SDLK_KP4, KC_NUMPAD4) );
00122         mKeyMap.insert( KeyMap::value_type(SDLK_KP5, KC_NUMPAD5) );
00123         mKeyMap.insert( KeyMap::value_type(SDLK_KP6, KC_NUMPAD6) );
00124         mKeyMap.insert( KeyMap::value_type(SDLK_KP_PLUS, KC_ADD) );
00125         mKeyMap.insert( KeyMap::value_type(SDLK_KP1, KC_NUMPAD1) );
00126         mKeyMap.insert( KeyMap::value_type(SDLK_KP2, KC_NUMPAD2) );
00127         mKeyMap.insert( KeyMap::value_type(SDLK_KP3, KC_NUMPAD3) );
00128         mKeyMap.insert( KeyMap::value_type(SDLK_KP0, KC_NUMPAD0) );
00129         mKeyMap.insert( KeyMap::value_type(SDLK_KP_PERIOD, KC_DECIMAL) );
00130         mKeyMap.insert( KeyMap::value_type(SDLK_F11, KC_F11) );
00131         mKeyMap.insert( KeyMap::value_type(SDLK_F12, KC_F12) );
00132         mKeyMap.insert( KeyMap::value_type(SDLK_F13, KC_F13) );
00133         mKeyMap.insert( KeyMap::value_type(SDLK_F14, KC_F14) );
00134         mKeyMap.insert( KeyMap::value_type(SDLK_F15, KC_F15) );
00135         mKeyMap.insert( KeyMap::value_type(SDLK_KP_EQUALS, KC_NUMPADEQUALS) );
00136         mKeyMap.insert( KeyMap::value_type(SDLK_KP_DIVIDE, KC_DIVIDE) );
00137         mKeyMap.insert( KeyMap::value_type(SDLK_SYSREQ, KC_SYSRQ) );
00138         mKeyMap.insert( KeyMap::value_type(SDLK_RALT, KC_RMENU) );
00139         mKeyMap.insert( KeyMap::value_type(SDLK_HOME, KC_HOME) );
00140         mKeyMap.insert( KeyMap::value_type(SDLK_UP, KC_UP) );
00141         mKeyMap.insert( KeyMap::value_type(SDLK_PAGEUP, KC_PGUP) );
00142         mKeyMap.insert( KeyMap::value_type(SDLK_LEFT, KC_LEFT) );
00143         mKeyMap.insert( KeyMap::value_type(SDLK_RIGHT, KC_RIGHT) );
00144         mKeyMap.insert( KeyMap::value_type(SDLK_END, KC_END) );
00145         mKeyMap.insert( KeyMap::value_type(SDLK_DOWN, KC_DOWN) );
00146         mKeyMap.insert( KeyMap::value_type(SDLK_PAGEDOWN, KC_PGDOWN) );
00147         mKeyMap.insert( KeyMap::value_type(SDLK_INSERT, KC_INSERT) );
00148         mKeyMap.insert( KeyMap::value_type(SDLK_DELETE, KC_DELETE) );
00149         mKeyMap.insert( KeyMap::value_type(SDLK_LSUPER, KC_LWIN) );
00150         mKeyMap.insert( KeyMap::value_type(SDLK_RSUPER, KC_RWIN) );
00151 
00152         SDL_EnableUNICODE(1);
00153 }
00154 
00155 //-------------------------------------------------------------------//
00156 SDLKeyboard::~SDLKeyboard()
00157 {
00158 }
00159 
00160 //-------------------------------------------------------------------//
00161 void SDLKeyboard::capture()
00162 {
00163         SDL_Event events[OIS_SDL_KEY_BUFF];
00164         int count = SDL_PeepEvents(events, OIS_SDL_KEY_BUFF, SDL_GETEVENT, 
00165                 SDL_EVENTMASK(SDL_KEYDOWN) | SDL_EVENTMASK(SDL_KEYUP));
00166 
00167         for( int i = 0; i < count; ++i )
00168         {
00169                 KeyCode kc = mKeyMap[events[i].key.keysym.sym];
00170                 KeyBuffer[kc] = events[i].key.state;
00171 
00172                 if( mBuffered && listener )
00173                 {
00174                         if( events[i].key.state == SDL_PRESSED )
00175                         {
00176                                 if( listener->keyPressed(KeyEvent(this, 0, kc, events[i].key.keysym.unicode)) == false )
00177                                         break;
00178                         }
00179                         else
00180                         {
00181                                 if( listener->keyReleased(KeyEvent(this, 0, kc, events[i].key.keysym.unicode)) == false )
00182                                         break;
00183                         }
00184                 }
00185         }
00186 
00187         //Release Grab mode on Alt-Tab combinations (for non-window systems)
00188         if( KeyBuffer[KC_RMENU] || KeyBuffer[KC_LMENU])
00189         {
00190                 if( KeyBuffer[KC_TAB] )
00191                         static_cast<SDLInputManager*>(InputManager::getSingletonPtr())->_setGrabMode(false);
00192         }
00193 }
00194 
00195 //-------------------------------------------------------------------//
00196 bool SDLKeyboard::isKeyDown( KeyCode key )
00197 {
00198         return KeyBuffer[key] == 1 ? true : false;
00199 }
00200 
00201 //-------------------------------------------------------------------//
00202 const std::string& SDLKeyboard::getAsString( KeyCode kc )
00203 {
00204     switch(kc)
00205     {
00206     case KC_ESCAPE: mGetString = SDL_GetKeyName(SDLK_ESCAPE); break;
00207     case KC_1: mGetString = SDL_GetKeyName(SDLK_1); break;
00208     case KC_2: mGetString = SDL_GetKeyName(SDLK_2); break;
00209     case KC_3: mGetString = SDL_GetKeyName(SDLK_3); break;
00210     case KC_4: mGetString = SDL_GetKeyName(SDLK_4); break;
00211     case KC_5: mGetString = SDL_GetKeyName(SDLK_5); break;
00212     case KC_6: mGetString = SDL_GetKeyName(SDLK_6); break;
00213     case KC_7: mGetString = SDL_GetKeyName(SDLK_7); break;
00214     case KC_8: mGetString = SDL_GetKeyName(SDLK_8); break;
00215     case KC_9: mGetString = SDL_GetKeyName(SDLK_9); break;
00216     case KC_0: mGetString = SDL_GetKeyName(SDLK_0); break;
00217     case KC_MINUS: mGetString = SDL_GetKeyName(SDLK_MINUS); break;
00218     case KC_EQUALS: mGetString = SDL_GetKeyName(SDLK_EQUALS); break;
00219     case KC_BACK: mGetString = SDL_GetKeyName(SDLK_BACKSPACE); break;
00220     case KC_TAB: mGetString = SDL_GetKeyName(SDLK_TAB); break;
00221     case KC_Q: mGetString = SDL_GetKeyName(SDLK_q); break;
00222     case KC_W: mGetString = SDL_GetKeyName(SDLK_w); break;
00223     case KC_E: mGetString = SDL_GetKeyName(SDLK_e); break;
00224     case KC_R: mGetString = SDL_GetKeyName(SDLK_r); break;
00225     case KC_T: mGetString = SDL_GetKeyName(SDLK_t); break;
00226     case KC_Y: mGetString = SDL_GetKeyName(SDLK_y); break;
00227     case KC_U: mGetString = SDL_GetKeyName(SDLK_u); break;
00228     case KC_I: mGetString = SDL_GetKeyName(SDLK_i); break;
00229     case KC_O: mGetString = SDL_GetKeyName(SDLK_o); break;
00230     case KC_P: mGetString = SDL_GetKeyName(SDLK_p); break;
00231     case KC_LBRACKET: mGetString = "["; break;
00232     case KC_RBRACKET: mGetString = "]"; break;
00233     case KC_RETURN: mGetString = SDL_GetKeyName(SDLK_RETURN); break;
00234     case KC_LCONTROL: mGetString = SDL_GetKeyName(SDLK_LCTRL); break;
00235     case KC_A: mGetString = SDL_GetKeyName(SDLK_a); break;
00236     case KC_S: mGetString = SDL_GetKeyName(SDLK_s); break;
00237     case KC_D: mGetString = SDL_GetKeyName(SDLK_d); break;
00238     case KC_F: mGetString = SDL_GetKeyName(SDLK_f); break;
00239     case KC_G: mGetString = SDL_GetKeyName(SDLK_g); break;
00240     case KC_H: mGetString = SDL_GetKeyName(SDLK_h); break;
00241     case KC_J: mGetString = SDL_GetKeyName(SDLK_j); break;
00242     case KC_K: mGetString = SDL_GetKeyName(SDLK_k); break;
00243     case KC_L: mGetString = SDL_GetKeyName(SDLK_l); break;
00244     case KC_SEMICOLON: mGetString = SDL_GetKeyName(SDLK_SEMICOLON); break;
00245     case KC_APOSTROPHE: mGetString = SDL_GetKeyName(SDLK_QUOTE); break;
00246     case KC_GRAVE: mGetString = SDL_GetKeyName(SDLK_BACKQUOTE); break;
00247     case KC_LSHIFT: mGetString = SDL_GetKeyName(SDLK_LSHIFT); break;
00248     case KC_BACKSLASH: mGetString = SDL_GetKeyName(SDLK_BACKSLASH); break;
00249     case KC_Z: mGetString = SDL_GetKeyName(SDLK_z); break;
00250     case KC_X: mGetString = SDL_GetKeyName(SDLK_x); break;
00251     case KC_C: mGetString = SDL_GetKeyName(SDLK_c); break;
00252     case KC_V: mGetString = SDL_GetKeyName(SDLK_v); break;
00253     case KC_B: mGetString = SDL_GetKeyName(SDLK_b); break;
00254     case KC_N: mGetString = SDL_GetKeyName(SDLK_n); break;
00255     case KC_M: mGetString = SDL_GetKeyName(SDLK_m); break;
00256     case KC_COMMA: mGetString = SDL_GetKeyName(SDLK_COMMA); break;
00257     case KC_PERIOD: mGetString = SDL_GetKeyName(SDLK_PERIOD); break;
00258     case KC_SLASH: mGetString = SDL_GetKeyName(SDLK_SLASH); break;
00259     case KC_RSHIFT: mGetString = SDL_GetKeyName(SDLK_RSHIFT); break;
00260     case KC_MULTIPLY: mGetString = SDL_GetKeyName(SDLK_KP_MULTIPLY); break;
00261     case KC_LMENU: mGetString = SDL_GetKeyName(SDLK_LALT); break;
00262     case KC_SPACE: mGetString = SDL_GetKeyName(SDLK_SPACE); break;
00263     case KC_CAPITAL: mGetString = SDL_GetKeyName(SDLK_CAPSLOCK); break;
00264     case KC_F1: mGetString = SDL_GetKeyName(SDLK_F1); break;
00265     case KC_F2: mGetString = SDL_GetKeyName(SDLK_F2); break;
00266     case KC_F3: mGetString = SDL_GetKeyName(SDLK_F3); break;
00267     case KC_F4: mGetString = SDL_GetKeyName(SDLK_F4); break;
00268     case KC_F5: mGetString = SDL_GetKeyName(SDLK_F5); break;
00269     case KC_F6: mGetString = SDL_GetKeyName(SDLK_F6); break;
00270     case KC_F7: mGetString = SDL_GetKeyName(SDLK_F7); break;
00271     case KC_F8: mGetString = SDL_GetKeyName(SDLK_F8); break;
00272     case KC_F9: mGetString = SDL_GetKeyName(SDLK_F9); break;
00273     case KC_F10: mGetString = SDL_GetKeyName(SDLK_F10); break;
00274     case KC_NUMLOCK: mGetString = SDL_GetKeyName(SDLK_NUMLOCK); break;
00275     case KC_SCROLL: mGetString = SDL_GetKeyName(SDLK_SCROLLOCK); break;
00276     case KC_NUMPAD7: mGetString = SDL_GetKeyName(SDLK_KP7); break;
00277     case KC_NUMPAD8: mGetString = SDL_GetKeyName(SDLK_KP8); break;
00278     case KC_NUMPAD9: mGetString = SDL_GetKeyName(SDLK_KP9); break;
00279     case KC_SUBTRACT: mGetString = SDL_GetKeyName(SDLK_KP_MINUS); break;
00280     case KC_NUMPAD4: mGetString = SDL_GetKeyName(SDLK_KP4); break;
00281     case KC_NUMPAD5: mGetString = SDL_GetKeyName(SDLK_KP5); break;
00282     case KC_NUMPAD6: mGetString = SDL_GetKeyName(SDLK_KP6); break;
00283     case KC_ADD: mGetString = SDL_GetKeyName(SDLK_KP_PLUS); break;
00284     case KC_NUMPAD1: mGetString = SDL_GetKeyName(SDLK_KP1); break;
00285     case KC_NUMPAD2: mGetString = SDL_GetKeyName(SDLK_KP2); break;
00286     case KC_NUMPAD3: mGetString = SDL_GetKeyName(SDLK_KP3); break;
00287     case KC_NUMPAD0: mGetString = SDL_GetKeyName(SDLK_KP0); break;
00288     case KC_DECIMAL: mGetString = SDL_GetKeyName(SDLK_KP_PERIOD); break;
00289     case KC_OEM_102: mGetString = "OEM_102"; break;
00290     case KC_F11: mGetString = SDL_GetKeyName(SDLK_F11); break;
00291     case KC_F12: mGetString = SDL_GetKeyName(SDLK_F12); break;
00292     case KC_F13: mGetString = SDL_GetKeyName(SDLK_F13); break;
00293     case KC_F14: mGetString = SDL_GetKeyName(SDLK_F14); break;
00294     case KC_F15: mGetString = SDL_GetKeyName(SDLK_F15); break;
00295     case KC_KANA: mGetString = "Kana"; break;
00296     case KC_ABNT_C1: mGetString = "ABNT_C1"; break;
00297     case KC_CONVERT: mGetString = "CONVERT"; break;
00298     case KC_NOCONVERT: mGetString = "NOCONVERT"; break;
00299     case KC_YEN: mGetString = "YEN"; break;
00300     case KC_ABNT_C2: mGetString = "ABNT_C2"; break;
00301     case KC_NUMPADEQUALS: mGetString = SDL_GetKeyName(SDLK_KP_EQUALS); break;
00302     case KC_PREVTRACK: mGetString = "KC_PREVTRACK"; break;
00303     case KC_AT: mGetString = "KC_AT"; break;
00304     case KC_COLON: mGetString = SDL_GetKeyName(SDLK_COLON); break;
00305     case KC_UNDERLINE: mGetString = "KC_UNDERLINE"; break;
00306     case KC_KANJI: mGetString = "KC_KANJI"; break;
00307     case KC_STOP: mGetString = "KC_STOP"; break;
00308     case KC_AX: mGetString = "KC_AX"; break;
00309     case KC_UNLABELED: mGetString = "KC_UNLABELED"; break;
00310     case KC_NEXTTRACK: mGetString = "KC_NEXTTRACK"; break;
00311     case KC_NUMPADENTER: mGetString = "KC_NUMPADENTER"; break;
00312     case KC_RCONTROL: mGetString = "KC_RCONTROL"; break;
00313     case KC_MUTE: mGetString = "KC_MUTE"; break;
00314     case KC_CALCULATOR: mGetString = "KC_CALCULATOR"; break;
00315     case KC_PLAYPAUSE: mGetString = "KC_PLAYPAUSE"; break;
00316     case KC_MEDIASTOP: mGetString = "KC_MEDIASTOP"; break;
00317     case KC_VOLUMEDOWN: mGetString = "KC_VOLUMEDOWN"; break;
00318     case KC_VOLUMEUP: mGetString = "KC_VOLUMEUP"; break;
00319     case KC_WEBHOME: mGetString = "KC_WEBHOME"; break;
00320     case KC_NUMPADCOMMA: mGetString = "KC_NUMPADCOMMA"; break;
00321     case KC_DIVIDE: mGetString = SDL_GetKeyName(SDLK_KP_DIVIDE); break;
00322     case KC_SYSRQ: mGetString = SDL_GetKeyName(SDLK_SYSREQ); break;
00323     case KC_RMENU: mGetString = SDL_GetKeyName(SDLK_RALT); break;
00324     case KC_PAUSE: mGetString = "Pause"; break;
00325     case KC_HOME: mGetString = SDL_GetKeyName(SDLK_HOME); break;
00326     case KC_UP: mGetString = SDL_GetKeyName(SDLK_UP); break;
00327     case KC_PGUP: mGetString = SDL_GetKeyName(SDLK_PAGEUP); break;
00328     case KC_LEFT: mGetString = SDL_GetKeyName(SDLK_LEFT); break;
00329     case KC_RIGHT: mGetString = SDL_GetKeyName(SDLK_RIGHT); break;
00330     case KC_END:  mGetString = SDL_GetKeyName(SDLK_END); break;
00331     case KC_DOWN: mGetString = SDL_GetKeyName(SDLK_DOWN); break;
00332     case KC_PGDOWN: mGetString = SDL_GetKeyName(SDLK_PAGEDOWN); break;
00333     case KC_INSERT: mGetString = SDL_GetKeyName(SDLK_INSERT); break;
00334     case KC_DELETE: mGetString = SDL_GetKeyName(SDLK_DELETE); break;
00335     case KC_LWIN: mGetString = SDL_GetKeyName(SDLK_LSUPER); break;
00336     case KC_RWIN: mGetString = SDL_GetKeyName(SDLK_RSUPER); break;
00337     case KC_APPS: mGetString = "KC_APPS"; break;
00338     case KC_POWER: mGetString = "KC_POWER"; break;
00339     case KC_SLEEP: mGetString = "KC_SLEEP"; break;
00340     case KC_WAKE: mGetString = "KC_WAKE"; break;
00341     case KC_WEBSEARCH: mGetString = "KC_WEBSEARCH"; break;
00342     case KC_WEBFAVORITES: mGetString = "KC_WEBFAVORITES"; break;
00343     case KC_WEBREFRESH: mGetString = "KC_WEBREFRESH"; break;
00344     case KC_WEBSTOP: mGetString = "KC_WEBSTOP"; break;
00345     case KC_WEBFORWARD: mGetString = "KC_WEBFORWARD"; break;
00346     case KC_WEBBACK: mGetString = "KC_WEBBACK"; break;
00347     case KC_MYCOMPUTER: mGetString = "KC_MYCOMPUTER"; break;
00348     case KC_MAIL: mGetString = "KC_MAIL"; break;
00349     case KC_MEDIASELECT: mGetString = "KC_MEDIASELECT"; break;
00350     default: mGetString = "Unknown"; break;
00351     };
00352 
00353         return mGetString;
00354 }
00355 
00356 //-------------------------------------------------------------------//
00357 void SDLKeyboard::copyKeyStates( char keys[256] )
00358 {
00359         for(int i = 0; i < 256; ++i)
00360                 keys[i] = KeyBuffer[i];
00361 }
00362 
00363 //-------------------------------------------------------------------//
00364 void SDLKeyboard::setBuffered(bool buffered)
00365 {
00366         mBuffered = buffered;
00367 }
00368 
00369 //-------------------------------------------------------------------//
00370 void SDLKeyboard::setTextTranslation( TextTranslationMode mode )
00371 {
00372         mTextMode = mode;
00373         if( mode == Off || mode == Ascii )
00374                 SDL_EnableUNICODE(0);
00375         else if( mode == Unicode )
00376                 SDL_EnableUNICODE(1);
00377 }

Generated on Sat Dec 1 20:13:52 2007 for OIS by  doxygen 1.5.4