Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
May 1, 2008, 8:33:53 PM (17 years ago)
Author:
rgrieder
Message:
  • Key bindings can now be stored in keybindings.ini
  • doesn't work for move movement yet, but for the buttons.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/input/src/core/InputHandler.cc

    r1205 r1213  
    3434#include "InputHandler.h"
    3535#include "Debug.h"
     36#include "ConfigValueIncludes.h"
     37#include "CoreIncludes.h"
    3638#include "util/Convert.h"
    3739#include "core/CommandExecutor.h"
     
    4850  KeyBinder::KeyBinder()
    4951  {
     52    RegisterObject(KeyBinder);
    5053    clearBindings();
     54
     55    std::string keyNames[] = {
     56    "UNASSIGNED",
     57                "ESCAPE",
     58                "1",
     59                "2",
     60                "3",
     61                "4",
     62                "5",
     63                "6",
     64                "7",
     65                "8",
     66                "9",
     67                "0",
     68                "MINUS",
     69                "EQUALS",
     70                "BACK",
     71                "TAB",
     72                "Q",
     73                "W",
     74                "E",
     75                "R",
     76                "T",
     77                "Y",
     78                "U",
     79                "I",
     80                "O",
     81                "P",
     82                "LBRACKET",
     83                "RBRACKET",
     84                "RETURN",
     85                "LCONTROL",
     86                "A",
     87                "S",
     88                "D",
     89                "F",
     90                "G",
     91                "H",
     92                "J",
     93                "K",
     94                "L",
     95                "SEMICOLON",
     96                "APOSTROPHE",
     97                "GRAVE",
     98                "LSHIFT",
     99                "BACKSLASH",
     100                "Z",
     101                "X",
     102                "C",
     103                "V",
     104                "B",
     105                "N",
     106                "M",
     107                "COMMA",
     108                "PERIOD",
     109                "SLASH",
     110                "RSHIFT",
     111                "MULTIPLY",
     112                "LMENU",
     113                "SPACE",
     114                "CAPITAL",
     115                "F1",
     116                "F2",
     117                "F3",
     118                "F4",
     119                "F5",
     120                "F6",
     121                "F7",
     122                "F8",
     123                "F9",
     124                "F10",
     125                "NUMLOCK",
     126                "SCROLL",
     127                "NUMPAD7",
     128                "NUMPAD8",
     129                "NUMPAD9",
     130                "SUBTRACT",
     131                "NUMPAD4",
     132                "NUMPAD5",
     133                "NUMPAD6",
     134                "ADD",
     135                "NUMPAD1",
     136                "NUMPAD2",
     137                "NUMPAD3",
     138                "NUMPAD0",
     139                "DECIMAL",
     140    "","",
     141                "OEM_102",
     142                "F11",
     143                "F12",
     144    "","","","","","","","","","","",
     145                "F13",
     146                "F14",
     147                "F15",
     148    "","","","","","","","","","",
     149                "KANA",
     150    "","",
     151                "ABNT_C1",
     152    "","","","","",
     153                "CONVERT",
     154    "",
     155                "NOCONVERT",
     156    "",
     157                "YEN",
     158                "ABNT_C2",
     159    "","","","","","","","","","","","","","",
     160                "NUMPADEQUALS",
     161    "","",
     162                "PREVTRACK",
     163                "AT",
     164                "COLON",
     165                "UNDERLINE",
     166                "KANJI",
     167                "STOP",
     168                "AX",
     169                "UNLABELED",
     170                "NEXTTRACK",
     171    "","",
     172                "NUMPADENTER",
     173                "RCONTROL",
     174    "","",
     175                "MUTE",
     176                "CALCULATOR",
     177                "PLAYPAUSE",
     178    "",
     179                "MEDIASTOP",
     180    "","","","","","","","","",
     181                "VOLUMEDOWN",
     182    "",
     183                "VOLUMEUP",
     184    "",
     185                "WEBHOME",
     186                "NUMPADCOMMA",
     187    "",
     188                "DIVIDE",
     189    "",
     190                "SYSRQ",
     191                "RMENU",
     192    "","","","","","","","","","","","",
     193                "PAUSE",
     194    "",
     195                "HOME",
     196                "UP",
     197                "PGUP",
     198    "",
     199                "LEFT",
     200    "",
     201                "RIGHT",
     202    "",
     203                "END",
     204                "DOWN",
     205                "PGDOWN",
     206                "INSERT",
     207                "DELETE",
     208    "","","","","","","",
     209                "LWIN",
     210                "RWIN",
     211                "APPS",
     212                "POWER",
     213                "SLEEP",
     214    "","","",
     215                "WAKE",
     216    "",
     217                "WEBSEARCH",
     218                "WEBFAVORITES",
     219                "WEBREFRESH",
     220                "WEBSTOP",
     221                "WEBFORWARD",
     222                "WEBBACK",
     223                "MYCOMPUTER",
     224                "MAIL",
     225                "MEDIASELECT"
     226    };
     227    for (int i = 0; i < numberOfKeys_s; i++)
     228      keyNames_[i] = keyNames[i];
     229
     230    std::string mouseButtonNames[] = {
     231    "MouseLeft", "MouseRight", "MouseMiddle",
     232    "MouseButton3", "MouseButton4", "MouseButton5",
     233    "MouseButton6", "MouseButton7" };
     234    for (int i = 0; i < numberOfMouseButtons_s; i++)
     235      mouseButtonNames_[i] = mouseButtonNames[i];
     236
     237    for (int i = 0; i < numberOfJoyStickButtons_s; i++)
     238      joyStickButtonNames_[i] = "JoyStick" + getConvertedValue<int, std::string>(i);
    51239  }
    52240
     
    56244  KeyBinder::~KeyBinder()
    57245  {
     246  }
     247
     248  /**
     249    @brief Loader for the key bindings, managed by config values.
     250  */
     251  void KeyBinder::setConfigValues()
     252  {
     253    ConfigValueContainer* cont;
     254    std::string modes[] = {"P_", "R_", "H_"};
     255
     256    // keys
     257    for (int i = 0; i < numberOfKeys_s; i++)
     258    {
     259      for (int j = 0; j < 3; j++)
     260      {
     261        cont = getIdentifier()->getConfigValueContainer(modes[j] + keyNames_[i]);
     262        if (!cont)
     263        {
     264          cont = new ConfigValueContainer(CFT_Keybindings, getIdentifier(), modes[j] + keyNames_[i], "");
     265          getIdentifier()->addConfigValueContainer(modes[j] + keyNames_[i], cont);
     266        }
     267        switch (j)
     268        {
     269          case 0:
     270            cont->getValue(bindingsKeyPress_ + i);
     271            break;
     272          case 1:
     273            cont->getValue(bindingsKeyRelease_ + i);
     274            break;
     275          case 2:
     276            cont->getValue(bindingsKeyHold_ + i);
     277        }
     278      }
     279    }
     280
     281    // mouse buttons
     282    for (int i = 0; i < numberOfMouseButtons_s; i++)
     283    {
     284      for (int j = 0; j < 3; j++)
     285      {
     286        cont = getIdentifier()->getConfigValueContainer(modes[j] + mouseButtonNames_[i]);
     287        if (!cont)
     288        {
     289          cont = new ConfigValueContainer(CFT_Keybindings, getIdentifier(), modes[j] + mouseButtonNames_[i], "");
     290          getIdentifier()->addConfigValueContainer(modes[j] + mouseButtonNames_[i], cont);
     291        }
     292        switch (j)
     293        {
     294          case 0:
     295            cont->getValue(bindingsMouseButtonPress_ + i);
     296            break;
     297          case 1:
     298            cont->getValue(bindingsMouseButtonRelease_ + i);
     299            break;
     300          case 2:
     301            cont->getValue(bindingsMouseButtonHold_ + i);
     302        }
     303      }
     304    }
     305
     306    // joy stick buttons
     307    for (int i = 0; i < numberOfJoyStickButtons_s; i++)
     308    {
     309      for (int j = 0; j < 3; j++)
     310      {
     311        cont = getIdentifier()->getConfigValueContainer(modes[j] + joyStickButtonNames_[i]);
     312        if (!cont)
     313        {
     314          cont = new ConfigValueContainer(CFT_Keybindings, getIdentifier(), modes[j] + joyStickButtonNames_[i], "");
     315          getIdentifier()->addConfigValueContainer(modes[j] + joyStickButtonNames_[i], cont);
     316        }
     317        switch (j)
     318        {
     319          case 0:
     320            cont->getValue(bindingsJoyStickButtonPress_ + i);
     321            break;
     322          case 1:
     323            cont->getValue(bindingsJoyStickButtonRelease_ + i);
     324            break;
     325          case 2:
     326            cont->getValue(bindingsJoyStickButtonHold_ + i);
     327        }
     328      }
     329    }
    58330  }
    59331
     
    91363    COUT(ORX_DEBUG) << "KeyBinder: Loading key bindings..." << std::endl;
    92364
    93     // clear all the bindings at first.
    94     clearBindings();
    95 
    96     // TODO: Insert the code to load the bindings from file.
    97     bindingsKeyPress_[OIS::KC_NUMPADENTER] = "activateConsole";
    98     bindingsKeyPress_[OIS::KC_ESCAPE] = "exit";
    99     bindingsKeyHold_ [OIS::KC_U] = "exec disco.txt";
     365    ConfigFileManager::getSingleton()->setFile(CFT_Keybindings, "keybindings.ini");
     366    setConfigValues();
    100367
    101368    COUT(ORX_DEBUG) << "KeyBinder: Loading key bindings done." << std::endl;
     
    110377  bool KeyBinder::keyPressed(const OIS::KeyEvent &e)
    111378  {
     379    COUT(3) << "Key: " << e.key << std::endl;
    112380    // find the appropriate key binding
    113381    std::string cmdStr = bindingsKeyPress_[int(e.key)];
Note: See TracChangeset for help on using the changeset viewer.