diff --git a/Artemis/Artemis/DeviceProviders/Logitech/G810.cs b/Artemis/Artemis/DeviceProviders/Logitech/G810.cs index 1cb992133..2b3c1a509 100644 --- a/Artemis/Artemis/DeviceProviders/Logitech/G810.cs +++ b/Artemis/Artemis/DeviceProviders/Logitech/G810.cs @@ -1,13 +1,17 @@ using System.Linq; using System.Windows; using System.Windows.Forms; +using Artemis.DAL; using Artemis.DeviceProviders.Logitech.Utilities; using Artemis.Properties; +using Artemis.Settings; namespace Artemis.DeviceProviders.Logitech { internal class G810 : LogitechKeyboard { + private GeneralSettings _generalSettings; + public G810() { Name = "Logitech G810 RGB"; @@ -19,11 +23,14 @@ namespace Artemis.DeviceProviders.Logitech Height = 6; Width = 21; PreviewSettings = new PreviewSettings(675, 185, new Thickness(0, 35, 0, 0), Resources.g810); + _generalSettings = SettingsProvider.Load(); } public override KeyMatch? GetKeyPosition(Keys keyCode) { - return KeyMap.QwertyLayout.FirstOrDefault(k => k.KeyCode == keyCode); + return _generalSettings.Layout == "Qwerty" + ? KeyMap.QwertyLayout.FirstOrDefault(k => k.KeyCode == keyCode) + : KeyMap.AzertyLayout.FirstOrDefault(k => k.KeyCode == keyCode); } } } \ No newline at end of file diff --git a/Artemis/Artemis/DeviceProviders/Logitech/G910.cs b/Artemis/Artemis/DeviceProviders/Logitech/G910.cs index 059aa9a6a..126eefcbf 100644 --- a/Artemis/Artemis/DeviceProviders/Logitech/G910.cs +++ b/Artemis/Artemis/DeviceProviders/Logitech/G910.cs @@ -3,13 +3,17 @@ using System.Drawing; using System.Linq; using System.Windows; using System.Windows.Forms; +using Artemis.DAL; using Artemis.DeviceProviders.Logitech.Utilities; using Artemis.Properties; +using Artemis.Settings; namespace Artemis.DeviceProviders.Logitech { internal class G910 : LogitechKeyboard { + private readonly GeneralSettings _generalSettings; + public G910() { Name = "Logitech G910 RGB"; @@ -21,11 +25,17 @@ namespace Artemis.DeviceProviders.Logitech Height = 7; Width = 22; PreviewSettings = new PreviewSettings(570, 175, new Thickness(-10, -105, 0, 0), Resources.g910); + _generalSettings = SettingsProvider.Load(); } public override KeyMatch? GetKeyPosition(Keys keyCode) { - return KeyMap.QwertyLayout.FirstOrDefault(k => k.KeyCode == keyCode); + var value = _generalSettings.Layout == "Qwerty" + ? KeyMap.QwertyLayout.FirstOrDefault(k => k.KeyCode == keyCode) + : KeyMap.AzertyLayout.FirstOrDefault(k => k.KeyCode == keyCode); + + // Adjust the distance by 1 on both x and y for the G910 + return new KeyMatch(value.KeyCode, value.X + 1, value.Y + 1); } /// diff --git a/Artemis/Artemis/DeviceProviders/Logitech/LogitechKeyboard.cs b/Artemis/Artemis/DeviceProviders/Logitech/LogitechKeyboard.cs index e5263ec7e..ac6a96f0d 100644 --- a/Artemis/Artemis/DeviceProviders/Logitech/LogitechKeyboard.cs +++ b/Artemis/Artemis/DeviceProviders/Logitech/LogitechKeyboard.cs @@ -33,7 +33,7 @@ namespace Artemis.DeviceProviders.Logitech // Turn it into one long number... var version = int.Parse($"{majorNum}{minorNum}{buildNum}"); - CantEnableText = "Couldn't connect to your Logitech G910.\n" + + CantEnableText = "Couldn't connect to your Logitech keyboard.\n" + "Please check your cables and updating the Logitech Gaming Software\n" + $"A minimum version of 8.81.15 is required (detected {majorNum}.{minorNum}.{buildNum}).\n\n" + "If the detected version differs from the version LGS is reporting, reinstall LGS or see the FAQ.\n\n" + diff --git a/Artemis/Artemis/Properties/AssemblyInfo.cs b/Artemis/Artemis/Properties/AssemblyInfo.cs index 8bdcdc28e..7be9c3d37 100644 --- a/Artemis/Artemis/Properties/AssemblyInfo.cs +++ b/Artemis/Artemis/Properties/AssemblyInfo.cs @@ -52,5 +52,5 @@ using System.Windows; // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.3.3.0")] -[assembly: AssemblyFileVersion("1.3.3.0")] \ No newline at end of file +[assembly: AssemblyVersion("1.4.0.0")] +[assembly: AssemblyFileVersion("1.4.0.0")] \ No newline at end of file diff --git a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip index 465501c5a..ac8cd394b 100644 Binary files a/Artemis/Artemis/Resources/Keyboards/default-profiles.zip and b/Artemis/Artemis/Resources/Keyboards/default-profiles.zip differ diff --git a/Artemis/Artemis/Settings/GeneralSettings.cs b/Artemis/Artemis/Settings/GeneralSettings.cs index 2717b7be6..189bb025f 100644 --- a/Artemis/Artemis/Settings/GeneralSettings.cs +++ b/Artemis/Artemis/Settings/GeneralSettings.cs @@ -27,6 +27,10 @@ namespace Artemis.Settings [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] public string LastKeyboard { get; set; } + [DefaultValue("Qwerty")] + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] + public string Layout { get; set; } + [DefaultValue(true)] [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] public bool EnablePointersUpdate { get; set; } diff --git a/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs b/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs index 941165ded..61d9ba4d7 100644 --- a/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs +++ b/Artemis/Artemis/ViewModels/Flyouts/FlyoutSettingsViewModel.cs @@ -86,6 +86,12 @@ namespace Artemis.ViewModels.Flyouts "Corsair Dark" }; + public BindableCollection Layouts => new BindableCollection + { + "Qwerty", + "Azerty" + }; + public string VersionText => "Artemis " + Assembly.GetExecutingAssembly().GetName().Version; public BindableCollection LogLevels { get; set; } @@ -101,6 +107,17 @@ namespace Artemis.ViewModels.Flyouts } } + public string SelectedLayout + { + get { return GeneralSettings.Layout; } + set + { + if (value == GeneralSettings.Layout) return; + GeneralSettings.Layout = value; + NotifyOfPropertyChange(() => SelectedLayout); + } + } + public string SelectedLogLevel { get { return GeneralSettings.LogLevel; } diff --git a/Artemis/Artemis/Views/Flyouts/FlyoutSettingsView.xaml b/Artemis/Artemis/Views/Flyouts/FlyoutSettingsView.xaml index abb1d0d3f..b61361692 100644 --- a/Artemis/Artemis/Views/Flyouts/FlyoutSettingsView.xaml +++ b/Artemis/Artemis/Views/Flyouts/FlyoutSettingsView.xaml @@ -70,7 +70,7 @@