Index: code/branches/gui/src/orxonox/gamestates/GSGraphics.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSGraphics.cc	(revision 2854)
+++ code/branches/gui/src/orxonox/gamestates/GSGraphics.cc	(revision 2869)
@@ -36,4 +36,5 @@
 #include "core/ConfigValueIncludes.h"
 #include "core/Clock.h"
+#include "core/ConsoleCommand.h"
 #include "core/Core.h"
 #include "core/CoreIncludes.h"
@@ -110,4 +111,10 @@
         guiManager_->initialise(renderWindow);
 
+        FunctorMember<GSGraphics>* functor = createFunctor(&GSGraphics::toggleGUI);
+        functor->setObject(this);
+        this->ccToggleGUI_ = createConsoleCommand(functor, "toggleGUI");
+        CommandExecutor::addConsoleCommandShortcut(this->ccToggleGUI_);
+
+
         InputManager::getInstance().requestEnterState("master");
     }
@@ -115,4 +122,11 @@
     void GSGraphics::deactivate()
     {
+
+        if (this->ccToggleGUI_)
+        {
+            delete this->ccToggleGUI_;
+            this->ccToggleGUI_ = 0;
+        }
+
         masterInputState_->setHandler(0);
         InputManager::getInstance().requestDestroyState("master");
@@ -131,4 +145,9 @@
 
         GameMode::setShowsGraphics(false);
+    }
+
+    void GSGraphics::toggleGUI()
+    {
+            GUIManager::getInstance().executeCode("toggleGUI()");
     }
 
Index: code/branches/gui/src/orxonox/gamestates/GSGraphics.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSGraphics.h	(revision 2854)
+++ code/branches/gui/src/orxonox/gamestates/GSGraphics.h	(revision 2869)
@@ -47,4 +47,6 @@
         void update(const Clock& time);
 
+        void toggleGUI();
+
     private:
         // Window events from WindowEventListener
@@ -61,4 +63,5 @@
         SimpleInputState*     masterInputState_;
         XMLFile*              debugOverlay_;
+        ConsoleCommand*       ccToggleGUI_;
     };
 }
Index: code/branches/gui/src/orxonox/gamestates/GSLevel.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSLevel.cc	(revision 2854)
+++ code/branches/gui/src/orxonox/gamestates/GSLevel.cc	(revision 2869)
@@ -56,9 +56,12 @@
 
     SetCommandLineArgument(level, "presentation.oxw").shortcut("l");
+    SetConsoleCommand(GSLevel, showIngameGUI, true).keybindMode(KeybindMode::OnPress).keybindMode(KeybindMode::OnRelease);
 
     GSLevel::GSLevel(const std::string& name)
         : GameState(name)
         , keyBinder_(0)
-        , inputState_(0)
+        , gameInputState_(0)
+        , guiMouseOnlyInputState_(0)
+        , guiKeysOnlyInputState_(0)
         , radar_(0)
         , startFile_(0)
@@ -87,15 +90,14 @@
         if (GameMode::showsGraphics())
         {
-            {
-                FunctorMember<GSLevel>* functor = createFunctor(&GSLevel::toggleGUI);
-                functor->setObject(this);
-                this->ccToggleGUI_ = createConsoleCommand(functor, "toggleGUI");
-                CommandExecutor::addConsoleCommandShortcut(this->ccToggleGUI_);
-            }
-
-            inputState_ = InputManager::getInstance().createInputState<SimpleInputState>("game");
+            gameInputState_ = InputManager::getInstance().createInputState<SimpleInputState>("game");
             keyBinder_ = new KeyBinder();
             keyBinder_->loadBindings("keybindings.ini");
-            inputState_->setHandler(keyBinder_);
+            gameInputState_->setHandler(keyBinder_);
+
+            guiMouseOnlyInputState_ = InputManager::getInstance().createInputState<SimpleInputState>("guiMouseOnly");
+            guiMouseOnlyInputState_->setMouseHandler(GUIManager::getInstancePtr());
+
+            guiKeysOnlyInputState_ = InputManager::getInstance().createInputState<SimpleInputState>("guiKeysOnly");
+            guiKeysOnlyInputState_->setKeyHandler(GUIManager::getInstancePtr());
 
             // create the global CameraManager
@@ -138,4 +140,19 @@
     }
 
+    void GSLevel::showIngameGUI(bool show)
+    {
+        COUT(0) << "*** Call works with \"" << (show ? "true" : "false") << "\" as param" << std::endl;
+        if (show)
+        {
+            GUIManager::getInstancePtr()->showGUI("inGameTest");
+            InputManager::getInstance().requestEnterState("guiMouseOnly");
+        }
+        else
+        {
+            GUIManager::getInstancePtr()->executeCode("hideGUI(inGameTest)");
+            InputManager::getInstance().requestLeaveState("guiMouseOnly");
+        }
+    }
+
     void GSLevel::deactivate()
     {
@@ -150,9 +167,4 @@
             delete this->ccTkeybind_;
             this->ccTkeybind_ = 0;
-        }
-        if (this->ccToggleGUI_)
-        {
-            delete this->ccToggleGUI_;
-            this->ccToggleGUI_ = 0;
         }
 
