Index: /code/branches/input/src/core/CorePrereqs.h
===================================================================
--- /code/branches/input/src/core/CorePrereqs.h	(revision 1203)
+++ /code/branches/input/src/core/CorePrereqs.h	(revision 1204)
@@ -114,9 +114,4 @@
   class Identifier;
   class IdentifierDistributor;
-  class InputBuffer;
-  class InputBufferListener;
-  class InputHandlerGame;
-  class InputHandlerGUI;
-  class InputManager;
   template <class T>
   class Iterator;
@@ -146,4 +141,15 @@
   class XMLPortObjectContainer;
   class XMLPortParamContainer;
+
+  // input
+  class InputBuffer;
+  class InputBufferListener;
+  class InputManager;
+  class KeyBinder;
+  class GUIInputHandler;
+  class KeyHandler;
+  class MouseHandler;
+  class JoyStickHandler;
+
 }
 
Index: /code/branches/input/src/core/InputManager.cc
===================================================================
--- /code/branches/input/src/core/InputManager.cc	(revision 1203)
+++ /code/branches/input/src/core/InputManager.cc	(revision 1204)
@@ -30,5 +30,5 @@
   @file
   @brief Implementation of the InputManager that captures all the input from OIS
-         and redirects it to listeners if necessary.
+         and redirects it to handlers if necessary.
  */
 
@@ -37,6 +37,5 @@
 #include "Debug.h"
 #include "InputBuffer.h"
-#include "ConsoleCommand.h"
-#include "util/Convert.h"
+#include "InputHandler.h"
 
 namespace orxonox
@@ -83,6 +82,6 @@
     @param windowHeight The height of the render window
   */
