public bool LoadBindingsFile() { devices = new Dictionary <string, Device>(); // clear values = new Dictionary <string, string>(); string path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), @"Frontier Developments\Elite Dangerous\Options\Bindings"); string optsel = System.IO.Path.Combine(path, "StartPreset.start"); try { string sel = System.IO.File.ReadAllText(optsel); System.Diagnostics.Debug.WriteLine("Bindings file " + sel); FileInfo[] allFiles = Directory.EnumerateFiles(path, sel + "*.binds", SearchOption.TopDirectoryOnly).Select(f => new System.IO.FileInfo(f)).OrderByDescending(p => p.LastWriteTime).ToArray(); if (allFiles.Length >= 1) { XElement bindings = XElement.Load(allFiles[0].FullName); foreach (XElement x in bindings.Elements()) { //System.Diagnostics.Debug.WriteLine("Reader " + x.NodeType + " " + x.Name); if (x.HasElements) { foreach (XElement y in x.Descendants()) { if (y.Name == "Binding") { AxisNames.Add(x.Name.LocalName); AssignToDevice(x, y); } else if (y.Name == "Primary" || y.Name == "Secondary") { //System.Diagnostics.Debug.WriteLine("Binding Point " + x.NodeType + " " + x.Name + " Element " + y.Name); KeyNames.Add(x.Name.LocalName); AssignToDevice(x, y); } else { foreach (XAttribute z in y.Attributes()) { values[x.Name + "." + y.Name + ChkValue(z.Name.ToString())] = z.Value; } } } } if (x.HasAttributes) { foreach (XAttribute y in x.Attributes()) { values[x.Name + ChkValue(y.Name.ToString())] = y.Value; } } } return(true); } } catch { } return(false); }