public void LoadCulture(KeyboardBrand brand, String culture)
        {
            keyboard.Clear();

            var fileName = "layout." + culture + ".json";

            switch (brand)
            {
            case (KeyboardBrand.Corsair):
                fileName = "corsair_" + fileName;
                break;

            default:
                break;
            }

            var layoutPath = Path.Combine(cultures_folder, fileName);

            if (!File.Exists(layoutPath))
            {
                LoadDefault();
            }

            string content = File.ReadAllText(layoutPath, Encoding.UTF8);

            keyboard = JsonConvert.DeserializeObject <List <KeyboardKey> >(content, new JsonSerializerSettings {
                ObjectCreationHandling = ObjectCreationHandling.Replace
            });
        }
        public KeyboardLayouts(KeyboardBrand brand = KeyboardBrand.Logitech)
        {
            try
            {
                if (Directory.Exists(Path.Combine(cultures_folder)))
                {
                    switch (System.Threading.Thread.CurrentThread.CurrentCulture.Name)
                    {
                    case ("de-DE"):
                    case ("hsb-DE"):
                    case ("dsb-DE"):
                        LoadCulture(brand, "de");
                        break;

                    case ("fr-FR"):
                    case ("br-FR"):
                    case ("oc-FR"):
                    case ("co-FR"):
                    case ("gsw-FR"):
                        LoadCulture(brand, "fr");
                        break;

                    case ("cy-GB"):
                    case ("gd-GB"):
                    case ("en-GB"):
                        LoadCulture(brand, "uk");
                        break;

                    case ("ru-RU"):
                    case ("tt-RU"):
                    case ("ba-RU"):
                    case ("sah-RU"):
                        LoadCulture(brand, "ru");
                        break;

                    default:
                        LoadCulture(brand, "us");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                LoadDefault();
            }
        }
 public KeyboardLayouts(KeyboardBrand brand = KeyboardBrand.Logitech)
 {
     try
     {
         if (Directory.Exists(Path.Combine(cultures_folder)))
         {
             switch (System.Threading.Thread.CurrentThread.CurrentCulture.Name)
             {
                 case ("de-DE"):
                 case ("hsb-DE"):
                 case ("dsb-DE"):
                     LoadCulture(brand, "de");
                     break;
                 case ("fr-FR"):
                 case ("br-FR"):
                 case ("oc-FR"):
                 case ("co-FR"):
                 case ("gsw-FR"):
                     LoadCulture(brand, "fr");
                     break;
                 case ("cy-GB"):
                 case ("gd-GB"):
                 case ("en-GB"):
                     LoadCulture(brand, "uk");
                     break;
                 case ("ru-RU"):
                 case ("tt-RU"):
                 case ("ba-RU"):
                 case ("sah-RU"):
                     LoadCulture(brand, "ru");
                     break;
                 default:
                     LoadCulture(brand, "us");
                     break;
             }
         }
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
         LoadDefault();
     }
 }
        public void LoadCulture(KeyboardBrand brand, String culture)
        {
            keyboard.Clear();

            var fileName = "layout." + culture + ".json";

            switch (brand)
            {
                case (KeyboardBrand.Corsair):
                    fileName = "corsair_" + fileName;
                    break;
                default:
                    break;
            }

            var layoutPath = Path.Combine(cultures_folder, fileName);

            if (!File.Exists(layoutPath))
                LoadDefault();

            string content = File.ReadAllText(layoutPath, Encoding.UTF8);
            keyboard = JsonConvert.DeserializeObject<List<KeyboardKey>>(content, new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace });
        }