diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj
index 5f0aea86c..4a43c96f0 100644
--- a/Artemis/Artemis/Artemis.csproj
+++ b/Artemis/Artemis/Artemis.csproj
@@ -340,6 +340,7 @@
+
MarkdownDialog.xaml
diff --git a/Artemis/Artemis/DAL/ProfileProvider.cs b/Artemis/Artemis/DAL/ProfileProvider.cs
index 9a64c6446..9fea4dfc2 100644
--- a/Artemis/Artemis/DAL/ProfileProvider.cs
+++ b/Artemis/Artemis/DAL/ProfileProvider.cs
@@ -102,12 +102,16 @@ namespace Artemis.DAL
if (string.IsNullOrEmpty(name))
return;
- // Remove the old profile
- DeleteProfile(profile);
+ // Store the profile path before it is renamed
+ var oldPath = ProfileFolder + $@"\{profile.KeyboardSlug}\{profile.GameName}\{profile.Slug}.json";
// Update the profile, creating a new file
profile.Name = name;
AddOrUpdate(profile);
+
+ // Remove the file with the old name
+ if (File.Exists(oldPath))
+ File.Delete(oldPath);
}
public static void DeleteProfile(ProfileModel prof)
diff --git a/Artemis/Artemis/DeviceProviders/Corsair/CorsairHeadset.cs b/Artemis/Artemis/DeviceProviders/Corsair/CorsairHeadset.cs
index ca842fd0e..1bf18b973 100644
--- a/Artemis/Artemis/DeviceProviders/Corsair/CorsairHeadset.cs
+++ b/Artemis/Artemis/DeviceProviders/Corsair/CorsairHeadset.cs
@@ -23,9 +23,16 @@ namespace Artemis.DeviceProviders.Corsair
public override bool TryEnable()
{
- CanUse = CanInitializeSdk();
- if (CanUse && !CueSDK.IsInitialized)
- CueSDK.Initialize();
+ try
+ {
+ CanUse = CanInitializeSdk();
+ if (CanUse && !CueSDK.IsInitialized)
+ CueSDK.Initialize();
+ }
+ catch (Exception)
+ {
+ CanUse = false;
+ }
Logger.Debug("Attempted to enable Corsair headset. CanUse: {0}", CanUse);
@@ -69,4 +76,4 @@ namespace Artemis.DeviceProviders.Corsair
return false;
}
}
-}
\ No newline at end of file
+}
diff --git a/Artemis/Artemis/DeviceProviders/Corsair/CorsairMouse.cs b/Artemis/Artemis/DeviceProviders/Corsair/CorsairMouse.cs
index 301f07781..8baade687 100644
--- a/Artemis/Artemis/DeviceProviders/Corsair/CorsairMouse.cs
+++ b/Artemis/Artemis/DeviceProviders/Corsair/CorsairMouse.cs
@@ -23,9 +23,16 @@ namespace Artemis.DeviceProviders.Corsair
public override bool TryEnable()
{
- CanUse = CanInitializeSdk();
- if (CanUse && !CueSDK.IsInitialized)
- CueSDK.Initialize();
+ try
+ {
+ CanUse = CanInitializeSdk();
+ if (CanUse && !CueSDK.IsInitialized)
+ CueSDK.Initialize();
+ }
+ catch (Exception)
+ {
+ CanUse = false;
+ }
Logger.Debug("Attempted to enable Corsair mice. CanUse: {0}", CanUse);
diff --git a/Artemis/Artemis/DeviceProviders/Corsair/CorsairMousemat.cs b/Artemis/Artemis/DeviceProviders/Corsair/CorsairMousemat.cs
index 0a3ae1283..d8c1ccec3 100644
--- a/Artemis/Artemis/DeviceProviders/Corsair/CorsairMousemat.cs
+++ b/Artemis/Artemis/DeviceProviders/Corsair/CorsairMousemat.cs
@@ -23,9 +23,16 @@ namespace Artemis.DeviceProviders.Corsair
public override bool TryEnable()
{
- CanUse = CanInitializeSdk();
- if (CanUse && !CueSDK.IsInitialized)
- CueSDK.Initialize();
+ try
+ {
+ CanUse = CanInitializeSdk();
+ if (CanUse && !CueSDK.IsInitialized)
+ CueSDK.Initialize();
+ }
+ catch (Exception)
+ {
+ CanUse = false;
+ }
Logger.Debug("Attempted to enable Corsair mousemat. CanUse: {0}", CanUse);
diff --git a/Artemis/Artemis/DeviceProviders/Logitech/G810.cs b/Artemis/Artemis/DeviceProviders/Logitech/G810.cs
index 75b82713d..d6d7538c8 100644
--- a/Artemis/Artemis/DeviceProviders/Logitech/G810.cs
+++ b/Artemis/Artemis/DeviceProviders/Logitech/G810.cs
@@ -1,4 +1,5 @@
-using System.Linq;
+using System.Drawing;
+using System.Linq;
using System.Windows;
using System.Windows.Forms;
using Artemis.DAL;
@@ -20,23 +21,68 @@ namespace Artemis.DeviceProviders.Logitech
"Please check your cables and updating the Logitech Gaming Software\n" +
"A minimum version of 8.81.15 is required.\n\n" +
"If needed, you can select a different keyboard in Artemis under settings.";
- Height = 6;
+ Height = 7;
Width = 21;
- PreviewSettings = new PreviewSettings(new Rect(19, 70, 1010, 269), Resources.g810);
+ PreviewSettings = new PreviewSettings(new Rect(19, 36, 1010, 304), Resources.g810);
_generalSettings = SettingsProvider.Load();
}
+ ///
+ /// The G910 also updates the G-logo, G-badge and G-keys
+ ///
+ ///
+ public override void DrawBitmap(Bitmap bitmap)
+ {
+ using (var croppedBitmap = new Bitmap(21 * 4, 6 * 4))
+ {
+ // Deal with non-standard DPI
+ croppedBitmap.SetResolution(96, 96);
+ // Don't forget that the image is upscaled 4 times
+ using (var g = Graphics.FromImage(croppedBitmap))
+ {
+ g.DrawImage(bitmap, new Rectangle(0, 0, 84, 24), new Rectangle(4, 4, 84, 24), GraphicsUnit.Pixel);
+ }
+
+ LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_PERKEY_RGB);
+ // TODO: Remapping
+ LogitechGSDK.LogiLedSetLightingFromBitmap(OrionUtilities.BitmapToByteArray(bitmap));
+ }
+
+ using (var resized = OrionUtilities.ResizeImage(bitmap, 21, 7))
+ {
+ // Color G-logo, lets also try some other values to see what happens
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_LOGO, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_BADGE, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_1, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_2, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_3, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_4, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_5, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_6, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_7, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_8, 0, 0);
+ SetLogitechColorFromCoordinates(resized, KeyboardNames.G_9, 0, 0);
+ }
+ }
+
public override KeyMatch? GetKeyPosition(Keys keyCode)
{
+ KeyMatch value;
switch (_generalSettings.Layout)
{
case "Qwerty":
- return KeyMap.QwertyLayout.FirstOrDefault(k => k.KeyCode == keyCode);
+ value = KeyMap.QwertyLayout.FirstOrDefault(k => k.KeyCode == keyCode);
+ break;
case "Qwertz":
- return KeyMap.QwertzLayout.FirstOrDefault(k => k.KeyCode == keyCode);
+ value = KeyMap.QwertzLayout.FirstOrDefault(k => k.KeyCode == keyCode);
+ break;
default:
- return KeyMap.AzertyLayout.FirstOrDefault(k => k.KeyCode == keyCode);
+ value = KeyMap.AzertyLayout.FirstOrDefault(k => k.KeyCode == keyCode);
+ break;
}
+
+ // Adjust the distance by 1 on y for the G810
+ return new KeyMatch(value.KeyCode, value.X, value.Y + 1);
}
}
}
\ No newline at end of file
diff --git a/Artemis/Artemis/DeviceProviders/Logitech/G910.cs b/Artemis/Artemis/DeviceProviders/Logitech/G910.cs
index 7339d8fac..295c5be3c 100644
--- a/Artemis/Artemis/DeviceProviders/Logitech/G910.cs
+++ b/Artemis/Artemis/DeviceProviders/Logitech/G910.cs
@@ -64,7 +64,8 @@ namespace Artemis.DeviceProviders.Logitech
g.DrawImage(bitmap, new Rectangle(0, 0, 84, 24), new Rectangle(4, 4, 84, 24), GraphicsUnit.Pixel);
}
- base.DrawBitmap(croppedBitmap);
+ LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_PERKEY_RGB);
+ LogitechGSDK.LogiLedSetLightingFromBitmap(OrionUtilities.BitmapToByteArray(bitmap, G910Keymappings));
}
using (var resized = OrionUtilities.ResizeImage(bitmap, 22, 7))
@@ -88,14 +89,147 @@ namespace Artemis.DeviceProviders.Logitech
}
}
- private void SetLogitechColorFromCoordinates(Bitmap bitmap, KeyboardNames key, int x, int y)
+ // These mappings are used by the G910 to fix alignments
+ public static OrionUtilities.KeyMapping[] G910Keymappings =
{
- var color = bitmap.GetPixel(x, y);
- var rPer = (int) Math.Round(color.R / 2.55);
- var gPer = (int) Math.Round(color.G / 2.55);
- var bPer = (int) Math.Round(color.B / 2.55);
+ // First row
+ new OrionUtilities.KeyMapping(0, 0),
+ new OrionUtilities.KeyMapping(1, 1),
+ new OrionUtilities.KeyMapping(2, 1),
+ new OrionUtilities.KeyMapping(3, 2),
+ new OrionUtilities.KeyMapping(4, 3),
+ new OrionUtilities.KeyMapping(5, 4),
+ new OrionUtilities.KeyMapping(6, 5),
+ new OrionUtilities.KeyMapping(7, 6),
+ new OrionUtilities.KeyMapping(8, 7),
+ new OrionUtilities.KeyMapping(9, 8),
+ new OrionUtilities.KeyMapping(10, 9),
+ new OrionUtilities.KeyMapping(11, 9),
+ new OrionUtilities.KeyMapping(12, 10),
+ new OrionUtilities.KeyMapping(13, 11),
+ new OrionUtilities.KeyMapping(13, 12),
+ new OrionUtilities.KeyMapping(14, 13),
+ new OrionUtilities.KeyMapping(15, 14),
+ new OrionUtilities.KeyMapping(16, 15),
+ new OrionUtilities.KeyMapping(17, 16),
+ new OrionUtilities.KeyMapping(18, 17),
+ new OrionUtilities.KeyMapping(19, 18),
- LogitechGSDK.LogiLedSetLightingForKeyWithKeyName(key, rPer, gPer, bPer);
- }
+ // Second row
+ new OrionUtilities.KeyMapping(21, 21),
+ new OrionUtilities.KeyMapping(22, 22),
+ new OrionUtilities.KeyMapping(23, 23),
+ new OrionUtilities.KeyMapping(24, 24),
+ new OrionUtilities.KeyMapping(25, 25),
+ new OrionUtilities.KeyMapping(26, 26),
+ new OrionUtilities.KeyMapping(27, 27),
+ new OrionUtilities.KeyMapping(28, 28),
+ new OrionUtilities.KeyMapping(29, 29),
+ new OrionUtilities.KeyMapping(30, 30),
+ new OrionUtilities.KeyMapping(31, 31),
+ new OrionUtilities.KeyMapping(32, 32),
+ new OrionUtilities.KeyMapping(33, 33),
+ new OrionUtilities.KeyMapping(34, 34),
+ new OrionUtilities.KeyMapping(35, 35),
+ new OrionUtilities.KeyMapping(36, 36),
+ new OrionUtilities.KeyMapping(37, 37),
+ new OrionUtilities.KeyMapping(38, 38),
+ new OrionUtilities.KeyMapping(39, 39),
+ new OrionUtilities.KeyMapping(40, 40),
+ new OrionUtilities.KeyMapping(41, 41),
+
+ // Third row
+ new OrionUtilities.KeyMapping(42, 42),
+ new OrionUtilities.KeyMapping(43, 43),
+ new OrionUtilities.KeyMapping(44, 44),
+ new OrionUtilities.KeyMapping(45, 45),
+ new OrionUtilities.KeyMapping(46, 46),
+ new OrionUtilities.KeyMapping(47, 46),
+ new OrionUtilities.KeyMapping(48, 47),
+ new OrionUtilities.KeyMapping(49, 48),
+ new OrionUtilities.KeyMapping(50, 49),
+ new OrionUtilities.KeyMapping(51, 50),
+ new OrionUtilities.KeyMapping(52, 51),
+ new OrionUtilities.KeyMapping(53, 52),
+ new OrionUtilities.KeyMapping(54, 53),
+ new OrionUtilities.KeyMapping(54, 54),
+ new OrionUtilities.KeyMapping(55, 55),
+ new OrionUtilities.KeyMapping(56, 56),
+ new OrionUtilities.KeyMapping(57, 57),
+ new OrionUtilities.KeyMapping(58, 58),
+ new OrionUtilities.KeyMapping(59, 59),
+ new OrionUtilities.KeyMapping(60, 60),
+ new OrionUtilities.KeyMapping(61, 61),
+ new OrionUtilities.KeyMapping(62, 62),
+
+ // Fourth row
+ new OrionUtilities.KeyMapping(63, 63),
+ new OrionUtilities.KeyMapping(64, 64),
+ new OrionUtilities.KeyMapping(65, 65),
+ new OrionUtilities.KeyMapping(66, 65),
+ new OrionUtilities.KeyMapping(67, 66),
+ new OrionUtilities.KeyMapping(68, 67),
+ new OrionUtilities.KeyMapping(69, 68),
+ new OrionUtilities.KeyMapping(70, 69),
+ new OrionUtilities.KeyMapping(71, 70),
+ new OrionUtilities.KeyMapping(72, 71),
+ new OrionUtilities.KeyMapping(73, 72),
+ new OrionUtilities.KeyMapping(74, 73),
+ new OrionUtilities.KeyMapping(75, 74),
+ new OrionUtilities.KeyMapping(76, 75),
+ new OrionUtilities.KeyMapping(76, 76),
+ new OrionUtilities.KeyMapping(78, 77),
+ new OrionUtilities.KeyMapping(79, 78),
+ new OrionUtilities.KeyMapping(79, 79),
+ new OrionUtilities.KeyMapping(80, 80),
+ new OrionUtilities.KeyMapping(81, 81),
+ new OrionUtilities.KeyMapping(82, 82),
+
+ // Fifth row
+ new OrionUtilities.KeyMapping(84, 84),
+ new OrionUtilities.KeyMapping(85, 85),
+ new OrionUtilities.KeyMapping(86, 86),
+ new OrionUtilities.KeyMapping(87, 87),
+ new OrionUtilities.KeyMapping(88, 88),
+ new OrionUtilities.KeyMapping(89, 89),
+ new OrionUtilities.KeyMapping(90, 90),
+ new OrionUtilities.KeyMapping(91, 91),
+ new OrionUtilities.KeyMapping(92, 92),
+ new OrionUtilities.KeyMapping(93, 93),
+ new OrionUtilities.KeyMapping(94, 94),
+ new OrionUtilities.KeyMapping(95, 95),
+ new OrionUtilities.KeyMapping(96, 96),
+ new OrionUtilities.KeyMapping(97, 97),
+ new OrionUtilities.KeyMapping(98, 98),
+ new OrionUtilities.KeyMapping(99, 99),
+ new OrionUtilities.KeyMapping(100, 100),
+ new OrionUtilities.KeyMapping(101, 101),
+ new OrionUtilities.KeyMapping(102, 102),
+ new OrionUtilities.KeyMapping(103, 103),
+ new OrionUtilities.KeyMapping(104, 104),
+
+ // Sixth row
+ new OrionUtilities.KeyMapping(105, 105),
+ new OrionUtilities.KeyMapping(106, 106),
+ new OrionUtilities.KeyMapping(107, 107),
+ new OrionUtilities.KeyMapping(108, 107),
+ new OrionUtilities.KeyMapping(109, 109),
+ new OrionUtilities.KeyMapping(110, 110),
+ new OrionUtilities.KeyMapping(111, 110),
+ new OrionUtilities.KeyMapping(112, 111),
+ new OrionUtilities.KeyMapping(113, 112),
+ new OrionUtilities.KeyMapping(114, 113),
+ new OrionUtilities.KeyMapping(115, 114),
+ new OrionUtilities.KeyMapping(116, 115),
+ new OrionUtilities.KeyMapping(115, 116), // ALTGR
+ new OrionUtilities.KeyMapping(116, 117),
+ new OrionUtilities.KeyMapping(117, 118),
+ new OrionUtilities.KeyMapping(118, 119),
+ new OrionUtilities.KeyMapping(119, 120),
+ new OrionUtilities.KeyMapping(120, 121),
+ new OrionUtilities.KeyMapping(121, 122),
+ new OrionUtilities.KeyMapping(122, 123),
+ new OrionUtilities.KeyMapping(124, 124)
+ };
}
}
diff --git a/Artemis/Artemis/DeviceProviders/Logitech/LogitechGeneric.cs b/Artemis/Artemis/DeviceProviders/Logitech/LogitechGeneric.cs
index 9c978a791..c0fc32556 100644
--- a/Artemis/Artemis/DeviceProviders/Logitech/LogitechGeneric.cs
+++ b/Artemis/Artemis/DeviceProviders/Logitech/LogitechGeneric.cs
@@ -1,55 +1,55 @@
-using System;
-using System.Drawing;
-using Artemis.DeviceProviders.Logitech.Utilities;
-using Ninject.Extensions.Logging;
-
-namespace Artemis.DeviceProviders.Logitech
-{
- // TODO: Handle shutdown, maybe implement Disable() afterall?
- public class LogitechGeneric : DeviceProvider
- {
- ///
- /// A generic Logitech DeviceProvider. Because the Logitech SDK currently doesn't allow specific
- /// device targeting (only very broad per-key-RGB and full RGB etc..)
- ///
- public LogitechGeneric(ILogger logger)
- {
- Logger = logger;
- Type = DeviceType.Generic;
- }
-
- public ILogger Logger { get; set; }
-
- public override void UpdateDevice(Bitmap bitmap)
- {
- if (!CanUse || bitmap == null)
- return;
-
- var col = bitmap.GetPixel(bitmap.Width/2, bitmap.Height/2);
- LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_RGB);
- LogitechGSDK.LogiLedSetLighting((int) (col.R/2.55), (int) (col.G/2.55), (int) (col.B/2.55));
- }
-
- public override bool TryEnable()
- {
- var majorNum = 0;
- var minorNum = 0;
- var buildNum = 0;
-
- LogitechGSDK.LogiLedInit();
- LogitechGSDK.LogiLedGetSdkVersion(ref majorNum, ref minorNum, ref buildNum);
-
- // Turn it into one long number...
- var version = int.Parse($"{majorNum}{minorNum}{buildNum}");
- CanUse = version >= 88115;
- Logger.Debug("Attempted to enable Logitech generic device. CanUse: {0}", CanUse);
-
- return CanUse;
- }
-
- public override void Disable()
- {
- throw new NotSupportedException("Can only disable a keyboard");
- }
- }
-}
\ No newline at end of file
+//using System;
+//using System.Drawing;
+//using Artemis.DeviceProviders.Logitech.Utilities;
+//using Ninject.Extensions.Logging;
+//
+//namespace Artemis.DeviceProviders.Logitech
+//{
+// // TODO: Handle shutdown, maybe implement Disable() afterall?
+// public class LogitechGeneric : DeviceProvider
+// {
+// ///
+// /// A generic Logitech DeviceProvider. Because the Logitech SDK currently doesn't allow specific
+// /// device targeting (only very broad per-key-RGB and full RGB etc..)
+// ///
+// public LogitechGeneric(ILogger logger)
+// {
+// Logger = logger;
+// Type = DeviceType.Generic;
+// }
+//
+// public ILogger Logger { get; set; }
+//
+// public override void UpdateDevice(Bitmap bitmap)
+// {
+// if (!CanUse || bitmap == null)
+// return;
+//
+// var col = bitmap.GetPixel(bitmap.Width/2, bitmap.Height/2);
+// LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_RGB);
+// LogitechGSDK.LogiLedSetLighting((int) (col.R/2.55), (int) (col.G/2.55), (int) (col.B/2.55));
+// }
+//
+// public override bool TryEnable()
+// {
+// var majorNum = 0;
+// var minorNum = 0;
+// var buildNum = 0;
+//
+// LogitechGSDK.LogiLedInit();
+// LogitechGSDK.LogiLedGetSdkVersion(ref majorNum, ref minorNum, ref buildNum);
+//
+// // Turn it into one long number...
+// var version = int.Parse($"{majorNum}{minorNum}{buildNum}");
+// CanUse = version >= 88115;
+// Logger.Debug("Attempted to enable Logitech generic device. CanUse: {0}", CanUse);
+//
+// return CanUse;
+// }
+//
+// public override void Disable()
+// {
+// throw new NotSupportedException("Can only disable a keyboard");
+// }
+// }
+//}
\ No newline at end of file
diff --git a/Artemis/Artemis/DeviceProviders/Logitech/LogitechKeyboard.cs b/Artemis/Artemis/DeviceProviders/Logitech/LogitechKeyboard.cs
index ec8ecd391..72ffe9926 100644
--- a/Artemis/Artemis/DeviceProviders/Logitech/LogitechKeyboard.cs
+++ b/Artemis/Artemis/DeviceProviders/Logitech/LogitechKeyboard.cs
@@ -1,4 +1,5 @@
-using System.Drawing;
+using System;
+using System.Drawing;
using System.Threading;
using Artemis.DeviceProviders.Logitech.Utilities;
using Artemis.Utilities.DataReaders;
@@ -12,18 +13,7 @@ namespace Artemis.DeviceProviders.Logitech
{
// Just to be sure, restore the Logitech DLL registry key
DllManager.RestoreLogitechDll();
-
- // Check to see if VC++ 2012 x64 is installed.
- if (Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Classes\Installer\Dependencies\{ca67548a-5ebe-413a-b50c-4b9ceb6d66c6}") == null)
- {
- CantEnableText = "Couldn't connect to your Logitech keyboard.\n" +
- "The Visual C++ 2012 Redistributable v11.0.61030.0 could not be found, which is required.\n" +
- "Please download it by going to the following URL (link also in wiki):\n\n" +
- "https://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe";
-
- return false;
- }
-
+
int majorNum = 0, minorNum = 0, buildNum = 0;
LogitechGSDK.LogiLedInit();
@@ -58,10 +48,14 @@ namespace Artemis.DeviceProviders.Logitech
LogitechGSDK.LogiLedShutdown();
}
- public override void DrawBitmap(Bitmap bitmap)
+ protected void SetLogitechColorFromCoordinates(Bitmap bitmap, KeyboardNames key, int x, int y)
{
- LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_PERKEY_RGB);
- LogitechGSDK.LogiLedSetLightingFromBitmap(OrionUtilities.BitmapToByteArray(bitmap));
+ var color = bitmap.GetPixel(x, y);
+ var rPer = (int)Math.Round(color.R / 2.55);
+ var gPer = (int)Math.Round(color.G / 2.55);
+ var bPer = (int)Math.Round(color.B / 2.55);
+
+ LogitechGSDK.LogiLedSetLightingForKeyWithKeyName(key, rPer, gPer, bPer);
}
}
}
diff --git a/Artemis/Artemis/DeviceProviders/Logitech/Utilities/KeyMap.cs b/Artemis/Artemis/DeviceProviders/Logitech/Utilities/KeyMap.cs
index 140b16380..eb31a9669 100644
--- a/Artemis/Artemis/DeviceProviders/Logitech/Utilities/KeyMap.cs
+++ b/Artemis/Artemis/DeviceProviders/Logitech/Utilities/KeyMap.cs
@@ -132,7 +132,7 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
new KeyMatch(Keys.Decimal, 19, 5)
};
- #endregion
+ #endregion
#region Qwertz
@@ -257,7 +257,7 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
new KeyMatch(Keys.Decimal, 19, 5)
};
- #endregion
+ #endregion
#region Azerty
@@ -384,9 +384,9 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
#endregion
}
-
+
public static List QwertyLayout { get; set; }
public static List QwertzLayout { get; set; }
public static List AzertyLayout { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/Artemis/Artemis/DeviceProviders/Logitech/Utilities/KeyMapG810.cs b/Artemis/Artemis/DeviceProviders/Logitech/Utilities/KeyMapG810.cs
new file mode 100644
index 000000000..35b38389c
--- /dev/null
+++ b/Artemis/Artemis/DeviceProviders/Logitech/Utilities/KeyMapG810.cs
@@ -0,0 +1,392 @@
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace Artemis.DeviceProviders.Logitech.Utilities
+{
+ public static class KeyMapG810
+ {
+ static KeyMapG810()
+ {
+ // There are several keyboard layouts
+
+ #region Qwerty
+
+ QwertyLayout = new List
+ {
+ // Row 1
+ new KeyMatch(Keys.Escape, 0, 0),
+ new KeyMatch(Keys.F1, 2, 0),
+ new KeyMatch(Keys.F2, 3, 0),
+ new KeyMatch(Keys.F3, 4, 0),
+ new KeyMatch(Keys.F4, 5, 0),
+ new KeyMatch(Keys.F5, 6, 0),
+ new KeyMatch(Keys.F6, 7, 0),
+ new KeyMatch(Keys.F7, 8, 0),
+ new KeyMatch(Keys.F8, 9, 0),
+ new KeyMatch(Keys.F9, 11, 0),
+ new KeyMatch(Keys.F10, 12, 0),
+ new KeyMatch(Keys.F11, 13, 0),
+ new KeyMatch(Keys.F12, 14, 0),
+ new KeyMatch(Keys.PrintScreen, 15, 0),
+ new KeyMatch(Keys.Scroll, 16, 0),
+ new KeyMatch(Keys.Pause, 17, 0),
+
+ // Row 2
+ new KeyMatch(Keys.Oemtilde, 0, 1),
+ new KeyMatch(Keys.D1, 1, 1),
+ new KeyMatch(Keys.D2, 2, 1),
+ new KeyMatch(Keys.D3, 3, 1),
+ new KeyMatch(Keys.D4, 4, 1),
+ new KeyMatch(Keys.D5, 5, 1),
+ new KeyMatch(Keys.D6, 6, 1),
+ new KeyMatch(Keys.D7, 7, 1),
+ new KeyMatch(Keys.D8, 8, 1),
+ new KeyMatch(Keys.D9, 9, 1),
+ new KeyMatch(Keys.D0, 10, 1),
+ new KeyMatch(Keys.OemMinus, 11, 1),
+ new KeyMatch(Keys.Oemplus, 12, 1),
+ new KeyMatch(Keys.Back, 13, 1),
+ new KeyMatch(Keys.Insert, 14, 1),
+ new KeyMatch(Keys.Home, 15, 1),
+ new KeyMatch(Keys.PageUp, 16, 1),
+ new KeyMatch(Keys.NumLock, 17, 1),
+ new KeyMatch(Keys.Divide, 18, 1),
+ new KeyMatch(Keys.Multiply, 19, 1),
+ new KeyMatch(Keys.Subtract, 20, 1),
+
+ // Row 3
+ new KeyMatch(Keys.Tab, 0, 2),
+ new KeyMatch(Keys.Q, 1, 2),
+ new KeyMatch(Keys.W, 2, 2),
+ new KeyMatch(Keys.E, 3, 2),
+ new KeyMatch(Keys.R, 5, 2),
+ new KeyMatch(Keys.T, 6, 2),
+ new KeyMatch(Keys.Y, 7, 2),
+ new KeyMatch(Keys.U, 8, 2),
+ new KeyMatch(Keys.I, 9, 2),
+ new KeyMatch(Keys.O, 10, 2),
+ new KeyMatch(Keys.P, 11, 2),
+ new KeyMatch(Keys.OemOpenBrackets, 12, 2),
+ new KeyMatch(Keys.Oem6, 13, 2),
+ new KeyMatch(Keys.Delete, 14, 2),
+ new KeyMatch(Keys.End, 15, 2),
+ new KeyMatch(Keys.Next, 16, 2),
+ new KeyMatch(Keys.NumPad7, 17, 2),
+ new KeyMatch(Keys.NumPad8, 18, 2),
+ new KeyMatch(Keys.NumPad9, 19, 2),
+ new KeyMatch(Keys.Add, 20, 2),
+
+ // Row 4
+ new KeyMatch(Keys.Capital, 0, 3),
+ new KeyMatch(Keys.A, 1, 3),
+ new KeyMatch(Keys.S, 3, 3),
+ new KeyMatch(Keys.D, 4, 3),
+ new KeyMatch(Keys.F, 5, 3),
+ new KeyMatch(Keys.G, 6, 3),
+ new KeyMatch(Keys.H, 7, 3),
+ new KeyMatch(Keys.J, 8, 3),
+ new KeyMatch(Keys.K, 9, 3),
+ new KeyMatch(Keys.L, 10, 3),
+ new KeyMatch(Keys.Oem1, 11, 3),
+ new KeyMatch(Keys.Oem7, 12, 3),
+ new KeyMatch(Keys.Oem5, 13, 3),
+ new KeyMatch(Keys.Return, 14, 3),
+ new KeyMatch(Keys.NumPad4, 17, 3),
+ new KeyMatch(Keys.NumPad5, 18, 3),
+ new KeyMatch(Keys.NumPad6, 19, 3),
+
+ // Row 5
+ new KeyMatch(Keys.LShiftKey, 1, 4),
+ new KeyMatch(Keys.OemBackslash, 2, 4),
+ new KeyMatch(Keys.Z, 2, 4),
+ new KeyMatch(Keys.X, 3, 4),
+ new KeyMatch(Keys.C, 4, 4),
+ new KeyMatch(Keys.V, 5, 4),
+ new KeyMatch(Keys.B, 6, 4),
+ new KeyMatch(Keys.N, 7, 4),
+ new KeyMatch(Keys.M, 8, 4),
+ new KeyMatch(Keys.Oemcomma, 9, 4),
+ new KeyMatch(Keys.OemPeriod, 10, 4),
+ new KeyMatch(Keys.OemQuestion, 11, 4),
+ new KeyMatch(Keys.RShiftKey, 13, 4),
+ new KeyMatch(Keys.Up, 15, 4),
+ new KeyMatch(Keys.NumPad1, 17, 4),
+ new KeyMatch(Keys.NumPad2, 18, 4),
+ new KeyMatch(Keys.NumPad3, 19, 4),
+ // Both returns return "Return" (Yes...)
+ // new OrionKey(System.Windows.Forms.Keys.Return, 20, 4),
+
+ // Row 6
+ new KeyMatch(Keys.LControlKey, 0, 5),
+ new KeyMatch(Keys.LWin, 1, 5),
+ new KeyMatch(Keys.LMenu, 3, 5),
+ new KeyMatch(Keys.Space, 6, 5),
+ new KeyMatch(Keys.RMenu, 11, 5),
+ new KeyMatch(Keys.RWin, 12, 5),
+ new KeyMatch(Keys.Apps, 13, 5),
+ new KeyMatch(Keys.RControlKey, 14, 5),
+ new KeyMatch(Keys.Left, 15, 5),
+ new KeyMatch(Keys.Down, 16, 5),
+ new KeyMatch(Keys.Right, 17, 5),
+ new KeyMatch(Keys.NumPad0, 18, 5),
+ new KeyMatch(Keys.Decimal, 19, 5)
+ };
+
+ #endregion
+
+ #region Qwertz
+
+ QwertzLayout = new List
+ {
+ // Row 1
+ new KeyMatch(Keys.Escape, 0, 0),
+ new KeyMatch(Keys.F1, 2, 0),
+ new KeyMatch(Keys.F2, 3, 0),
+ new KeyMatch(Keys.F3, 4, 0),
+ new KeyMatch(Keys.F4, 5, 0),
+ new KeyMatch(Keys.F5, 6, 0),
+ new KeyMatch(Keys.F6, 7, 0),
+ new KeyMatch(Keys.F7, 8, 0),
+ new KeyMatch(Keys.F8, 9, 0),
+ new KeyMatch(Keys.F9, 11, 0),
+ new KeyMatch(Keys.F10, 12, 0), // returns 'None'
+ new KeyMatch(Keys.F11, 13, 0),
+ new KeyMatch(Keys.F12, 14, 0),
+ new KeyMatch(Keys.PrintScreen, 15, 0),
+ new KeyMatch(Keys.Scroll, 16, 0),
+ new KeyMatch(Keys.Pause, 17, 0),
+
+ // Row 2
+ new KeyMatch(Keys.Oem5, 0, 1),
+ new KeyMatch(Keys.D1, 1, 1),
+ new KeyMatch(Keys.D2, 2, 1),
+ new KeyMatch(Keys.D3, 3, 1),
+ new KeyMatch(Keys.D4, 4, 1),
+ new KeyMatch(Keys.D5, 5, 1),
+ new KeyMatch(Keys.D6, 6, 1),
+ new KeyMatch(Keys.D7, 7, 1),
+ new KeyMatch(Keys.D8, 8, 1),
+ new KeyMatch(Keys.D9, 9, 1),
+ new KeyMatch(Keys.D0, 10, 1),
+ new KeyMatch(Keys.OemOpenBrackets, 11, 1),
+ new KeyMatch(Keys.Oem6, 12, 1),
+ new KeyMatch(Keys.Back, 13, 1),
+ new KeyMatch(Keys.Insert, 14, 1),
+ new KeyMatch(Keys.Home, 15, 1),
+ new KeyMatch(Keys.PageUp, 16, 1),
+ new KeyMatch(Keys.NumLock, 17, 1),
+ new KeyMatch(Keys.Divide, 18, 1),
+ new KeyMatch(Keys.Multiply, 19, 1),
+ new KeyMatch(Keys.Subtract, 20, 1),
+
+ // Row 3
+ new KeyMatch(Keys.Tab, 0, 2),
+ new KeyMatch(Keys.Q, 1, 2),
+ new KeyMatch(Keys.W, 2, 2),
+ new KeyMatch(Keys.E, 3, 2),
+ new KeyMatch(Keys.R, 5, 2),
+ new KeyMatch(Keys.T, 6, 2),
+ new KeyMatch(Keys.Z, 7, 2),
+ new KeyMatch(Keys.U, 8, 2),
+ new KeyMatch(Keys.I, 9, 2),
+ new KeyMatch(Keys.O, 10, 2),
+ new KeyMatch(Keys.P, 11, 2),
+ new KeyMatch(Keys.Oem1, 12, 2),
+ new KeyMatch(Keys.Oemplus, 13, 2),
+ new KeyMatch(Keys.Delete, 14, 2),
+ new KeyMatch(Keys.End, 15, 2),
+ new KeyMatch(Keys.Next, 16, 2),
+ new KeyMatch(Keys.NumPad7, 17, 2),
+ new KeyMatch(Keys.NumPad8, 18, 2),
+ new KeyMatch(Keys.NumPad9, 19, 2),
+ new KeyMatch(Keys.Add, 20, 2),
+
+ // Row 4
+ new KeyMatch(Keys.Capital, 0, 3),
+ new KeyMatch(Keys.A, 1, 3),
+ new KeyMatch(Keys.S, 3, 3),
+ new KeyMatch(Keys.D, 4, 3),
+ new KeyMatch(Keys.F, 5, 3),
+ new KeyMatch(Keys.G, 6, 3),
+ new KeyMatch(Keys.H, 7, 3),
+ new KeyMatch(Keys.J, 8, 3),
+ new KeyMatch(Keys.K, 9, 3),
+ new KeyMatch(Keys.L, 10, 3),
+ new KeyMatch(Keys.Oemtilde, 11, 3),
+ new KeyMatch(Keys.Oem7, 12, 3),
+ new KeyMatch(Keys.OemQuestion, 13, 3),
+ new KeyMatch(Keys.Return, 14, 3),
+ new KeyMatch(Keys.NumPad4, 17, 3),
+ new KeyMatch(Keys.NumPad5, 18, 3),
+ new KeyMatch(Keys.NumPad6, 19, 3),
+
+ // Row 5
+ new KeyMatch(Keys.LShiftKey, 1, 4),
+ new KeyMatch(Keys.OemBackslash, 2, 4),
+ new KeyMatch(Keys.Y, 2, 4),
+ new KeyMatch(Keys.X, 3, 4),
+ new KeyMatch(Keys.C, 4, 4),
+ new KeyMatch(Keys.V, 5, 4),
+ new KeyMatch(Keys.B, 6, 4),
+ new KeyMatch(Keys.N, 7, 4),
+ new KeyMatch(Keys.M, 8, 4),
+ new KeyMatch(Keys.Oemcomma, 9, 4),
+ new KeyMatch(Keys.OemPeriod, 10, 4),
+ new KeyMatch(Keys.OemMinus, 11, 4),
+ new KeyMatch(Keys.RShiftKey, 13, 4),
+ new KeyMatch(Keys.Up, 15, 4),
+ new KeyMatch(Keys.NumPad1, 17, 4),
+ new KeyMatch(Keys.NumPad2, 18, 4),
+ new KeyMatch(Keys.NumPad3, 19, 4),
+ // Both returns return "Return" (Yes...)
+ // new OrionKey(System.Windows.Forms.Keys.Return, 20, 4),
+
+ // Row 6
+ new KeyMatch(Keys.LControlKey, 0, 5),
+ new KeyMatch(Keys.LWin, 1, 5),
+ new KeyMatch(Keys.Menu, 3, 5), // returns 'None'
+ new KeyMatch(Keys.Space, 6, 5),
+ new KeyMatch(Keys.RMenu, 11, 5),
+ new KeyMatch(Keys.RWin, 12, 5),
+ new KeyMatch(Keys.Apps, 13, 5),
+ new KeyMatch(Keys.RControlKey, 14, 5),
+ new KeyMatch(Keys.Left, 15, 5),
+ new KeyMatch(Keys.Down, 16, 5),
+ new KeyMatch(Keys.Right, 17, 5),
+ new KeyMatch(Keys.NumPad0, 18, 5),
+ new KeyMatch(Keys.Decimal, 19, 5)
+ };
+
+ #endregion
+
+ #region Azerty
+
+ AzertyLayout = new List
+ {
+ // Row 1
+ new KeyMatch(Keys.Escape, 0, 0),
+ new KeyMatch(Keys.F1, 2, 0),
+ new KeyMatch(Keys.F2, 3, 0),
+ new KeyMatch(Keys.F3, 4, 0),
+ new KeyMatch(Keys.F4, 5, 0),
+ new KeyMatch(Keys.F5, 6, 0),
+ new KeyMatch(Keys.F6, 7, 0),
+ new KeyMatch(Keys.F7, 8, 0),
+ new KeyMatch(Keys.F8, 9, 0),
+ new KeyMatch(Keys.F9, 11, 0),
+ new KeyMatch(Keys.F10, 12, 0),
+ new KeyMatch(Keys.F11, 13, 0),
+ new KeyMatch(Keys.F12, 14, 0),
+ new KeyMatch(Keys.PrintScreen, 15, 0),
+ new KeyMatch(Keys.Scroll, 16, 0),
+ new KeyMatch(Keys.Pause, 17, 0),
+
+ // Row 2
+ new KeyMatch(Keys.Oemtilde, 0, 1),
+ new KeyMatch(Keys.D1, 1, 1),
+ new KeyMatch(Keys.D2, 2, 1),
+ new KeyMatch(Keys.D3, 3, 1),
+ new KeyMatch(Keys.D4, 4, 1),
+ new KeyMatch(Keys.D5, 5, 1),
+ new KeyMatch(Keys.D6, 6, 1),
+ new KeyMatch(Keys.D7, 7, 1),
+ new KeyMatch(Keys.D8, 8, 1),
+ new KeyMatch(Keys.D9, 9, 1),
+ new KeyMatch(Keys.D0, 10, 1),
+ new KeyMatch(Keys.OemMinus, 11, 1),
+ new KeyMatch(Keys.Oemplus, 12, 1),
+ new KeyMatch(Keys.Back, 13, 1),
+ new KeyMatch(Keys.Insert, 14, 1),
+ new KeyMatch(Keys.Home, 15, 1),
+ new KeyMatch(Keys.PageUp, 16, 1),
+ new KeyMatch(Keys.NumLock, 17, 1),
+ new KeyMatch(Keys.Divide, 18, 1),
+ new KeyMatch(Keys.Multiply, 19, 1),
+ new KeyMatch(Keys.Subtract, 20, 1),
+
+ // Row 3
+ new KeyMatch(Keys.Tab, 0, 2),
+ new KeyMatch(Keys.A, 1, 2),
+ new KeyMatch(Keys.Z, 2, 2),
+ new KeyMatch(Keys.E, 3, 2),
+ new KeyMatch(Keys.R, 5, 2),
+ new KeyMatch(Keys.T, 6, 2),
+ new KeyMatch(Keys.Y, 7, 2),
+ new KeyMatch(Keys.U, 8, 2),
+ new KeyMatch(Keys.I, 9, 2),
+ new KeyMatch(Keys.O, 10, 2),
+ new KeyMatch(Keys.P, 11, 2),
+ new KeyMatch(Keys.OemQuotes, 12, 2),
+ new KeyMatch(Keys.Oem6, 13, 2),
+ new KeyMatch(Keys.Delete, 14, 2),
+ new KeyMatch(Keys.End, 15, 2),
+ new KeyMatch(Keys.Next, 16, 2),
+ new KeyMatch(Keys.NumPad7, 17, 2),
+ new KeyMatch(Keys.NumPad8, 18, 2),
+ new KeyMatch(Keys.NumPad9, 19, 2),
+ new KeyMatch(Keys.Add, 20, 2),
+
+ // Row 4
+ new KeyMatch(Keys.Capital, 0, 3),
+ new KeyMatch(Keys.Q, 1, 3),
+ new KeyMatch(Keys.S, 3, 3),
+ new KeyMatch(Keys.D, 4, 3),
+ new KeyMatch(Keys.F, 5, 3),
+ new KeyMatch(Keys.G, 6, 3),
+ new KeyMatch(Keys.H, 7, 3),
+ new KeyMatch(Keys.J, 8, 3),
+ new KeyMatch(Keys.K, 9, 3),
+ new KeyMatch(Keys.L, 10, 3),
+ new KeyMatch(Keys.M, 11, 3),
+ new KeyMatch(Keys.Oem7, 12, 3),
+ new KeyMatch(Keys.Oem5, 13, 3),
+ new KeyMatch(Keys.Return, 14, 3),
+ new KeyMatch(Keys.NumPad4, 17, 3),
+ new KeyMatch(Keys.NumPad5, 18, 3),
+ new KeyMatch(Keys.NumPad6, 19, 3),
+
+ // Row 5
+ new KeyMatch(Keys.LShiftKey, 1, 4),
+ new KeyMatch(Keys.OemBackslash, 2, 4),
+ new KeyMatch(Keys.W, 2, 4),
+ new KeyMatch(Keys.X, 3, 4),
+ new KeyMatch(Keys.C, 4, 4),
+ new KeyMatch(Keys.V, 5, 4),
+ new KeyMatch(Keys.B, 6, 4),
+ new KeyMatch(Keys.N, 7, 4),
+ new KeyMatch(Keys.OemQuestion, 8, 4),
+ new KeyMatch(Keys.Oemcomma, 9, 4),
+ new KeyMatch(Keys.OemPeriod, 10, 4),
+ new KeyMatch(Keys.OemQuestion, 11, 4),
+ new KeyMatch(Keys.RShiftKey, 13, 4),
+ new KeyMatch(Keys.Up, 15, 4),
+ new KeyMatch(Keys.NumPad1, 17, 4),
+ new KeyMatch(Keys.NumPad2, 18, 4),
+ new KeyMatch(Keys.NumPad3, 19, 4),
+ // Both returns return "Return" (Yes...)
+ // new OrionKey(System.Windows.Forms.Keys.Return, 20, 4),
+
+ // Row 6
+ new KeyMatch(Keys.LControlKey, 0, 5),
+ new KeyMatch(Keys.LWin, 1, 5),
+ new KeyMatch(Keys.LMenu, 3, 5),
+ new KeyMatch(Keys.Space, 6, 5),
+ new KeyMatch(Keys.RMenu, 11, 5),
+ new KeyMatch(Keys.RWin, 12, 5),
+ new KeyMatch(Keys.Apps, 13, 5),
+ new KeyMatch(Keys.RControlKey, 14, 5),
+ new KeyMatch(Keys.Left, 15, 5),
+ new KeyMatch(Keys.Down, 16, 5),
+ new KeyMatch(Keys.Right, 17, 5),
+ new KeyMatch(Keys.NumPad0, 18, 5),
+ new KeyMatch(Keys.Decimal, 19, 5)
+ };
+
+ #endregion
+ }
+
+ public static List QwertyLayout { get; set; }
+ public static List QwertzLayout { get; set; }
+ public static List AzertyLayout { get; set; }
+ }
+}
diff --git a/Artemis/Artemis/DeviceProviders/Logitech/Utilities/OrionUtilities.cs b/Artemis/Artemis/DeviceProviders/Logitech/Utilities/OrionUtilities.cs
index 736794cca..8057695f0 100644
--- a/Artemis/Artemis/DeviceProviders/Logitech/Utilities/OrionUtilities.cs
+++ b/Artemis/Artemis/DeviceProviders/Logitech/Utilities/OrionUtilities.cs
@@ -7,149 +7,7 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
{
public static class OrionUtilities
{
- public static KeyMapping[] Keymappings =
- {
- // First row
- new KeyMapping(0, 0),
- new KeyMapping(1, 1),
- new KeyMapping(2, 1),
- new KeyMapping(3, 2),
- new KeyMapping(4, 3),
- new KeyMapping(5, 4),
- new KeyMapping(6, 5),
- new KeyMapping(7, 6),
- new KeyMapping(8, 7),
- new KeyMapping(9, 8),
- new KeyMapping(10, 9),
- new KeyMapping(11, 9),
- new KeyMapping(12, 10),
- new KeyMapping(13, 11),
- new KeyMapping(13, 12),
- new KeyMapping(14, 13),
- new KeyMapping(15, 14),
- new KeyMapping(16, 15),
- new KeyMapping(17, 16),
- new KeyMapping(18, 17),
- new KeyMapping(19, 18),
-
- // Second row
- new KeyMapping(21, 21),
- new KeyMapping(22, 22),
- new KeyMapping(23, 23),
- new KeyMapping(24, 24),
- new KeyMapping(25, 25),
- new KeyMapping(26, 26),
- new KeyMapping(27, 27),
- new KeyMapping(28, 28),
- new KeyMapping(29, 29),
- new KeyMapping(30, 30),
- new KeyMapping(31, 31),
- new KeyMapping(32, 32),
- new KeyMapping(33, 33),
- new KeyMapping(34, 34),
- new KeyMapping(35, 35),
- new KeyMapping(36, 36),
- new KeyMapping(37, 37),
- new KeyMapping(38, 38),
- new KeyMapping(39, 39),
- new KeyMapping(40, 40),
- new KeyMapping(41, 41),
-
- // Third row
- new KeyMapping(42, 42),
- new KeyMapping(43, 43),
- new KeyMapping(44, 44),
- new KeyMapping(45, 45),
- new KeyMapping(46, 46),
- new KeyMapping(47, 46),
- new KeyMapping(48, 47),
- new KeyMapping(49, 48),
- new KeyMapping(50, 49),
- new KeyMapping(51, 50),
- new KeyMapping(52, 51),
- new KeyMapping(53, 52),
- new KeyMapping(54, 53),
- new KeyMapping(54, 54),
- new KeyMapping(55, 55),
- new KeyMapping(56, 56),
- new KeyMapping(57, 57),
- new KeyMapping(58, 58),
- new KeyMapping(59, 59),
- new KeyMapping(60, 60),
- new KeyMapping(61, 61),
- new KeyMapping(62, 62),
-
- // Fourth row
- new KeyMapping(63, 63),
- new KeyMapping(64, 64),
- new KeyMapping(65, 65),
- new KeyMapping(66, 65),
- new KeyMapping(67, 66),
- new KeyMapping(68, 67),
- new KeyMapping(69, 68),
- new KeyMapping(70, 69),
- new KeyMapping(71, 70),
- new KeyMapping(72, 71),
- new KeyMapping(73, 72),
- new KeyMapping(74, 73),
- new KeyMapping(75, 74),
- new KeyMapping(76, 75),
- new KeyMapping(76, 76),
- new KeyMapping(78, 77),
- new KeyMapping(79, 78),
- new KeyMapping(79, 79),
- new KeyMapping(80, 80),
- new KeyMapping(81, 81),
- new KeyMapping(82, 82),
-
- // Fifth row
- new KeyMapping(84, 84),
- new KeyMapping(85, 85),
- new KeyMapping(86, 86),
- new KeyMapping(87, 87),
- new KeyMapping(88, 88),
- new KeyMapping(89, 89),
- new KeyMapping(90, 90),
- new KeyMapping(91, 91),
- new KeyMapping(92, 92),
- new KeyMapping(93, 93),
- new KeyMapping(94, 94),
- new KeyMapping(95, 95),
- new KeyMapping(96, 96),
- new KeyMapping(97, 97),
- new KeyMapping(98, 98),
- new KeyMapping(99, 99),
- new KeyMapping(100, 100),
- new KeyMapping(101, 101),
- new KeyMapping(102, 102),
- new KeyMapping(103, 103),
- new KeyMapping(104, 104),
-
- // Sixth row
- new KeyMapping(105, 105),
- new KeyMapping(106, 106),
- new KeyMapping(107, 107),
- new KeyMapping(108, 107),
- new KeyMapping(109, 109),
- new KeyMapping(110, 110),
- new KeyMapping(111, 110),
- new KeyMapping(112, 111),
- new KeyMapping(113, 112),
- new KeyMapping(114, 113),
- new KeyMapping(115, 114),
- new KeyMapping(116, 115),
- new KeyMapping(115, 116), // ALTGR
- new KeyMapping(116, 117),
- new KeyMapping(117, 118),
- new KeyMapping(118, 119),
- new KeyMapping(119, 120),
- new KeyMapping(120, 121),
- new KeyMapping(121, 122),
- new KeyMapping(122, 123),
- new KeyMapping(124, 124)
- };
-
- public static byte[] BitmapToByteArray(Bitmap b, bool remap = true)
+ public static byte[] BitmapToByteArray(Bitmap b, KeyMapping[] keymappings = null)
{
if (b.Width > 21 || b.Height > 6)
b = ResizeImage(b, 21, 6);
@@ -158,23 +16,23 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
var bitmapData = b.LockBits(rect, ImageLockMode.ReadWrite, b.PixelFormat);
var depth = Image.GetPixelFormatSize(b.PixelFormat);
- var step = depth/8;
- var pixels = new byte[21*6*step];
+ var step = depth / 8;
+ var pixels = new byte[21 * 6 * step];
var iptr = bitmapData.Scan0;
// Copy data from pointer to array
Marshal.Copy(iptr, pixels, 0, pixels.Length);
- if (!remap)
+ if (keymappings == null)
return pixels;
var remapped = new byte[pixels.Length];
// Every key is 4 bytes
- for (var i = 0; i <= pixels.Length/4; i++)
+ for (var i = 0; i <= pixels.Length / 4; i++)
{
- var firstSByte = Keymappings[i].Source*4;
- var firstTByte = Keymappings[i].Target*4;
+ var firstSByte = keymappings[i].Source * 4;
+ var firstTByte = keymappings[i].Target * 4;
for (var j = 0; j < 4; j++)
remapped[firstTByte + j] = pixels[firstSByte + j];
@@ -234,4 +92,4 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
public int Target { get; set; }
}
}
-}
\ No newline at end of file
+}
diff --git a/Artemis/Artemis/Models/ProfileEditorModel.cs b/Artemis/Artemis/Models/ProfileEditorModel.cs
index 389d5ecf7..0e818be43 100644
--- a/Artemis/Artemis/Models/ProfileEditorModel.cs
+++ b/Artemis/Artemis/Models/ProfileEditorModel.cs
@@ -141,15 +141,22 @@ namespace Artemis.Models
public async Task RenameProfile(ProfileModel profileModel)
{
+ // Store the old name
+ var oldName = profileModel.Name;
var name = await GetValidProfileName("Rename profile", "Please enter a unique new profile name");
// User cancelled
if (name == null)
return;
+
+ // MakeProfileUnique does a check but also modifies the profile, set the old name back
var doRename = await MakeProfileUnique(profileModel, name, profileModel.Name);
+ var newName = profileModel.Name;
+ profileModel.Name = oldName;
+
if (!doRename)
return;
- ProfileProvider.RenameProfile(profileModel, profileModel.Name);
+ ProfileProvider.RenameProfile(profileModel, newName);
}
public async Task DuplicateProfile(ProfileModel selectedProfile)
diff --git a/Artemis/Artemis/Modules/Abstract/ModuleModel.cs b/Artemis/Artemis/Modules/Abstract/ModuleModel.cs
index 376ce59df..c540fd3de 100644
--- a/Artemis/Artemis/Modules/Abstract/ModuleModel.cs
+++ b/Artemis/Artemis/Modules/Abstract/ModuleModel.cs
@@ -96,10 +96,12 @@ namespace Artemis.Modules.Abstract
public void ChangeProfile(ProfileModel profileModel)
{
- if (!IsInitialized || Equals(profileModel, ProfileModel))
+ if (!IsInitialized)
return;
+ ProfileModel?.Deactivate(_luaManager);
ProfileModel = profileModel;
+
if (!IsOverlay)
ProfileModel?.Activate(_luaManager);
if (ProfileModel != null)