Index: ps/ConfigDB.cpp
===================================================================
--- ps/ConfigDB.cpp	(revision 11046)
+++ ps/ConfigDB.cpp	(working copy)
@@ -284,12 +284,28 @@
 			ret.push_back(std::make_pair(it->first, it->second));
 	}
 
+	bool isKeyAlreadyPresent = false;
 	for (int search_ns = ns; search_ns >= 0; search_ns--)
 	{
 		for (TConfigMap::iterator it = m_Map[search_ns].begin(); it != m_Map[search_ns].end(); ++it)
 		{
 			if (boost::algorithm::starts_with(it->first, prefix))
-				ret.push_back(std::make_pair(it->first, it->second));
+			{
+				isKeyAlreadyPresent = false;
+				for (int i = 0; i < ret.size(); i++)
+				{
+					if (ret[i].first == it->first)
+					{
+						isKeyAlreadyPresent = true;
+						break;
+					}
+				}
+
+				if (!isKeyAlreadyPresent)
+				{
+					ret.push_back(std::make_pair(it->first, it->second));
+				}
+			}
 		}
 	}
 
Index: ps/Hotkey.cpp
===================================================================
--- ps/Hotkey.cpp	(revision 11046)
+++ ps/Hotkey.cpp	(working copy)
@@ -58,6 +58,49 @@
 // The current pressed status of hotkeys
 std::map<std::string, bool> g_HotkeyStatus;
 
+// Delete multiple hotkey for same key combination
+// Compare all keys require in requires if there is same combination already in use, delete other one
+static void RemoveOverlapingHotKeys()
+{	
+	for (std::map<int, KeyMapping>::iterator itHkm = g_HotkeyMap.begin(); itHkm != g_HotkeyMap.end(); ++itHkm)
+	{
+		for (unsigned int kmi = 0; kmi < itHkm->second.size(); kmi++)
+		{
+			for (unsigned int kmj = 0; kmj < kmi; kmj++)
+			{
+				if (itHkm->second[kmi].requires.size() > 0 && 
+					itHkm->second[kmi].requires.size() == itHkm->second[kmj].requires.size())
+				{
+					bool match = false;
+					for (unsigned int i = 0; i < itHkm->second[kmi].requires.size(); i++)
+					{
+						for (unsigned int j = 0; j < itHkm->second[kmj].requires.size(); j++)
+						{
+							if (itHkm->second[kmi].requires[i].code == itHkm->second[kmj].requires[j].code)
+							{
+								match = true;
+								break;
+							}
+						}
+
+						if (!match)
+						{
+							break;
+						}
+					}
+
+					if (match)
+					{
+						itHkm->second.erase(itHkm->second.begin() + kmi);
+						kmi--;
+						break;
+					}
+				}
+			}
+		}
+	}
+}
+
 // Look up each key binding in the config file and set the mappings for
 // all key combinations that trigger it.
 static void LoadConfigBindings()
@@ -140,6 +183,8 @@
 			}
 		}
 	}
+
+	RemoveOverlapingHotKeys();
 }
 
 void LoadHotkeys()