-  bool InputManager::_initialise(size_t windowHnd, int windowWidth, int windowHeight,
-        bool createKeyboard, bool createMouse, bool createJoySticks)
+  bool InputManager::_initialise(const size_t windowHnd, const int windowWidth, const int windowHeight,
+        const bool createKeyboard, const bool createMouse, const bool createJoySticks)
   {
     if (state_ == IS_UNINIT)
@@ -135,10 +134,10 @@
 
     // InputManager holds the input buffer --> create one and add it.
-    addKeyListener(new InputBuffer(), "buffer");
+    addKeyHandler(new InputBuffer(), "buffer");
 
     KeyBinder* binder = new KeyBinder();
     binder->loadBindings();
-    addKeyListener(binder, "keybinder");
-    addMouseListener(binder, "keybinder");
+    addKeyHandler(binder, "keybinder");
+    addMouseHandler(binder, "keybinder");
 
     // Read all the key bindings and assign them
@@ -273,20 +272,20 @@
     if (state_ != IS_UNINIT)
     {
-      if (listenersKey_.find("buffer") != listenersKey_.end())
-        delete listenersKey_["buffer"];
-
-      if (listenersKey_.find("keybinder") != listenersKey_.end())
-        delete listenersKey_["keybinder"];
-
-      listenersKeyActive_.clear();
-      listenersMouseActive_.clear();
-      listenersJoySticksActive_.clear();
-      listenersKey_.clear();
-      listenersMouse_.clear();
-      listenersJoySticks_.clear();
+      if (keyHandlers_.find("buffer") != keyHandlers_.end())
+        delete keyHandlers_["buffer"];
+
+      if (keyHandlers_.find("keybinder") != keyHandlers_.end())
+        delete keyHandlers_["keybinder"];
+
+      activeKeyHandlers_.clear();
+      activeMouseHandlers_.clear();
+      activeJoyStickHandlers_.clear();
+      keyHandlers_.clear();
+      mouseHandlers_.clear();
+      joyStickHandlers_.clear();
 
       keysDown_.clear();
       mouseButtonsDown_.clear();
-      joySticksButtonsDown_.clear();
+      joyStickButtonsDown_.clear();
 
       _destroyKeyboard();
@@ -368,7 +367,7 @@
       if (stateRequest_ != IS_CUSTOM)
       {
-        listenersKeyActive_.clear();
-        listenersMouseActive_.clear();
-        listenersJoySticksActive_.clear();
+        activeKeyHandlers_.clear();
+        activeMouseHandlers_.clear();
+        activeJoyStickHandlers_.clear();
 
         switch (stateRequest_)
@@ -376,13 +375,13 @@
         case IS_NORMAL:
           // normal play mode
-          if (listenersKey_.find("keybinder") != listenersKey_.end())
-            listenersKeyActive_.push_back(listenersKey_["keybinder"]);
-          if (listenersMouse_.find("keybinder") != listenersMouse_.end())
-            listenersMouseActive_.push_back(listenersMouse_["keybinder"]);
-          if (listenersJoySticks_.find("keybinder") != listenersJoySticks_.end())
+          if (keyHandlers_.find("keybinder") != keyHandlers_.end())
+            activeKeyHandlers_.push_back(keyHandlers_["keybinder"]);
+          if (mouseHandlers_.find("keybinder") != mouseHandlers_.end())
+            activeMouseHandlers_.push_back(mouseHandlers_["keybinder"]);
+          if (joyStickHandlers_.find("keybinder") != joyStickHandlers_.end())
           {
             for (std::map<int, OIS::JoyStick*>::const_iterator it = joySticks_.begin();
                   it != joySticks_.end(); it++)
-              listenersJoySticksActive_[(*it).first].push_back(listenersJoySticks_["keybinder"]);
+              activeJoyStickHandlers_[(*it).first].push_back(joyStickHandlers_["keybinder"]);
           }
           break;
@@ -393,21 +392,21 @@
 
         case IS_CONSOLE:
-          if (listenersMouse_.find("keybinder") != listenersMouse_.end())
-            listenersMouseActive_.push_back(listenersMouse_["keybinder"]);
-          if (listenersJoySticks_.find("keybinder") != listenersJoySticks_.end())
+          if (mouseHandlers_.find("keybinder") != mouseHandlers_.end())
+            activeMouseHandlers_.push_back(mouseHandlers_["keybinder"]);
+          if (joyStickHandlers_.find("keybinder") != joyStickHandlers_.end())
           {
             for (std::map<int, OIS::JoyStick*>::const_iterator it = joySticks_.begin();
                   it != joySticks_.end(); it++)
-              listenersJoySticksActive_[(*it).first].push_back(listenersJoySticks_["keybinder"]);
+              activeJoyStickHandlers_[(*it).first].push_back(joyStickHandlers_["keybinder"]);
           }
 
-          if (listenersKey_.find("buffer") != listenersKey_.end())
-            listenersKeyActive_.push_back(listenersKey_["buffer"]);
+          if (keyHandlers_.find("buffer") != keyHandlers_.end())
+            activeKeyHandlers_.push_back(keyHandlers_["buffer"]);
           else
           {
             // someone fiddled with the InputBuffer
             CCOUT(2) << "Error: Cannot redirect input to console, InputBuffer instance missing." << std::endl;
-            if (listenersKey_.find("keybinder") != listenersKey_.end())
-              listenersKeyActive_.push_back(listenersKey_["keybinder"]);
+            if (keyHandlers_.find("keybinder") != keyHandlers_.end())
+              activeKeyHandlers_.push_back(keyHandlers_["keybinder"]);
             else
               // this is bad
@@ -430,11 +429,11 @@
 
 
-    // call all the listeners for the held key events
+    // call all the handlers for the held key events
     for (std::list<OIS::KeyCode>::const_iterator itKey = keysDown_.begin();
           itKey != keysDown_.end(); itKey++)
     {
       OIS::KeyEvent keyArg(keyboard_, *itKey, 0);
-      for (std::list<KeyHandler*>::const_iterator itKeyHandler = listenersKeyActive_.begin();
-            itKeyHandler != listenersKeyActive_.end(); itKeyHandler++)
+      for (std::list<KeyHandler*>::const_iterator itKeyHandler = activeKeyHandlers_.begin();
+            itKeyHandler != activeKeyHandlers_.end(); itKeyHandler++)
       {
         (*itKeyHandler)->keyHeld(keyArg);
@@ -442,11 +441,11 @@
     }
 
-    // call all the listeners for the held mouse button events
+    // call all the handlers for the held mouse button events
     for (std::list<OIS::MouseButtonID>::const_iterator itMouseButton = mouseButtonsDown_.begin();
           itMouseButton != mouseButtonsDown_.end(); itMouseButton++)
     {
       OIS::MouseEvent mouseButtonArg(mouse_, mouse_->getMouseState());
-      for (std::list<MouseHandler*>::const_iterator itMouseHandler = listenersMouseActive_.begin();
-            itMouseHandler != listenersMouseActive_.end(); itMouseHandler++)
+      for (std::list<MouseHandler*>::const_iterator itMouseHandler = activeMouseHandlers_.begin();
+            itMouseHandler != activeMouseHandlers_.end(); itMouseHandler++)
       {
         (*itMouseHandler)->mouseHeld(mouseButtonArg, *itMouseButton);
@@ -454,7 +453,7 @@
     }
 
-    // call all the listeners for the held joy stick button events
-    for (std::map<int, std::list <int> >::const_iterator itJoyStick = joySticksButtonsDown_.begin();
-          itJoyStick != joySticksButtonsDown_.end(); itJoyStick++)
+    // call all the handlers for the held joy stick button events
+    for (std::map<int, std::list <int> >::const_iterator itJoyStick = joyStickButtonsDown_.begin();
+          itJoyStick != joyStickButtonsDown_.end(); itJoyStick++)
     {
       int id = (*itJoyStick).first;
@@ -463,6 +462,6 @@
       {
         OIS::JoyStickEvent joyStickButtonArg(joySticks_[id], joySticks_[id]->getJoyStickState());
-        for (std::list<JoyStickHandler*>::const_iterator itJoyStickHandler = listenersJoySticksActive_[id].begin();
-              itJoyStickHandler != listenersJoySticksActive_[id].end(); itJoyStickHandler++)
+        for (std::list<JoyStickHandler*>::const_iterator itJoyStickHandler = activeJoyStickHandlers_[id].begin();
+              itJoyStickHandler != activeJoyStickHandlers_[id].end(); itJoyStickHandler++)
         {
           (*itJoyStickHandler)->buttonHeld(joyStickButtonArg, *itJoyStickButton);
@@ -490,5 +489,5 @@
     keysDown_.push_back(e.key);
 
-    for (std::list<KeyHandler*>::const_iterator it = listenersKeyActive_.begin(); it != listenersKeyActive_.end(); it++)
+    for (std::list<KeyHandler*>::const_iterator it = activeKeyHandlers_.begin(); it != activeKeyHandlers_.end(); it++)
       (*it)->keyPressed(e);
 
@@ -512,5 +511,5 @@
     }
 
-    for (std::list<KeyHandler*>::const_iterator it = listenersKeyActive_.begin(); it != listenersKeyActive_.end(); it++)
+    for (std::list<KeyHandler*>::const_iterator it = activeKeyHandlers_.begin(); it != activeKeyHandlers_.end(); it++)
       (*it)->keyReleased(e);
 
@@ -524,5 +523,5 @@
   bool InputManager::mouseMoved(const OIS::MouseEvent &e)
   {
-    for (std::list<MouseHandler*>::const_iterator it = listenersMouseActive_.begin(); it != listenersMouseActive_.end(); it++)
+    for (std::list<MouseHandler*>::const_iterator it = activeMouseHandlers_.begin(); it != activeMouseHandlers_.end(); it++)
       (*it)->mouseMoved(e);
 
@@ -548,5 +547,5 @@
     mouseButtonsDown_.push_back(id);
 
-    for (std::list<MouseHandler*>::const_iterator it = listenersMouseActive_.begin(); it != listenersMouseActive_.end(); it++)
+    for (std::list<MouseHandler*>::const_iterator it = activeMouseHandlers_.begin(); it != activeMouseHandlers_.end(); it++)
       (*it)->mousePressed(e, id);
 
@@ -571,5 +570,5 @@
     }
 
-    for (std::list<MouseHandler*>::const_iterator it = listenersMouseActive_.begin(); it != listenersMouseActive_.end(); it++)
+    for (std::list<MouseHandler*>::const_iterator it = activeMouseHandlers_.begin(); it != activeMouseHandlers_.end(); it++)
       (*it)->mouseReleased(e, id);
 
@@ -582,5 +581,5 @@
 
     // check whether the button is already in the list (can happen when focus was lost)
-    std::list<int>& buttonsDownList = joySticksButtonsDown_[devID];
+    std::list<int>& buttonsDownList = joyStickButtonsDown_[devID];
     for (std::list<int>::iterator it = buttonsDownList.begin(); it != buttonsDownList.end(); it++)
     {
@@ -591,8 +590,8 @@
       }
     }
-    joySticksButtonsDown_[devID].push_back(button);
-
-    std::list<JoyStickHandler*>::iterator end = listenersJoySticksActive_[devID].end();
-    for (std::list<JoyStickHandler*>::const_iterator it = listenersJoySticksActive_[devID].begin(); it != end; it++)
+    joyStickButtonsDown_[devID].push_back(button);
+
+    std::list<JoyStickHandler*>::iterator end = activeJoyStickHandlers_[devID].end();
+    for (std::list<JoyStickHandler*>::const_iterator it = activeJoyStickHandlers_[devID].begin(); it != end; it++)
       (*it)->buttonPressed(arg, button);
 
@@ -604,6 +603,6 @@
     int devID = arg.device->getID();
 
-    // remove the button from the joySticksButtonsDown_ list
-    std::list<int>& buttonsDownList = joySticksButtonsDown_[devID];
+    // remove the button from the joyStickButtonsDown_ list
+    std::list<int>& buttonsDownList = joyStickButtonsDown_[devID];
     for (std::list<int>::iterator it = buttonsDownList.begin(); it != buttonsDownList.end(); it++)
     {
@@ -615,6 +614,6 @@
     }
 
-    std::list<JoyStickHandler*>::const_iterator end = listenersJoySticksActive_[devID].end();
-    for (std::list<JoyStickHandler*>::const_iterator it = listenersJoySticksActive_[devID].begin(); it != end; it++)
+    std::list<JoyStickHandler*>::const_iterator end = activeJoyStickHandlers_[devID].end();
+    for (std::list<JoyStickHandler*>::const_iterator it = activeJoyStickHandlers_[devID].begin(); it != end; it++)
       (*it)->buttonReleased(arg, button);
 
@@ -625,6 +624,6 @@
   {
     int devID = arg.device->getID();
-    std::list<JoyStickHandler*>::const_iterator end = listenersJoySticksActive_[devID].end();
-    for (std::list<JoyStickHandler*>::const_iterator it = listenersJoySticksActive_[devID].begin(); it != end; it++)
+    std::list<JoyStickHandler*>::const_iterator end = activeJoyStickHandlers_[devID].end();
+    for (std::list<JoyStickHandler*>::const_iterator it = activeJoyStickHandlers_[devID].begin(); it != end; it++)
       (*it)->axisMoved(arg, axis);
 
@@ -635,6 +634,6 @@
   {
     int devID = arg.device->getID();
-    std::list<JoyStickHandler*>::const_iterator end = listenersJoySticksActive_[devID].end();
-    for (std::list<JoyStickHandler*>::const_iterator it = listenersJoySticksActive_[devID].begin(); it != end; it++)
+    std::list<JoyStickHandler*>::const_iterator end = activeJoyStickHandlers_[devID].end();
+    for (std::list<JoyStickHandler*>::const_iterator it = activeJoyStickHandlers_[devID].begin(); it != end; it++)
       (*it)->sliderMoved(arg, id);
 
@@ -645,6 +644,6 @@
   {
     int devID = arg.device->getID();
-    std::list<JoyStickHandler*>::const_iterator end = listenersJoySticksActive_[devID].end();
-    for (std::list<JoyStickHandler*>::const_iterator it = listenersJoySticksActive_[devID].begin(); it != end; it++)
+    std::list<JoyStickHandler*>::const_iterator end = activeJoyStickHandlers_[devID].end();
+    for (std::list<JoyStickHandler*>::const_iterator it = activeJoyStickHandlers_[devID].begin(); it != end; it++)
       (*it)->povMoved(arg, id);
 
@@ -658,6 +657,6 @@
   // ################################
 
-  bool InputManager::initialise(size_t windowHnd, int windowWidth, int windowHeight,
-    bool createKeyboard, bool createMouse, bool createJoySticks)
+  bool InputManager::initialise(const size_t windowHnd, const int windowWidth, const int windowHeight,
+    const bool createKeyboard, const bool createMouse, const bool createJoySticks)
   {
     return _getSingleton()._initialise(windowHnd, windowWidth, windowHeight,
@@ -678,4 +677,19 @@
   {
     return _getSingleton()._initialiseJoySticks();
+  }
+
+  bool InputManager::isKeyboardInitialised()
+  {
+    return (_getSingleton().keyboard_ != 0);
+  }
+
+  bool InputManager::isMouseInitialised()
+  {
+    return (_getSingleton().mouse_ != 0);
+  }
+
+  bool InputManager::areJoySticksInitialised()
+  {
+    return (_getSingleton().joySticks_.size() > 0);
   }
 
@@ -708,5 +722,5 @@
     @param height the new height of the render window
   */
-  void InputManager::setWindowExtents(int width, int height)
+  void InputManager::setWindowExtents(const int width, const int height)
   {
     if (_getSingleton().mouse_)
@@ -742,14 +756,14 @@
 
   /**
-    @brief Adds a new key listener.
-    @param listener Pointer to the listener object.
-    @param name Unique name of the listener.
+    @brief Adds a new key handler.
+    @param handler Pointer to the handler object.
+    @param name Unique name of the handler.
     @return True if added, false if name already existed.
   */
-  bool InputManager::addKeyListener(KeyHandler* listener, const std::string& name)
-  {
-    if (_getSingleton().listenersKey_.find(name) == _getSingleton().listenersKey_.end())
-    {
-      _getSingleton().listenersKey_[name] = listener;
+  bool InputManager::addKeyHandler(KeyHandler* handler, const std::string& name)
+  {
+    if (_getSingleton().keyHandlers_.find(name) == _getSingleton().keyHandlers_.end())
+    {
+      _getSingleton().keyHandlers_[name] = handler;
       return true;
     }
@@ -759,15 +773,15 @@
 
   /**
-    @brief Removes a Key Listener from the list.
-    @param name Unique name of the listener.
+    @brief Removes a Key handler from the list.
+    @param name Unique name of the handler.
     @return True if removal was successful, false if name was not found.
   */
-  bool InputManager::removeKeyListener(const std::string &name)
-  {
-    disableKeyListener(name);
-    std::map<std::string, KeyHandler*>::iterator it = _getSingleton().listenersKey_.find(name);
-    if (it != _getSingleton().listenersKey_.end())
-    {
-      _getSingleton().listenersKey_.erase(it);
+  bool InputManager::removeKeyHandler(const std::string &name)
+  {
+    disableKeyHandler(name);
+    std::map<std::string, KeyHandler*>::iterator it = _getSingleton().keyHandlers_.find(name);
+    if (it != _getSingleton().keyHandlers_.end())
+    {
+      _getSingleton().keyHandlers_.erase(it);
       return true;
     }
@@ -777,12 +791,12 @@
 
   /**
-    @brief Returns the pointer to a listener.
-    @param name Unique name of the listener.
+    @brief Returns the pointer to a handler.
+    @param name Unique name of the handler.
     @return Pointer to the instance, 0 if name was not found.
   */
-  KeyHandler* InputManager::getKeyListener(const std::string& name)
-  {
-    std::map<std::string, KeyHandler*>::iterator it = _getSingleton().listenersKey_.find(name);
-    if (it != _getSingleton().listenersKey_.end())
+  KeyHandler* InputManager::getKeyHandler(const std::string& name)
+  {
+    std::map<std::string, KeyHandler*>::iterator it = _getSingleton().keyHandlers_.find(name);
+    if (it != _getSingleton().keyHandlers_.end())
     {
       return (*it).second;
@@ -793,43 +807,43 @@
 
   /**
-    @brief Enables a specific key listener that has already been added.
-    @param name Unique name of the listener.
+    @brief Enables a specific key handler that has already been added.
+    @param name Unique name of the handler.
     @return False if name was not found, true otherwise.
   */
-  bool InputManager::enableKeyListener(const std::string& name)
-  {
-    // get pointer from the map with all stored listeners
-    std::map<std::string, KeyHandler*>::const_iterator mapIt = _getSingleton().listenersKey_.find(name);
-    if (mapIt == _getSingleton().listenersKey_.end())
-      return false;
-    // see whether the listener is already in the list
-    for (std::list<KeyHandler*>::iterator it = _getSingleton().listenersKeyActive_.begin();
-          it != _getSingleton().listenersKeyActive_.end(); it++)
+  bool InputManager::enableKeyHandler(const std::string& name)
+  {
+    // get pointer from the map with all stored handlers
+    std::map<std::string, KeyHandler*>::const_iterator mapIt = _getSingleton().keyHandlers_.find(name);
+    if (mapIt == _getSingleton().keyHandlers_.end())
+      return false;
+    // see whether the handler is already in the list
+    for (std::list<KeyHandler*>::iterator it = _getSingleton().activeKeyHandlers_.begin();
+          it != _getSingleton().activeKeyHandlers_.end(); it++)
     {
       if ((*it) == (*mapIt).second)
         return true;
     }
-    _getSingleton().listenersKeyActive_.push_back((*mapIt).second);
-    return true;
-  }
-
-  /**
-    @brief Disables a specific key listener.
-    @param name Unique name of the listener.
+    _getSingleton().activeKeyHandlers_.push_back((*mapIt).second);
+    return true;
+  }
+
+  /**
+    @brief Disables a specific key handler.
+    @param name Unique name of the handler.
     @return False if name was not found, true otherwise.
   */
-  bool InputManager::disableKeyListener(const std::string &name)
-  {
-    // get pointer from the map with all stored listeners
-    std::map<std::string, KeyHandler*>::const_iterator mapIt = _getSingleton().listenersKey_.find(name);
-    if (mapIt == _getSingleton().listenersKey_.end())
-      return false;
-    // look for the listener in the list
-    for (std::list<KeyHandler*>::iterator it = _getSingleton().listenersKeyActive_.begin();
-          it != _getSingleton().listenersKeyActive_.end(); it++)
+  bool InputManager::disableKeyHandler(const std::string &name)
+  {
+    // get pointer from the map with all stored handlers
+    std::map<std::string, KeyHandler*>::const_iterator mapIt = _getSingleton().keyHandlers_.find(name);
+    if (mapIt == _getSingleton().keyHandlers_.end())
+      return false;
+    // look for the handler in the list
+    for (std::list<KeyHandler*>::iterator it = _getSingleton().activeKeyHandlers_.begin();
+          it != _getSingleton().activeKeyHandlers_.end(); it++)
     {
       if ((*it) == (*mapIt).second)
       {
-        _getSingleton().listenersKeyActive_.erase(it);
+        _getSingleton().activeKeyHandlers_.erase(it);
         return true;
       }
@@ -838,17 +852,38 @@
   }
 
+  /**
+    @brief Checks whether a key handler is active
+    @param name Unique name of the handler.
+    @return False if key handler is not active or doesn't exist, true otherwise.
+  */
+  bool InputManager::isKeyHandlerActive(const std::string& name)
+  {
+    // get pointer from the map with all stored handlers
+    std::map<std::string, KeyHandler*>::const_iterator mapIt = _getSingleton().keyHandlers_.find(name);
+    if (mapIt == _getSingleton().keyHandlers_.end())
+      return false;
+    // see whether the handler is already in the list
+    for (std::list<KeyHandler*>::iterator it = _getSingleton().activeKeyHandlers_.begin();
+          it != _getSingleton().activeKeyHandlers_.end(); it++)
+    {
+      if ((*it) == (*mapIt).second)
+        return true;
+    }
+    return false;
+  }
+
 
   // ###### MouseHandler ######
   /**
-    @brief Adds a new mouse listener.
-    @param listener Pointer to the listener object.
-    @param name Unique name of the listener.
+    @brief Adds a new mouse handler.
+    @param handler Pointer to the handler object.
+    @param name Unique name of the handler.
     @return True if added, false if name already existed.
   */
-  bool InputManager::addMouseListener(MouseHandler* listener, const std::string& name)
-  {
-    if (_getSingleton().listenersMouse_.find(name) == _getSingleton().listenersMouse_.end())
-    {
-      _getSingleton().listenersMouse_[name] = listener;
+  bool InputManager::addMouseHandler(MouseHandler* handler, const std::string& name)
+  {
+    if (_getSingleton().mouseHandlers_.find(name) == _getSingleton().mouseHandlers_.end())
+    {
+      _getSingleton().mouseHandlers_[name] = handler;
       return true;
     }
@@ -858,15 +893,15 @@
 
   /**
-    @brief Removes a Mouse Listener from the list.
-    @param name Unique name of the listener.
+    @brief Removes a Mouse handler from the list.
+    @param name Unique name of the handler.
     @return True if removal was successful, false if name was not found.
   */
-  bool InputManager::removeMouseListener(const std::string &name)
-  {
-    disableMouseListener(name);
-    std::map<std::string, MouseHandler*>::iterator it = _getSingleton().listenersMouse_.find(name);
-    if (it != _getSingleton().listenersMouse_.end())
-    {
-      _getSingleton().listenersMouse_.erase(it);
+  bool InputManager::removeMouseHandler(const std::string &name)
+  {
+    disableMouseHandler(name);
+    std::map<std::string, MouseHandler*>::iterator it = _getSingleton().mouseHandlers_.find(name);
+    if (it != _getSingleton().mouseHandlers_.end())
+    {
+      _getSingleton().mouseHandlers_.erase(it);
       return true;
     }
@@ -876,12 +911,12 @@
 
   /**
-    @brief Returns the pointer to a listener.
-    @param name Unique name of the listener.
+    @brief Returns the pointer to a handler.
+    @param name Unique name of the handler.
     @return Pointer to the instance, 0 if name was not found.
   */
-  MouseHandler* InputManager::getMouseListener(const std::string& name)
-  {
-    std::map<std::string, MouseHandler*>::iterator it = _getSingleton().listenersMouse_.find(name);
-    if (it != _getSingleton().listenersMouse_.end())
+  MouseHandler* InputManager::getMouseHandler(const std::string& name)
+  {
+    std::map<std::string, MouseHandler*>::iterator it = _getSingleton().mouseHandlers_.find(name);
+    if (it != _getSingleton().mouseHandlers_.end())
     {
       return (*it).second;
@@ -892,43 +927,43 @@
 
   /**
-    @brief Enables a specific mouse listener that has already been added.
-    @param name Unique name of the listener.
+    @brief Enables a specific mouse handler that has already been added.
+    @param name Unique name of the handler.
     @return False if name was not found, true otherwise.
   */
-  bool InputManager::enableMouseListener(const std::string& name)
-  {
-    // get pointer from the map with all stored listeners
-    std::map<std::string, MouseHandler*>::const_iterator mapIt = _getSingleton().listenersMouse_.find(name);
-    if (mapIt == _getSingleton().listenersMouse_.end())
-      return false;
-    // see whether the listener is already in the list
-    for (std::list<MouseHandler*>::iterator it = _getSingleton().listenersMouseActive_.begin();
-          it != _getSingleton().listenersMouseActive_.end(); it++)
+  bool InputManager::enableMouseHandler(const std::string& name)
+  {
+    // get pointer from the map with all stored handlers
+    std::map<std::string, MouseHandler*>::const_iterator mapIt = _getSingleton().mouseHandlers_.find(name);
+    if (mapIt == _getSingleton().mouseHandlers_.end())
+      return false;
+    // see whether the handler is already in the list
+    for (std::list<MouseHandler*>::iterator it = _getSingleton().activeMouseHandlers_.begin();
+          it != _getSingleton().activeMouseHandlers_.end(); it++)
     {
       if ((*it) == (*mapIt).second)
         return true;
     }
-    _getSingleton().listenersMouseActive_.push_back((*mapIt).second);
-    return true;
-  }
-
-  /**
-    @brief Disables a specific mouse listener.
-    @param name Unique name of the listener.
+    _getSingleton().activeMouseHandlers_.push_back((*mapIt).second);
+    return true;
+  }
+
+  /**
+    @brief Disables a specific mouse handler.
+    @param name Unique name of the handler.
     @return False if name was not found, true otherwise.
   */
-  bool InputManager::disableMouseListener(const std::string &name)
-  {
-    // get pointer from the map with all stored listeners
-    std::map<std::string, MouseHandler*>::const_iterator mapIt = _getSingleton().listenersMouse_.find(name);
-    if (mapIt == _getSingleton().listenersMouse_.end())
-      return false;
-    // look for the listener in the list
-    for (std::list<MouseHandler*>::iterator it = _getSingleton().listenersMouseActive_.begin();
-          it != _getSingleton().listenersMouseActive_.end(); it++)
+  bool InputManager::disableMouseHandler(const std::string &name)
+  {
+    // get pointer from the map with all stored handlers
+    std::map<std::string, MouseHandler*>::const_iterator mapIt = _getSingleton().mouseHandlers_.find(name);
+    if (mapIt == _getSingleton().mouseHandlers_.end())
+      return false;
+    // look for the handler in the list
+    for (std::list<MouseHandler*>::iterator it = _getSingleton().activeMouseHandlers_.begin();
+          it != _getSingleton().activeMouseHandlers_.end(); it++)
     {
       if ((*it) == (*mapIt).second)
       {
-        _getSingleton().listenersMouseActive_.erase(it);
+        _getSingleton().activeMouseHandlers_.erase(it);
         return true;
       }
@@ -937,18 +972,39 @@
   }
 
+  /**
+    @brief Checks whether a mouse handler is active
+    @param name Unique name of the handler.
+    @return False if key handler is not active or doesn't exist, true otherwise.
+  */
+  bool InputManager::isMouseHandlerActive(const std::string& name)
+  {
+    // get pointer from the map with all stored handlers
+    std::map<std::string, MouseHandler*>::const_iterator mapIt = _getSingleton().mouseHandlers_.find(name);
+    if (mapIt == _getSingleton().mouseHandlers_.end())
+      return false;
+    // see whether the handler is already in the list
+    for (std::list<MouseHandler*>::iterator it = _getSingleton().activeMouseHandlers_.begin();
+          it != _getSingleton().activeMouseHandlers_.end(); it++)
+    {
+      if ((*it) == (*mapIt).second)
+        return true;
+    }
+    return false;
+  }
+
 
   // ###### JoyStickHandler ######
 
   /**
-    @brief Adds a new joy stick listener.
-    @param listener Pointer to the listener object.
-    @param name Unique name of the listener.
+    @brief Adds a new joy stick handler.
+    @param handler Pointer to the handler object.
+    @param name Unique name of the handler.
     @return True if added, false if name already existed.
   */
-  bool InputManager::addJoyStickListener(JoyStickHandler* listener, const std::string& name)
-  {
-    if (_getSingleton().listenersJoySticks_.find(name) == _getSingleton().listenersJoySticks_.end())
-    {
-      _getSingleton().listenersJoySticks_[name] = listener;
+  bool InputManager::addJoyStickHandler(JoyStickHandler* handler, const std::string& name)
+  {
+    if (_getSingleton().joyStickHandlers_.find(name) == _getSingleton().joyStickHandlers_.end())
+    {
+      _getSingleton().joyStickHandlers_[name] = handler;
       return true;
     }
@@ -958,17 +1014,17 @@
 
   /**
-    @brief Removes a JoyStick Listener from the list.
-    @param name Unique name of the listener.
+    @brief Removes a JoyStick handler from the list.
+    @param name Unique name of the handler.
     @return True if removal was successful, false if name was not found.
   */
-  bool InputManager::removeJoyStickListener(const std::string &name)
+  bool InputManager::removeJoyStickHandler(const std::string &name)
   {
     for (std::map<int, OIS::JoyStick*>::iterator itstick = _getSingleton().joySticks_.begin(); itstick != _getSingleton().joySticks_.end(); itstick++)
-      disableJoyStickListener(name, (*itstick).first);
-
-    std::map<std::string, JoyStickHandler*>::iterator it = _getSingleton().listenersJoySticks_.find(name);
-    if (it != _getSingleton().listenersJoySticks_.end())
-    {
-      _getSingleton().listenersJoySticks_.erase(it);
+      disableJoyStickHandler(name, (*itstick).first);
+
+    std::map<std::string, JoyStickHandler*>::iterator it = _getSingleton().joyStickHandlers_.find(name);
+    if (it != _getSingleton().joyStickHandlers_.end())
+    {
+      _getSingleton().joyStickHandlers_.erase(it);
       return true;
     }
@@ -978,12 +1034,12 @@
 
   /**
-    @brief Returns the pointer to a listener.
-    @param name Unique name of the listener.
+    @brief Returns the pointer to a handler.
+    @param name Unique name of the handler.
     @return Pointer to the instance, 0 if name was not found.
   */
-  JoyStickHandler* InputManager::getJoyStickListener(const std::string& name)
-  {
-    std::map<std::string, JoyStickHandler*>::iterator it = _getSingleton().listenersJoySticks_.find(name);
-    if (it != _getSingleton().listenersJoySticks_.end())
+  JoyStickHandler* InputManager::getJoyStickHandler(const std::string& name)
+  {
+    std::map<std::string, JoyStickHandler*>::iterator it = _getSingleton().joyStickHandlers_.find(name);
+    if (it != _getSingleton().joyStickHandlers_.end())
     {
       return (*it).second;
@@ -994,13 +1050,13 @@
 
   /**
-    @brief Enables a specific joy stick listener that has already been added.
-    @param name Unique name of the listener.
+    @brief Enables a specific joy stick handler that has already been added.
+    @param name Unique name of the handler.
     @return False if name or id was not found, true otherwise.
   */
-  bool InputManager::enableJoyStickListener(const std::string& name, const int id)
-  {
-    // get pointer from the map with all stored listeners
-    std::map<std::string, JoyStickHandler*>::const_iterator listenerIt = _getSingleton().listenersJoySticks_.find(name);
-    if (listenerIt == _getSingleton().listenersJoySticks_.end())
+  bool InputManager::enableJoyStickHandler(const std::string& name, const int id)
+  {
+    // get pointer from the map with all stored handlers
+    std::map<std::string, JoyStickHandler*>::const_iterator handlerIt = _getSingleton().joyStickHandlers_.find(name);
+    if (handlerIt == _getSingleton().joyStickHandlers_.end())
       return false;
 
@@ -1010,25 +1066,25 @@
       return false;
 
-    // see whether the listener is already in the list
-    for (std::list<JoyStickHandler*>::iterator it = _getSingleton().listenersJoySticksActive_[id].begin();
-          it != _getSingleton().listenersJoySticksActive_[id].end(); it++)
-    {
-      if ((*it) == (*listenerIt).second)
+    // see whether the handler is already in the list
+    for (std::list<JoyStickHandler*>::iterator it = _getSingleton().activeJoyStickHandlers_[id].begin();
+          it != _getSingleton().activeJoyStickHandlers_[id].end(); it++)
+    {
+      if ((*it) == (*handlerIt).second)
         return true;
     }
-    _getSingleton().listenersJoySticksActive_[id].push_back((*listenerIt).second);
-    return true;
-  }
-
-  /**
-    @brief Disables a specific joy stick listener.
-    @param name Unique name of the listener.
+    _getSingleton().activeJoyStickHandlers_[id].push_back((*handlerIt).second);
+    return true;
+  }
+
+  /**
+    @brief Disables a specific joy stick handler.
+    @param name Unique name of the handler.
     @return False if name or id was not found, true otherwise.
   */
-  bool InputManager::disableJoyStickListener(const std::string &name, int id)
-  {
-    // get pointer from the map with all stored listeners
-    std::map<std::string, JoyStickHandler*>::const_iterator listenerIt = _getSingleton().listenersJoySticks_.find(name);
-    if (listenerIt == _getSingleton().listenersJoySticks_.end())
+  bool InputManager::disableJoyStickHandler(const std::string &name, int id)
+  {
+    // get pointer from the map with all stored handlers
+    std::map<std::string, JoyStickHandler*>::const_iterator handlerIt = _getSingleton().joyStickHandlers_.find(name);
+    if (handlerIt == _getSingleton().joyStickHandlers_.end())
       return false;
 
@@ -1038,11 +1094,11 @@
       return false;
 
-    // look for the listener in the list
-    for (std::list<JoyStickHandler*>::iterator it = _getSingleton().listenersJoySticksActive_[id].begin();
-          it != _getSingleton().listenersJoySticksActive_[id].end(); it++)
-    {
-      if ((*it) == (*listenerIt).second)
-      {
-        _getSingleton().listenersJoySticksActive_[id].erase(it);
+    // look for the handler in the list
+    for (std::list<JoyStickHandler*>::iterator it = _getSingleton().activeJoyStickHandlers_[id].begin();
+          it != _getSingleton().activeJoyStickHandlers_[id].end(); it++)
+    {
+      if ((*it) == (*handlerIt).second)
+      {
+        _getSingleton().activeJoyStickHandlers_[id].erase(it);
         return true;
       }
@@ -1051,3 +1107,30 @@
   }
 
+  /**
+    @brief Checks whether a joy stick handler is active
+    @param name Unique name of the handler.
+    @return False if key handler is not active or doesn't exist, true otherwise.
+  */
+  bool InputManager::isJoyStickHandlerActive(const std::string& name, const int id)
+  {
+    // get pointer from the map with all stored handlers
+    std::map<std::string, JoyStickHandler*>::const_iterator handlerIt = _getSingleton().joyStickHandlers_.find(name);
+    if (handlerIt == _getSingleton().joyStickHandlers_.end())
+      return false;
+
+    // check for existance of the ID
+    std::map<int, OIS::JoyStick*>::const_iterator joyStickIt = _getSingleton().joySticks_.find(id);
+    if (joyStickIt == _getSingleton().joySticks_.end())
+      return false;
+
+    // see whether the handler is already in the list
+    for (std::list<JoyStickHandler*>::iterator it = _getSingleton().activeJoyStickHandlers_[id].begin();
+          it != _getSingleton().activeJoyStickHandlers_[id].end(); it++)
+    {
+      if ((*it) == (*handlerIt).second)
+        return true;
+    }
+    return false;
+  }
+
 }
Index: /code/branches/input/src/core/InputManager.h
===================================================================
--- /code/branches/input/src/core/InputManager.h	(revision 1203)
+++ /code/branches/input/src/core/InputManager.h	(revision 1204)
@@ -43,6 +43,4 @@
 #include "ois/OIS.h"
 #include "Tickable.h"
-//#include "InputEvent.h"
-#include "InputHandler.h"
 
 namespace orxonox
@@ -54,10 +52,8 @@
   /**
     @brief Captures and distributes mouse and keyboard input.
-    It resolves the key bindings to InputEvents which can be heard by
-    implementing the InputEventListener interface.
   */
   class _CoreExport InputManager
         : public Tickable,
-          public OIS::MouseListener, public OIS::KeyListener, public OIS::JoyStickListener
+          public OIS::KeyListener, public OIS::MouseListener, public OIS::JoyStickListener
   {
   public: // enumerations
@@ -76,9 +72,12 @@
 
   public: // static functions
-    static bool initialise(size_t windowHnd, int windowWidth, int windowHeight,
-          bool createKeyboard = true, bool createMouse = true, bool createJoySticks = false);
+    static bool initialise(const size_t windowHnd, const int windowWidth, const int windowHeight,
+          const bool createKeyboard = true, const bool createMouse = true, const bool createJoySticks = false);
     static bool initialiseKeyboard();
     static bool initialiseMouse();
     static bool initialiseJoySticks();
+    static bool isKeyboardInitialised();
+    static bool isMouseInitialised();
+    static bool areJoySticksInitialised();
 
     static void destroy();
@@ -87,32 +86,29 @@
     static void destroyJoySticks();
 
-    static void setWindowExtents(int width, int height);
+    static void setWindowExtents(const int width, const int height);
 
     static void setInputState(const InputState state);
     static InputState getInputState();
-    static void setKeyBindingState           (bool bActive);
-    static void setMouseButtonBindingState   (bool bActive);
-    static void setJoyStickButtonBindingState(bool bActive);
 
-    static bool addKeyListener(KeyHandler* listener, const std::string& name);
-    static bool removeKeyListener  (const std::string& name);
-    static bool enableKeyListener  (const std::string& name);
-    static bool disableKeyListener (const std::string& name);
-    static bool isKeyListenerActive(const std::string& name);
-    static KeyHandler* getKeyListener(const std::string& name);
+    static bool addKeyHandler                 (KeyHandler* handler, const std::string& name);
+    static bool removeKeyHandler              (const std::string& name);
+    static KeyHandler* getKeyHandler          (const std::string& name);
+    static bool enableKeyHandler              (const std::string& name);
+    static bool disableKeyHandler             (const std::string& name);
+    static bool isKeyHandlerActive            (const std::string& name);
 
-    static bool addMouseListener(MouseHandler* listener, const std::string& name);
-    static bool removeMouseListener  (const std::string& name);
-    static bool enableMouseListener  (const std::string& name);
-    static bool disableMouseListener (const std::string& name);
-    static bool isMouseListenerActive(const std::string& name);
-    static MouseHandler* getMouseListener(const std::string& name);
+    static bool addMouseHandler               (MouseHandler* handler, const std::string& name);
+    static bool removeMouseHandler            (const std::string& name);
+    static MouseHandler* getMouseHandler      (const std::string& name);
+    static bool enableMouseHandler            (const std::string& name);
+    static bool disableMouseHandler           (const std::string& name);
+    static bool isMouseHandlerActive          (const std::string& name);
 
-    static bool addJoyStickListener(JoyStickHandler* listener, const std::string& name);
-    static bool removeJoyStickListener  (const std::string& name);
-    static bool enableJoyStickListener  (const std::string& name, const int id);
-    static bool disableJoyStickListener (const std::string& name, const int id);
-    static bool isJoyStickListenerActive(const std::string& name);
-    static JoyStickHandler* getJoyStickListener(const std::string& name);
+    static bool addJoyStickHandler            (JoyStickHandler* handler, const std::string& name);
+    static bool removeJoyStickHandler         (const std::string& name);
+    static JoyStickHandler* getJoyStickHandler(const std::string& name);
+    static bool enableJoyStickHandler         (const std::string& name, const int id);
+    static bool disableJoyStickHandler        (const std::string& name, const int id);
+    static bool isJoyStickHandlerActive       (const std::string& name, const int id);
 
     // Temporary solutions. Will be removed soon!
@@ -127,5 +123,5 @@
 
     // Intenal methods
-    bool _initialise(size_t, int, int, bool, bool, bool);
+    bool _initialise(const size_t, const int, const int, const bool, const bool, const bool);
     bool _initialiseKeyboard();
     bool _initialiseMouse();
@@ -157,23 +153,23 @@
 
   private: // variables
-    OIS::InputManager* inputSystem_;            //!< OIS input manager
-    OIS::Keyboard*     keyboard_;               //!< OIS mouse
-    OIS::Mouse*        mouse_;                  //!< OIS keyboard
-    std::map<int, OIS::JoyStick*> joySticks_;   //!< OIS joy sticks
+    OIS::InputManager*                          inputSystem_; //!< OIS input manager
+    OIS::Keyboard*                              keyboard_;    //!< OIS mouse
+    OIS::Mouse*                                 mouse_;       //!< OIS keyboard
+    std::map<int, OIS::JoyStick*>               joySticks_;   //!< OIS joy sticks
 
     InputState state_;
     InputState stateRequest_;
 
-    std::map<std::string, KeyHandler*>      listenersKey_;
-    std::map<std::string, MouseHandler*>    listenersMouse_;
-    std::map<std::string, JoyStickHandler*> listenersJoySticks_;
+    std::map<std::string, KeyHandler*>          keyHandlers_;
+    std::map<std::string, MouseHandler*>        mouseHandlers_;
+    std::map<std::string, JoyStickHandler*>     joyStickHandlers_;
 
-    std::list<KeyHandler*>      listenersKeyActive_;
-    std::list<MouseHandler*>    listenersMouseActive_;
-    std::map< int, std::list<JoyStickHandler*> > listenersJoySticksActive_;
+    std::list<KeyHandler*>                      activeKeyHandlers_;
+    std::list<MouseHandler*>                    activeMouseHandlers_;
+    std::map<int, std::list<JoyStickHandler*> > activeJoyStickHandlers_;
 
-    std::list<OIS::KeyCode>         keysDown_;
-    std::list<OIS::MouseButtonID>   mouseButtonsDown_;
-    std::map< int, std::list<int> > joySticksButtonsDown_;
+    std::list<OIS::KeyCode>                     keysDown_;
+    std::list<OIS::MouseButtonID>               mouseButtonsDown_;
+    std::map< int, std::list<int> >             joyStickButtonsDown_;
 
   };
Index: /code/branches/input/src/orxonox/Orxonox.cc
===================================================================
--- /code/branches/input/src/orxonox/Orxonox.cc	(revision 1203)
+++ /code/branches/input/src/orxonox/Orxonox.cc	(revision 1204)
@@ -414,5 +414,5 @@
   void Orxonox::startRenderLoop()
   {
-    InputBuffer* ib = dynamic_cast<InputBuffer*>(InputManager::getKeyListener("buffer"));
+    InputBuffer* ib = dynamic_cast<InputBuffer*>(InputManager::getKeyHandler("buffer"));
     console_ = new Testconsole(ib);
     ib->registerListener(console_, &Testconsole::listen, true);
Index: /code/branches/input/src/orxonox/Orxonox.h
===================================================================
--- /code/branches/input/src/orxonox/Orxonox.h	(revision 1203)
+++ /code/branches/input/src/orxonox/Orxonox.h	(revision 1204)
@@ -44,6 +44,4 @@
 
 #include "GraphicsEngine.h"
-#include "core/InputEventListener.h"
-
 
 namespace orxonox {
Index: /code/branches/input/visual_studio/vc8/core.vcproj
===================================================================
--- /code/branches/input/visual_studio/vc8/core.vcproj	(revision 1203)
+++ /code/branches/input/visual_studio/vc8/core.vcproj	(revision 1204)
@@ -149,24 +149,4 @@
 			>
 			<File
-				RelativePath="..\..\src\core\asdf.cc"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
 				RelativePath="..\..\src\core\BaseObject.cc"
 				>
@@ -217,40 +197,6 @@
 			</File>
 			<File
-				RelativePath="..\..\src\core\InputEventListener.cc"
-				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					ExcludedFromBuild="true"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-			</File>
-			<File
 				RelativePath="..\..\src\core\InputHandler.cc"
 				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-					/>
-				</FileConfiguration>
 			</File>
 			<File
@@ -317,8 +263,4 @@
 			>
 			<File
-				RelativePath="..\..\src\core\asdf.h"
-				>
-			</File>
-			<File
 				RelativePath="..\..\src\core\BaseObject.h"
 				>
@@ -398,12 +340,4 @@
 			<File
 				RelativePath="..\..\src\core\InputBuffer.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\core\InputEvent.h"
-				>
-			</File>
-			<File
-				RelativePath="..\..\src\core\InputEventListener.h"
 				>
 			</File>
Index: /code/branches/input/visual_studio/vc8/orxonox.vcproj
===================================================================
--- /code/branches/input/visual_studio/vc8/orxonox.vcproj	(revision 1203)
+++ /code/branches/input/visual_studio/vc8/orxonox.vcproj	(revision 1204)
@@ -434,8 +434,4 @@
 				>
 			</File>
-			<File
-				RelativePath="..\..\src\orxonox\Steerable.h"
-				>
-			</File>
 			<Filter
 				Name="hud"
