wip: reader, added key mappings
authorPatrik Gornicz <Gornicz.P@gmail.com>
Fri, 22 Aug 2008 22:26:52 +0000 (18:26 -0400)
committerPatrik Gornicz <Gornicz.P@gmail.com>
Fri, 22 Aug 2008 22:26:52 +0000 (18:26 -0400)
src/config/reader.cpp
src/config/reader.h

index de6da20..2d1d677 100644 (file)
 using std::ifstream;
 using std::string;
 
-char* configDir = "../configs/";
+typedef std::map<string,SDLKey> kMap;
+kMap keyMap;
 
 /// ***** Private Method Headers *****
 
-void processLine(const string& str, keyMap* map);
+void processLine(const string& str, inputMap* map);
 bool extractLine(const string& str, string* name, string* value);
 
 /// ***** Private Variables *****
 
+char* configDir = "../configs/";
+
 /// ***** Public Methods *****
 
-void readConfigs(keyMap* map)
+void readConfigs(inputMap* map)
 {
     char fileName[64];
 
@@ -67,7 +70,7 @@ void readConfigs(keyMap* map)
 
 /// ***** Private Methods *****
 
-void processLine(const string& str, keyMap* map)
+void processLine(const string& str, inputMap* map)
 {
     string name;
     string value;
@@ -78,6 +81,7 @@ void processLine(const string& str, keyMap* map)
 
     if(extracted)
     {
+        //map->insert(name, value);
         cout << name << endl;
         cout << value << endl;
     }
@@ -132,13 +136,18 @@ bool extractLine(const string& str, string* name, string* value)
                     state++;
                     name_end = char_pos;
                 }
+
                 if(c_str[char_pos] == '=')
                     char_pos--; // decrement to stay on this char
                 break;
             case 2:
                 if(c_str[char_pos] == '=')
-                {
                     state++;
+
+                if(c_str[char_pos] != ' '
+                && c_str[char_pos] != '\t')
+                {
+                    return false;
                 }
                 break;
             case 3:
@@ -174,3 +183,99 @@ bool extractLine(const string& str, string* name, string* value)
 
     return true;
 }
+
+bool extractKey(const string& str, Uint8* key)
+{
+//    if(str.length() != 1)
+//        return false;
+
+    return false;
+}
+
+void createKeyMap()
+{
+    // add all the letters
+    for (int i = 'A'; i <= 'Z'; i++)   // uppercase
+        keyMap["" + (char)i] = (SDLKey)i;
+    for (int i = 'a'; i <= 'z'; i++)   // lowercase
+        keyMap["" + (char)i] = (SDLKey)i;
+
+    // add all the numbers
+    for (int i = '0'; i <= '9'; i++)
+        keyMap["" + (char)i] = (SDLKey)i;
+
+    /*
+    // add the function keys
+    int F1 = (int)Key.F1;
+    for (int i = F1; i <= (int)Key.F15; i++)
+    {
+        keyMap.Add("F" + (i - F1 + 1), (Key)i);
+        keyMap.Add("f" + (i - F1 + 1), (Key)i);
+    }
+    */
+
+    keyMap["LCtrl"] = SDLK_LCTRL;
+    keyMap["LeftControl"] = SDLK_LCTRL;
+    keyMap["LAlt"] = SDLK_LALT;
+    keyMap["LeftAlt"] = SDLK_LALT;
+    keyMap["LShift"] = SDLK_LSHIFT;
+    keyMap["LeftShift"] = SDLK_LSHIFT;
+    keyMap["LWin"] = SDLK_LSUPER;
+    keyMap["LeftWindows"] = SDLK_LSUPER;
+    keyMap["LeftMeta"] = SDLK_LMETA;
+    keyMap["LMeta"] = SDLK_LMETA;
+
+    keyMap["RCtrl"] = SDLK_RCTRL;
+    keyMap["RightControl"] = SDLK_RCTRL;
+    keyMap["RAlt"] = SDLK_RALT;
+    keyMap["RightAlt"] = SDLK_RALT;
+    keyMap["RShift"] = SDLK_RSHIFT;
+    keyMap["RightShift"] = SDLK_RSHIFT;
+    keyMap["RWin"] = SDLK_RSUPER;
+    keyMap["RightWindows"] = SDLK_RSUPER;
+    keyMap["RightMeta"] = SDLK_RMETA;
+    keyMap["RMeta"] = SDLK_RMETA;
+
+    keyMap["Esc"] = SDLK_ESCAPE;
+    keyMap["Escape"] = SDLK_ESCAPE;
+
+    keyMap["Return"] = SDLK_RETURN;
+    keyMap["Enter"] = SDLK_RETURN;
+
+    keyMap["Insert"] = SDLK_INSERT;
+    keyMap["Home"] = SDLK_HOME;
+    keyMap["Delete"] = SDLK_DELETE;
+    keyMap["End"] = SDLK_END;
+    keyMap["PageUp"] = SDLK_PAGEUP;
+    keyMap["PageDown"] = SDLK_PAGEDOWN;
+
+    keyMap["Minus"] = SDLK_MINUS;
+    keyMap["Equal"] = SDLK_EQUALS;
+    keyMap["Equals"] = SDLK_EQUALS;
+    keyMap["LeftBracket"] = SDLK_LEFTBRACKET;
+    keyMap["LBracket"] = SDLK_LEFTBRACKET;
+    keyMap["RightBracket"] = SDLK_RIGHTBRACKET;
+    keyMap["RBracket"] = SDLK_RIGHTBRACKET;
+    keyMap["Backslash"] = SDLK_BACKSLASH;
+    keyMap["Slash"] = SDLK_SLASH;
+    keyMap["Semicolon"] = SDLK_SEMICOLON;
+    keyMap["Semi"] = SDLK_SEMICOLON;
+    keyMap["Quote"] = SDLK_QUOTE;
+    keyMap["Comma"] = SDLK_COMMA;
+    keyMap["Period"] = SDLK_PERIOD;
+    keyMap["Space"] = SDLK_SPACE;
+    keyMap["BSpace"] = SDLK_BACKSPACE;
+    keyMap["Backspace"] = SDLK_BACKSPACE;
+    keyMap["BackSpace"] = SDLK_BACKSPACE;
+
+    keyMap["Tab"] = SDLK_TAB;
+    keyMap["BackQuote"] = SDLK_BACKQUOTE;
+    keyMap["BQuote"] = SDLK_BACKQUOTE;
+    keyMap["CapsLock"] = SDLK_CAPSLOCK;
+    keyMap["Caps"] = SDLK_CAPSLOCK;
+
+    keyMap["Up"] = SDLK_UP;
+    keyMap["Down"] = SDLK_DOWN;
+    keyMap["Left"] = SDLK_LEFT;
+    keyMap["Right"] = SDLK_RIGHT;
+}
index 672b6da..eb13cbc 100644 (file)
 
 #include <SDL/SDL.h>
 #include <map>
+#include <string>
 
-typedef std::map<int,Uint8> keyMap;
+using std::string;
+
+typedef std::map<string,Uint8> inputMap;
 
 /// ***** Header Methods *****
 
-void readConfigs(keyMap*);
+void readConfigs(inputMap*);
 
 #endif // READER_H