mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-13 05:48:35 +00:00
Updated Logitech SDK for #174
This commit is contained in:
parent
64e2d4b4c8
commit
a12389f221
@ -650,8 +650,11 @@
|
|||||||
</None>
|
</None>
|
||||||
<AppDesigner Include="Properties\" />
|
<AppDesigner Include="Properties\" />
|
||||||
<Resource Include="Resources\bow.png" />
|
<Resource Include="Resources\bow.png" />
|
||||||
<Content Include="lib\ColorBox.dll" />
|
<Content Include="lib\CUE.NET.dll" />
|
||||||
<Content Include="lib\Ets2SdkClient.dll" />
|
<Content Include="lib\Ets2SdkClient.dll" />
|
||||||
|
<Content Include="LogitechLedEnginesWrapper.dll">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Include="logo.ico">
|
<Content Include="logo.ico">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
@ -837,9 +840,6 @@
|
|||||||
</Page>
|
</Page>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="LogitechLedEnginesWrapper.dll">
|
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
||||||
</Content>
|
|
||||||
<None Include="Modules\Games\UnrealTournament\Resources\redeemer.gif" />
|
<None Include="Modules\Games\UnrealTournament\Resources\redeemer.gif" />
|
||||||
<None Include="Modules\Games\EurotruckSimulator2\Resources\Win32\ets2-telemetry-server.dll" />
|
<None Include="Modules\Games\EurotruckSimulator2\Resources\Win32\ets2-telemetry-server.dll" />
|
||||||
<None Include="Modules\Games\EurotruckSimulator2\Resources\Win64\ets2-telemetry-server.dll" />
|
<None Include="Modules\Games\EurotruckSimulator2\Resources\Win64\ets2-telemetry-server.dll" />
|
||||||
|
|||||||
@ -1,4 +1,6 @@
|
|||||||
using System.Linq;
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Artemis.DeviceProviders.Logitech.Utilities;
|
using Artemis.DeviceProviders.Logitech.Utilities;
|
||||||
@ -16,8 +18,8 @@ namespace Artemis.DeviceProviders.Logitech
|
|||||||
"Please check your cables and updating the Logitech Gaming Software\n" +
|
"Please check your cables and updating the Logitech Gaming Software\n" +
|
||||||
"A minimum version of 8.81.15 is required.\n\n" +
|
"A minimum version of 8.81.15 is required.\n\n" +
|
||||||
"If needed, you can select a different keyboard in Artemis under settings.";
|
"If needed, you can select a different keyboard in Artemis under settings.";
|
||||||
Height = 6;
|
Height = 7;
|
||||||
Width = 21;
|
Width = 22;
|
||||||
PreviewSettings = new PreviewSettings(540, 154, new Thickness(25, -80, 0, 0), Resources.g910);
|
PreviewSettings = new PreviewSettings(540, 154, new Thickness(25, -80, 0, 0), Resources.g910);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -25,5 +27,55 @@ namespace Artemis.DeviceProviders.Logitech
|
|||||||
{
|
{
|
||||||
return KeyMap.QwertyLayout.FirstOrDefault(k => k.KeyCode == keyCode);
|
return KeyMap.QwertyLayout.FirstOrDefault(k => k.KeyCode == keyCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The G910 also updates the G-logo, G-badge and G-keys
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bitmap"></param>
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
base.DrawBitmap(croppedBitmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (var resized = OrionUtilities.ResizeImage(bitmap, 22, 7))
|
||||||
|
{
|
||||||
|
// Color the extra keys on the left side of the keyboard
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_LOGO, 0, 1);
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_1, 0, 2);
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_2, 0, 3);
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_3, 0, 4);
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_4, 0, 5);
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_5, 0, 6);
|
||||||
|
|
||||||
|
// Color the extra keys on the top of the keyboard
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_6, 3, 0);
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_7, 4, 0);
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_8, 5, 0);
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_9, 6, 0);
|
||||||
|
|
||||||
|
// Color the G-badge
|
||||||
|
SetLogitechColorFromCoordinates(resized, KeyboardNames.G_BADGE, 5, 6);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetLogitechColorFromCoordinates(Bitmap bitmap, KeyboardNames key, int x, int y)
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,10 +58,7 @@ namespace Artemis.DeviceProviders.Logitech
|
|||||||
Thread.Sleep(200);
|
Thread.Sleep(200);
|
||||||
|
|
||||||
LogitechGSDK.LogiLedSaveCurrentLighting();
|
LogitechGSDK.LogiLedSaveCurrentLighting();
|
||||||
|
|
||||||
// Disable keys we can't color
|
|
||||||
LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_PERKEY_RGB);
|
LogitechGSDK.LogiLedSetTargetDevice(LogitechGSDK.LOGI_DEVICETYPE_PERKEY_RGB);
|
||||||
LogitechGSDK.LogiLedSetLighting(0, 0, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void Disable()
|
public override void Disable()
|
||||||
|
|||||||
@ -106,6 +106,16 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
|
|||||||
ARROW_RIGHT = 0x14D,
|
ARROW_RIGHT = 0x14D,
|
||||||
NUM_ZERO = 0x52,
|
NUM_ZERO = 0x52,
|
||||||
NUM_PERIOD = 0x53,
|
NUM_PERIOD = 0x53,
|
||||||
TEST = 0x1
|
G_1 = 0xFFF1,
|
||||||
|
G_2 = 0xFFF2,
|
||||||
|
G_3 = 0xFFF3,
|
||||||
|
G_4 = 0xFFF4,
|
||||||
|
G_5 = 0xFFF5,
|
||||||
|
G_6 = 0xFFF6,
|
||||||
|
G_7 = 0xFFF7,
|
||||||
|
G_8 = 0xFFF8,
|
||||||
|
G_9 = 0xFFF9,
|
||||||
|
G_LOGO = 0xFFFF1,
|
||||||
|
G_BADGE = 0xFFFF2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
// ReSharper disable InconsistentNaming
|
|
||||||
|
|
||||||
namespace Artemis.DeviceProviders.Logitech.Utilities
|
namespace Artemis.DeviceProviders.Logitech.Utilities
|
||||||
{
|
{
|
||||||
@ -26,6 +25,25 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
|
|||||||
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
public static extern bool LogiLedInit();
|
public static extern bool LogiLedInit();
|
||||||
|
|
||||||
|
//Config option functions
|
||||||
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern bool LogiLedGetConfigOptionNumber([MarshalAs(UnmanagedType.LPWStr)] string configPath,
|
||||||
|
ref double defaultNumber);
|
||||||
|
|
||||||
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern bool LogiLedGetConfigOptionBool([MarshalAs(UnmanagedType.LPWStr)] string configPath,
|
||||||
|
ref bool defaultRed);
|
||||||
|
|
||||||
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern bool LogiLedGetConfigOptionColor([MarshalAs(UnmanagedType.LPWStr)] string configPath,
|
||||||
|
ref int defaultRed, ref int defaultGreen, ref int defaultBlue);
|
||||||
|
|
||||||
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern bool LogiLedGetConfigOptionKeyInput([MarshalAs(UnmanagedType.LPWStr)] string configPath,
|
||||||
|
StringBuilder buffer, int bufsize);
|
||||||
|
|
||||||
|
/////////////////////
|
||||||
|
|
||||||
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
public static extern bool LogiLedSetTargetDevice(int targetDevice);
|
public static extern bool LogiLedSetTargetDevice(int targetDevice);
|
||||||
|
|
||||||
@ -52,6 +70,9 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
|
|||||||
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
public static extern bool LogiLedStopEffects();
|
public static extern bool LogiLedStopEffects();
|
||||||
|
|
||||||
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern bool LogiLedExcludeKeysFromBitmap(KeyboardNames[] keyList, int listCount);
|
||||||
|
|
||||||
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
public static extern bool LogiLedSetLightingFromBitmap(byte[] bitmap);
|
public static extern bool LogiLedSetLightingFromBitmap(byte[] bitmap);
|
||||||
|
|
||||||
@ -68,7 +89,7 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
|
|||||||
int greenPercentage, int bluePercentage);
|
int greenPercentage, int bluePercentage);
|
||||||
|
|
||||||
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
public static extern bool LogiLedSetLightingForKeyWithKeyName(int keyCode, int redPercentage,
|
public static extern bool LogiLedSetLightingForKeyWithKeyName(KeyboardNames keyCode, int redPercentage,
|
||||||
int greenPercentage, int bluePercentage);
|
int greenPercentage, int bluePercentage);
|
||||||
|
|
||||||
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
[DllImport("LogitechLedEnginesWrapper ", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
|||||||
@ -180,6 +180,7 @@ namespace Artemis.DeviceProviders.Logitech.Utilities
|
|||||||
remapped[firstTByte + j] = pixels[firstSByte + j];
|
remapped[firstTByte + j] = pixels[firstSByte + j];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
b.Dispose();
|
||||||
return remapped;
|
return remapped;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user