Index: code/branches/menu/data/gui/scripts/InGameMenu.lua
===================================================================
--- code/branches/menu/data/gui/scripts/InGameMenu.lua	(revision 7669)
+++ code/branches/menu/data/gui/scripts/InGameMenu.lua	(revision 7670)
@@ -12,5 +12,4 @@
     orxonox.Game:getInstance():popState()
     orxonox.Game:getInstance():popState()
-    orxonox.Game:getInstance():requestState("mainmenu")
     hideMenuSheet("InGameMenu")
 end
Index: code/branches/menu/data/gui/scripts/SheetManager.lua
===================================================================
--- code/branches/menu/data/gui/scripts/SheetManager.lua	(revision 7669)
+++ code/branches/menu/data/gui/scripts/SheetManager.lua	(revision 7670)
@@ -6,4 +6,5 @@
 local menuSheetsRoot = guiMgr:getMenuRootWindow()
 local bInGameConsoleClosed = false
+local mainMenuLoaded = false
 orxonox.GUIManager:subscribeEventHelper(menuSheetsRoot, "KeyDown", "keyPressed")
 
@@ -71,5 +72,5 @@
 
     -- Count the number of sheets that don't need input till the first that does.
-    local counter = noInputSheetCounter()
+    local counter = noInputSheetIndex()
     -- Pause game control if this is the first menu to be displayed
     -- HUGE HACK?
@@ -102,4 +103,9 @@
     menuSheetsRoot:addChildWindow(menuSheet.window)
 
+    -- If sheet is the MainMenu
+    if name == "MainMenu" then
+        mainMenuLoaded = true
+    end
+
     -- Handle input distribution
     if bNoInput == false then
@@ -120,5 +126,5 @@
         end
     end
-
+    
     menuSheet:show()
     menuSheetsRoot:activate()
@@ -164,4 +170,9 @@
     activeMenuSheets.topSheetTuple = activeMenuSheets[activeMenuSheets.size]
 
+    -- If sheet is the MainMenu
+    if name == "MainMenu" then
+        mainMenuLoaded = false
+    end
+
     -- Leave the input state
     if not sheetTuple.bNoInput then
@@ -182,5 +193,5 @@
 
     -- Count the number of sheets that don't need input till the first that does.
-    local counter = noInputSheetCounter()
+    local counter = noInputSheetIndex()
     -- Resume control if the last (non-noInput) menu is hidden
     if counter == 0 then
@@ -204,13 +215,13 @@
     -- If the InGameConsole is active, ignore the ESC command.
     if bInGameConsoleClosed == true then
-        bInGameConsoleClosed = falses
+        bInGameConsoleClosed = false
         return
     end
 
     -- Count the number of sheets that don't need input till the first that does.
-    local counter = noInputSheetCounter()
+    local counter = noInputSheetIndex()
 
     -- If the first sheet that needs input is the MainMenu.
-    if counter == 1 and activeMenuSheets[1].sheet.name == "MainMenu" then
+    if noInputSheetCounter() == 1 and activeMenuSheets[counter].sheet.name == "MainMenu" then
         orxonox.execute("exit")
     -- If there is at least one sheet that needs input.
@@ -226,4 +237,12 @@
     local sheet = activeMenuSheets[activeMenuSheets.size]
     code = tostring(we.scancode)
+    -- Some preprocessing
+    if not mainMenuLoaded and not sheet.bNoInput then
+        if code == "1" then
+            keyESC()
+        elseif code == "0"then
+            orxonox.CommandExecutor:execute("openConsole")
+        end
+    end
     sheet.sheet:onKeyPressed()
 end
@@ -233,9 +252,21 @@
 end
 
+function noInputSheetIndex()
+    -- Count the number of sheets that don't need input till the first that does.
+    local index = activeMenuSheets.size
+    while index > 0 and activeMenuSheets[index].bNoInput do
+        cout(0, activeMenuSheets[index].sheet.name)
+        index = index - 1
+    end
+    return index
+end
+
 function noInputSheetCounter()
-    -- Count the number of sheets that don't need input till the first that does.
+    -- Count the number of sheets that do need input.
     local counter = activeMenuSheets.size
-    while counter > 0 and activeMenuSheets[counter].bNoInput do
-        counter = counter - 1
+    for i = 1,activeMenuSheets.size do
+        if activeMenuSheets[i].bNoInput then
+            counter = counter - 1
+        end
     end
     return counter