@@ -196,5 +208,7 @@
         if (GameMode::showsGraphics())
         {
-            inputState_->setHandler(0);
+            gameInputState_->setHandler(0);
+            guiMouseOnlyInputState_->setHandler(0);
+            guiKeysOnlyInputState_->setHandler(0);
             InputManager::getInstance().requestDestroyState("game");
             if (this->keyBinder_)
@@ -233,12 +247,4 @@
 
         delete this->startFile_;
-    }
-
-    void GSLevel::toggleGUI()
-    {
-        if (GameMode::showsGraphics())
-        {
-            GUIManager::getInstance().executeCode("toggleGUI()");
-        }
     }
 
Index: code/branches/gui/src/orxonox/gamestates/GSLevel.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSLevel.h	(revision 2854)
+++ code/branches/gui/src/orxonox/gamestates/GSLevel.h	(revision 2869)
@@ -47,5 +47,5 @@
         void update(const Clock& time);
 
-        void toggleGUI();
+        static void showIngameGUI(bool show);
 
     protected:
@@ -58,8 +58,10 @@
         void keybindInternal(const std::string& command, bool bTemporary);
 
-        KeyBinder*            keyBinder_;        //!< tool that loads and manages the input bindings
-        SimpleInputState*     inputState_;
-        Radar*                radar_;            //!< represents the Radar (not the HUD part)
-        XMLFile*              startFile_;        //!< current hard coded default level
+        KeyBinder*            keyBinder_;               //!< tool that loads and manages the input bindings
+        SimpleInputState*     gameInputState_;          //!< input state for normal ingame playing
+        SimpleInputState*     guiMouseOnlyInputState_;  //!< input state if we only need the mouse to use the GUI
+        SimpleInputState*     guiKeysOnlyInputState_;   //!< input state if we only need the keys to use the GUI
+        Radar*                radar_;                   //!< represents the Radar (not the HUD part)
+        XMLFile*              startFile_;               //!< current hard coded default level
         CameraManager*        cameraManager_;
         LevelManager*         levelManager_;
@@ -72,5 +74,4 @@
         ConsoleCommand*       ccKeybind_;
         ConsoleCommand*       ccTkeybind_;
-        ConsoleCommand*       ccToggleGUI_;
     };
 }
Index: code/branches/gui/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSMainMenu.cc	(revision 2854)
+++ code/branches/gui/src/orxonox/gamestates/GSMainMenu.cc	(revision 2869)
@@ -83,6 +83,6 @@
     void GSMainMenu::deactivate()
     {
-        InputManager::getInstance().requestLeaveState("game");
-        InputManager::getInstance().requestDestroyState("game");
+        InputManager::getInstance().requestLeaveState("mainMenu");
+        InputManager::getInstance().requestDestroyState("mainMenu");
 
         if (this->ccStartGame_)
@@ -91,6 +91,4 @@
             this->ccStartGame_ = 0;
         }
-
-        GUIManager::getInstance().executeCode("hideGUI()");
     }
 
Index: code/branches/gui/src/orxonox/gamestates/GSStandalone.cc
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSStandalone.cc	(revision 2854)
+++ code/branches/gui/src/orxonox/gamestates/GSStandalone.cc	(revision 2869)
@@ -55,8 +55,4 @@
     {
         GameMode::setIsStandalone(true);
-
-        guiManager_ = GUIManager::getInstancePtr();
-        // not sure if necessary
-        // guiManager_->loadScene("IngameMenu");
     }
 
@@ -68,12 +64,4 @@
     void GSStandalone::update(const Clock& time)
     {
-        //Ogre::Viewport* viewport = GraphicsManager::getInstance().getViewport();
-        //COUT(0) << "** " << viewport->getCamera()->getSceneManager() << std::endl;
-        //guiManager_->testFct();
-        //Ogre::Viewport* viewport = GraphicsManager::getInstance().getViewport();
-        //guiManager_->showGUI("IngameMenu", viewport->getCamera()->getSceneManager());
-
-        // tick CEGUI
-        guiManager_->update(time);
     }
 }
Index: code/branches/gui/src/orxonox/gamestates/GSStandalone.h
===================================================================
--- code/branches/gui/src/orxonox/gamestates/GSStandalone.h	(revision 2854)
+++ code/branches/gui/src/orxonox/gamestates/GSStandalone.h	(revision 2869)
@@ -46,5 +46,4 @@
 
     private:
-        GUIManager* guiManager_;
     };
 }
