Index: code/trunk/src/core/input/Button.cc
===================================================================
--- code/trunk/src/core/input/Button.cc	(revision 2102)
+++ code/trunk/src/core/input/Button.cc	(revision 2103)
@@ -82,10 +82,10 @@
     }
 
-    void Button::readConfigValue()
+    void Button::readConfigValue(ConfigFileType configFile)
     {
         // create/get ConfigValueContainer
         if (!configContainer_)
         {
-            configContainer_ = new ConfigValueContainer(CFT_Keybindings, 0, groupName_, name_, "", name_);
+            configContainer_ = new ConfigValueContainer(configFile, 0, groupName_, name_, "", name_);
             configContainer_->callback(this, &Button::parse);
         }
Index: code/trunk/src/core/input/Button.h
===================================================================
--- code/trunk/src/core/input/Button.h	(revision 2102)
+++ code/trunk/src/core/input/Button.h	(revision 2103)
@@ -41,4 +41,5 @@
 #include <vector>
 #include "InputCommands.h"
+#include "core/ConfigFileManager.h"
 
 namespace orxonox
@@ -52,5 +53,5 @@
         virtual bool addParamCommand(ParamCommand* command) { return false; }
         void parse();
-        void readConfigValue();
+        void readConfigValue(ConfigFileType configFile);
         bool execute(KeybindMode::Enum mode, float abs = 1.0f, float rel = 1.0f);
 
Index: code/trunk/src/core/input/InputManager.cc
===================================================================
--- code/trunk/src/core/input/InputManager.cc	(revision 2102)
+++ code/trunk/src/core/input/InputManager.cc	(revision 2103)
@@ -405,5 +405,5 @@
             if (!cont)
             {
-                cont = new ConfigValueContainer(CFT_Settings, getIdentifier(), getIdentifier()->getName(), "CoeffPos", coeffPos);
+                cont = new ConfigValueContainer(ConfigFileType::Settings, getIdentifier(), getIdentifier()->getName(), "CoeffPos", coeffPos);
                 getIdentifier()->addConfigValueContainer("CoeffPos", cont);
             }
@@ -413,5 +413,5 @@
             if (!cont)
             {
-                cont = new ConfigValueContainer(CFT_Settings, getIdentifier(), getIdentifier()->getName(), "CoeffNeg", coeffNeg);
+                cont = new ConfigValueContainer(ConfigFileType::Settings, getIdentifier(), getIdentifier()->getName(), "CoeffNeg", coeffNeg);
                 getIdentifier()->addConfigValueContainer("CoeffNeg", cont);
             }
@@ -421,5 +421,5 @@
             if (!cont)
             {
-                cont = new ConfigValueContainer(CFT_Settings, getIdentifier(), getIdentifier()->getName(), "Zero", zero);
+                cont = new ConfigValueContainer(ConfigFileType::Settings, getIdentifier(), getIdentifier()->getName(), "Zero", zero);
                 getIdentifier()->addConfigValueContainer("Zero", cont);
             }
Index: code/trunk/src/core/input/KeyBinder.cc
===================================================================
--- code/trunk/src/core/input/KeyBinder.cc	(revision 2102)
+++ code/trunk/src/core/input/KeyBinder.cc	(revision 2103)
@@ -106,4 +106,7 @@
         }
 
+        // Get a new ConfigFileType from the ConfigFileManager
+        this->configFile_ = ConfigFileManager::getInstance().getNewConfigFileType();
+
         // initialise joy sticks separatly to allow for reloading
         numberOfJoySticks_ = InputManager::getInstance().numberOfJoySticks();
@@ -133,6 +136,4 @@
     void KeyBinder::setConfigValues()
     {
-        SetConfigValue(defaultKeybindings_, "def_keybindings.ini")
-            .description("Filename of default keybindings.");
         SetConfigValue(analogThreshold_, 0.05f)
             .description("Threshold for analog axes until which the state is 0.");
@@ -173,12 +174,12 @@
 
         // load the bindings if required
-        if (!configFile_.empty())
+        if (configFile_ != ConfigFileType::NoType)
         {
             for (unsigned int iDev = oldValue; iDev < numberOfJoySticks_; ++iDev)
             {
                 for (unsigned int i = 0; i < JoyStickButtonCode::numberOfButtons; ++i)
-                    joyStickButtons_[iDev][i].readConfigValue();
+                    joyStickButtons_[iDev][i].readConfigValue(this->configFile_);
                 for (unsigned int i = 0; i < JoyStickAxisCode::numberOfAxes * 2; ++i)
-                    joyStickAxes_[iDev][i].readConfigValue();
+                    joyStickAxes_[iDev][i].readConfigValue(this->configFile_);
             }
         }
@@ -250,28 +251,27 @@
         True if loading succeeded.
     */
-    void KeyBinder::loadBindings(const std::string& filename)
+    void KeyBinder::loadBindings(const std::string& filename, const std::string& defaultFilename)
     {
         COUT(3) << "KeyBinder: Loading key bindings..." << std::endl;
 
-        configFile_ = filename;
-        if (configFile_.empty())
+        if (filename.empty())
             return;
 
         // get bindings from default file if filename doesn't exist.
         std::ifstream infile;
-        infile.open(configFile_.c_str());
+        infile.open(filename.c_str());
         if (!infile)
         {
-            ConfigFileManager::getInstance().setFile(CFT_Keybindings, defaultKeybindings_);
-            ConfigFileManager::getInstance().save(CFT_Keybindings, configFile_);
+            ConfigFileManager::getInstance().setFilename(this->configFile_, defaultFilename);
+            ConfigFileManager::getInstance().saveAs(this->configFile_, filename);
         }
         else
             infile.close();
-        ConfigFileManager::getInstance().setFile(CFT_Keybindings, configFile_);
+        ConfigFileManager::getInstance().setFilename(this->configFile_, filename);
 
         // Parse bindings and create the ConfigValueContainers if necessary
         clearBindings();
         for (std::map<std::string, Button*>::const_iterator it = allButtons_.begin(); it != allButtons_.end(); ++it)
-            it->second->readConfigValue();
+            it->second->readConfigValue(this->configFile_);
 
         COUT(3) << "KeyBinder: Loading key bindings done." << std::endl;
Index: code/trunk/src/core/input/KeyBinder.h
===================================================================
--- code/trunk/src/core/input/KeyBinder.h	(revision 2102)
+++ code/trunk/src/core/input/KeyBinder.h	(revision 2103)
@@ -44,4 +44,5 @@
 #include "InputCommands.h"
 #include "JoyStickDeviceNumberListener.h"
+#include "core/ConfigFileManager.h"
 
 namespace orxonox
@@ -59,5 +60,5 @@
         virtual ~KeyBinder();
 
-        void loadBindings(const std::string& filename);
+        void loadBindings(const std::string& filename, const std::string& defaultFilename);
         void clearBindings();
         bool setBinding(const std::string& binding, const std::string& name, bool bTemporary = false);
@@ -142,11 +143,9 @@
         float deriveTime_;
 
-        //! Config file used. "" in case of KeyDetector. Also indicates whether we've already loaded.
-        std::string configFile_;
+        //! Config file used. ConfigFileType::NoType in case of KeyDetector. Also indicates whether we've already loaded.
+        ConfigFileType configFile_;
 
     private:
         //##### ConfigValues #####
-        //! Filename of default keybindings.
-        std::string defaultKeybindings_;
         //! Whether to filter small value analog input
         bool bFilterAnalogNoise_;
