#include "keytable.hpp" #include char* KeyTable::m_table[SDLK_LAST]; char* KeyTable::m_unknownKeyName = "???"; void KeyTable::initializeTable() { for ( int i = 0; i < SDLK_LAST; i++ ) { m_table[i] = m_unknownKeyName; } addKeyName( SDLK_BACKSPACE, "backspace" ); addKeyName( SDLK_TAB, "tab" ); addKeyName( SDLK_CLEAR, "clear" ); addKeyName( SDLK_RETURN, "return" ); addKeyName( SDLK_PAUSE, "pause" ); addKeyName( SDLK_ESCAPE, "escape" ); addKeyName( SDLK_SPACE, "space" ); addKeyName( SDLK_EXCLAIM, "!" ); addKeyName( SDLK_QUOTEDBL, "\"" ); addKeyName( SDLK_HASH, "#" ); addKeyName( SDLK_DOLLAR, "$" ); addKeyName( SDLK_AMPERSAND, "&" ); addKeyName( SDLK_QUOTE, "'" ); addKeyName( SDLK_LEFTPAREN, "(" ); addKeyName( SDLK_RIGHTPAREN, ")" ); addKeyName( SDLK_ASTERISK, "*" ); addKeyName( SDLK_PLUS, "+" ); addKeyName( SDLK_COMMA, "," ); addKeyName( SDLK_MINUS, "-" ); addKeyName( SDLK_PERIOD, "." ); addKeyName( SDLK_SLASH, "/" ); addKeyName( SDLK_0, "0" ); addKeyName( SDLK_1, "1" ); addKeyName( SDLK_2, "2" ); addKeyName( SDLK_3, "3" ); addKeyName( SDLK_4, "4" ); addKeyName( SDLK_5, "5" ); addKeyName( SDLK_6, "6" ); addKeyName( SDLK_7, "7" ); addKeyName( SDLK_8, "8" ); addKeyName( SDLK_9, "9" ); addKeyName( SDLK_COLON, "," ); addKeyName( SDLK_SEMICOLON, ";" ); addKeyName( SDLK_LESS, "<" ); addKeyName( SDLK_EQUALS, "=" ); addKeyName( SDLK_GREATER, ">" ); addKeyName( SDLK_QUESTION, "?" ); addKeyName( SDLK_AT, "@" ); addKeyName( SDLK_LEFTBRACKET, "[" ); addKeyName( SDLK_BACKSLASH, "\\" ); addKeyName( SDLK_RIGHTBRACKET, "]" ); addKeyName( SDLK_CARET, "^" ); addKeyName( SDLK_UNDERSCORE, "_" ); addKeyName( SDLK_BACKQUOTE, "ΒΈ" ); addKeyName( SDLK_a, "a" ); addKeyName( SDLK_b, "b" ); addKeyName( SDLK_c, "c" ); addKeyName( SDLK_d, "d" ); addKeyName( SDLK_e, "e" ); addKeyName( SDLK_f, "f" ); addKeyName( SDLK_g, "g" ); addKeyName( SDLK_h, "h" ); addKeyName( SDLK_i, "i" ); addKeyName( SDLK_j, "j" ); addKeyName( SDLK_k, "k" ); addKeyName( SDLK_l, "l" ); addKeyName( SDLK_m, "m" ); addKeyName( SDLK_n, "n" ); addKeyName( SDLK_o, "o" ); addKeyName( SDLK_p, "p" ); addKeyName( SDLK_q, "q" ); addKeyName( SDLK_r, "r" ); addKeyName( SDLK_s, "s" ); addKeyName( SDLK_t, "t" ); addKeyName( SDLK_u, "u" ); addKeyName( SDLK_v, "v" ); addKeyName( SDLK_w, "w" ); addKeyName( SDLK_x, "x" ); addKeyName( SDLK_y, "y" ); addKeyName( SDLK_z, "z" ); addKeyName( SDLK_DELETE, "delete" ); addKeyName( SDLK_KP0, "keypad 0" ); addKeyName( SDLK_KP1, "keypad 1" ); addKeyName( SDLK_KP2, "keypad 2" ); addKeyName( SDLK_KP3, "keypad 3" ); addKeyName( SDLK_KP4, "keypad 4" ); addKeyName( SDLK_KP5, "keypad 5" ); addKeyName( SDLK_KP6, "keypad 6" ); addKeyName( SDLK_KP7, "keypad 7" ); addKeyName( SDLK_KP8, "keypad 8" ); addKeyName( SDLK_KP9, "keypad 9" ); addKeyName( SDLK_KP_PERIOD, "keypad ." ); addKeyName( SDLK_KP_DIVIDE, "keypad /" ); addKeyName( SDLK_KP_MULTIPLY, "keypad *" ); addKeyName( SDLK_KP_MINUS, "keypad -" ); addKeyName( SDLK_KP_PLUS, "keypad +" ); addKeyName( SDLK_KP_ENTER, "keypad enter" ); addKeyName( SDLK_KP_EQUALS, "keypad =" ); addKeyName( SDLK_UP, "up" ); addKeyName( SDLK_DOWN, "down" ); addKeyName( SDLK_RIGHT, "right" ); addKeyName( SDLK_LEFT, "left" ); addKeyName( SDLK_INSERT, "insert" ); addKeyName( SDLK_HOME, "home" ); addKeyName( SDLK_END, "end" ); addKeyName( SDLK_PAGEUP, "page up" ); addKeyName( SDLK_PAGEDOWN, "page down" ); addKeyName( SDLK_F1, "F1" ); addKeyName( SDLK_F2, "F2" ); addKeyName( SDLK_F3, "F3" ); addKeyName( SDLK_F4, "F4" ); addKeyName( SDLK_F5, "F5" ); addKeyName( SDLK_F6, "F6" ); addKeyName( SDLK_F7, "F7" ); addKeyName( SDLK_F8, "F8" ); addKeyName( SDLK_F9, "F9" ); addKeyName( SDLK_F10, "F10" ); addKeyName( SDLK_F11, "F11" ); addKeyName( SDLK_F12, "F12" ); addKeyName( SDLK_F13, "F13" ); addKeyName( SDLK_F14, "F14" ); addKeyName( SDLK_F15, "F15" ); addKeyName( SDLK_NUMLOCK, "num lock" ); addKeyName( SDLK_CAPSLOCK, "caps lock" ); addKeyName( SDLK_SCROLLOCK, "scroll lock" ); addKeyName( SDLK_RSHIFT, "right shift" ); addKeyName( SDLK_LSHIFT, "left shift" ); addKeyName( SDLK_RCTRL, "right ctrl" ); addKeyName( SDLK_LCTRL, "left ctrl" ); addKeyName( SDLK_RALT, "right alt" ); addKeyName( SDLK_LALT, "left alt" ); addKeyName( SDLK_RMETA, "right meta" ); addKeyName( SDLK_LMETA, "left meta" ); addKeyName( SDLK_LSUPER, "left win" ); addKeyName( SDLK_RSUPER, "right win" ); addKeyName( SDLK_MODE, "mode shift" ); addKeyName( SDLK_HELP, "help" ); addKeyName( SDLK_PRINT, "print screen" ); addKeyName( SDLK_SYSREQ, "sysreq" ); addKeyName( SDLK_BREAK, "break" ); addKeyName( SDLK_MENU, "menu" ); addKeyName( SDLK_POWER, "power" ); addKeyName( SDLK_EURO, "euro" ); } void KeyTable::addKeyName( SDLKey key, const char* keyname ) { m_table[key] = strdup( keyname ); } SDLKey KeyTable::getKeyByName( const char* keyname ) { for ( int i = 0; i < SDLK_LAST; i++ ) { if ( !strcmp( keyname, m_table[i] ) ) return static_cast( i ); } return SDLK_LAST; }