Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4088)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.cc	(revision 4089)
@@ -1051,5 +1051,5 @@
    \param buttonName sets the Name of the Button
 */
-Button::Button(char* buttonName)
+Button::Button(const char* buttonName)
 {
   this->optionType = GUI_NOTHING;
Index: orxonox/trunk/src/lib/gui/gui/gui_gtk.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4088)
+++ orxonox/trunk/src/lib/gui/gui/gui_gtk.h	(revision 4089)
@@ -263,5 +263,5 @@
 {
  public:
-  Button(char* buttonName = NULL);
+  Button(const char* buttonName = NULL);
   virtual ~Button(void);
 
Index: orxonox/trunk/src/lib/gui/gui/gui_keys.cc
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_keys.cc	(revision 4088)
+++ orxonox/trunk/src/lib/gui/gui/gui_keys.cc	(revision 4089)
@@ -37,20 +37,29 @@
   keysFrame = new Frame("Keyboard-Options:");
   {
-    Box* keysBox;          //!< The Frame that holds the keyOptions.
+    Box* keysBox0;          //!< The Frame that holds the keyOptions.
     
     //  keysFrame->setGroupName("Keyboard");
-    keysBox = new Box('h');
+    keysBox0 = new Box('v');
     {
-      Player* player1;       //!< The first Player's keys.
-      Player* player2;       //!< The seconds Player's keys.
-      Button* misc;          //!< Other keyboeard options come here. \todo include some like pause, quit and so on.
-      
-      player1 = new Player("player1");
-      player2 = new Player("player2");
-      
-      keysBox->fill(player1->getOpenButton());
-      keysBox->fill(player2->getOpenButton());
+      Box* keysBox1;
+      MiscKeys* misc;            //!< The Misc Keys
+
+      keysBox1 = new Box('h');
+      {
+	PlayerKeys* player1;       //!< The first Player's keys.
+	PlayerKeys* player2;       //!< The seconds Player's keys.
+	
+	player1 = new PlayerKeys("player1");
+	player2 = new PlayerKeys("player2");
+	
+	keysBox1->fill(player1->getOpenButton());
+	keysBox1->fill(player2->getOpenButton());
+      }
+      keysBox0->fill(keysBox1);
+
+      misc = new MiscKeys();
+      keysBox0->fill(misc->getOpenButton());
     }
-    keysFrame->fill(keysBox);
+    keysFrame->fill(keysBox0);
   }
   
@@ -80,12 +89,12 @@
 long GuiKeys::keySignal = 0;
 
-
+////////////
 /* PLAYER */
-
+////////////
 /**
    \brief Creates new inputs for a player
    \param player the name of the Player
 */
-Player::Player(char* player)
+PlayerKeys::PlayerKeys(char* player)
 {
   Window* pKeyWindow;     //!< The Window for a new Key-setting.
@@ -95,5 +104,4 @@
   strcat(windowName, player);
   pKeyWindow = new Window(windowName);
-  delete windowName;
   {
     Frame* pKeyFrame;       //!< The Frame for a new Key-setting.
@@ -107,9 +115,9 @@
 
 	pKeysBox->setGroupName(player);
-	pKeysBox->fill(addKey(UP, "up"));
-	pKeysBox->fill(addKey(DOWN, "down"));
-	pKeysBox->fill(addKey(LEFT, "left"));
-	pKeysBox->fill(addKey(RIGHT, "right"));
-	pKeysBox->fill(addKey(SHOOT, "fire"));
+	pKeysBox->fill(addKey("up", "UP"));
+	pKeysBox->fill(addKey("down", "DOWN"));
+	pKeysBox->fill(addKey("left", "LEFT"));
+	pKeysBox->fill(addKey("right", "RIGHT"));
+	pKeysBox->fill(addKey("fire", "SPACE"));
 	closeButton = new Button("close");
 #ifdef HAVE_GTK2
@@ -123,4 +131,5 @@
     pKeyWindow->fill(pKeyFrame);
   }
+  delete windowName;
   Window::addWindow(pKeyWindow);
 #ifdef HAVE_GTK2
@@ -138,17 +147,74 @@
    \returns the OpenButton of a Player
 */
-Button* Player::getOpenButton(void)
+Button* PlayerKeys::getOpenButton(void)
 {
   return this->openButton;
 }
 
-/**
-   \brief sets a new Key(only output)
-   \param key the new Key.
-*/
-void Player::setkey(KEYS key)
-{
-  PRINT(4)("setting up Key: %d\n", key);
-}
+//////////////////
+/* MISC_OPTIONS */
+//////////////////
+/**
+   \brief Creates new inputs for a misc
+   \param player the name of the Misc
+*/
+MiscKeys::MiscKeys()
+{
+  Window* keyWindow;     //!< The Window for a new Key-setting.
+
+  keyWindow = new Window("misc Keys");
+  {
+    Frame* keyFrame;       //!< The Frame for a new Key-setting.
+
+    keyFrame = new Frame("misc Keys:");
+    {
+      Box* keysBox;          //!< The Box that holds the Key-settings.
+      keysBox = new Box('v');
+      {
+	Button* closeButton;    //!< The CloseButton for this key-settings.
+
+	keysBox->setGroupName("miscKeys");
+	keysBox->fill(addKey( "quit", "ESCAPE"));
+	keysBox->fill(addKey("pause", "PAUSE"));
+	keysBox->fill(addKey("up_world", "x"));
+	keysBox->fill(addKey("down_world", "z"));
+	keysBox->fill(addKey("view0", "1"));
+	keysBox->fill(addKey("view1", "2"));
+	keysBox->fill(addKey("view2", "3"));
+	keysBox->fill(addKey("view3", "4"));
+	keysBox->fill(addKey("view4", "5"));
+	keysBox->fill(addKey("view5", "6"));
+
+	closeButton = new Button("close");
+#ifdef HAVE_GTK2
+	closeButton->connectSignal("button_press_event", keyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+
+	keysBox->fill(closeButton);
+      }
+      keyFrame->fill(keysBox);
+    }
+    keyWindow->fill(keyFrame);
+  }
+  Window::addWindow(keyWindow);
+#ifdef HAVE_GTK2
+  keyWindow->connectSignal("destroy", keyWindow, Window::windowClose);
+  keyWindow->connectSignal("delete_event", keyWindow, Window::windowClose);
+#endif /* HAVE_GTK2 */
+  
+  this->openButton = new Button("misc");
+#ifdef HAVE_GTK2
+  this->openButton->connectSignal("button_press_event", keyWindow, Window::windowOpen);
+#endif /* HAVE_GTK2 */
+}
+
+/**
+   \returns the OpenButton of a Misc
+*/
+Button* MiscKeys::getOpenButton(void)
+{
+  return this->openButton;
+}
+
 
 /**
@@ -158,19 +224,22 @@
    \returns A widget that has the Key-Box
 */
-Widget* addKey(KEYS key, char* name)
+Widget* addKey(const char* name, const char* defaultVal)
 {
   InputKey* inputKey = new InputKey;
-  inputKey->pKeyBox = new Box();
-  inputKey->pKeyButton = new Button(name);
-  inputKey->pKeyOLabel = new OptionLabel(name, name);
-  inputKey->pKeyOLabel->saveability();
-
-#ifdef HAVE_GTK2
-  //inputKey->pKeyButton->connectSignal("key_press_event", inputKey->pKeyButton, key_cb);
-  inputKey->pKeyButton->connectSignal("button_press_event", inputKey, inputWindowEvent);
-#endif /* HAVE_GTK2 */
-  inputKey->pKeyBox->fill(inputKey->pKeyButton);
-  inputKey->pKeyBox->fill(inputKey->pKeyOLabel);
-  return inputKey->pKeyBox;
+  inputKey->keyBox = new Box();
+  inputKey->keyButton = new Button(name);
+  if (defaultVal)
+    inputKey->keyOLabel = new OptionLabel(name, defaultVal);
+  else
+    inputKey->keyOLabel = new OptionLabel(name, name);
+  inputKey->keyOLabel->saveability();
+
+#ifdef HAVE_GTK2
+  //inputKey->keyButton->connectSignal("key_press_event", inputKey->keyButton, key_cb);
+  inputKey->keyButton->connectSignal("button_press_event", inputKey, inputWindowEvent);
+#endif /* HAVE_GTK2 */
+  inputKey->keyBox->fill(inputKey->keyButton);
+  inputKey->keyBox->fill(inputKey->keyOLabel);
+  return inputKey->keyBox;
 }
 
@@ -194,7 +263,7 @@
 {
   InputKey* inputkey =(InputKey*) inputKey;
-  char title [20];
-
-  switch(event->keyval) 
+  char title [50];
+
+  switch(event->keyval)
     {
     case GDK_Up:
@@ -362,5 +431,5 @@
     }
 
-  inputkey->pKeyOLabel->setValue(title);
+  inputkey->keyOLabel->setValue(title);
   GuiKeys::inputButton->disconnectSignal(GuiKeys::keySignal);
   GuiKeys::inputWindow->close();
Index: orxonox/trunk/src/lib/gui/gui/gui_keys.h
===================================================================
--- orxonox/trunk/src/lib/gui/gui/gui_keys.h	(revision 4088)
+++ orxonox/trunk/src/lib/gui/gui/gui_keys.h	(revision 4089)
@@ -15,15 +15,10 @@
 #endif /* HAVE_GTK2 */
 
-/**
-   \brief defines the Possible Player Keys
-*/
-enum KEYS {UP, DOWN, LEFT, RIGHT, SHOOT};
-
 //! One KeyOption has one InputKey
 struct InputKey
 {
-  Box* pKeyBox;           //!< One Box that holds the Keys
-  Button* pKeyButton;     //!< The Button for changing the Key.
-  OptionLabel* pKeyOLabel;//!< The Label for displaying the Key-setting.
+  Box* keyBox;           //!< One Box that holds the Keys
+  Button* keyButton;     //!< The Button for changing the Key.
+  OptionLabel* keyOLabel;//!< The Label for displaying the Key-setting.
 };
 
@@ -41,5 +36,5 @@
 
 //! Class to hold infos about a Player
-class Player
+class PlayerKeys
 {
  private:
@@ -47,14 +42,21 @@
 
  public:
-  Player(char* player);
-
+  PlayerKeys(char* player);
 
   Button* getOpenButton(void);
-
-  void setkey(KEYS key);
-  
 };
 
-Widget* addKey(KEYS key, char* name);
+class MiscKeys
+{
+ private:
+  Button* openButton;     //!< The OpenButton for this key-settings.
+
+ public:
+  MiscKeys();
+
+  Button* getOpenButton(void);  
+};
+
+Widget* addKey(const char* name, const char* defaultValue = NULL);
 #ifdef HAVE_GTK2
 gint inputWindowEvent(GtkWidget* w, GdkEventKey* event, void* widget);
