diff --git a/src/Artemis.Core/Models/Surface/Device.cs b/src/Artemis.Core/Models/Surface/Device.cs
index 4ca88f17b..85c287cd1 100644
--- a/src/Artemis.Core/Models/Surface/Device.cs
+++ b/src/Artemis.Core/Models/Surface/Device.cs
@@ -99,9 +99,12 @@ namespace Artemis.Core.Models.Surface
(int) Math.Round(RgbDevice.Size.Height * Surface.Scale, MidpointRounding.AwayFromZero)
);
+ if (!Leds.Any())
+ return;
+
foreach (var led in Leds)
led.CalculateRenderRectangle();
-
+
var path = new GraphicsPath();
path.AddRectangles(Leds.Select(l => l.AbsoluteRenderRectangle).ToArray());
RenderPath = path;
diff --git a/src/Artemis.Core/Plugins/Abstract/Device.cs b/src/Artemis.Core/Plugins/Abstract/Device.cs
index e48bda8b7..0f2f02f59 100644
--- a/src/Artemis.Core/Plugins/Abstract/Device.cs
+++ b/src/Artemis.Core/Plugins/Abstract/Device.cs
@@ -1,4 +1,6 @@
using System;
+using System.IO;
+using Artemis.Core.Extensions;
using Artemis.Core.Plugins.Models;
using RGB.NET.Core;
@@ -16,5 +18,18 @@ namespace Artemis.Core.Plugins.Abstract
{
DeviceProvider = deviceProvider ?? throw new ArgumentNullException(nameof(deviceProvider));
}
+
+
+ protected void ResolveAbsolutePath(Type type, object sender, ResolvePathEventArgs e)
+ {
+ if (sender.GetType().IsGenericType(type))
+ {
+ // Start from the plugin directory
+ if (e.RelativePart != null && e.FileName != null)
+ e.FinalPath = Path.Combine(PluginInfo.Directory.FullName, e.RelativePart, e.FileName);
+ else if (e.RelativePath != null)
+ e.FinalPath = Path.Combine(PluginInfo.Directory.FullName, e.RelativePath);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/src/Artemis.Core/Services/CoreService.cs b/src/Artemis.Core/Services/CoreService.cs
index ca61bdc34..60d80819a 100644
--- a/src/Artemis.Core/Services/CoreService.cs
+++ b/src/Artemis.Core/Services/CoreService.cs
@@ -30,6 +30,7 @@ namespace Artemis.Core.Services
_surfaceService = surfaceService;
_rgbService.Surface.Updating += SurfaceOnUpdating;
_rgbService.Surface.Updated += SurfaceOnUpdated;
+
Task.Run(Initialize);
}
diff --git a/src/Artemis.Core/Services/Interfaces/IPluginService.cs b/src/Artemis.Core/Services/Interfaces/IPluginService.cs
index af6b27c5e..c50bec069 100644
--- a/src/Artemis.Core/Services/Interfaces/IPluginService.cs
+++ b/src/Artemis.Core/Services/Interfaces/IPluginService.cs
@@ -69,8 +69,20 @@ namespace Artemis.Core.Services.Interfaces
/// Returns a list of plug instances of type
List GetPluginsOfType() where T : Plugin;
+ Plugin GetDevicePlugin(IRGBDevice device);
+
#region Events
+ ///
+ /// Occurs when built-in plugins are being loaded
+ ///
+ event EventHandler CopyingBuildInPlugins;
+
+ ///
+ /// Occurs when a plugin has started loading
+ ///
+ event EventHandler PluginLoading;
+
///
/// Occurs when a plugin has loaded
///
@@ -92,7 +104,5 @@ namespace Artemis.Core.Services.Interfaces
event EventHandler PluginDisabled;
#endregion
-
- Plugin GetDevicePlugin(IRGBDevice device);
}
}
\ No newline at end of file
diff --git a/src/Artemis.Core/Services/PluginService.cs b/src/Artemis.Core/Services/PluginService.cs
index bce9a577b..8ec5da868 100644
--- a/src/Artemis.Core/Services/PluginService.cs
+++ b/src/Artemis.Core/Services/PluginService.cs
@@ -43,11 +43,12 @@ namespace Artemis.Core.Services
///
public void CopyBuiltInPlugins()
{
+ OnCopyingBuildInPlugins();
var pluginDirectory = new DirectoryInfo(Path.Combine(Constants.DataFolder, "plugins"));
// Iterate built-in plugins
- var varBuiltInPluginDirectory = new DirectoryInfo(Path.Combine(Directory.GetCurrentDirectory(), "Plugins"));
- foreach (var subDirectory in varBuiltInPluginDirectory.EnumerateDirectories())
+ var builtInPluginDirectory = new DirectoryInfo(Path.Combine(Directory.GetCurrentDirectory(), "Plugins"));
+ foreach (var subDirectory in builtInPluginDirectory.EnumerateDirectories())
{
// Load the metadata
var builtInMetadataFile = Path.Combine(subDirectory.FullName, "plugin.json");
@@ -118,6 +119,7 @@ namespace Artemis.Core.Services
// Locate the main entry
var pluginInfo = JsonConvert.DeserializeObject(File.ReadAllText(metadataFile));
pluginInfo.Directory = subDirectory;
+ OnPluginLoading(new PluginEventArgs(pluginInfo));
LoadPlugin(pluginInfo);
}
catch (Exception e)
@@ -307,11 +309,23 @@ namespace Artemis.Core.Services
#region Events
+ public event EventHandler CopyingBuildInPlugins;
+ public event EventHandler PluginLoading;
public event EventHandler PluginLoaded;
public event EventHandler PluginUnloaded;
public event EventHandler PluginEnabled;
public event EventHandler PluginDisabled;
+ protected virtual void OnCopyingBuildInPlugins()
+ {
+ CopyingBuildInPlugins?.Invoke(this, EventArgs.Empty);
+ }
+
+ protected virtual void OnPluginLoading(PluginEventArgs e)
+ {
+ PluginLoading?.Invoke(this, e);
+ }
+
protected virtual void OnPluginLoaded(PluginEventArgs e)
{
PluginLoaded?.Invoke(this, e);
diff --git a/src/Artemis.Plugins.Devices.Corsair/CorsairDevice.cs b/src/Artemis.Plugins.Devices.Corsair/CorsairDevice.cs
index 98e4b0272..610b1233c 100644
--- a/src/Artemis.Plugins.Devices.Corsair/CorsairDevice.cs
+++ b/src/Artemis.Plugins.Devices.Corsair/CorsairDevice.cs
@@ -20,24 +20,12 @@ namespace Artemis.Plugins.Devices.Corsair
public override void EnablePlugin()
{
- PathHelper.ResolvingAbsolutePath += ResolveCorsairPath;
+ PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(CorsairRGBDevice<>), sender, args);
CorsairDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "CUESDK.dll"));
CorsairDeviceProvider.PossibleX86NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x86", "CUESDK.dll"));
_rgbService.AddDeviceProvider(DeviceProvider);
}
-
- private void ResolveCorsairPath(object sender, ResolvePathEventArgs e)
- {
- if (sender.GetType().IsGenericType(typeof(CorsairRGBDevice<>)))
- {
- // Start from the plugin directory
- if (e.RelativePart != null && e.FileName != null)
- e.FinalPath = Path.Combine(PluginInfo.Directory.FullName, e.RelativePart, e.FileName);
- else if (e.RelativePath != null)
- e.FinalPath = Path.Combine(PluginInfo.Directory.FullName, e.RelativePath);
- }
- }
-
+
public override void DisablePlugin()
{
// TODO: Remove the device provider from the surface
diff --git a/src/Artemis.Plugins.Devices.Logitech/Artemis.Plugins.Devices.Logitech.csproj b/src/Artemis.Plugins.Devices.Logitech/Artemis.Plugins.Devices.Logitech.csproj
new file mode 100644
index 000000000..8bf88eab9
--- /dev/null
+++ b/src/Artemis.Plugins.Devices.Logitech/Artemis.Plugins.Devices.Logitech.csproj
@@ -0,0 +1,80 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D}
+ Library
+ Properties
+ Artemis.Plugins.Devices.Logitech
+ Artemis.Plugins.Devices.Logitech
+ v4.7.2
+ 512
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\..\..\RGB.NET\bin\net45\RGB.NET.Core.dll
+
+
+ ..\..\..\RGB.NET\bin\net45\RGB.NET.Devices.Logitech.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {9B811F9B-86B9-4771-87AF-72BAE7078A36}
+ Artemis.Core
+
+
+
+
+ PreserveNewest
+
+
+ PreserveNewest
+
+
+
+
+ PreserveNewest
+
+
+
+
+ echo Copying resources to plugin output directory
+XCOPY "$(ProjectDir)Images" "$(TargetDir)Images" /s /q /i /y
+XCOPY "$(ProjectDir)Layouts" "$(TargetDir)Layouts" /s /q /i /y
+echo Copying plugin to Artemis.UI output directory
+XCOPY "$(TargetDir.TrimEnd('\'))" "$(SolutionDir)\Artemis.UI\$(OutDir)Plugins\$(ProjectName)" /s /q /i /y
+
+
\ No newline at end of file
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/G910.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/G910.png
new file mode 100644
index 000000000..dd4220451
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/G910.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/0_Equals_CurlyBracketRight.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/0_Equals_CurlyBracketRight.png
new file mode 100644
index 000000000..e8afa3e2a
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/0_Equals_CurlyBracketRight.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/1_ExclamationMark.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/1_ExclamationMark.png
new file mode 100644
index 000000000..1beb4e4c6
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/1_ExclamationMark.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/2_QuotationMark_Exponent2.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/2_QuotationMark_Exponent2.png
new file mode 100644
index 000000000..e424ed93e
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/2_QuotationMark_Exponent2.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/3_SectionSign_Exponent3.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/3_SectionSign_Exponent3.png
new file mode 100644
index 000000000..0611817fb
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/3_SectionSign_Exponent3.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/4_Dollar.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/4_Dollar.png
new file mode 100644
index 000000000..1c5c7c5ea
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/4_Dollar.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/5_Percent.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/5_Percent.png
new file mode 100644
index 000000000..42632546b
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/5_Percent.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/6_Ampersand.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/6_Ampersand.png
new file mode 100644
index 000000000..b5af4e71a
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/6_Ampersand.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/7_Slash_CurlyBracketLeft.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/7_Slash_CurlyBracketLeft.png
new file mode 100644
index 000000000..73a3a4691
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/7_Slash_CurlyBracketLeft.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/8_BracketLeft_SquareBracketLeft.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/8_BracketLeft_SquareBracketLeft.png
new file mode 100644
index 000000000..e9d9352e4
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/8_BracketLeft_SquareBracketLeft.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/9_BracketRight_SquareBracketRight.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/9_BracketRight_SquareBracketRight.png
new file mode 100644
index 000000000..638f59957
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/9_BracketRight_SquareBracketRight.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/A.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/A.png
new file mode 100644
index 000000000..925c71c45
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/A.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/AE.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/AE.png
new file mode 100644
index 000000000..5714c5bb9
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/AE.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/AccentGrave_AccentAcute.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/AccentGrave_AccentAcute.png
new file mode 100644
index 000000000..2516065dd
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/AccentGrave_AccentAcute.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Alt.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Alt.png
new file mode 100644
index 000000000..864737ae6
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Alt.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/AltGr.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/AltGr.png
new file mode 100644
index 000000000..dfc4b37f0
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/AltGr.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Asterisk.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Asterisk.png
new file mode 100644
index 000000000..1d8608b68
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Asterisk.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/B.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/B.png
new file mode 100644
index 000000000..296c37319
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/B.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Backspace.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Backspace.png
new file mode 100644
index 000000000..5d24401b7
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Backspace.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/BildDown.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/BildDown.png
new file mode 100644
index 000000000..90de4fb36
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/BildDown.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/BildUp.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/BildUp.png
new file mode 100644
index 000000000..31c1e229b
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/BildUp.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/C.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/C.png
new file mode 100644
index 000000000..3eb305ed3
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/C.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CapsLockA.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CapsLockA.png
new file mode 100644
index 000000000..51add26c8
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CapsLockA.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretDown.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretDown.png
new file mode 100644
index 000000000..570394938
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretDown.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretLeft.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretLeft.png
new file mode 100644
index 000000000..553e6e0ec
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretLeft.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretRight.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretRight.png
new file mode 100644
index 000000000..2e067445c
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretRight.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretUp.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretUp.png
new file mode 100644
index 000000000..3d72c3807
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/CaretUp.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Circumflex_Degree.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Circumflex_Degree.png
new file mode 100644
index 000000000..4e1727508
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Circumflex_Degree.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Comma_Entf.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Comma_Entf.png
new file mode 100644
index 000000000..9659d8938
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Comma_Entf.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Comma_Semicolon.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Comma_Semicolon.png
new file mode 100644
index 000000000..ff4f2056d
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Comma_Semicolon.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/D.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/D.png
new file mode 100644
index 000000000..ec7475ea8
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/D.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Dot_Colon.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Dot_Colon.png
new file mode 100644
index 000000000..4ca7ad577
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Dot_Colon.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Drucken.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Drucken.png
new file mode 100644
index 000000000..dd20a5e4e
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Drucken.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/E_Euro.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/E_Euro.png
new file mode 100644
index 000000000..7f27c30c8
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/E_Euro.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Einfg.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Einfg.png
new file mode 100644
index 000000000..fdcfeee92
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Einfg.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Ende.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Ende.png
new file mode 100644
index 000000000..8433a3308
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Ende.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Enter.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Enter.png
new file mode 100644
index 000000000..155018330
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Enter.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Entf.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Entf.png
new file mode 100644
index 000000000..d6e9deb44
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Entf.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Escape.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Escape.png
new file mode 100644
index 000000000..741b24c15
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Escape.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F.png
new file mode 100644
index 000000000..fa20fc1c3
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F1.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F1.png
new file mode 100644
index 000000000..37495c1ad
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F1.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F10.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F10.png
new file mode 100644
index 000000000..fa18ec638
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F10.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F11.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F11.png
new file mode 100644
index 000000000..af3aa8a07
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F11.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F12.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F12.png
new file mode 100644
index 000000000..f269431dc
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F12.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F2.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F2.png
new file mode 100644
index 000000000..b2d82117a
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F2.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F3.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F3.png
new file mode 100644
index 000000000..31962762f
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F3.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F4.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F4.png
new file mode 100644
index 000000000..849a49f82
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F4.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F5.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F5.png
new file mode 100644
index 000000000..1251a801d
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F5.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F6.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F6.png
new file mode 100644
index 000000000..ef3137cc9
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F6.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F7.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F7.png
new file mode 100644
index 000000000..56971fb60
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F7.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F8.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F8.png
new file mode 100644
index 000000000..8af4c3ec6
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F8.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F9.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F9.png
new file mode 100644
index 000000000..44748151e
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/F9.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G.png
new file mode 100644
index 000000000..c57c3edee
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G1.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G1.png
new file mode 100644
index 000000000..2e00a8e11
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G1.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G2.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G2.png
new file mode 100644
index 000000000..f8d3a3322
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G2.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G3.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G3.png
new file mode 100644
index 000000000..9ddb3282e
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G3.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G4.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G4.png
new file mode 100644
index 000000000..a79a2e929
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G4.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G5.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G5.png
new file mode 100644
index 000000000..e7bb655e9
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G5.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G6.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G6.png
new file mode 100644
index 000000000..5d569e843
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G6.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G7.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G7.png
new file mode 100644
index 000000000..4858d4766
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G7.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G8.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G8.png
new file mode 100644
index 000000000..de667d2c3
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G8.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G9.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G9.png
new file mode 100644
index 000000000..5988127f5
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/G9.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/H.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/H.png
new file mode 100644
index 000000000..3a62b3031
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/H.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Hash_Apostrophe.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Hash_Apostrophe.png
new file mode 100644
index 000000000..1d25a9de6
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Hash_Apostrophe.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Hyphen_Underscore.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Hyphen_Underscore.png
new file mode 100644
index 000000000..754df53c3
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Hyphen_Underscore.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/I.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/I.png
new file mode 100644
index 000000000..78fecd81d
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/I.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/J.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/J.png
new file mode 100644
index 000000000..072227dac
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/J.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/K.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/K.png
new file mode 100644
index 000000000..fb572cc11
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/K.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/L.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/L.png
new file mode 100644
index 000000000..8d878c81b
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/L.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/LessThan_GreaterThan_Pipe.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/LessThan_GreaterThan_Pipe.png
new file mode 100644
index 000000000..eefd2ac26
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/LessThan_GreaterThan_Pipe.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/M_Mu.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/M_Mu.png
new file mode 100644
index 000000000..7d1a93b66
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/M_Mu.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Menu.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Menu.png
new file mode 100644
index 000000000..63edb4bd9
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Menu.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Minus.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Minus.png
new file mode 100644
index 000000000..7e87e5cea
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Minus.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/N.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/N.png
new file mode 100644
index 000000000..9e9955309
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/N.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num.png
new file mode 100644
index 000000000..ee26594d5
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num0_Einfg.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num0_Einfg.png
new file mode 100644
index 000000000..45d8fe622
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num0_Einfg.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num1_Ende.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num1_Ende.png
new file mode 100644
index 000000000..1c7637260
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num1_Ende.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num2_ArrowDown.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num2_ArrowDown.png
new file mode 100644
index 000000000..de979d14b
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num2_ArrowDown.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num3_BildDown.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num3_BildDown.png
new file mode 100644
index 000000000..2229b9679
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num3_BildDown.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num4_ArrowLeft.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num4_ArrowLeft.png
new file mode 100644
index 000000000..6ffa5d564
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num4_ArrowLeft.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num5.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num5.png
new file mode 100644
index 000000000..2cd2843c0
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num5.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num6_ArrowRight.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num6_ArrowRight.png
new file mode 100644
index 000000000..2e2eaa7ad
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num6_ArrowRight.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num7_Pos1.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num7_Pos1.png
new file mode 100644
index 000000000..b523d9bfb
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num7_Pos1.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num8_ArrowUp.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num8_ArrowUp.png
new file mode 100644
index 000000000..ad683d717
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num8_ArrowUp.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num9_BildUp.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num9_BildUp.png
new file mode 100644
index 000000000..f41195d31
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Num9_BildUp.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/NumEnter.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/NumEnter.png
new file mode 100644
index 000000000..e52f4e65c
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/NumEnter.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/NumPlus.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/NumPlus.png
new file mode 100644
index 000000000..db412dc53
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/NumPlus.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/O.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/O.png
new file mode 100644
index 000000000..b9c8cef66
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/O.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/OE.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/OE.png
new file mode 100644
index 000000000..f5b05a173
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/OE.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/P.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/P.png
new file mode 100644
index 000000000..5c918f9ff
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/P.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/PauseUntbr.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/PauseUntbr.png
new file mode 100644
index 000000000..efc9f3959
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/PauseUntbr.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Plus_Asterisk_Tilde.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Plus_Asterisk_Tilde.png
new file mode 100644
index 000000000..b072a01a6
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Plus_Asterisk_Tilde.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Pos1.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Pos1.png
new file mode 100644
index 000000000..bf024681e
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Pos1.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Q_At.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Q_At.png
new file mode 100644
index 000000000..365b98723
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Q_At.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/QuestionMark_SharpS_Backslash.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/QuestionMark_SharpS_Backslash.png
new file mode 100644
index 000000000..91d17bf98
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/QuestionMark_SharpS_Backslash.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/R.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/R.png
new file mode 100644
index 000000000..1cdbf0dfa
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/R.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Rollen.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Rollen.png
new file mode 100644
index 000000000..f3696df34
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Rollen.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/S.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/S.png
new file mode 100644
index 000000000..919121ddb
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/S.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Shift.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Shift.png
new file mode 100644
index 000000000..9ac730f1c
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Shift.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/ShiftBig.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/ShiftBig.png
new file mode 100644
index 000000000..f5ea3126a
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/ShiftBig.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Slash.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Slash.png
new file mode 100644
index 000000000..13609b386
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Slash.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Space.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Space.png
new file mode 100644
index 000000000..6c09dcd09
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Space.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Strg.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Strg.png
new file mode 100644
index 000000000..d3761c87a
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Strg.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/T.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/T.png
new file mode 100644
index 000000000..00328f2b8
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/T.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Tab.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Tab.png
new file mode 100644
index 000000000..c52c503f6
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Tab.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/U.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/U.png
new file mode 100644
index 000000000..c015e3bf4
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/U.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/UE.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/UE.png
new file mode 100644
index 000000000..8d51805f8
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/UE.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/V.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/V.png
new file mode 100644
index 000000000..0155f454f
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/V.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/W.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/W.png
new file mode 100644
index 000000000..b99c2da94
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/W.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Windows.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Windows.png
new file mode 100644
index 000000000..68198cdbf
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Windows.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/X.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/X.png
new file mode 100644
index 000000000..1032b2367
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/X.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Y.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Y.png
new file mode 100644
index 000000000..9c6632d8b
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Y.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Z.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Z.png
new file mode 100644
index 000000000..a05a3ac3b
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Keyboards/Raptor_Keys/Z.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Mice/G403.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Mice/G403.png
new file mode 100644
index 000000000..4b0e6c722
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/Mice/G403.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/empty.png b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/empty.png
new file mode 100644
index 000000000..af367b99a
Binary files /dev/null and b/src/Artemis.Plugins.Devices.Logitech/Images/Logitech/empty.png differ
diff --git a/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/G610/UK.xml b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/G610/UK.xml
new file mode 100644
index 000000000..72023df7a
--- /dev/null
+++ b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/G610/UK.xml
@@ -0,0 +1,226 @@
+
+
+ Logitech G610 - Physical UK
+ Physical UK-Layout of Logitech G610 (Logical: ???)
+ Darth Affe
+ Keyboard
+ Key
+ Logitech
+ G610
+ 442
+ 152
+ Images\Logitech\Keyboards
+
+
+
+
+ 5
+ 28
+
+
+
+ +12.667
+
+
+
+
+
+
+ +12.667
+
+
+
+
+
+
+ +12.667
+
+
+
+
+
+
+ +6.75
+
+
+
+
+
+
+ 5
+ 52
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+ +6.75
+
+
+
+
+
+ +6.75
+
+
+
+
+
+
+
+ 5
+ +
+ 1.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ M0,0 L0,0.5 L0.16666666666,0.5 L0.16666666666,1 L1,1 L1,0 Z
+ 1.5
+ 2
+
+
+
+ +6.75
+
+
+
+
+
+ +6.75
+
+
+
+
+ 2
+
+
+
+
+ 5
+ ~
+ 1.75
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +94.25
+
+
+
+
+
+
+ 5
+ +
+ 1.25
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.75
+
+
+
+ +25.75
+
+
+
+ +25.75
+
+
+
+
+ 2
+
+
+
+
+ 5
+ ~
+ 1.5
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 5.75
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 1.5
+
+
+
+ +6.75
+
+
+
+
+
+ +6.75
+ 2
+
+
+
+
+ M 0.43535,0.91509 c -0.083,-0.013 -0.1809,-0.0541 -0.24123,-0.11683 -0.21672,-0.2247 -0.10831,-0.63995 0.19645,-0.71442 0.044,-0.0108 0.44173,-0.0156 0.47505,-0.006 0.0632,0.0184 0.0708,0.15184 0.0119,0.18175 -0.0174,0.009 -0.0369,0.009 -0.21797,0.009 -0.23755,0 -0.25559,-0.002 -0.3144,0.067 -0.14073,0.16404 -0.0357,0.36697 0.16357,0.40076 0.0569,0.01 0.0835,0.0391 0.0831,0.0846 -4.5e-4,0.0636 -0.0621,0.10873 -0.15647,0.0941 z m 0.36491,6.7e-4 c -0.0366,-0.0138 -0.0539,-0.0325 -0.0567,-0.0973 -0.006,-0.14226 -0.0741,-0.23758 -0.21563,-0.24355 -0.0562,-0.003 -0.0629,-0.004 -0.0811,-0.0233 -0.0344,-0.0359 -0.021,-0.11984 0.0238,-0.14402 0.0129,-0.007 0.0145,-0.007 0.19631,-0.007 0.25897,0 0.25297,0.005 0.25151,0.27271 -8e-4,0.17441 -8e-4,0.19394 -0.0107,0.20972 -0.0183,0.0297 -0.0769,0.0443 -0.10753,0.0326 Z
+ 5
+ 5
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/G810/UK.xml b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/G810/UK.xml
new file mode 100644
index 000000000..c2e38a4e4
--- /dev/null
+++ b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/G810/UK.xml
@@ -0,0 +1,226 @@
+
+
+ Logitech G810 - Physical UK
+ Physical UK-Layout of Logitech G810 (Logical: ???)
+ Darth Affe
+ Keyboard
+ Key
+ Logitech
+ G810
+ 442
+ 152
+ Images\Logitech\Keyboards
+
+
+
+
+ 5
+ 28
+
+
+
+ +12.667
+
+
+
+
+
+
+ +12.667
+
+
+
+
+
+
+ +12.667
+
+
+
+
+
+
+ +6.75
+
+
+
+
+
+
+ 5
+ 52
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+ +6.75
+
+
+
+
+
+ +6.75
+
+
+
+
+
+
+
+ 5
+ +
+ 1.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ M0,0 L0,0.5 L0.16666666666,0.5 L0.16666666666,1 L1,1 L1,0 Z
+ 1.5
+ 2
+
+
+
+ +6.75
+
+
+
+
+
+ +6.75
+
+
+
+
+ 2
+
+
+
+
+ 5
+ ~
+ 1.75
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +94.25
+
+
+
+
+
+
+ 5
+ +
+ 1.25
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.75
+
+
+
+ +25.75
+
+
+
+ +25.75
+
+
+
+
+ 2
+
+
+
+
+ 5
+ ~
+ 1.5
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 5.75
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 1.5
+
+
+
+ +6.75
+
+
+
+
+
+ +6.75
+ 2
+
+
+
+
+ M 0.43535,0.91509 c -0.083,-0.013 -0.1809,-0.0541 -0.24123,-0.11683 -0.21672,-0.2247 -0.10831,-0.63995 0.19645,-0.71442 0.044,-0.0108 0.44173,-0.0156 0.47505,-0.006 0.0632,0.0184 0.0708,0.15184 0.0119,0.18175 -0.0174,0.009 -0.0369,0.009 -0.21797,0.009 -0.23755,0 -0.25559,-0.002 -0.3144,0.067 -0.14073,0.16404 -0.0357,0.36697 0.16357,0.40076 0.0569,0.01 0.0835,0.0391 0.0831,0.0846 -4.5e-4,0.0636 -0.0621,0.10873 -0.15647,0.0941 z m 0.36491,6.7e-4 c -0.0366,-0.0138 -0.0539,-0.0325 -0.0567,-0.0973 -0.006,-0.14226 -0.0741,-0.23758 -0.21563,-0.24355 -0.0562,-0.003 -0.0629,-0.004 -0.0811,-0.0233 -0.0344,-0.0359 -0.021,-0.11984 0.0238,-0.14402 0.0129,-0.007 0.0145,-0.007 0.19631,-0.007 0.25897,0 0.25297,0.005 0.25151,0.27271 -8e-4,0.17441 -8e-4,0.19394 -0.0107,0.20972 -0.0183,0.0297 -0.0769,0.0443 -0.10753,0.0326 Z
+ 5
+ 5
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/G910/UK.xml b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/G910/UK.xml
new file mode 100644
index 000000000..f1b94c459
--- /dev/null
+++ b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/G910/UK.xml
@@ -0,0 +1,390 @@
+
+
+ Logitech G910 - Physical UK
+ Physical UK-Layout of Logitech G910 (Logical: ???)
+ Darth Affe
+ Keyboard
+ Key
+ Logitech
+ G910
+ 491
+ 238
+ Images\Logitech\Keyboards
+ G910.png
+
+
+
+ 42
+ 28
+
+
+
+ +12.667
+
+
+
+
+
+
+ +12.667
+
+
+
+
+
+
+ +12.667
+
+
+
+
+
+
+ +6.75
+
+
+
+
+
+
+ 42
+ 52
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+ +6.75
+
+
+
+
+
+ +6.75
+
+
+
+
+
+
+
+ 42
+ +
+ 1.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ M0,0 L0,0.5 L0.16666666666,0.5 L0.16666666666,1 L1,1 L1,0 Z
+ 1.5
+ 2
+
+
+
+ +6.75
+
+
+
+
+
+ +6.75
+
+
+
+
+ 2
+
+
+
+
+ 42
+ ~
+ 1.75
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +94.25
+
+
+
+
+
+
+ 42
+ +
+ 1.25
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.75
+
+
+
+ +25.75
+
+
+
+ +25.75
+
+
+
+
+ 2
+
+
+
+
+ 42
+ ~
+ 1.5
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 5.75
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 1.5
+
+
+
+ +6.75
+
+
+
+
+
+ +6.75
+ 2
+
+
+
+
+
+ 18
+ 52
+
+
+ 18
+ +
+
+
+ 18
+ +
+
+
+ 18
+ +
+
+
+ 18
+ +
+
+
+
+ 73.667
+ 9
+
+
+
+
+
+
+ M 0.43535,0.91509 c -0.083,-0.013 -0.1809,-0.0541 -0.24123,-0.11683 -0.21672,-0.2247 -0.10831,-0.63995 0.19645,-0.71442 0.044,-0.0108 0.44173,-0.0156 0.47505,-0.006 0.0632,0.0184 0.0708,0.15184 0.0119,0.18175 -0.0174,0.009 -0.0369,0.009 -0.21797,0.009 -0.23755,0 -0.25559,-0.002 -0.3144,0.067 -0.14073,0.16404 -0.0357,0.36697 0.16357,0.40076 0.0569,0.01 0.0835,0.0391 0.0831,0.0846 -4.5e-4,0.0636 -0.0621,0.10873 -0.15647,0.0941 z m 0.36491,6.7e-4 c -0.0366,-0.0138 -0.0539,-0.0325 -0.0567,-0.0973 -0.006,-0.14226 -0.0741,-0.23758 -0.21563,-0.24355 -0.0562,-0.003 -0.0629,-0.004 -0.0811,-0.0233 -0.0344,-0.0359 -0.021,-0.11984 0.0238,-0.14402 0.0129,-0.007 0.0145,-0.007 0.19631,-0.007 0.25897,0 0.25297,0.005 0.25151,0.27271 -8e-4,0.17441 -8e-4,0.19394 -0.0107,0.20972 -0.0183,0.0297 -0.0769,0.0443 -0.10753,0.0326 Z
+ 18
+ 28
+
+
+ M 0,0 L0.15,1 0.85,1 L 1,0 Z
+ 92.5
+ 166.5
+ 55mm
+ 9mm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/Pro/UK.xml b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/Pro/UK.xml
new file mode 100644
index 000000000..4d42f843d
--- /dev/null
+++ b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Keyboards/Pro/UK.xml
@@ -0,0 +1,189 @@
+
+
+ Logitech Pro Gaming Keyboard - Physical UK
+ Physical UK-Layout of Logitech Pro Gaming Keyboard (Logical: ???)
+ Darth Affe
+ Keyboard
+ Key
+ Logitech
+ Pro
+ 360
+ 152
+ Images\Logitech\Keyboards
+
+
+
+
+ 5
+ 28
+
+
+
+ +12.667
+
+
+
+
+
+
+ +12.667
+
+
+
+
+
+
+ +12.667
+
+
+
+
+
+
+ +6.75
+
+
+
+
+
+
+ 5
+ 52
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+ +6.75
+
+
+
+
+
+
+ 5
+ +
+ 1.5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ M0,0 L0,0.5 L0.16666666666,0.5 L0.16666666666,1 L1,1 L1,0 Z
+ 1.5
+ 2
+
+
+
+ +6.75
+
+
+
+
+
+
+ 5
+ +
+ 1.75
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+ +
+ 1.25
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.75
+
+
+
+ +25.75
+
+
+
+
+ 5
+ +
+ 1.5
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 5.75
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 1.25
+
+
+ 1.5
+
+
+
+ +6.75
+
+
+
+
+
+ M 0.43535,0.91509 c -0.083,-0.013 -0.1809,-0.0541 -0.24123,-0.11683 -0.21672,-0.2247 -0.10831,-0.63995 0.19645,-0.71442 0.044,-0.0108 0.44173,-0.0156 0.47505,-0.006 0.0632,0.0184 0.0708,0.15184 0.0119,0.18175 -0.0174,0.009 -0.0369,0.009 -0.21797,0.009 -0.23755,0 -0.25559,-0.002 -0.3144,0.067 -0.14073,0.16404 -0.0357,0.36697 0.16357,0.40076 0.0569,0.01 0.0835,0.0391 0.0831,0.0846 -4.5e-4,0.0636 -0.0621,0.10873 -0.15647,0.0941 z m 0.36491,6.7e-4 c -0.0366,-0.0138 -0.0539,-0.0325 -0.0567,-0.0973 -0.006,-0.14226 -0.0741,-0.23758 -0.21563,-0.24355 -0.0562,-0.003 -0.0629,-0.004 -0.0811,-0.0233 -0.0344,-0.0359 -0.021,-0.11984 0.0238,-0.14402 0.0129,-0.007 0.0145,-0.007 0.19631,-0.007 0.25897,0 0.25297,0.005 0.25151,0.27271 -8e-4,0.17441 -8e-4,0.19394 -0.0107,0.20972 -0.0183,0.0297 -0.0769,0.0443 -0.10753,0.0326 Z
+ 5
+ 5
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Mice/G403.xml b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Mice/G403.xml
new file mode 100644
index 000000000..f60da7443
--- /dev/null
+++ b/src/Artemis.Plugins.Devices.Logitech/Layouts/Logitech/Mice/G403.xml
@@ -0,0 +1,23 @@
+
+
+ Logitech G403
+ Layout of the Logitech G403 Mouse
+ Darth Affe
+ Mouse
+ Device
+ Logitech
+ G403
+ 67
+ 125
+ Images\Logitech\Mice
+ G403.png
+
+
+ m 0.7025,0.00275 -0.15,0 -0,0.26 h 0.15 z m -0.16732,0.7925 c -0.7,0.0159 -0.55,0.19383 -0.006236,0.19067 l 0.001707,-0.0416 c -0.425,-0.0115 -0.225,-0.11 0.005116,-0.10 z m 0.410,0.0779 -0.435,0 0,0.0401 0.225,0 0,0.0437 0.21,0 z
+ 24
+ 15
+ 17mm
+ 81mm
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.Plugins.Devices.Logitech/LogitechDevice.cs b/src/Artemis.Plugins.Devices.Logitech/LogitechDevice.cs
new file mode 100644
index 000000000..937bc5f13
--- /dev/null
+++ b/src/Artemis.Plugins.Devices.Logitech/LogitechDevice.cs
@@ -0,0 +1,37 @@
+using System;
+using System.IO;
+using Artemis.Core.Extensions;
+using Artemis.Core.Plugins.Abstract;
+using Artemis.Core.Plugins.Models;
+using Artemis.Core.Services.Interfaces;
+using RGB.NET.Core;
+using RGB.NET.Devices.Logitech;
+
+namespace Artemis.Plugins.Devices.Logitech
+{
+ public class LogitechDevice : Device
+ {
+ private readonly IRgbService _rgbService;
+
+ public LogitechDevice(PluginInfo pluginInfo, IRgbService rgbService) : base(pluginInfo, LogitechDeviceProvider.Instance)
+ {
+ _rgbService = rgbService;
+ }
+
+ public override void EnablePlugin()
+ {
+ PathHelper.ResolvingAbsolutePath += (sender, args) => ResolveAbsolutePath(typeof(LogitechRGBDevice<>), sender, args);
+ LogitechDeviceProvider.PossibleX64NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x64", "LogitechLedEnginesWrapper.dll"));
+ LogitechDeviceProvider.PossibleX86NativePaths.Add(Path.Combine(PluginInfo.Directory.FullName, "x86", "LogitechLedEnginesWrapper.dll"));
+ _rgbService.AddDeviceProvider(DeviceProvider);
+ }
+
+ public override void DisablePlugin()
+ {
+ }
+
+ public override void Dispose()
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Artemis.Plugins.Devices.Logitech/Properties/AssemblyInfo.cs b/src/Artemis.Plugins.Devices.Logitech/Properties/AssemblyInfo.cs
new file mode 100644
index 000000000..79fac2002
--- /dev/null
+++ b/src/Artemis.Plugins.Devices.Logitech/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Artemis.Plugins.Devices.Logitech")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Artemis.Plugins.Devices.Logitech")]
+[assembly: AssemblyCopyright("Copyright © 2019")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("235a45c7-24ad-4f47-b9d4-cd67e610a04d")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/src/Artemis.Plugins.Devices.Logitech/plugin.json b/src/Artemis.Plugins.Devices.Logitech/plugin.json
new file mode 100644
index 000000000..3777d2245
--- /dev/null
+++ b/src/Artemis.Plugins.Devices.Logitech/plugin.json
@@ -0,0 +1,10 @@
+{
+ "Guid": "62a45c0c-884c-4868-9fd7-3c5987fe07ca",
+ "Name": "Logitech Devices",
+ "Version": {
+ "Major": 1,
+ "Minor": 0,
+ "Build": 0
+ },
+ "Main": "Artemis.Plugins.Devices.Logitech.dll"
+}
diff --git a/src/Artemis.UI/App.xaml b/src/Artemis.UI/App.xaml
index 062eb31e9..a64915a29 100644
--- a/src/Artemis.UI/App.xaml
+++ b/src/Artemis.UI/App.xaml
@@ -6,7 +6,6 @@
-
@@ -57,7 +56,39 @@
+
+
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/src/Artemis.UI/Artemis.UI.csproj b/src/Artemis.UI/Artemis.UI.csproj
index 68ac8fc6d..05276cf74 100644
--- a/src/Artemis.UI/Artemis.UI.csproj
+++ b/src/Artemis.UI/Artemis.UI.csproj
@@ -182,6 +182,7 @@
+
@@ -235,6 +236,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
MSBuild:Compile
Designer
diff --git a/src/Artemis.UI/Bootstrapper.cs b/src/Artemis.UI/Bootstrapper.cs
index d52492dd8..16aabc25c 100644
--- a/src/Artemis.UI/Bootstrapper.cs
+++ b/src/Artemis.UI/Bootstrapper.cs
@@ -1,10 +1,12 @@
-using System.Windows;
+using System.Threading.Tasks;
+using System.Windows;
using Artemis.Core.Ninject;
using Artemis.Core.Services.Interfaces;
using Artemis.UI.Ninject;
using Artemis.UI.Stylet;
using Artemis.UI.ViewModels.Screens;
using Ninject;
+using Stylet;
namespace Artemis.UI
{
@@ -15,11 +17,37 @@ namespace Artemis.UI
protected override void OnExit(ExitEventArgs e)
{
// Stop the Artemis core
- _core.Dispose();
+ _core?.Dispose();
base.OnExit(e);
}
+ protected override void Launch()
+ {
+ var windowManager = (IWindowManager) GetInstance(typeof(IWindowManager));
+ var splashViewModel = new SplashViewModel(Kernel);
+ windowManager.ShowWindow(splashViewModel);
+
+ Task.Run(() =>
+ {
+ // Start the Artemis core
+ _core = Kernel.Get();
+ // When the core is done, hide the splash and show the main window
+ _core.Initialized += (sender, args) => ShowMainWindow(windowManager, splashViewModel);
+ // While the core is instantiated, start listening for events on the splash
+ splashViewModel.ListenToEvents();
+ });
+ }
+
+ private void ShowMainWindow(IWindowManager windowManager, SplashViewModel splashViewModel)
+ {
+ Execute.OnUIThread(() =>
+ {
+ windowManager.ShowWindow(RootViewModel);
+ splashViewModel.RequestClose();
+ });
+ }
+
protected override void ConfigureIoC(IKernel kernel)
{
kernel.Settings.InjectNonPublic = true;
@@ -28,10 +56,6 @@ namespace Artemis.UI
kernel.Load();
// Load the core assembly's module
kernel.Load();
-
- // Start the Artemis core, the core's constructor will initialize async
- _core = Kernel.Get();
-
base.ConfigureIoC(kernel);
}
}
diff --git a/src/Artemis.UI/Stylet/NinjectBootstrapper.cs b/src/Artemis.UI/Stylet/NinjectBootstrapper.cs
index a2aa78168..bd448ab5e 100644
--- a/src/Artemis.UI/Stylet/NinjectBootstrapper.cs
+++ b/src/Artemis.UI/Stylet/NinjectBootstrapper.cs
@@ -36,7 +36,10 @@ namespace Artemis.UI.Stylet
kernel.Bind().ToConstant(new ViewManager(viewManagerConfig));
kernel.Bind().ToConstant(this).InTransientScope();
- kernel.Bind().ToMethod(c => new WindowManager(c.Kernel.Get(), () => c.Kernel.Get(), c.Kernel.Get())).InSingletonScope();
+ kernel.Bind().ToMethod(
+ c => new WindowManager(c.Kernel.Get(), () => c.Kernel.Get(), c.Kernel.Get())
+ )
+ .InSingletonScope();
kernel.Bind().To().InSingletonScope();
kernel.Bind().To(); // Not singleton!
}
@@ -55,7 +58,6 @@ namespace Artemis.UI.Stylet
protected override void Launch()
{
- DisplayRootView(RootViewModel);
}
public override void Dispose()
diff --git a/src/Artemis.UI/ViewModels/Screens/SplashViewModel.cs b/src/Artemis.UI/ViewModels/Screens/SplashViewModel.cs
new file mode 100644
index 000000000..21f396517
--- /dev/null
+++ b/src/Artemis.UI/ViewModels/Screens/SplashViewModel.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Artemis.Core.Services.Interfaces;
+using Ninject;
+using Stylet;
+
+namespace Artemis.UI.ViewModels.Screens
+{
+ public class SplashViewModel : Screen
+ {
+ private readonly IKernel _kernel;
+
+ public SplashViewModel(IKernel kernel)
+ {
+ _kernel = kernel;
+ Status = "Initializing Core";
+ }
+
+ public string Status { get; set; }
+
+ public void ListenToEvents()
+ {
+ var pluginService = _kernel.Get();
+ pluginService.CopyingBuildInPlugins += (sender, args) => Status = "Updating built-in plugins";
+ pluginService.PluginLoading += (sender, args) => Status = "Loading plugin: " + args.PluginInfo.Name;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Artemis.UI/Views/Screens/RootView.xaml b/src/Artemis.UI/Views/Screens/RootView.xaml
index 34f6973c6..6d868fcb9 100644
--- a/src/Artemis.UI/Views/Screens/RootView.xaml
+++ b/src/Artemis.UI/Views/Screens/RootView.xaml
@@ -16,40 +16,6 @@
d:DesignWidth="1113.251"
d:DataContext="{d:DesignInstance screens:RootViewModel}"
Icon="/Artemis.UI;component/Resources/logo-512.png">
-
-
-
-
-
-
-
-
-
@@ -62,7 +28,7 @@
Background="Transparent"
RenderOptions.BitmapScalingMode="HighQuality"
Margin="0,0,-10,0">
-
diff --git a/src/Artemis.UI/Views/Screens/SplashView.xaml b/src/Artemis.UI/Views/Screens/SplashView.xaml
new file mode 100644
index 000000000..99840301f
--- /dev/null
+++ b/src/Artemis.UI/Views/Screens/SplashView.xaml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+ Artemis is initializing...
+
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.sln b/src/Artemis.sln
index 9e17bca28..b4da0e2d6 100644
--- a/src/Artemis.sln
+++ b/src/Artemis.sln
@@ -7,6 +7,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.UI", "Artemis.UI\Ar
ProjectSection(ProjectDependencies) = postProject
{E592F239-FAA0-4840-9C85-46E5867D06D5} = {E592F239-FAA0-4840-9C85-46E5867D06D5}
{0F288A66-6EB0-4589-8595-E33A3A3EAEA2} = {0F288A66-6EB0-4589-8595-E33A3A3EAEA2}
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D} = {235A45C7-24AD-4F47-B9D4-CD67E610A04D}
{A779B2F8-C253-4C4B-8634-6EB8F594E96D} = {A779B2F8-C253-4C4B-8634-6EB8F594E96D}
EndProjectSection
EndProject
@@ -22,6 +23,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.LayerTypes.
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.Devices.Corsair", "Artemis.Plugins.Devices.Corsair\Artemis.Plugins.Devices.Corsair.csproj", "{A779B2F8-C253-4C4B-8634-6EB8F594E96D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.Plugins.Devices.Logitech", "Artemis.Plugins.Devices.Logitech\Artemis.Plugins.Devices.Logitech.csproj", "{235A45C7-24AD-4F47-B9D4-CD67E610A04D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -78,6 +81,14 @@ Global
{A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Release|Any CPU.Build.0 = Release|Any CPU
{A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Release|x64.ActiveCfg = Release|Any CPU
{A779B2F8-C253-4C4B-8634-6EB8F594E96D}.Release|x64.Build.0 = Release|Any CPU
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Debug|x64.Build.0 = Debug|Any CPU
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|x64.ActiveCfg = Release|Any CPU
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -86,6 +97,7 @@ Global
{E592F239-FAA0-4840-9C85-46E5867D06D5} = {E830A02B-A7E5-4A6B-943F-76B0A542630C}
{0F288A66-6EB0-4589-8595-E33A3A3EAEA2} = {E830A02B-A7E5-4A6B-943F-76B0A542630C}
{A779B2F8-C253-4C4B-8634-6EB8F594E96D} = {E830A02B-A7E5-4A6B-943F-76B0A542630C}
+ {235A45C7-24AD-4F47-B9D4-CD67E610A04D} = {E830A02B-A7E5-4A6B-943F-76B0A542630C}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C203080A-4473-4CC2-844B-F552EA43D66A}