Changed all namespaces to file-scope

This commit is contained in:
DarthAffe committed 2021-11-13 17:35:08 +01:00
1 parent a0c6ccebea
commit 30624035f1
353 files changed
+35775 -36129

No files matched your search

@@ -1,10 +1,9 @@
using System.Text.Json.Serialization;
namespace RGB.NET.Devices.SteelSeries.API.Model
namespace RGB.NET.Devices.SteelSeries.API.Model;
internal class CoreProps
{
internal class CoreProps
{
[JsonPropertyName("address")]
public string? Address { get; set; }
}
}
[JsonPropertyName("address")]
public string? Address { get; set; }
}
+28 -29
View File
@@ -1,35 +1,34 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace RGB.NET.Devices.SteelSeries.API.Model
namespace RGB.NET.Devices.SteelSeries.API.Model;
internal class Event
{
internal class Event
#region Properties & Fields
[JsonPropertyName("game")]
public string? Game { get; set; }
[JsonPropertyName("event")]
public string? Name { get; set; }
// ReSharper disable once CollectionNeverQueried.Global
[JsonPropertyName("data")]
public Dictionary<string, object> Data { get; } = new();
#endregion
#region Constructors
public Event()
{ }
public Event(Game game, string name)
{
#region Properties & Fields
[JsonPropertyName("game")]
public string? Game { get; set; }
[JsonPropertyName("event")]
public string? Name { get; set; }
// ReSharper disable once CollectionNeverQueried.Global
[JsonPropertyName("data")]
public Dictionary<string, object> Data { get; } = new();
#endregion
#region Constructors
public Event()
{ }
public Event(Game game, string name)
{
this.Name = name;
Game = game.Name;
}
#endregion
this.Name = name;
Game = game.Name;
}
}
#endregion
}
+24 -25
View File
@@ -1,30 +1,29 @@
using System.Text.Json.Serialization;
namespace RGB.NET.Devices.SteelSeries.API.Model
namespace RGB.NET.Devices.SteelSeries.API.Model;
internal class Game
{
internal class Game
#region Properties & Fields
[JsonPropertyName("game")]
public string? Name { get; set; }
[JsonPropertyName("game_display_name")]
public string? DisplayName { get; set; }
#endregion
#region Constructors
public Game()
{ }
public Game(string name, string displayName)
{
#region Properties & Fields
[JsonPropertyName("game")]
public string? Name { get; set; }
[JsonPropertyName("game_display_name")]
public string? DisplayName { get; set; }
#endregion
#region Constructors
public Game()
{ }
public Game(string name, string displayName)
{
Name = name;
DisplayName = displayName;
}
#endregion
Name = name;
DisplayName = displayName;
}
}
#endregion
}
@@ -1,30 +1,29 @@
using System.Text.Json.Serialization;
namespace RGB.NET.Devices.SteelSeries.API.Model
namespace RGB.NET.Devices.SteelSeries.API.Model;
internal class GoLispHandler
{
internal class GoLispHandler
#region Properties & Fields
[JsonPropertyName("game")]
public string? Game { get; set; }
[JsonPropertyName("golisp")]
public string? Handler { get; set; }
#endregion
#region Constructors
public GoLispHandler()
{ }
public GoLispHandler(Game game, string handler)
{
#region Properties & Fields
[JsonPropertyName("game")]
public string? Game { get; set; }
[JsonPropertyName("golisp")]
public string? Handler { get; set; }
#endregion
#region Constructors
public GoLispHandler()
{ }
public GoLispHandler(Game game, string handler)
{
this.Handler = handler;
Game = game.Name;
}
#endregion
this.Handler = handler;
Game = game.Name;
}
}
#endregion
}
@@ -8,16 +8,16 @@ using System.Text;
using System.Text.Json;
using RGB.NET.Devices.SteelSeries.API.Model;
namespace RGB.NET.Devices.SteelSeries.API
{
internal static class SteelSeriesSDK
{
#region Constants
namespace RGB.NET.Devices.SteelSeries.API;
private const string GAME_NAME = "RGBNET";
private const string GAME_DISPLAYNAME = "RGB.NET";
private const string EVENT_NAME = "UPDATELEDS";
private static readonly string HANDLER = $@"(define (getZone x)
internal static class SteelSeriesSDK
{
#region Constants
private const string GAME_NAME = "RGBNET";
private const string GAME_DISPLAYNAME = "RGB.NET";
private const string EVENT_NAME = "UPDATELEDS";
private static readonly string HANDLER = $@"(define (getZone x)
(case x
{string.Join(Environment.NewLine, Enum.GetValues(typeof(SteelSeriesLedId))
.Cast<SteelSeriesLedId>()
@@ -48,106 +48,105 @@ namespace RGB.NET.Devices.SteelSeries.API
(add-custom-zone '(""num-5"" 93))"; //HACK DarthAffe 07.10.2021: Custom zone to workaround a SDK-issue (https://github.com/SteelSeries/gamesense-sdk/issues/85)
private const string CORE_PROPS_WINDOWS = "%PROGRAMDATA%/SteelSeries/SteelSeries Engine 3/coreProps.json";
private const string CORE_PROPS_OSX = "/Library/Application Support/SteelSeries Engine 3/coreProps.json";
private const string CORE_PROPS_WINDOWS = "%PROGRAMDATA%/SteelSeries/SteelSeries Engine 3/coreProps.json";
private const string CORE_PROPS_OSX = "/Library/Application Support/SteelSeries Engine 3/coreProps.json";
#endregion
#endregion
#region Properties & Fields
// ReSharper disable InconsistentNaming
#region Properties & Fields
// ReSharper disable InconsistentNaming
private static readonly HttpClient _client = new();
private static readonly Game _game = new(GAME_NAME, GAME_DISPLAYNAME);
private static readonly Event _event = new(_game, EVENT_NAME);
private static string? _baseUrl;
private static readonly HttpClient _client = new();
private static readonly Game _game = new(GAME_NAME, GAME_DISPLAYNAME);
private static readonly Event _event = new(_game, EVENT_NAME);
private static string? _baseUrl;
internal static bool IsInitialized => !string.IsNullOrWhiteSpace(_baseUrl);
internal static bool IsInitialized => !string.IsNullOrWhiteSpace(_baseUrl);
// ReSharper restore InconsistentNaming
#endregion
// ReSharper restore InconsistentNaming
#endregion
#region Methods
#region Methods
internal static bool Initialize()
internal static bool Initialize()
{
try
{
try
string corePropsPath = GetCorePropsPath();
if (!string.IsNullOrWhiteSpace(corePropsPath) && File.Exists(corePropsPath))
{
string corePropsPath = GetCorePropsPath();
if (!string.IsNullOrWhiteSpace(corePropsPath) && File.Exists(corePropsPath))
CoreProps? coreProps = JsonSerializer.Deserialize<CoreProps>(File.ReadAllText(corePropsPath));
_baseUrl = coreProps?.Address;
if (_baseUrl != null)
{
CoreProps? coreProps = JsonSerializer.Deserialize<CoreProps>(File.ReadAllText(corePropsPath));
_baseUrl = coreProps?.Address;
if (_baseUrl != null)
{
if (!_baseUrl.StartsWith("http://", StringComparison.Ordinal))
_baseUrl = "http://" + _baseUrl;
if (!_baseUrl.StartsWith("http://", StringComparison.Ordinal))
_baseUrl = "http://" + _baseUrl;
RegisterGame(_game);
RegisterGoLispHandler(new GoLispHandler(_game, HANDLER));
}
RegisterGame(_game);
RegisterGoLispHandler(new GoLispHandler(_game, HANDLER));
}
}
catch
{
_baseUrl = null;
}
return IsInitialized;
}
internal static void UpdateLeds(string device, IList<(string zone, int[] color)> data)
catch
{
_event.Data.Clear();
_event.Data.Add("value", device);
_event.Data.Add("colors", data.Select(x => x.color).ToList());
_event.Data.Add("zones", data.Select(x => x.zone).ToList());
TriggerEvent(_event);
_baseUrl = null;
}
return IsInitialized;
}
internal static void SendHeartbeat() => SendHeartbeat(_game);
internal static void UpdateLeds(string device, IList<(string zone, int[] color)> data)
{
_event.Data.Clear();
_event.Data.Add("value", device);
_event.Data.Add("colors", data.Select(x => x.color).ToList());
_event.Data.Add("zones", data.Select(x => x.zone).ToList());
internal static void ResetLeds() => StopGame(_game);
TriggerEvent(_event);
}
internal static void Dispose()
{
if (IsInitialized)
ResetLeds();
internal static void SendHeartbeat() => SendHeartbeat(_game);
_client.Dispose();
}
internal static void ResetLeds() => StopGame(_game);
internal static void Dispose()
{
if (IsInitialized)
ResetLeds();
_client.Dispose();
}
#pragma warning disable IDE0051 // Remove unused private members
// ReSharper disable UnusedMethodReturnValue.Local
// ReSharper disable UnusedMember.Local
private static string TriggerEvent(Event e) => PostJson("/game_event", e);
private static string RegisterGoLispHandler(GoLispHandler handler) => PostJson("/load_golisp_handlers", handler);
private static string RegisterEvent(Event e) => PostJson("/register_game_event", e);
private static string UnregisterEvent(Event e) => PostJson("/remove_game_event", e);
private static string RegisterGame(Game game) => PostJson("/game_metadata", game);
private static string UnregisterGame(Game game) => PostJson("/remove_game", game);
private static string StopGame(Game game) => PostJson("/stop_game", game);
private static string SendHeartbeat(Game game) => PostJson("/game_heartbeat", game);
// ReSharper restore UnusedMember.Local
// ReSharper restore UnusedMethodReturnValue.Local
// ReSharper disable UnusedMethodReturnValue.Local
// ReSharper disable UnusedMember.Local
private static string TriggerEvent(Event e) => PostJson("/game_event", e);
private static string RegisterGoLispHandler(GoLispHandler handler) => PostJson("/load_golisp_handlers", handler);
private static string RegisterEvent(Event e) => PostJson("/register_game_event", e);
private static string UnregisterEvent(Event e) => PostJson("/remove_game_event", e);
private static string RegisterGame(Game game) => PostJson("/game_metadata", game);
private static string UnregisterGame(Game game) => PostJson("/remove_game", game);
private static string StopGame(Game game) => PostJson("/stop_game", game);
private static string SendHeartbeat(Game game) => PostJson("/game_heartbeat", game);
// ReSharper restore UnusedMember.Local
// ReSharper restore UnusedMethodReturnValue.Local
#pragma warning restore IDE0051 // Remove unused private members
private static string PostJson(string urlSuffix, object o)
{
string payload = JsonSerializer.Serialize(o);
return _client.PostAsync(_baseUrl + urlSuffix, new StringContent(payload, Encoding.UTF8, "application/json")).Result.Content.ReadAsStringAsync().Result;
}
private static string GetCorePropsPath()
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
return Environment.ExpandEnvironmentVariables(CORE_PROPS_WINDOWS);
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
return CORE_PROPS_OSX;
throw new InvalidOperationException("Unknown operating system.");
}
#endregion
private static string PostJson(string urlSuffix, object o)
{
string payload = JsonSerializer.Serialize(o);
return _client.PostAsync(_baseUrl + urlSuffix, new StringContent(payload, Encoding.UTF8, "application/json")).Result.Content.ReadAsStringAsync().Result;
}
}
private static string GetCorePropsPath()
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
return Environment.ExpandEnvironmentVariables(CORE_PROPS_WINDOWS);
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
return CORE_PROPS_OSX;
throw new InvalidOperationException("Unknown operating system.");
}
#endregion
}
@@ -1,20 +1,19 @@
namespace RGB.NET.Devices.SteelSeries
namespace RGB.NET.Devices.SteelSeries;
internal class APIName : System.Attribute
{
internal class APIName : System.Attribute
#region Properties & Fields
public string Name { get; set; }
#endregion
#region Constructors
public APIName(string name)
{
#region Properties & Fields
public string Name { get; set; }
#endregion
#region Constructors
public APIName(string name)
{
this.Name = name;
}
#endregion
this.Name = name;
}
}
#endregion
}
@@ -3,44 +3,43 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace RGB.NET.Devices.SteelSeries
namespace RGB.NET.Devices.SteelSeries;
internal static class SteelSeriesEnumExtension
{
internal static class SteelSeriesEnumExtension
#region Properties & Fields
// ReSharper disable InconsistentNaming
private static readonly Dictionary<SteelSeriesDeviceType, string?> _deviceTypeNames = new();
private static readonly Dictionary<SteelSeriesLedId, string?> _ledIdNames = new();
// ReSharper restore InconsistentNaming
#endregion
#region Methods
internal static string? GetAPIName(this SteelSeriesDeviceType deviceType)
{
#region Properties & Fields
// ReSharper disable InconsistentNaming
if (!_deviceTypeNames.TryGetValue(deviceType, out string? apiName))
_deviceTypeNames.Add(deviceType, apiName = GetAPIName(typeof(SteelSeriesDeviceType), deviceType));
private static readonly Dictionary<SteelSeriesDeviceType, string?> _deviceTypeNames = new();
private static readonly Dictionary<SteelSeriesLedId, string?> _ledIdNames = new();
// ReSharper restore InconsistentNaming
#endregion
#region Methods
internal static string? GetAPIName(this SteelSeriesDeviceType deviceType)
{
if (!_deviceTypeNames.TryGetValue(deviceType, out string? apiName))
_deviceTypeNames.Add(deviceType, apiName = GetAPIName(typeof(SteelSeriesDeviceType), deviceType));
return apiName;
}
internal static string? GetAPIName(this SteelSeriesLedId ledId)
{
if (!_ledIdNames.TryGetValue(ledId, out string? apiName))
_ledIdNames.Add(ledId, apiName = GetAPIName(typeof(SteelSeriesLedId), ledId));
return apiName;
}
private static string? GetAPIName(Type type, Enum value)
{
MemberInfo[] memInfo = type.GetMember(value.ToString());
if (memInfo.Length == 0) return null;
return (memInfo.FirstOrDefault()?.GetCustomAttributes(typeof(APIName), false).FirstOrDefault() as APIName)?.Name;
}
#endregion
return apiName;
}
}
internal static string? GetAPIName(this SteelSeriesLedId ledId)
{
if (!_ledIdNames.TryGetValue(ledId, out string? apiName))
_ledIdNames.Add(ledId, apiName = GetAPIName(typeof(SteelSeriesLedId), ledId));
return apiName;
}
private static string? GetAPIName(Type type, Enum value)
{
MemberInfo[] memInfo = type.GetMember(value.ToString());
if (memInfo.Length == 0) return null;
return (memInfo.FirstOrDefault()?.GetCustomAttributes(typeof(APIName), false).FirstOrDefault() as APIName)?.Name;
}
#endregion
}
@@ -1,47 +1,46 @@
#pragma warning disable 1591
namespace RGB.NET.Devices.SteelSeries
namespace RGB.NET.Devices.SteelSeries;
// DarthAffe 09.07.2020: Review the LISP-Handler in SteelSeriesSDK after adding new device-types! They need to be initialized.
public enum SteelSeriesDeviceType
{
// DarthAffe 09.07.2020: Review the LISP-Handler in SteelSeriesSDK after adding new device-types! They need to be initialized.
public enum SteelSeriesDeviceType
{
[APIName("rgb-per-key-zones")]
PerKey,
[APIName("rgb-per-key-zones")]
PerKey,
[APIName("rgb-1-zone")]
OneZone,
[APIName("rgb-1-zone")]
OneZone,
[APIName("rgb-2-zone")]
TwoZone,
[APIName("rgb-2-zone")]
TwoZone,
[APIName("rgb-3-zone")]
ThreeZone,
[APIName("rgb-3-zone")]
ThreeZone,
[APIName("rgb-4-zone")]
FourZone,
[APIName("rgb-4-zone")]
FourZone,
[APIName("rgb-5-zone")]
FiveZone,
[APIName("rgb-5-zone")]
FiveZone,
[APIName("rgb-6-zone")]
SixZone,
[APIName("rgb-6-zone")]
SixZone,
[APIName("rgb-7-zone")]
SevenZone,
[APIName("rgb-7-zone")]
SevenZone,
[APIName("rgb-8-zone")]
EightZone,
[APIName("rgb-8-zone")]
EightZone,
[APIName("rgb-12-zone")]
TwelveZone,
[APIName("rgb-12-zone")]
TwelveZone,
[APIName("rgb-17-zone")]
SeventeenZone,
[APIName("rgb-17-zone")]
SeventeenZone,
[APIName("rgb-24-zone")]
TwentyfourZone,
[APIName("rgb-24-zone")]
TwentyfourZone,
[APIName("rgb-103-zone")]
OneHundredAndThreeZone
}
}
[APIName("rgb-103-zone")]
OneHundredAndThreeZone
}
@@ -1,445 +1,444 @@
// ReSharper disable InconsistentNaming
#pragma warning disable 1591
namespace RGB.NET.Devices.SteelSeries
{
/// <summary>
/// Contains a list of Steel Series LED IDs
/// </summary>
public enum SteelSeriesLedId
{
[APIName("one")]
ZoneOne,
[APIName("two")]
ZoneTwo,
[APIName("three")]
ZoneThree,
[APIName("four")]
ZoneFour,
[APIName("five")]
ZoneFive,
[APIName("six")]
ZoneSix,
[APIName("seven")]
ZoneSeven,
[APIName("eight")]
ZoneEight,
[APIName("nine")]
ZoneNine,
[APIName("ten")]
ZoneTen,
[APIName("eleven")]
ZoneEleven,
[APIName("twelve")]
ZoneTwelve,
[APIName("thirteen")]
ZoneThirteen,
[APIName("fourteen")]
ZoneFourteen,
[APIName("fifteen")]
ZoneFifteen,
[APIName("sixteen")]
ZoneSixteen,
[APIName("seventeen")]
ZoneSeventeen,
[APIName("eighteen")]
ZoneEighteen,
[APIName("nineteen")]
ZoneNineteen,
[APIName("twenty")]
ZoneTwenty,
[APIName("twenty-one")]
ZoneTwentyOne,
[APIName("twenty-two")]
ZoneTwentyTwo,
[APIName("twenty-three")]
ZoneTwentyThree,
[APIName("twenty-four")]
ZoneTwentyFour,
[APIName("twenty-five")]
ZoneTwentyFive,
[APIName("twenty-six")]
ZoneTwentySix,
[APIName("twenty-seven")]
ZoneTwentySeven,
[APIName("twenty-eight")]
ZoneTwentyEight,
[APIName("twenty-nine")]
ZoneTwentyNine,
[APIName("thirty")]
ZoneThirty,
[APIName("thirty-one")]
ZoneThirtyOne,
[APIName("thirty-two")]
ZoneThirtyTwo,
[APIName("thirty-three")]
ZoneThirtyThree,
[APIName("thirty-four")]
ZoneThirtyFour,
[APIName("thirty-five")]
ZoneThirtyFive,
[APIName("thirty-six")]
ZoneThirtySix,
[APIName("thirty-seven")]
ZoneThirtySeven,
[APIName("thirty-eight")]
ZoneThirtyEight,
[APIName("thirty-nine")]
ZoneThirtyNine,
[APIName("forty")]
ZoneForty,
[APIName("forty-one")]
ZoneFortyOne,
[APIName("forty-two")]
ZoneFortyTwo,
[APIName("forty-three")]
ZoneFortyThree,
[APIName("forty-four")]
ZoneFortyFour,
[APIName("forty-five")]
ZoneFortyFive,
[APIName("forty-six")]
ZoneFortySix,
[APIName("forty-seven")]
ZoneFortySeven,
[APIName("forty-eight")]
ZoneFortyEight,
[APIName("forty-nine")]
ZoneFortyNine,
[APIName("fifty")]
ZoneFifty,
[APIName("fifty-one")]
ZoneFiftyOne,
[APIName("fifty-two")]
ZoneFiftyTwo,
[APIName("fifty-three")]
ZoneFiftyThree,
[APIName("fifty-four")]
ZoneFiftyFour,
[APIName("fifty-five")]
ZoneFiftyFive,
[APIName("fifty-six")]
ZoneFiftySix,
[APIName("fifty-seven")]
ZoneFiftySeven,
[APIName("fifty-eight")]
ZoneFiftyEight,
[APIName("fifty-nine")]
ZoneFiftyNine,
[APIName("sixty")]
ZoneSixty,
[APIName("sixty-one")]
ZoneSixtyOne,
[APIName("sixty-two")]
ZoneSixtyTwo,
[APIName("sixty-three")]
ZoneSixtyThree,
[APIName("sixty-four")]
ZoneSixtyFour,
[APIName("sixty-five")]
ZoneSixtyFive,
[APIName("sixty-six")]
ZoneSixtySix,
[APIName("sixty-seven")]
ZoneSixtySeven,
[APIName("sixty-eight")]
ZoneSixtyEight,
[APIName("sixty-nine")]
ZoneSixtyNine,
[APIName("seventy")]
ZoneSeventy,
[APIName("seventy-one")]
ZoneSeventyOne,
[APIName("seventy-two")]
ZoneSeventyTwo,
[APIName("seventy-three")]
ZoneSeventyThree,
[APIName("seventy-four")]
ZoneSeventyFour,
[APIName("seventy-five")]
ZoneSeventyFive,
[APIName("seventy-six")]
ZoneSeventySix,
[APIName("seventy-seven")]
ZoneSeventySeven,
[APIName("seventy-eight")]
ZoneSeventyEight,
[APIName("seventy-nine")]
ZoneSeventyNine,
[APIName("eighty")]
ZoneEighty,
[APIName("eighty-one")]
ZoneEightyOne,
[APIName("eighty-two")]
ZoneEightyTwo,
[APIName("eighty-three")]
ZoneEightyThree,
[APIName("eighty-four")]
ZoneEightyFour,
[APIName("eighty-five")]
ZoneEightyFive,
[APIName("eighty-six")]
ZoneEightySix,
[APIName("eighty-seven")]
ZoneEightySeven,
[APIName("eighty-eight")]
ZoneEightyEight,
[APIName("eighty-nine")]
ZoneEightyNine,
[APIName("ninety")]
ZoneNinety,
[APIName("ninety-one")]
ZoneNinetyOne,
[APIName("ninety-two")]
ZoneNinetyTwo,
[APIName("ninety-three")]
ZoneNinetyThree,
[APIName("ninety-four")]
ZoneNinetyFour,
[APIName("ninety-five")]
ZoneNinetyFive,
[APIName("ninety-six")]
ZoneNinetySix,
[APIName("ninety-seven")]
ZoneNinetySeven,
[APIName("ninety-eight")]
ZoneNinetyEight,
[APIName("ninety-nine")]
ZoneNinetyNine,
[APIName("one-hundred")]
ZoneOneHundred,
[APIName("one-hundred-one")]
ZoneOneHundredOne,
[APIName("one-hundred-two")]
ZoneOneHundredTwo,
[APIName("one-hundred-three")]
ZoneOneHundredThree,
namespace RGB.NET.Devices.SteelSeries;
[APIName("logo")]
Logo,
[APIName("a")]
A,
[APIName("b")]
B,
[APIName("c")]
C,
[APIName("d")]
D,
[APIName("e")]
E,
[APIName("f")]
F,
[APIName("g")]
G,
[APIName("h")]
H,
[APIName("i")]
I,
[APIName("j")]
J,
[APIName("k")]
K,
[APIName("l")]
L,
[APIName("m")]
M,
[APIName("n")]
N,
[APIName("o")]
O,
[APIName("p")]
P,
[APIName("q")]
Q,
[APIName("r")]
R,
[APIName("s")]
S,
[APIName("t")]
T,
[APIName("u")]
U,
[APIName("v")]
V,
[APIName("w")]
W,
[APIName("x")]
X,
[APIName("y")]
Y,
[APIName("z")]
Z,
[APIName("keyboard-1")]
Keyboard1,
[APIName("keyboard-2")]
Keyboard2,
[APIName("keyboard-3")]
Keyboard3,
[APIName("keyboard-4")]
Keyboard4,
[APIName("keyboard-5")]
Keyboard5,
[APIName("keyboard-6")]
Keyboard6,
[APIName("keyboard-7")]
Keyboard7,
[APIName("keyboard-8")]
Keyboard8,
[APIName("keyboard-9")]
Keyboard9,
[APIName("keyboard-0")]
Keyboard0,
[APIName("return")]
Return,
[APIName("escape")]
Escape,
[APIName("backspace")]
Backspace,
[APIName("tab")]
Tab,
[APIName("spacebar")]
Spacebar,
[APIName("caps")]
Caps,
[APIName("dash")]
Dash,
[APIName("equal")]
Equal,
[APIName("l-bracket")]
LBracket,
[APIName("r-bracket")]
RBracket,
[APIName("backslash")]
Backslash,
[APIName("pound")]
Pound,
[APIName("semicolon")]
Semicolon,
[APIName("quote")]
Quote,
[APIName("backquote")]
Backqoute,
[APIName("comma")]
Comma,
[APIName("period")]
Period,
[APIName("slash")]
Slash,
[APIName("f1")]
F1,
[APIName("f2")]
F2,
[APIName("f3")]
F3,
[APIName("f4")]
F4,
[APIName("f5")]
F5,
[APIName("f6")]
F6,
[APIName("f7")]
F7,
[APIName("f8")]
F8,
[APIName("f9")]
F9,
[APIName("f10")]
F10,
[APIName("f11")]
F11,
[APIName("f12")]
F12,
[APIName("printscreen")]
PrintScreen,
[APIName("scrolllock")]
ScrollLock,
[APIName("pause")]
Pause,
[APIName("insert")]
Insert,
[APIName("home")]
Home,
[APIName("pageup")]
PageUp,
[APIName("delete")]
Delete,
[APIName("end")]
End,
[APIName("pagedown")]
PageDown,
[APIName("rightarrow")]
RightArrow,
[APIName("leftarrow")]
LeftArrow,
[APIName("downarrow")]
DownArrow,
[APIName("uparrow")]
UpArrow,
[APIName("keypad-num-lock")]
KeypadNumLock,
[APIName("keypad-divide")]
KeypadDivide,
[APIName("keypad-times")]
KeypadTimes,
[APIName("keypad-minus")]
KeypadMinus,
[APIName("keypad-plus")]
KeypadPlus,
[APIName("keypad-enter")]
KeypadEnter,
[APIName("keypad-period")]
KeypadPeriod,
[APIName("keypad-1")]
Keypad1,
[APIName("keypad-2")]
Keypad2,
[APIName("keypad-3")]
Keypad3,
[APIName("keypad-4")]
Keypad4,
[APIName("num-5")] //HACK DarthAffe 07.10.2021: Custom name to workaround a SDK-issue (https://github.com/SteelSeries/gamesense-sdk/issues/85) should normally be 'keypad-5'
Keypad5,
[APIName("keypad-6")]
Keypad6,
[APIName("keypad-7")]
Keypad7,
[APIName("keypad-8")]
Keypad8,
[APIName("keypad-9")]
Keypad9,
[APIName("keypad-0")]
Keypad0,
[APIName("l-ctrl")]
LCtrl,
[APIName("l-shift")]
LShift,
[APIName("l-alt")]
LAlt,
[APIName("l-win")]
LWin,
[APIName("r-ctrl")]
RCtrl,
[APIName("r-shift")]
RShift,
[APIName("r-alt")]
RAlt,
[APIName("r-win")]
RWin,
[APIName("ss-key")]
SSKey,
[APIName("win-menu")]
WinMenu,
[APIName("m0")]
M0,
[APIName("m1")]
M1,
[APIName("m2")]
M2,
[APIName("m3")]
M3,
[APIName("m4")]
M4,
[APIName("m5")]
M5,
}
}
/// <summary>
/// Contains a list of Steel Series LED IDs
/// </summary>
public enum SteelSeriesLedId
{
[APIName("one")]
ZoneOne,
[APIName("two")]
ZoneTwo,
[APIName("three")]
ZoneThree,
[APIName("four")]
ZoneFour,
[APIName("five")]
ZoneFive,
[APIName("six")]
ZoneSix,
[APIName("seven")]
ZoneSeven,
[APIName("eight")]
ZoneEight,
[APIName("nine")]
ZoneNine,
[APIName("ten")]
ZoneTen,
[APIName("eleven")]
ZoneEleven,
[APIName("twelve")]
ZoneTwelve,
[APIName("thirteen")]
ZoneThirteen,
[APIName("fourteen")]
ZoneFourteen,
[APIName("fifteen")]
ZoneFifteen,
[APIName("sixteen")]
ZoneSixteen,
[APIName("seventeen")]
ZoneSeventeen,
[APIName("eighteen")]
ZoneEighteen,
[APIName("nineteen")]
ZoneNineteen,
[APIName("twenty")]
ZoneTwenty,
[APIName("twenty-one")]
ZoneTwentyOne,
[APIName("twenty-two")]
ZoneTwentyTwo,
[APIName("twenty-three")]
ZoneTwentyThree,
[APIName("twenty-four")]
ZoneTwentyFour,
[APIName("twenty-five")]
ZoneTwentyFive,
[APIName("twenty-six")]
ZoneTwentySix,
[APIName("twenty-seven")]
ZoneTwentySeven,
[APIName("twenty-eight")]
ZoneTwentyEight,
[APIName("twenty-nine")]
ZoneTwentyNine,
[APIName("thirty")]
ZoneThirty,
[APIName("thirty-one")]
ZoneThirtyOne,
[APIName("thirty-two")]
ZoneThirtyTwo,
[APIName("thirty-three")]
ZoneThirtyThree,
[APIName("thirty-four")]
ZoneThirtyFour,
[APIName("thirty-five")]
ZoneThirtyFive,
[APIName("thirty-six")]
ZoneThirtySix,
[APIName("thirty-seven")]
ZoneThirtySeven,
[APIName("thirty-eight")]
ZoneThirtyEight,
[APIName("thirty-nine")]
ZoneThirtyNine,
[APIName("forty")]
ZoneForty,
[APIName("forty-one")]
ZoneFortyOne,
[APIName("forty-two")]
ZoneFortyTwo,
[APIName("forty-three")]
ZoneFortyThree,
[APIName("forty-four")]
ZoneFortyFour,
[APIName("forty-five")]
ZoneFortyFive,
[APIName("forty-six")]
ZoneFortySix,
[APIName("forty-seven")]
ZoneFortySeven,
[APIName("forty-eight")]
ZoneFortyEight,
[APIName("forty-nine")]
ZoneFortyNine,
[APIName("fifty")]
ZoneFifty,
[APIName("fifty-one")]
ZoneFiftyOne,
[APIName("fifty-two")]
ZoneFiftyTwo,
[APIName("fifty-three")]
ZoneFiftyThree,
[APIName("fifty-four")]
ZoneFiftyFour,
[APIName("fifty-five")]
ZoneFiftyFive,
[APIName("fifty-six")]
ZoneFiftySix,
[APIName("fifty-seven")]
ZoneFiftySeven,
[APIName("fifty-eight")]
ZoneFiftyEight,
[APIName("fifty-nine")]
ZoneFiftyNine,
[APIName("sixty")]
ZoneSixty,
[APIName("sixty-one")]
ZoneSixtyOne,
[APIName("sixty-two")]
ZoneSixtyTwo,
[APIName("sixty-three")]
ZoneSixtyThree,
[APIName("sixty-four")]
ZoneSixtyFour,
[APIName("sixty-five")]
ZoneSixtyFive,
[APIName("sixty-six")]
ZoneSixtySix,
[APIName("sixty-seven")]
ZoneSixtySeven,
[APIName("sixty-eight")]
ZoneSixtyEight,
[APIName("sixty-nine")]
ZoneSixtyNine,
[APIName("seventy")]
ZoneSeventy,
[APIName("seventy-one")]
ZoneSeventyOne,
[APIName("seventy-two")]
ZoneSeventyTwo,
[APIName("seventy-three")]
ZoneSeventyThree,
[APIName("seventy-four")]
ZoneSeventyFour,
[APIName("seventy-five")]
ZoneSeventyFive,
[APIName("seventy-six")]
ZoneSeventySix,
[APIName("seventy-seven")]
ZoneSeventySeven,
[APIName("seventy-eight")]
ZoneSeventyEight,
[APIName("seventy-nine")]
ZoneSeventyNine,
[APIName("eighty")]
ZoneEighty,
[APIName("eighty-one")]
ZoneEightyOne,
[APIName("eighty-two")]
ZoneEightyTwo,
[APIName("eighty-three")]
ZoneEightyThree,
[APIName("eighty-four")]
ZoneEightyFour,
[APIName("eighty-five")]
ZoneEightyFive,
[APIName("eighty-six")]
ZoneEightySix,
[APIName("eighty-seven")]
ZoneEightySeven,
[APIName("eighty-eight")]
ZoneEightyEight,
[APIName("eighty-nine")]
ZoneEightyNine,
[APIName("ninety")]
ZoneNinety,
[APIName("ninety-one")]
ZoneNinetyOne,
[APIName("ninety-two")]
ZoneNinetyTwo,
[APIName("ninety-three")]
ZoneNinetyThree,
[APIName("ninety-four")]
ZoneNinetyFour,
[APIName("ninety-five")]
ZoneNinetyFive,
[APIName("ninety-six")]
ZoneNinetySix,
[APIName("ninety-seven")]
ZoneNinetySeven,
[APIName("ninety-eight")]
ZoneNinetyEight,
[APIName("ninety-nine")]
ZoneNinetyNine,
[APIName("one-hundred")]
ZoneOneHundred,
[APIName("one-hundred-one")]
ZoneOneHundredOne,
[APIName("one-hundred-two")]
ZoneOneHundredTwo,
[APIName("one-hundred-three")]
ZoneOneHundredThree,
[APIName("logo")]
Logo,
[APIName("a")]
A,
[APIName("b")]
B,
[APIName("c")]
C,
[APIName("d")]
D,
[APIName("e")]
E,
[APIName("f")]
F,
[APIName("g")]
G,
[APIName("h")]
H,
[APIName("i")]
I,
[APIName("j")]
J,
[APIName("k")]
K,
[APIName("l")]
L,
[APIName("m")]
M,
[APIName("n")]
N,
[APIName("o")]
O,
[APIName("p")]
P,
[APIName("q")]
Q,
[APIName("r")]
R,
[APIName("s")]
S,
[APIName("t")]
T,
[APIName("u")]
U,
[APIName("v")]
V,
[APIName("w")]
W,
[APIName("x")]
X,
[APIName("y")]
Y,
[APIName("z")]
Z,
[APIName("keyboard-1")]
Keyboard1,
[APIName("keyboard-2")]
Keyboard2,
[APIName("keyboard-3")]
Keyboard3,
[APIName("keyboard-4")]
Keyboard4,
[APIName("keyboard-5")]
Keyboard5,
[APIName("keyboard-6")]
Keyboard6,
[APIName("keyboard-7")]
Keyboard7,
[APIName("keyboard-8")]
Keyboard8,
[APIName("keyboard-9")]
Keyboard9,
[APIName("keyboard-0")]
Keyboard0,
[APIName("return")]
Return,
[APIName("escape")]
Escape,
[APIName("backspace")]
Backspace,
[APIName("tab")]
Tab,
[APIName("spacebar")]
Spacebar,
[APIName("caps")]
Caps,
[APIName("dash")]
Dash,
[APIName("equal")]
Equal,
[APIName("l-bracket")]
LBracket,
[APIName("r-bracket")]
RBracket,
[APIName("backslash")]
Backslash,
[APIName("pound")]
Pound,
[APIName("semicolon")]
Semicolon,
[APIName("quote")]
Quote,
[APIName("backquote")]
Backqoute,
[APIName("comma")]
Comma,
[APIName("period")]
Period,
[APIName("slash")]
Slash,
[APIName("f1")]
F1,
[APIName("f2")]
F2,
[APIName("f3")]
F3,
[APIName("f4")]
F4,
[APIName("f5")]
F5,
[APIName("f6")]
F6,
[APIName("f7")]
F7,
[APIName("f8")]
F8,
[APIName("f9")]
F9,
[APIName("f10")]
F10,
[APIName("f11")]
F11,
[APIName("f12")]
F12,
[APIName("printscreen")]
PrintScreen,
[APIName("scrolllock")]
ScrollLock,
[APIName("pause")]
Pause,
[APIName("insert")]
Insert,
[APIName("home")]
Home,
[APIName("pageup")]
PageUp,
[APIName("delete")]
Delete,
[APIName("end")]
End,
[APIName("pagedown")]
PageDown,
[APIName("rightarrow")]
RightArrow,
[APIName("leftarrow")]
LeftArrow,
[APIName("downarrow")]
DownArrow,
[APIName("uparrow")]
UpArrow,
[APIName("keypad-num-lock")]
KeypadNumLock,
[APIName("keypad-divide")]
KeypadDivide,
[APIName("keypad-times")]
KeypadTimes,
[APIName("keypad-minus")]
KeypadMinus,
[APIName("keypad-plus")]
KeypadPlus,
[APIName("keypad-enter")]
KeypadEnter,
[APIName("keypad-period")]
KeypadPeriod,
[APIName("keypad-1")]
Keypad1,
[APIName("keypad-2")]
Keypad2,
[APIName("keypad-3")]
Keypad3,
[APIName("keypad-4")]
Keypad4,
[APIName("num-5")] //HACK DarthAffe 07.10.2021: Custom name to workaround a SDK-issue (https://github.com/SteelSeries/gamesense-sdk/issues/85) should normally be 'keypad-5'
Keypad5,
[APIName("keypad-6")]
Keypad6,
[APIName("keypad-7")]
Keypad7,
[APIName("keypad-8")]
Keypad8,
[APIName("keypad-9")]
Keypad9,
[APIName("keypad-0")]
Keypad0,
[APIName("l-ctrl")]
LCtrl,
[APIName("l-shift")]
LShift,
[APIName("l-alt")]
LAlt,
[APIName("l-win")]
LWin,
[APIName("r-ctrl")]
RCtrl,
[APIName("r-shift")]
RShift,
[APIName("r-alt")]
RAlt,
[APIName("r-win")]
RWin,
[APIName("ss-key")]
SSKey,
[APIName("win-menu")]
WinMenu,
[APIName("m0")]
M0,
[APIName("m1")]
M1,
[APIName("m2")]
M2,
[APIName("m3")]
M3,
[APIName("m4")]
M4,
[APIName("m5")]
M5,
}
@@ -1,10 +1,9 @@
using RGB.NET.Core;
namespace RGB.NET.Devices.SteelSeries
{
/// <summary>
/// Represents a steelseries RGB-device.
/// </summary>
internal interface ISteelSeriesRGBDevice : IRGBDevice
{ }
}
namespace RGB.NET.Devices.SteelSeries;
/// <summary>
/// Represents a steelseries RGB-device.
/// </summary>
internal interface ISteelSeriesRGBDevice : IRGBDevice
{ }
+385 -386
View File
@@ -1,399 +1,398 @@
using RGB.NET.Core;
namespace RGB.NET.Devices.SteelSeries
namespace RGB.NET.Devices.SteelSeries;
/// <summary>
/// Contains mappings for <see cref="LedId"/> to <see cref="SteelSeriesLedId"/>.
/// </summary>
public static class LedMappings
{
/// <summary>
/// Contains mappings for <see cref="LedId"/> to <see cref="SteelSeriesLedId"/>.
/// Gets the uk-mapping for keyboards.
/// </summary>
public static class LedMappings
{
/// <summary>
/// Gets the uk-mapping for keyboards.
/// </summary>
public static LedMapping<SteelSeriesLedId> KeyboardMappingUk { get; } = new()
{
{ LedId.Logo, SteelSeriesLedId.Logo },
{ LedId.Keyboard_Escape, SteelSeriesLedId.Escape },
{ LedId.Keyboard_F1, SteelSeriesLedId.F1 },
{ LedId.Keyboard_F2, SteelSeriesLedId.F2 },
{ LedId.Keyboard_F3, SteelSeriesLedId.F3 },
{ LedId.Keyboard_F4, SteelSeriesLedId.F4 },
{ LedId.Keyboard_F5, SteelSeriesLedId.F5 },
{ LedId.Keyboard_F6, SteelSeriesLedId.F6 },
{ LedId.Keyboard_F7, SteelSeriesLedId.F7 },
{ LedId.Keyboard_F8, SteelSeriesLedId.F8 },
{ LedId.Keyboard_F9, SteelSeriesLedId.F9 },
{ LedId.Keyboard_F10, SteelSeriesLedId.F10 },
{ LedId.Keyboard_F11, SteelSeriesLedId.F11 },
{ LedId.Keyboard_GraveAccentAndTilde, SteelSeriesLedId.Backqoute },
{ LedId.Keyboard_1, SteelSeriesLedId.Keyboard1 },
{ LedId.Keyboard_2, SteelSeriesLedId.Keyboard2 },
{ LedId.Keyboard_3, SteelSeriesLedId.Keyboard3 },
{ LedId.Keyboard_4, SteelSeriesLedId.Keyboard4 },
{ LedId.Keyboard_5, SteelSeriesLedId.Keyboard5 },
{ LedId.Keyboard_6, SteelSeriesLedId.Keyboard6 },
{ LedId.Keyboard_7, SteelSeriesLedId.Keyboard7 },
{ LedId.Keyboard_8, SteelSeriesLedId.Keyboard8 },
{ LedId.Keyboard_9, SteelSeriesLedId.Keyboard9 },
{ LedId.Keyboard_0, SteelSeriesLedId.Keyboard0 },
{ LedId.Keyboard_MinusAndUnderscore, SteelSeriesLedId.Dash },
{ LedId.Keyboard_Tab, SteelSeriesLedId.Tab },
{ LedId.Keyboard_Q, SteelSeriesLedId.Q },
{ LedId.Keyboard_W, SteelSeriesLedId.W },
{ LedId.Keyboard_E, SteelSeriesLedId.E },
{ LedId.Keyboard_R, SteelSeriesLedId.R },
{ LedId.Keyboard_T, SteelSeriesLedId.T },
{ LedId.Keyboard_Y, SteelSeriesLedId.Y },
{ LedId.Keyboard_U, SteelSeriesLedId.U },
{ LedId.Keyboard_I, SteelSeriesLedId.I },
{ LedId.Keyboard_O, SteelSeriesLedId.O },
{ LedId.Keyboard_P, SteelSeriesLedId.P },
{ LedId.Keyboard_BracketLeft, SteelSeriesLedId.LBracket },
{ LedId.Keyboard_CapsLock, SteelSeriesLedId.Caps },
{ LedId.Keyboard_A, SteelSeriesLedId.A },
{ LedId.Keyboard_S, SteelSeriesLedId.S },
{ LedId.Keyboard_D, SteelSeriesLedId.D },
{ LedId.Keyboard_F, SteelSeriesLedId.F },
{ LedId.Keyboard_G, SteelSeriesLedId.G },
{ LedId.Keyboard_H, SteelSeriesLedId.H },
{ LedId.Keyboard_J, SteelSeriesLedId.J },
{ LedId.Keyboard_K, SteelSeriesLedId.K },
{ LedId.Keyboard_L, SteelSeriesLedId.L },
{ LedId.Keyboard_SemicolonAndColon, SteelSeriesLedId.Semicolon },
{ LedId.Keyboard_ApostropheAndDoubleQuote, SteelSeriesLedId.Quote },
{ LedId.Keyboard_LeftShift, SteelSeriesLedId.LShift },
{ LedId.Keyboard_NonUsTilde, SteelSeriesLedId.Pound },
{ LedId.Keyboard_Z, SteelSeriesLedId.Z },
{ LedId.Keyboard_X, SteelSeriesLedId.X },
{ LedId.Keyboard_C, SteelSeriesLedId.C },
{ LedId.Keyboard_V, SteelSeriesLedId.V },
{ LedId.Keyboard_B, SteelSeriesLedId.B },
{ LedId.Keyboard_N, SteelSeriesLedId.N },
{ LedId.Keyboard_M, SteelSeriesLedId.M },
{ LedId.Keyboard_CommaAndLessThan, SteelSeriesLedId.Comma },
{ LedId.Keyboard_PeriodAndBiggerThan, SteelSeriesLedId.Period },
{ LedId.Keyboard_SlashAndQuestionMark, SteelSeriesLedId.Slash },
{ LedId.Keyboard_LeftCtrl, SteelSeriesLedId.LCtrl },
{ LedId.Keyboard_LeftGui, SteelSeriesLedId.LWin },
{ LedId.Keyboard_LeftAlt, SteelSeriesLedId.LAlt },
{ LedId.Keyboard_Space, SteelSeriesLedId.Spacebar },
{ LedId.Keyboard_RightAlt, SteelSeriesLedId.RAlt },
{ LedId.Keyboard_RightGui, SteelSeriesLedId.RWin },
{ LedId.Keyboard_Application, SteelSeriesLedId.SSKey },
{ LedId.Keyboard_F12, SteelSeriesLedId.F12 },
{ LedId.Keyboard_PrintScreen, SteelSeriesLedId.PrintScreen },
{ LedId.Keyboard_ScrollLock, SteelSeriesLedId.ScrollLock },
{ LedId.Keyboard_PauseBreak, SteelSeriesLedId.Pause },
{ LedId.Keyboard_Insert, SteelSeriesLedId.Insert },
{ LedId.Keyboard_Home, SteelSeriesLedId.Home },
{ LedId.Keyboard_PageUp, SteelSeriesLedId.PageUp },
{ LedId.Keyboard_BracketRight, SteelSeriesLedId.RBracket },
{ LedId.Keyboard_Backslash, SteelSeriesLedId.Backslash },
{ LedId.Keyboard_Enter, SteelSeriesLedId.Return },
{ LedId.Keyboard_EqualsAndPlus, SteelSeriesLedId.Equal },
{ LedId.Keyboard_Backspace, SteelSeriesLedId.Backspace },
{ LedId.Keyboard_Delete, SteelSeriesLedId.Delete },
{ LedId.Keyboard_End, SteelSeriesLedId.End },
{ LedId.Keyboard_PageDown, SteelSeriesLedId.PageDown },
{ LedId.Keyboard_RightShift, SteelSeriesLedId.RShift },
{ LedId.Keyboard_RightCtrl, SteelSeriesLedId.RCtrl },
{ LedId.Keyboard_ArrowUp, SteelSeriesLedId.UpArrow },
{ LedId.Keyboard_ArrowLeft, SteelSeriesLedId.LeftArrow },
{ LedId.Keyboard_ArrowDown, SteelSeriesLedId.DownArrow },
{ LedId.Keyboard_ArrowRight, SteelSeriesLedId.RightArrow },
{ LedId.Keyboard_NumLock, SteelSeriesLedId.KeypadNumLock },
{ LedId.Keyboard_NumSlash, SteelSeriesLedId.KeypadDivide },
{ LedId.Keyboard_NumAsterisk, SteelSeriesLedId.KeypadTimes },
{ LedId.Keyboard_NumMinus, SteelSeriesLedId.KeypadMinus },
{ LedId.Keyboard_NumPlus, SteelSeriesLedId.KeypadPlus },
{ LedId.Keyboard_NumEnter, SteelSeriesLedId.KeypadEnter },
{ LedId.Keyboard_Num7, SteelSeriesLedId.Keypad7 },
{ LedId.Keyboard_Num8, SteelSeriesLedId.Keypad8 },
{ LedId.Keyboard_Num9, SteelSeriesLedId.Keypad9 },
{ LedId.Keyboard_Num4, SteelSeriesLedId.Keypad4 },
{ LedId.Keyboard_Num5, SteelSeriesLedId.Keypad5 },
{ LedId.Keyboard_Num6, SteelSeriesLedId.Keypad6 },
{ LedId.Keyboard_Num1, SteelSeriesLedId.Keypad1 },
{ LedId.Keyboard_Num2, SteelSeriesLedId.Keypad2 },
{ LedId.Keyboard_Num3, SteelSeriesLedId.Keypad3 },
{ LedId.Keyboard_Num0, SteelSeriesLedId.Keypad0 },
{ LedId.Keyboard_NumPeriodAndDelete, SteelSeriesLedId.KeypadPeriod }
};
public static LedMapping<SteelSeriesLedId> KeyboardMappingUk { get; } = new()
{
{ LedId.Logo, SteelSeriesLedId.Logo },
{ LedId.Keyboard_Escape, SteelSeriesLedId.Escape },
{ LedId.Keyboard_F1, SteelSeriesLedId.F1 },
{ LedId.Keyboard_F2, SteelSeriesLedId.F2 },
{ LedId.Keyboard_F3, SteelSeriesLedId.F3 },
{ LedId.Keyboard_F4, SteelSeriesLedId.F4 },
{ LedId.Keyboard_F5, SteelSeriesLedId.F5 },
{ LedId.Keyboard_F6, SteelSeriesLedId.F6 },
{ LedId.Keyboard_F7, SteelSeriesLedId.F7 },
{ LedId.Keyboard_F8, SteelSeriesLedId.F8 },
{ LedId.Keyboard_F9, SteelSeriesLedId.F9 },
{ LedId.Keyboard_F10, SteelSeriesLedId.F10 },
{ LedId.Keyboard_F11, SteelSeriesLedId.F11 },
{ LedId.Keyboard_GraveAccentAndTilde, SteelSeriesLedId.Backqoute },
{ LedId.Keyboard_1, SteelSeriesLedId.Keyboard1 },
{ LedId.Keyboard_2, SteelSeriesLedId.Keyboard2 },
{ LedId.Keyboard_3, SteelSeriesLedId.Keyboard3 },
{ LedId.Keyboard_4, SteelSeriesLedId.Keyboard4 },
{ LedId.Keyboard_5, SteelSeriesLedId.Keyboard5 },
{ LedId.Keyboard_6, SteelSeriesLedId.Keyboard6 },
{ LedId.Keyboard_7, SteelSeriesLedId.Keyboard7 },
{ LedId.Keyboard_8, SteelSeriesLedId.Keyboard8 },
{ LedId.Keyboard_9, SteelSeriesLedId.Keyboard9 },
{ LedId.Keyboard_0, SteelSeriesLedId.Keyboard0 },
{ LedId.Keyboard_MinusAndUnderscore, SteelSeriesLedId.Dash },
{ LedId.Keyboard_Tab, SteelSeriesLedId.Tab },
{ LedId.Keyboard_Q, SteelSeriesLedId.Q },
{ LedId.Keyboard_W, SteelSeriesLedId.W },
{ LedId.Keyboard_E, SteelSeriesLedId.E },
{ LedId.Keyboard_R, SteelSeriesLedId.R },
{ LedId.Keyboard_T, SteelSeriesLedId.T },
{ LedId.Keyboard_Y, SteelSeriesLedId.Y },
{ LedId.Keyboard_U, SteelSeriesLedId.U },
{ LedId.Keyboard_I, SteelSeriesLedId.I },
{ LedId.Keyboard_O, SteelSeriesLedId.O },
{ LedId.Keyboard_P, SteelSeriesLedId.P },
{ LedId.Keyboard_BracketLeft, SteelSeriesLedId.LBracket },
{ LedId.Keyboard_CapsLock, SteelSeriesLedId.Caps },
{ LedId.Keyboard_A, SteelSeriesLedId.A },
{ LedId.Keyboard_S, SteelSeriesLedId.S },
{ LedId.Keyboard_D, SteelSeriesLedId.D },
{ LedId.Keyboard_F, SteelSeriesLedId.F },
{ LedId.Keyboard_G, SteelSeriesLedId.G },
{ LedId.Keyboard_H, SteelSeriesLedId.H },
{ LedId.Keyboard_J, SteelSeriesLedId.J },
{ LedId.Keyboard_K, SteelSeriesLedId.K },
{ LedId.Keyboard_L, SteelSeriesLedId.L },
{ LedId.Keyboard_SemicolonAndColon, SteelSeriesLedId.Semicolon },
{ LedId.Keyboard_ApostropheAndDoubleQuote, SteelSeriesLedId.Quote },
{ LedId.Keyboard_LeftShift, SteelSeriesLedId.LShift },
{ LedId.Keyboard_NonUsTilde, SteelSeriesLedId.Pound },
{ LedId.Keyboard_Z, SteelSeriesLedId.Z },
{ LedId.Keyboard_X, SteelSeriesLedId.X },
{ LedId.Keyboard_C, SteelSeriesLedId.C },
{ LedId.Keyboard_V, SteelSeriesLedId.V },
{ LedId.Keyboard_B, SteelSeriesLedId.B },
{ LedId.Keyboard_N, SteelSeriesLedId.N },
{ LedId.Keyboard_M, SteelSeriesLedId.M },
{ LedId.Keyboard_CommaAndLessThan, SteelSeriesLedId.Comma },
{ LedId.Keyboard_PeriodAndBiggerThan, SteelSeriesLedId.Period },
{ LedId.Keyboard_SlashAndQuestionMark, SteelSeriesLedId.Slash },
{ LedId.Keyboard_LeftCtrl, SteelSeriesLedId.LCtrl },
{ LedId.Keyboard_LeftGui, SteelSeriesLedId.LWin },
{ LedId.Keyboard_LeftAlt, SteelSeriesLedId.LAlt },
{ LedId.Keyboard_Space, SteelSeriesLedId.Spacebar },
{ LedId.Keyboard_RightAlt, SteelSeriesLedId.RAlt },
{ LedId.Keyboard_RightGui, SteelSeriesLedId.RWin },
{ LedId.Keyboard_Application, SteelSeriesLedId.SSKey },
{ LedId.Keyboard_F12, SteelSeriesLedId.F12 },
{ LedId.Keyboard_PrintScreen, SteelSeriesLedId.PrintScreen },
{ LedId.Keyboard_ScrollLock, SteelSeriesLedId.ScrollLock },
{ LedId.Keyboard_PauseBreak, SteelSeriesLedId.Pause },
{ LedId.Keyboard_Insert, SteelSeriesLedId.Insert },
{ LedId.Keyboard_Home, SteelSeriesLedId.Home },
{ LedId.Keyboard_PageUp, SteelSeriesLedId.PageUp },
{ LedId.Keyboard_BracketRight, SteelSeriesLedId.RBracket },
{ LedId.Keyboard_Backslash, SteelSeriesLedId.Backslash },
{ LedId.Keyboard_Enter, SteelSeriesLedId.Return },
{ LedId.Keyboard_EqualsAndPlus, SteelSeriesLedId.Equal },
{ LedId.Keyboard_Backspace, SteelSeriesLedId.Backspace },
{ LedId.Keyboard_Delete, SteelSeriesLedId.Delete },
{ LedId.Keyboard_End, SteelSeriesLedId.End },
{ LedId.Keyboard_PageDown, SteelSeriesLedId.PageDown },
{ LedId.Keyboard_RightShift, SteelSeriesLedId.RShift },
{ LedId.Keyboard_RightCtrl, SteelSeriesLedId.RCtrl },
{ LedId.Keyboard_ArrowUp, SteelSeriesLedId.UpArrow },
{ LedId.Keyboard_ArrowLeft, SteelSeriesLedId.LeftArrow },
{ LedId.Keyboard_ArrowDown, SteelSeriesLedId.DownArrow },
{ LedId.Keyboard_ArrowRight, SteelSeriesLedId.RightArrow },
{ LedId.Keyboard_NumLock, SteelSeriesLedId.KeypadNumLock },
{ LedId.Keyboard_NumSlash, SteelSeriesLedId.KeypadDivide },
{ LedId.Keyboard_NumAsterisk, SteelSeriesLedId.KeypadTimes },
{ LedId.Keyboard_NumMinus, SteelSeriesLedId.KeypadMinus },
{ LedId.Keyboard_NumPlus, SteelSeriesLedId.KeypadPlus },
{ LedId.Keyboard_NumEnter, SteelSeriesLedId.KeypadEnter },
{ LedId.Keyboard_Num7, SteelSeriesLedId.Keypad7 },
{ LedId.Keyboard_Num8, SteelSeriesLedId.Keypad8 },
{ LedId.Keyboard_Num9, SteelSeriesLedId.Keypad9 },
{ LedId.Keyboard_Num4, SteelSeriesLedId.Keypad4 },
{ LedId.Keyboard_Num5, SteelSeriesLedId.Keypad5 },
{ LedId.Keyboard_Num6, SteelSeriesLedId.Keypad6 },
{ LedId.Keyboard_Num1, SteelSeriesLedId.Keypad1 },
{ LedId.Keyboard_Num2, SteelSeriesLedId.Keypad2 },
{ LedId.Keyboard_Num3, SteelSeriesLedId.Keypad3 },
{ LedId.Keyboard_Num0, SteelSeriesLedId.Keypad0 },
{ LedId.Keyboard_NumPeriodAndDelete, SteelSeriesLedId.KeypadPeriod }
};
/// <summary>
/// Gets the uk-tkl-mapping for keyboards.
/// </summary>
public static LedMapping<SteelSeriesLedId> KeyboardTklMappingUk { get; } = new()
{
{ LedId.Logo, SteelSeriesLedId.Logo },
{ LedId.Keyboard_Escape, SteelSeriesLedId.Escape },
{ LedId.Keyboard_F1, SteelSeriesLedId.F1 },
{ LedId.Keyboard_F2, SteelSeriesLedId.F2 },
{ LedId.Keyboard_F3, SteelSeriesLedId.F3 },
{ LedId.Keyboard_F4, SteelSeriesLedId.F4 },
{ LedId.Keyboard_F5, SteelSeriesLedId.F5 },
{ LedId.Keyboard_F6, SteelSeriesLedId.F6 },
{ LedId.Keyboard_F7, SteelSeriesLedId.F7 },
{ LedId.Keyboard_F8, SteelSeriesLedId.F8 },
{ LedId.Keyboard_F9, SteelSeriesLedId.F9 },
{ LedId.Keyboard_F10, SteelSeriesLedId.F10 },
{ LedId.Keyboard_F11, SteelSeriesLedId.F11 },
{ LedId.Keyboard_GraveAccentAndTilde, SteelSeriesLedId.Backqoute },
{ LedId.Keyboard_1, SteelSeriesLedId.Keyboard1 },
{ LedId.Keyboard_2, SteelSeriesLedId.Keyboard2 },
{ LedId.Keyboard_3, SteelSeriesLedId.Keyboard3 },
{ LedId.Keyboard_4, SteelSeriesLedId.Keyboard4 },
{ LedId.Keyboard_5, SteelSeriesLedId.Keyboard5 },
{ LedId.Keyboard_6, SteelSeriesLedId.Keyboard6 },
{ LedId.Keyboard_7, SteelSeriesLedId.Keyboard7 },
{ LedId.Keyboard_8, SteelSeriesLedId.Keyboard8 },
{ LedId.Keyboard_9, SteelSeriesLedId.Keyboard9 },
{ LedId.Keyboard_0, SteelSeriesLedId.Keyboard0 },
{ LedId.Keyboard_MinusAndUnderscore, SteelSeriesLedId.Dash },
{ LedId.Keyboard_Tab, SteelSeriesLedId.Tab },
{ LedId.Keyboard_Q, SteelSeriesLedId.Q },
{ LedId.Keyboard_W, SteelSeriesLedId.W },
{ LedId.Keyboard_E, SteelSeriesLedId.E },
{ LedId.Keyboard_R, SteelSeriesLedId.R },
{ LedId.Keyboard_T, SteelSeriesLedId.T },
{ LedId.Keyboard_Y, SteelSeriesLedId.Y },
{ LedId.Keyboard_U, SteelSeriesLedId.U },
{ LedId.Keyboard_I, SteelSeriesLedId.I },
{ LedId.Keyboard_O, SteelSeriesLedId.O },
{ LedId.Keyboard_P, SteelSeriesLedId.P },
{ LedId.Keyboard_BracketLeft, SteelSeriesLedId.LBracket },
{ LedId.Keyboard_CapsLock, SteelSeriesLedId.Caps },
{ LedId.Keyboard_A, SteelSeriesLedId.A },
{ LedId.Keyboard_S, SteelSeriesLedId.S },
{ LedId.Keyboard_D, SteelSeriesLedId.D },
{ LedId.Keyboard_F, SteelSeriesLedId.F },
{ LedId.Keyboard_G, SteelSeriesLedId.G },
{ LedId.Keyboard_H, SteelSeriesLedId.H },
{ LedId.Keyboard_J, SteelSeriesLedId.J },
{ LedId.Keyboard_K, SteelSeriesLedId.K },
{ LedId.Keyboard_L, SteelSeriesLedId.L },
{ LedId.Keyboard_SemicolonAndColon, SteelSeriesLedId.Semicolon },
{ LedId.Keyboard_ApostropheAndDoubleQuote, SteelSeriesLedId.Quote },
{ LedId.Keyboard_LeftShift, SteelSeriesLedId.LShift },
{ LedId.Keyboard_NonUsTilde, SteelSeriesLedId.Pound },
{ LedId.Keyboard_Z, SteelSeriesLedId.Z },
{ LedId.Keyboard_X, SteelSeriesLedId.X },
{ LedId.Keyboard_C, SteelSeriesLedId.C },
{ LedId.Keyboard_V, SteelSeriesLedId.V },
{ LedId.Keyboard_B, SteelSeriesLedId.B },
{ LedId.Keyboard_N, SteelSeriesLedId.N },
{ LedId.Keyboard_M, SteelSeriesLedId.M },
{ LedId.Keyboard_CommaAndLessThan, SteelSeriesLedId.Comma },
{ LedId.Keyboard_PeriodAndBiggerThan, SteelSeriesLedId.Period },
{ LedId.Keyboard_SlashAndQuestionMark, SteelSeriesLedId.Slash },
{ LedId.Keyboard_LeftCtrl, SteelSeriesLedId.LCtrl },
{ LedId.Keyboard_LeftGui, SteelSeriesLedId.LWin },
{ LedId.Keyboard_LeftAlt, SteelSeriesLedId.LAlt },
{ LedId.Keyboard_Space, SteelSeriesLedId.Spacebar },
{ LedId.Keyboard_RightAlt, SteelSeriesLedId.RAlt },
{ LedId.Keyboard_RightGui, SteelSeriesLedId.RWin },
{ LedId.Keyboard_Application, SteelSeriesLedId.SSKey },
{ LedId.Keyboard_F12, SteelSeriesLedId.F12 },
{ LedId.Keyboard_PrintScreen, SteelSeriesLedId.PrintScreen },
{ LedId.Keyboard_ScrollLock, SteelSeriesLedId.ScrollLock },
{ LedId.Keyboard_PauseBreak, SteelSeriesLedId.Pause },
{ LedId.Keyboard_Insert, SteelSeriesLedId.Insert },
{ LedId.Keyboard_Home, SteelSeriesLedId.Home },
{ LedId.Keyboard_PageUp, SteelSeriesLedId.PageUp },
{ LedId.Keyboard_BracketRight, SteelSeriesLedId.RBracket },
{ LedId.Keyboard_Backslash, SteelSeriesLedId.Backslash },
{ LedId.Keyboard_Enter, SteelSeriesLedId.Return },
{ LedId.Keyboard_EqualsAndPlus, SteelSeriesLedId.Equal },
{ LedId.Keyboard_Backspace, SteelSeriesLedId.Backspace },
{ LedId.Keyboard_Delete, SteelSeriesLedId.Delete },
{ LedId.Keyboard_End, SteelSeriesLedId.End },
{ LedId.Keyboard_PageDown, SteelSeriesLedId.PageDown },
{ LedId.Keyboard_RightShift, SteelSeriesLedId.RShift },
{ LedId.Keyboard_RightCtrl, SteelSeriesLedId.RCtrl },
{ LedId.Keyboard_ArrowUp, SteelSeriesLedId.UpArrow },
{ LedId.Keyboard_ArrowLeft, SteelSeriesLedId.LeftArrow },
{ LedId.Keyboard_ArrowDown, SteelSeriesLedId.DownArrow },
{ LedId.Keyboard_ArrowRight, SteelSeriesLedId.RightArrow }
};
/// <summary>
/// Gets the uk-tkl-mapping for keyboards.
/// </summary>
public static LedMapping<SteelSeriesLedId> KeyboardTklMappingUk { get; } = new()
{
{ LedId.Logo, SteelSeriesLedId.Logo },
{ LedId.Keyboard_Escape, SteelSeriesLedId.Escape },
{ LedId.Keyboard_F1, SteelSeriesLedId.F1 },
{ LedId.Keyboard_F2, SteelSeriesLedId.F2 },
{ LedId.Keyboard_F3, SteelSeriesLedId.F3 },
{ LedId.Keyboard_F4, SteelSeriesLedId.F4 },
{ LedId.Keyboard_F5, SteelSeriesLedId.F5 },
{ LedId.Keyboard_F6, SteelSeriesLedId.F6 },
{ LedId.Keyboard_F7, SteelSeriesLedId.F7 },
{ LedId.Keyboard_F8, SteelSeriesLedId.F8 },
{ LedId.Keyboard_F9, SteelSeriesLedId.F9 },
{ LedId.Keyboard_F10, SteelSeriesLedId.F10 },
{ LedId.Keyboard_F11, SteelSeriesLedId.F11 },
{ LedId.Keyboard_GraveAccentAndTilde, SteelSeriesLedId.Backqoute },
{ LedId.Keyboard_1, SteelSeriesLedId.Keyboard1 },
{ LedId.Keyboard_2, SteelSeriesLedId.Keyboard2 },
{ LedId.Keyboard_3, SteelSeriesLedId.Keyboard3 },
{ LedId.Keyboard_4, SteelSeriesLedId.Keyboard4 },
{ LedId.Keyboard_5, SteelSeriesLedId.Keyboard5 },
{ LedId.Keyboard_6, SteelSeriesLedId.Keyboard6 },
{ LedId.Keyboard_7, SteelSeriesLedId.Keyboard7 },
{ LedId.Keyboard_8, SteelSeriesLedId.Keyboard8 },
{ LedId.Keyboard_9, SteelSeriesLedId.Keyboard9 },
{ LedId.Keyboard_0, SteelSeriesLedId.Keyboard0 },
{ LedId.Keyboard_MinusAndUnderscore, SteelSeriesLedId.Dash },
{ LedId.Keyboard_Tab, SteelSeriesLedId.Tab },
{ LedId.Keyboard_Q, SteelSeriesLedId.Q },
{ LedId.Keyboard_W, SteelSeriesLedId.W },
{ LedId.Keyboard_E, SteelSeriesLedId.E },
{ LedId.Keyboard_R, SteelSeriesLedId.R },
{ LedId.Keyboard_T, SteelSeriesLedId.T },
{ LedId.Keyboard_Y, SteelSeriesLedId.Y },
{ LedId.Keyboard_U, SteelSeriesLedId.U },
{ LedId.Keyboard_I, SteelSeriesLedId.I },
{ LedId.Keyboard_O, SteelSeriesLedId.O },
{ LedId.Keyboard_P, SteelSeriesLedId.P },
{ LedId.Keyboard_BracketLeft, SteelSeriesLedId.LBracket },
{ LedId.Keyboard_CapsLock, SteelSeriesLedId.Caps },
{ LedId.Keyboard_A, SteelSeriesLedId.A },
{ LedId.Keyboard_S, SteelSeriesLedId.S },
{ LedId.Keyboard_D, SteelSeriesLedId.D },
{ LedId.Keyboard_F, SteelSeriesLedId.F },
{ LedId.Keyboard_G, SteelSeriesLedId.G },
{ LedId.Keyboard_H, SteelSeriesLedId.H },
{ LedId.Keyboard_J, SteelSeriesLedId.J },
{ LedId.Keyboard_K, SteelSeriesLedId.K },
{ LedId.Keyboard_L, SteelSeriesLedId.L },
{ LedId.Keyboard_SemicolonAndColon, SteelSeriesLedId.Semicolon },
{ LedId.Keyboard_ApostropheAndDoubleQuote, SteelSeriesLedId.Quote },
{ LedId.Keyboard_LeftShift, SteelSeriesLedId.LShift },
{ LedId.Keyboard_NonUsTilde, SteelSeriesLedId.Pound },
{ LedId.Keyboard_Z, SteelSeriesLedId.Z },
{ LedId.Keyboard_X, SteelSeriesLedId.X },
{ LedId.Keyboard_C, SteelSeriesLedId.C },
{ LedId.Keyboard_V, SteelSeriesLedId.V },
{ LedId.Keyboard_B, SteelSeriesLedId.B },
{ LedId.Keyboard_N, SteelSeriesLedId.N },
{ LedId.Keyboard_M, SteelSeriesLedId.M },
{ LedId.Keyboard_CommaAndLessThan, SteelSeriesLedId.Comma },
{ LedId.Keyboard_PeriodAndBiggerThan, SteelSeriesLedId.Period },
{ LedId.Keyboard_SlashAndQuestionMark, SteelSeriesLedId.Slash },
{ LedId.Keyboard_LeftCtrl, SteelSeriesLedId.LCtrl },
{ LedId.Keyboard_LeftGui, SteelSeriesLedId.LWin },
{ LedId.Keyboard_LeftAlt, SteelSeriesLedId.LAlt },
{ LedId.Keyboard_Space, SteelSeriesLedId.Spacebar },
{ LedId.Keyboard_RightAlt, SteelSeriesLedId.RAlt },
{ LedId.Keyboard_RightGui, SteelSeriesLedId.RWin },
{ LedId.Keyboard_Application, SteelSeriesLedId.SSKey },
{ LedId.Keyboard_F12, SteelSeriesLedId.F12 },
{ LedId.Keyboard_PrintScreen, SteelSeriesLedId.PrintScreen },
{ LedId.Keyboard_ScrollLock, SteelSeriesLedId.ScrollLock },
{ LedId.Keyboard_PauseBreak, SteelSeriesLedId.Pause },
{ LedId.Keyboard_Insert, SteelSeriesLedId.Insert },
{ LedId.Keyboard_Home, SteelSeriesLedId.Home },
{ LedId.Keyboard_PageUp, SteelSeriesLedId.PageUp },
{ LedId.Keyboard_BracketRight, SteelSeriesLedId.RBracket },
{ LedId.Keyboard_Backslash, SteelSeriesLedId.Backslash },
{ LedId.Keyboard_Enter, SteelSeriesLedId.Return },
{ LedId.Keyboard_EqualsAndPlus, SteelSeriesLedId.Equal },
{ LedId.Keyboard_Backspace, SteelSeriesLedId.Backspace },
{ LedId.Keyboard_Delete, SteelSeriesLedId.Delete },
{ LedId.Keyboard_End, SteelSeriesLedId.End },
{ LedId.Keyboard_PageDown, SteelSeriesLedId.PageDown },
{ LedId.Keyboard_RightShift, SteelSeriesLedId.RShift },
{ LedId.Keyboard_RightCtrl, SteelSeriesLedId.RCtrl },
{ LedId.Keyboard_ArrowUp, SteelSeriesLedId.UpArrow },
{ LedId.Keyboard_ArrowLeft, SteelSeriesLedId.LeftArrow },
{ LedId.Keyboard_ArrowDown, SteelSeriesLedId.DownArrow },
{ LedId.Keyboard_ArrowRight, SteelSeriesLedId.RightArrow }
};
/// <summary>
/// Gets the mapping for one-zone mice.
/// </summary>
public static LedMapping<SteelSeriesLedId> MouseOneZone { get; } = new()
{
{ LedId.Mouse1, SteelSeriesLedId.ZoneOne }
};
/// <summary>
/// Gets the mapping for one-zone mice.
/// </summary>
public static LedMapping<SteelSeriesLedId> MouseOneZone { get; } = new()
{
{ LedId.Mouse1, SteelSeriesLedId.ZoneOne }
};
/// <summary>
/// Gets the mapping for two-zone mice.
/// </summary>
public static LedMapping<SteelSeriesLedId> MouseTwoZone { get; } = new()
{
{ LedId.Mouse1, SteelSeriesLedId.ZoneOne },
{ LedId.Mouse2, SteelSeriesLedId.ZoneTwo }
};
/// <summary>
/// Gets the mapping for two-zone mice.
/// </summary>
public static LedMapping<SteelSeriesLedId> MouseTwoZone { get; } = new()
{
{ LedId.Mouse1, SteelSeriesLedId.ZoneOne },
{ LedId.Mouse2, SteelSeriesLedId.ZoneTwo }
};
/// <summary>
/// Gets the mapping for three-zone mice.
/// </summary>
public static LedMapping<SteelSeriesLedId> MouseThreeZone { get; } = new()
{
{ LedId.Mouse1, SteelSeriesLedId.ZoneOne },
{ LedId.Mouse2, SteelSeriesLedId.ZoneTwo },
{ LedId.Mouse3, SteelSeriesLedId.ZoneThree }
};
/// <summary>
/// Gets the mapping for three-zone mice.
/// </summary>
public static LedMapping<SteelSeriesLedId> MouseThreeZone { get; } = new()
{
{ LedId.Mouse1, SteelSeriesLedId.ZoneOne },
{ LedId.Mouse2, SteelSeriesLedId.ZoneTwo },
{ LedId.Mouse3, SteelSeriesLedId.ZoneThree }
};
/// <summary>
/// Gets the mapping for eight-zone mice.
/// </summary>
public static LedMapping<SteelSeriesLedId> MouseEightZone { get; } = new()
{
{ LedId.Mouse1, SteelSeriesLedId.ZoneOne },
{ LedId.Mouse2, SteelSeriesLedId.ZoneTwo },
{ LedId.Mouse3, SteelSeriesLedId.ZoneThree },
{ LedId.Mouse4, SteelSeriesLedId.ZoneFour },
{ LedId.Mouse5, SteelSeriesLedId.ZoneFive },
{ LedId.Mouse6, SteelSeriesLedId.ZoneSix },
{ LedId.Mouse7, SteelSeriesLedId.ZoneSeven },
{ LedId.Mouse8, SteelSeriesLedId.ZoneEight }
};
/// <summary>
/// Gets the mapping for eight-zone mice.
/// </summary>
public static LedMapping<SteelSeriesLedId> MouseEightZone { get; } = new()
{
{ LedId.Mouse1, SteelSeriesLedId.ZoneOne },
{ LedId.Mouse2, SteelSeriesLedId.ZoneTwo },
{ LedId.Mouse3, SteelSeriesLedId.ZoneThree },
{ LedId.Mouse4, SteelSeriesLedId.ZoneFour },
{ LedId.Mouse5, SteelSeriesLedId.ZoneFive },
{ LedId.Mouse6, SteelSeriesLedId.ZoneSix },
{ LedId.Mouse7, SteelSeriesLedId.ZoneSeven },
{ LedId.Mouse8, SteelSeriesLedId.ZoneEight }
};
/// <summary>
/// Gets the mapping for two-zone headsets.
/// </summary>
public static LedMapping<SteelSeriesLedId> HeadsetTwoZone { get; } = new()
{
{ LedId.Headset1, SteelSeriesLedId.ZoneOne },
{ LedId.Headset2, SteelSeriesLedId.ZoneTwo }
};
/// <summary>
/// Gets the mapping for two-zone headsets.
/// </summary>
public static LedMapping<SteelSeriesLedId> HeadsetTwoZone { get; } = new()
{
{ LedId.Headset1, SteelSeriesLedId.ZoneOne },
{ LedId.Headset2, SteelSeriesLedId.ZoneTwo }
};
/// <summary>
/// Gets the mapping for twelve-zone mousepads
/// </summary>
public static LedMapping<SteelSeriesLedId> MousepadTwelveZone { get; } = new()
{
{ LedId.Mousepad1, SteelSeriesLedId.ZoneOne },
{ LedId.Mousepad2, SteelSeriesLedId.ZoneTwo },
{ LedId.Mousepad3, SteelSeriesLedId.ZoneThree },
{ LedId.Mousepad4, SteelSeriesLedId.ZoneFour },
{ LedId.Mousepad5, SteelSeriesLedId.ZoneFive },
{ LedId.Mousepad6, SteelSeriesLedId.ZoneSix },
{ LedId.Mousepad7, SteelSeriesLedId.ZoneSeven },
{ LedId.Mousepad8, SteelSeriesLedId.ZoneEight },
{ LedId.Mousepad9, SteelSeriesLedId.ZoneNine },
{ LedId.Mousepad10, SteelSeriesLedId.ZoneTen },
{ LedId.Mousepad11, SteelSeriesLedId.ZoneEleven },
{ LedId.Mousepad12, SteelSeriesLedId.ZoneTwelve },
};
/// <summary>
/// Gets the mapping for twelve-zone mousepads
/// </summary>
public static LedMapping<SteelSeriesLedId> MousepadTwelveZone { get; } = new()
{
{ LedId.Mousepad1, SteelSeriesLedId.ZoneOne },
{ LedId.Mousepad2, SteelSeriesLedId.ZoneTwo },
{ LedId.Mousepad3, SteelSeriesLedId.ZoneThree },
{ LedId.Mousepad4, SteelSeriesLedId.ZoneFour },
{ LedId.Mousepad5, SteelSeriesLedId.ZoneFive },
{ LedId.Mousepad6, SteelSeriesLedId.ZoneSix },
{ LedId.Mousepad7, SteelSeriesLedId.ZoneSeven },
{ LedId.Mousepad8, SteelSeriesLedId.ZoneEight },
{ LedId.Mousepad9, SteelSeriesLedId.ZoneNine },
{ LedId.Mousepad10, SteelSeriesLedId.ZoneTen },
{ LedId.Mousepad11, SteelSeriesLedId.ZoneEleven },
{ LedId.Mousepad12, SteelSeriesLedId.ZoneTwelve },
};
/// <summary>
/// Gets the mapping for 103-zone led strip devices (monitor).
/// </summary>
public static LedMapping<SteelSeriesLedId> MonitorOnehundredandthreeZone { get; } = new()
{
{ LedId.LedStripe1, SteelSeriesLedId.ZoneOne },
{ LedId.LedStripe2, SteelSeriesLedId.ZoneTwo },
{ LedId.LedStripe3, SteelSeriesLedId.ZoneThree },
{ LedId.LedStripe4, SteelSeriesLedId.ZoneFour },
{ LedId.LedStripe5, SteelSeriesLedId.ZoneFive },
{ LedId.LedStripe6, SteelSeriesLedId.ZoneSix },
{ LedId.LedStripe7, SteelSeriesLedId.ZoneSeven },
{ LedId.LedStripe8, SteelSeriesLedId.ZoneEight },
{ LedId.LedStripe9, SteelSeriesLedId.ZoneNine },
{ LedId.LedStripe10, SteelSeriesLedId.ZoneTen },
{ LedId.LedStripe11, SteelSeriesLedId.ZoneEleven },
{ LedId.LedStripe12, SteelSeriesLedId.ZoneTwelve },
{ LedId.LedStripe13, SteelSeriesLedId.ZoneThirteen },
{ LedId.LedStripe14, SteelSeriesLedId.ZoneFourteen },
{ LedId.LedStripe15, SteelSeriesLedId.ZoneFifteen },
{ LedId.LedStripe16, SteelSeriesLedId.ZoneSixteen },
{ LedId.LedStripe17, SteelSeriesLedId.ZoneSeventeen },
{ LedId.LedStripe18, SteelSeriesLedId.ZoneEighteen },
{ LedId.LedStripe19, SteelSeriesLedId.ZoneNineteen },
{ LedId.LedStripe20, SteelSeriesLedId.ZoneTwenty },
{ LedId.LedStripe21, SteelSeriesLedId.ZoneTwentyOne },
{ LedId.LedStripe22, SteelSeriesLedId.ZoneTwentyTwo },
{ LedId.LedStripe23, SteelSeriesLedId.ZoneTwentyThree },
{ LedId.LedStripe24, SteelSeriesLedId.ZoneTwentyFour },
{ LedId.LedStripe25, SteelSeriesLedId.ZoneTwentyFive },
{ LedId.LedStripe26, SteelSeriesLedId.ZoneTwentySix },
{ LedId.LedStripe27, SteelSeriesLedId.ZoneTwentySeven },
{ LedId.LedStripe28, SteelSeriesLedId.ZoneTwentyEight },
{ LedId.LedStripe29, SteelSeriesLedId.ZoneTwentyNine },
{ LedId.LedStripe30, SteelSeriesLedId.ZoneThirty },
{ LedId.LedStripe31, SteelSeriesLedId.ZoneThirtyOne },
{ LedId.LedStripe32, SteelSeriesLedId.ZoneThirtyTwo },
{ LedId.LedStripe33, SteelSeriesLedId.ZoneThirtyThree },
{ LedId.LedStripe34, SteelSeriesLedId.ZoneThirtyFour },
{ LedId.LedStripe35, SteelSeriesLedId.ZoneThirtyFive },
{ LedId.LedStripe36, SteelSeriesLedId.ZoneThirtySix },
{ LedId.LedStripe37, SteelSeriesLedId.ZoneThirtySeven },
{ LedId.LedStripe38, SteelSeriesLedId.ZoneThirtyEight },
{ LedId.LedStripe39, SteelSeriesLedId.ZoneThirtyNine },
{ LedId.LedStripe40, SteelSeriesLedId.ZoneForty },
{ LedId.LedStripe41, SteelSeriesLedId.ZoneFortyOne },
{ LedId.LedStripe42, SteelSeriesLedId.ZoneFortyTwo },
{ LedId.LedStripe43, SteelSeriesLedId.ZoneFortyThree },
{ LedId.LedStripe44, SteelSeriesLedId.ZoneFortyFour },
{ LedId.LedStripe45, SteelSeriesLedId.ZoneFortyFive },
{ LedId.LedStripe46, SteelSeriesLedId.ZoneFortySix },
{ LedId.LedStripe47, SteelSeriesLedId.ZoneFortySeven },
{ LedId.LedStripe48, SteelSeriesLedId.ZoneFortyEight },
{ LedId.LedStripe49, SteelSeriesLedId.ZoneFortyNine },
{ LedId.LedStripe50, SteelSeriesLedId.ZoneFifty },
{ LedId.LedStripe51, SteelSeriesLedId.ZoneFiftyOne },
{ LedId.LedStripe52, SteelSeriesLedId.ZoneFiftyTwo },
{ LedId.LedStripe53, SteelSeriesLedId.ZoneFiftyThree },
{ LedId.LedStripe54, SteelSeriesLedId.ZoneFiftyFour },
{ LedId.LedStripe55, SteelSeriesLedId.ZoneFiftyFive },
{ LedId.LedStripe56, SteelSeriesLedId.ZoneFiftySix },
{ LedId.LedStripe57, SteelSeriesLedId.ZoneFiftySeven },
{ LedId.LedStripe58, SteelSeriesLedId.ZoneFiftyEight },
{ LedId.LedStripe59, SteelSeriesLedId.ZoneFiftyNine },
{ LedId.LedStripe60, SteelSeriesLedId.ZoneSixty },
{ LedId.LedStripe61, SteelSeriesLedId.ZoneSixtyOne },
{ LedId.LedStripe62, SteelSeriesLedId.ZoneSixtyTwo },
{ LedId.LedStripe63, SteelSeriesLedId.ZoneSixtyThree },
{ LedId.LedStripe64, SteelSeriesLedId.ZoneSixtyFour },
{ LedId.LedStripe65, SteelSeriesLedId.ZoneSixtyFive },
{ LedId.LedStripe66, SteelSeriesLedId.ZoneSixtySix },
{ LedId.LedStripe67, SteelSeriesLedId.ZoneSixtySeven },
{ LedId.LedStripe68, SteelSeriesLedId.ZoneSixtyEight },
{ LedId.LedStripe69, SteelSeriesLedId.ZoneSixtyNine },
{ LedId.LedStripe70, SteelSeriesLedId.ZoneSeventy },
{ LedId.LedStripe71, SteelSeriesLedId.ZoneSeventyOne },
{ LedId.LedStripe72, SteelSeriesLedId.ZoneSeventyTwo },
{ LedId.LedStripe73, SteelSeriesLedId.ZoneSeventyThree },
{ LedId.LedStripe74, SteelSeriesLedId.ZoneSeventyFour },
{ LedId.LedStripe75, SteelSeriesLedId.ZoneSeventyFive },
{ LedId.LedStripe76, SteelSeriesLedId.ZoneSeventySix },
{ LedId.LedStripe77, SteelSeriesLedId.ZoneSeventySeven },
{ LedId.LedStripe78, SteelSeriesLedId.ZoneSeventyEight },
{ LedId.LedStripe79, SteelSeriesLedId.ZoneSeventyNine },
{ LedId.LedStripe80, SteelSeriesLedId.ZoneEighty },
{ LedId.LedStripe81, SteelSeriesLedId.ZoneEightyOne },
{ LedId.LedStripe82, SteelSeriesLedId.ZoneEightyTwo },
{ LedId.LedStripe83, SteelSeriesLedId.ZoneEightyThree },
{ LedId.LedStripe84, SteelSeriesLedId.ZoneEightyFour },
{ LedId.LedStripe85, SteelSeriesLedId.ZoneEightyFive },
{ LedId.LedStripe86, SteelSeriesLedId.ZoneEightySix },
{ LedId.LedStripe87, SteelSeriesLedId.ZoneEightySeven },
{ LedId.LedStripe88, SteelSeriesLedId.ZoneEightyEight },
{ LedId.LedStripe89, SteelSeriesLedId.ZoneEightyNine },
{ LedId.LedStripe90, SteelSeriesLedId.ZoneNinety },
{ LedId.LedStripe91, SteelSeriesLedId.ZoneNinetyOne },
{ LedId.LedStripe92, SteelSeriesLedId.ZoneNinetyTwo },
{ LedId.LedStripe93, SteelSeriesLedId.ZoneNinetyThree },
{ LedId.LedStripe94, SteelSeriesLedId.ZoneNinetyFour },
{ LedId.LedStripe95, SteelSeriesLedId.ZoneNinetyFive },
{ LedId.LedStripe96, SteelSeriesLedId.ZoneNinetySix },
{ LedId.LedStripe97, SteelSeriesLedId.ZoneNinetySeven },
{ LedId.LedStripe98, SteelSeriesLedId.ZoneNinetyEight },
{ LedId.LedStripe99, SteelSeriesLedId.ZoneNinetyNine },
{ LedId.LedStripe100, SteelSeriesLedId.ZoneOneHundred },
{ LedId.LedStripe101, SteelSeriesLedId.ZoneOneHundredOne },
{ LedId.LedStripe102, SteelSeriesLedId.ZoneOneHundredTwo },
{ LedId.LedStripe103, SteelSeriesLedId.ZoneOneHundredThree }
};
}
}
/// <summary>
/// Gets the mapping for 103-zone led strip devices (monitor).
/// </summary>
public static LedMapping<SteelSeriesLedId> MonitorOnehundredandthreeZone { get; } = new()
{
{ LedId.LedStripe1, SteelSeriesLedId.ZoneOne },
{ LedId.LedStripe2, SteelSeriesLedId.ZoneTwo },
{ LedId.LedStripe3, SteelSeriesLedId.ZoneThree },
{ LedId.LedStripe4, SteelSeriesLedId.ZoneFour },
{ LedId.LedStripe5, SteelSeriesLedId.ZoneFive },
{ LedId.LedStripe6, SteelSeriesLedId.ZoneSix },
{ LedId.LedStripe7, SteelSeriesLedId.ZoneSeven },
{ LedId.LedStripe8, SteelSeriesLedId.ZoneEight },
{ LedId.LedStripe9, SteelSeriesLedId.ZoneNine },
{ LedId.LedStripe10, SteelSeriesLedId.ZoneTen },
{ LedId.LedStripe11, SteelSeriesLedId.ZoneEleven },
{ LedId.LedStripe12, SteelSeriesLedId.ZoneTwelve },
{ LedId.LedStripe13, SteelSeriesLedId.ZoneThirteen },
{ LedId.LedStripe14, SteelSeriesLedId.ZoneFourteen },
{ LedId.LedStripe15, SteelSeriesLedId.ZoneFifteen },
{ LedId.LedStripe16, SteelSeriesLedId.ZoneSixteen },
{ LedId.LedStripe17, SteelSeriesLedId.ZoneSeventeen },
{ LedId.LedStripe18, SteelSeriesLedId.ZoneEighteen },
{ LedId.LedStripe19, SteelSeriesLedId.ZoneNineteen },
{ LedId.LedStripe20, SteelSeriesLedId.ZoneTwenty },
{ LedId.LedStripe21, SteelSeriesLedId.ZoneTwentyOne },
{ LedId.LedStripe22, SteelSeriesLedId.ZoneTwentyTwo },
{ LedId.LedStripe23, SteelSeriesLedId.ZoneTwentyThree },
{ LedId.LedStripe24, SteelSeriesLedId.ZoneTwentyFour },
{ LedId.LedStripe25, SteelSeriesLedId.ZoneTwentyFive },
{ LedId.LedStripe26, SteelSeriesLedId.ZoneTwentySix },
{ LedId.LedStripe27, SteelSeriesLedId.ZoneTwentySeven },
{ LedId.LedStripe28, SteelSeriesLedId.ZoneTwentyEight },
{ LedId.LedStripe29, SteelSeriesLedId.ZoneTwentyNine },
{ LedId.LedStripe30, SteelSeriesLedId.ZoneThirty },
{ LedId.LedStripe31, SteelSeriesLedId.ZoneThirtyOne },
{ LedId.LedStripe32, SteelSeriesLedId.ZoneThirtyTwo },
{ LedId.LedStripe33, SteelSeriesLedId.ZoneThirtyThree },
{ LedId.LedStripe34, SteelSeriesLedId.ZoneThirtyFour },
{ LedId.LedStripe35, SteelSeriesLedId.ZoneThirtyFive },
{ LedId.LedStripe36, SteelSeriesLedId.ZoneThirtySix },
{ LedId.LedStripe37, SteelSeriesLedId.ZoneThirtySeven },
{ LedId.LedStripe38, SteelSeriesLedId.ZoneThirtyEight },
{ LedId.LedStripe39, SteelSeriesLedId.ZoneThirtyNine },
{ LedId.LedStripe40, SteelSeriesLedId.ZoneForty },
{ LedId.LedStripe41, SteelSeriesLedId.ZoneFortyOne },
{ LedId.LedStripe42, SteelSeriesLedId.ZoneFortyTwo },
{ LedId.LedStripe43, SteelSeriesLedId.ZoneFortyThree },
{ LedId.LedStripe44, SteelSeriesLedId.ZoneFortyFour },
{ LedId.LedStripe45, SteelSeriesLedId.ZoneFortyFive },
{ LedId.LedStripe46, SteelSeriesLedId.ZoneFortySix },
{ LedId.LedStripe47, SteelSeriesLedId.ZoneFortySeven },
{ LedId.LedStripe48, SteelSeriesLedId.ZoneFortyEight },
{ LedId.LedStripe49, SteelSeriesLedId.ZoneFortyNine },
{ LedId.LedStripe50, SteelSeriesLedId.ZoneFifty },
{ LedId.LedStripe51, SteelSeriesLedId.ZoneFiftyOne },
{ LedId.LedStripe52, SteelSeriesLedId.ZoneFiftyTwo },
{ LedId.LedStripe53, SteelSeriesLedId.ZoneFiftyThree },
{ LedId.LedStripe54, SteelSeriesLedId.ZoneFiftyFour },
{ LedId.LedStripe55, SteelSeriesLedId.ZoneFiftyFive },
{ LedId.LedStripe56, SteelSeriesLedId.ZoneFiftySix },
{ LedId.LedStripe57, SteelSeriesLedId.ZoneFiftySeven },
{ LedId.LedStripe58, SteelSeriesLedId.ZoneFiftyEight },
{ LedId.LedStripe59, SteelSeriesLedId.ZoneFiftyNine },
{ LedId.LedStripe60, SteelSeriesLedId.ZoneSixty },
{ LedId.LedStripe61, SteelSeriesLedId.ZoneSixtyOne },
{ LedId.LedStripe62, SteelSeriesLedId.ZoneSixtyTwo },
{ LedId.LedStripe63, SteelSeriesLedId.ZoneSixtyThree },
{ LedId.LedStripe64, SteelSeriesLedId.ZoneSixtyFour },
{ LedId.LedStripe65, SteelSeriesLedId.ZoneSixtyFive },
{ LedId.LedStripe66, SteelSeriesLedId.ZoneSixtySix },
{ LedId.LedStripe67, SteelSeriesLedId.ZoneSixtySeven },
{ LedId.LedStripe68, SteelSeriesLedId.ZoneSixtyEight },
{ LedId.LedStripe69, SteelSeriesLedId.ZoneSixtyNine },
{ LedId.LedStripe70, SteelSeriesLedId.ZoneSeventy },
{ LedId.LedStripe71, SteelSeriesLedId.ZoneSeventyOne },
{ LedId.LedStripe72, SteelSeriesLedId.ZoneSeventyTwo },
{ LedId.LedStripe73, SteelSeriesLedId.ZoneSeventyThree },
{ LedId.LedStripe74, SteelSeriesLedId.ZoneSeventyFour },
{ LedId.LedStripe75, SteelSeriesLedId.ZoneSeventyFive },
{ LedId.LedStripe76, SteelSeriesLedId.ZoneSeventySix },
{ LedId.LedStripe77, SteelSeriesLedId.ZoneSeventySeven },
{ LedId.LedStripe78, SteelSeriesLedId.ZoneSeventyEight },
{ LedId.LedStripe79, SteelSeriesLedId.ZoneSeventyNine },
{ LedId.LedStripe80, SteelSeriesLedId.ZoneEighty },
{ LedId.LedStripe81, SteelSeriesLedId.ZoneEightyOne },
{ LedId.LedStripe82, SteelSeriesLedId.ZoneEightyTwo },
{ LedId.LedStripe83, SteelSeriesLedId.ZoneEightyThree },
{ LedId.LedStripe84, SteelSeriesLedId.ZoneEightyFour },
{ LedId.LedStripe85, SteelSeriesLedId.ZoneEightyFive },
{ LedId.LedStripe86, SteelSeriesLedId.ZoneEightySix },
{ LedId.LedStripe87, SteelSeriesLedId.ZoneEightySeven },
{ LedId.LedStripe88, SteelSeriesLedId.ZoneEightyEight },
{ LedId.LedStripe89, SteelSeriesLedId.ZoneEightyNine },
{ LedId.LedStripe90, SteelSeriesLedId.ZoneNinety },
{ LedId.LedStripe91, SteelSeriesLedId.ZoneNinetyOne },
{ LedId.LedStripe92, SteelSeriesLedId.ZoneNinetyTwo },
{ LedId.LedStripe93, SteelSeriesLedId.ZoneNinetyThree },
{ LedId.LedStripe94, SteelSeriesLedId.ZoneNinetyFour },
{ LedId.LedStripe95, SteelSeriesLedId.ZoneNinetyFive },
{ LedId.LedStripe96, SteelSeriesLedId.ZoneNinetySix },
{ LedId.LedStripe97, SteelSeriesLedId.ZoneNinetySeven },
{ LedId.LedStripe98, SteelSeriesLedId.ZoneNinetyEight },
{ LedId.LedStripe99, SteelSeriesLedId.ZoneNinetyNine },
{ LedId.LedStripe100, SteelSeriesLedId.ZoneOneHundred },
{ LedId.LedStripe101, SteelSeriesLedId.ZoneOneHundredOne },
{ LedId.LedStripe102, SteelSeriesLedId.ZoneOneHundredTwo },
{ LedId.LedStripe103, SteelSeriesLedId.ZoneOneHundredThree }
};
}
@@ -4,49 +4,48 @@ using RGB.NET.Core;
using RGB.NET.Devices.SteelSeries.API;
using RGB.NET.Devices.SteelSeries.Helper;
namespace RGB.NET.Devices.SteelSeries
namespace RGB.NET.Devices.SteelSeries;
/// <inheritdoc />
/// <summary>
/// Represents the update-queue performing updates for steelseries devices.
/// </summary>
internal class SteelSeriesDeviceUpdateQueue : UpdateQueue
{
/// <inheritdoc />
#region Properties & Fields
private string _deviceType;
#endregion
#region Constructors
/// <summary>
/// Represents the update-queue performing updates for steelseries devices.
/// Initializes a new instance of the <see cref="SteelSeriesDeviceUpdateQueue"/> class.
/// </summary>
internal class SteelSeriesDeviceUpdateQueue : UpdateQueue
/// <param name="updateTrigger">The update trigger used by this queue.</param>
/// <param name="deviceType">The device type used to identify the device.</param>
public SteelSeriesDeviceUpdateQueue(IDeviceUpdateTrigger updateTrigger, string deviceType)
: base(updateTrigger)
{
#region Properties & Fields
private string _deviceType;
#endregion
#region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SteelSeriesDeviceUpdateQueue"/> class.
/// </summary>
/// <param name="updateTrigger">The update trigger used by this queue.</param>
/// <param name="deviceType">The device type used to identify the device.</param>
public SteelSeriesDeviceUpdateQueue(IDeviceUpdateTrigger updateTrigger, string deviceType)
: base(updateTrigger)
{
this._deviceType = deviceType;
}
#endregion
#region Methods
protected override void OnUpdate(object? sender, CustomUpdateData customData)
{
if (customData["refresh"] as bool? ?? false)
SteelSeriesSDK.SendHeartbeat();
else
base.OnUpdate(sender, customData);
}
/// <inheritdoc />
protected override void Update(in ReadOnlySpan<(object key, Color color)> dataSet)
=> SteelSeriesSDK.UpdateLeds(_deviceType, dataSet.ToArray().Select(x => (((SteelSeriesLedId)x.key).GetAPIName(), x.color.ToIntArray())).Where(x => x.Item1 != null).ToList()!);
#endregion
this._deviceType = deviceType;
}
}
#endregion
#region Methods
protected override void OnUpdate(object? sender, CustomUpdateData customData)
{
if (customData["refresh"] as bool? ?? false)
SteelSeriesSDK.SendHeartbeat();
else
base.OnUpdate(sender, customData);
}
/// <inheritdoc />
protected override void Update(in ReadOnlySpan<(object key, Color color)> dataSet)
=> SteelSeriesSDK.UpdateLeds(_deviceType, dataSet.ToArray().Select(x => (((SteelSeriesLedId)x.key).GetAPIName(), x.color.ToIntArray())).Where(x => x.Item1 != null).ToList()!);
#endregion
}
@@ -5,78 +5,77 @@ using System.Diagnostics;
using System.Threading;
using RGB.NET.Core;
namespace RGB.NET.Devices.SteelSeries
namespace RGB.NET.Devices.SteelSeries;
/// <summary>
/// Represents an update-trigger used to update SteelSeries devices
/// </summary>
public class SteelSeriesDeviceUpdateTrigger : DeviceUpdateTrigger
{
#region Constants
private const long FLUSH_TIMER = 5 * 1000 * TimeSpan.TicksPerMillisecond; // flush the device every 5 seconds to prevent timeouts
#endregion
#region Properties & Fields
private long _lastUpdateTimestamp;
#endregion
#region Constructors
/// <summary>
/// Represents an update-trigger used to update SteelSeries devices
/// Initializes a new instance of the <see cref="SteelSeriesDeviceUpdateTrigger"/> class.
/// </summary>
public class SteelSeriesDeviceUpdateTrigger : DeviceUpdateTrigger
public SteelSeriesDeviceUpdateTrigger()
{ }
/// <summary>
/// Initializes a new instance of the <see cref="SteelSeriesDeviceUpdateTrigger"/> class.
/// </summary>
/// <param name="updateRateHardLimit">The hard limit of the update rate of this trigger.</param>
public SteelSeriesDeviceUpdateTrigger(double updateRateHardLimit)
: base(updateRateHardLimit)
{ }
#endregion
#region Methods
/// <inheritdoc />
protected override void UpdateLoop()
{
#region Constants
OnStartup();
private const long FLUSH_TIMER = 5 * 1000 * TimeSpan.TicksPerMillisecond; // flush the device every 5 seconds to prevent timeouts
#endregion
#region Properties & Fields
private long _lastUpdateTimestamp;
#endregion
#region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SteelSeriesDeviceUpdateTrigger"/> class.
/// </summary>
public SteelSeriesDeviceUpdateTrigger()
{ }
/// <summary>
/// Initializes a new instance of the <see cref="SteelSeriesDeviceUpdateTrigger"/> class.
/// </summary>
/// <param name="updateRateHardLimit">The hard limit of the update rate of this trigger.</param>
public SteelSeriesDeviceUpdateTrigger(double updateRateHardLimit)
: base(updateRateHardLimit)
{ }
#endregion
#region Methods
/// <inheritdoc />
protected override void UpdateLoop()
while (!UpdateToken.IsCancellationRequested)
{
OnStartup();
while (!UpdateToken.IsCancellationRequested)
if (HasDataEvent.WaitOne(Timeout))
{
if (HasDataEvent.WaitOne(Timeout))
long preUpdateTicks = Stopwatch.GetTimestamp();
OnUpdate();
if (UpdateFrequency > 0)
{
long preUpdateTicks = Stopwatch.GetTimestamp();
OnUpdate();
if (UpdateFrequency > 0)
{
double lastUpdateTime = ((_lastUpdateTimestamp - preUpdateTicks) / (double)TimeSpan.TicksPerMillisecond);
int sleep = (int)((UpdateFrequency * 1000.0) - lastUpdateTime);
if (sleep > 0)
Thread.Sleep(sleep);
}
double lastUpdateTime = ((_lastUpdateTimestamp - preUpdateTicks) / (double)TimeSpan.TicksPerMillisecond);
int sleep = (int)((UpdateFrequency * 1000.0) - lastUpdateTime);
if (sleep > 0)
Thread.Sleep(sleep);
}
else if ((_lastUpdateTimestamp > 0) && ((Stopwatch.GetTimestamp() - _lastUpdateTimestamp) > FLUSH_TIMER))
OnUpdate(new CustomUpdateData(("refresh", true)));
}
else if ((_lastUpdateTimestamp > 0) && ((Stopwatch.GetTimestamp() - _lastUpdateTimestamp) > FLUSH_TIMER))
OnUpdate(new CustomUpdateData(("refresh", true)));
}
/// <inheritdoc />
protected override void OnUpdate(CustomUpdateData? updateData = null)
{
base.OnUpdate(updateData);
_lastUpdateTimestamp = Stopwatch.GetTimestamp();
}
#endregion
}
}
/// <inheritdoc />
protected override void OnUpdate(CustomUpdateData? updateData = null)
{
base.OnUpdate(updateData);
_lastUpdateTimestamp = Stopwatch.GetTimestamp();
}
#endregion
}
@@ -1,51 +1,50 @@
using System.Collections.Generic;
using RGB.NET.Core;
namespace RGB.NET.Devices.SteelSeries
namespace RGB.NET.Devices.SteelSeries;
/// <inheritdoc cref="AbstractRGBDevice{TDeviceInfo}" />
/// <inheritdoc cref="ISteelSeriesRGBDevice" />
/// <summary>
/// Represents a SteelSeries-device. (keyboard, mouse, headset, mousepad).
/// </summary>
public class SteelSeriesRGBDevice : AbstractRGBDevice<SteelSeriesRGBDeviceInfo>, ISteelSeriesRGBDevice, IUnknownDevice//TODO DarthAffe 18.04.2020: It's know which kind of device this is, but they would need to be separated
{
/// <inheritdoc cref="AbstractRGBDevice{TDeviceInfo}" />
/// <inheritdoc cref="ISteelSeriesRGBDevice" />
#region Properties & Fields
private readonly LedMapping<SteelSeriesLedId> _ledMapping;
#endregion
#region Constructors
/// <summary>
/// Represents a SteelSeries-device. (keyboard, mouse, headset, mousepad).
/// Initializes a new instance of the <see cref="SteelSeriesRGBDevice"/> class.
/// </summary>
public class SteelSeriesRGBDevice : AbstractRGBDevice<SteelSeriesRGBDeviceInfo>, ISteelSeriesRGBDevice, IUnknownDevice//TODO DarthAffe 18.04.2020: It's know which kind of device this is, but they would need to be separated
internal SteelSeriesRGBDevice(SteelSeriesRGBDeviceInfo info, string apiName, LedMapping<SteelSeriesLedId> ledMapping, IDeviceUpdateTrigger updateTrigger)
: base(info, new SteelSeriesDeviceUpdateQueue(updateTrigger, apiName))
{
#region Properties & Fields
this._ledMapping = ledMapping;
private readonly LedMapping<SteelSeriesLedId> _ledMapping;
#endregion
#region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SteelSeriesRGBDevice"/> class.
/// </summary>
internal SteelSeriesRGBDevice(SteelSeriesRGBDeviceInfo info, string apiName, LedMapping<SteelSeriesLedId> ledMapping, IDeviceUpdateTrigger updateTrigger)
: base(info, new SteelSeriesDeviceUpdateQueue(updateTrigger, apiName))
{
this._ledMapping = ledMapping;
InitializeLayout();
}
#endregion
#region Methods
private void InitializeLayout()
{
int counter = 0;
foreach ((LedId ledId, _) in _ledMapping)
AddLed(ledId, new Point((counter++) * 10, 0), new Size(10, 10));
}
/// <inheritdoc />
protected override object GetLedCustomData(LedId ledId) => _ledMapping[ledId];
/// <inheritdoc />
protected override void UpdateLeds(IEnumerable<Led> ledsToUpdate) => UpdateQueue.SetData(GetUpdateData(ledsToUpdate));
#endregion
InitializeLayout();
}
}
#endregion
#region Methods
private void InitializeLayout()
{
int counter = 0;
foreach ((LedId ledId, _) in _ledMapping)
AddLed(ledId, new Point((counter++) * 10, 0), new Size(10, 10));
}
/// <inheritdoc />
protected override object GetLedCustomData(LedId ledId) => _ledMapping[ledId];
/// <inheritdoc />
protected override void UpdateLeds(IEnumerable<Led> ledsToUpdate) => UpdateQueue.SetData(GetUpdateData(ledsToUpdate));
#endregion
}
@@ -1,54 +1,53 @@
using RGB.NET.Core;
namespace RGB.NET.Devices.SteelSeries
namespace RGB.NET.Devices.SteelSeries;
/// <inheritdoc />
/// <summary>
/// Represents a generic information for a SteelSeries-<see cref="T:RGB.NET.Core.IRGBDevice" />.
/// </summary>
public class SteelSeriesRGBDeviceInfo : IRGBDeviceInfo
{
#region Properties & Fields
/// <inheritdoc />
public RGBDeviceType DeviceType { get; }
/// <inheritdoc />
public string DeviceName { get; }
/// <inheritdoc />
public string Manufacturer => "SteelSeries";
/// <inheritdoc />
public string Model { get; }
/// <inheritdoc />
public object? LayoutMetadata { get; set; }
/// <summary>
/// Represents a generic information for a SteelSeries-<see cref="T:RGB.NET.Core.IRGBDevice" />.
/// Gets the type of this device used in the SDK.
/// </summary>
public class SteelSeriesRGBDeviceInfo : IRGBDeviceInfo
public SteelSeriesDeviceType SteelSeriesDeviceType { get; }
#endregion
#region Constructors
/// <summary>
/// Internal constructor of managed <see cref="SteelSeriesRGBDeviceInfo"/>.
/// </summary>
/// <param name="deviceType">The type of the <see cref="IRGBDevice"/>.</param>
/// <param name="model">The represented device model.</param>
/// <param name="steelSeriesDeviceType">The type of this device used in the SDK.</param>
internal SteelSeriesRGBDeviceInfo(RGBDeviceType deviceType, string model, SteelSeriesDeviceType steelSeriesDeviceType)
{
#region Properties & Fields
this.DeviceType = deviceType;
this.Model = model;
this.SteelSeriesDeviceType = steelSeriesDeviceType;
/// <inheritdoc />
public RGBDeviceType DeviceType { get; }
/// <inheritdoc />
public string DeviceName { get; }
/// <inheritdoc />
public string Manufacturer => "SteelSeries";
/// <inheritdoc />
public string Model { get; }
/// <inheritdoc />
public object? LayoutMetadata { get; set; }
/// <summary>
/// Gets the type of this device used in the SDK.
/// </summary>
public SteelSeriesDeviceType SteelSeriesDeviceType { get; }
#endregion
#region Constructors
/// <summary>
/// Internal constructor of managed <see cref="SteelSeriesRGBDeviceInfo"/>.
/// </summary>
/// <param name="deviceType">The type of the <see cref="IRGBDevice"/>.</param>
/// <param name="model">The represented device model.</param>
/// <param name="steelSeriesDeviceType">The type of this device used in the SDK.</param>
internal SteelSeriesRGBDeviceInfo(RGBDeviceType deviceType, string model, SteelSeriesDeviceType steelSeriesDeviceType)
{
this.DeviceType = deviceType;
this.Model = model;
this.SteelSeriesDeviceType = steelSeriesDeviceType;
DeviceName = DeviceHelper.CreateDeviceName(Manufacturer, Model);
}
#endregion
DeviceName = DeviceHelper.CreateDeviceName(Manufacturer, Model);
}
}
#endregion
}
@@ -1,9 +1,8 @@
using RGB.NET.Core;
namespace RGB.NET.Devices.SteelSeries.Helper
namespace RGB.NET.Devices.SteelSeries.Helper;
internal static class ColorExtensions
{
internal static class ColorExtensions
{
internal static int[] ToIntArray(this Color color) => new int[] { color.GetR(), color.GetG(), color.GetB() };
}
}
internal static int[] ToIntArray(this Color color) => new int[] { color.GetR(), color.GetG(), color.GetB() };
}
@@ -4,28 +4,28 @@ using RGB.NET.Core;
using RGB.NET.Devices.SteelSeries.API;
using RGB.NET.HID;
namespace RGB.NET.Devices.SteelSeries
namespace RGB.NET.Devices.SteelSeries;
/// <inheritdoc />
/// <summary>
/// Represents a device provider responsible for SteelSeries-devices.
/// </summary>
public class SteelSeriesDeviceProvider : AbstractRGBDeviceProvider
{
/// <inheritdoc />
#region Properties & Fields
private static SteelSeriesDeviceProvider? _instance;
/// <summary>
/// Represents a device provider responsible for SteelSeries-devices.
/// Gets the singleton <see cref="SteelSeriesDeviceProvider"/> instance.
/// </summary>
public class SteelSeriesDeviceProvider : AbstractRGBDeviceProvider
{
#region Properties & Fields
public static SteelSeriesDeviceProvider Instance => _instance ?? new SteelSeriesDeviceProvider();
private static SteelSeriesDeviceProvider? _instance;
/// <summary>
/// Gets the singleton <see cref="SteelSeriesDeviceProvider"/> instance.
/// </summary>
public static SteelSeriesDeviceProvider Instance => _instance ?? new SteelSeriesDeviceProvider();
private const int VENDOR_ID = 0x1038;
private const int VENDOR_ID = 0x1038;
/// <summary>
/// Gets the HID-definitions for SteelSeries-devices.
/// </summary>
public static HIDLoader<SteelSeriesLedId, SteelSeriesDeviceType> DeviceDefinitions { get; } = new(VENDOR_ID)
/// <summary>
/// Gets the HID-definitions for SteelSeries-devices.
/// </summary>
public static HIDLoader<SteelSeriesLedId, SteelSeriesDeviceType> DeviceDefinitions { get; } = new(VENDOR_ID)
{
//Mice
{ 0x1836, RGBDeviceType.Mouse, "Aerox 3", LedMappings.MouseThreeZone, SteelSeriesDeviceType.ThreeZone },
@@ -69,64 +69,63 @@ namespace RGB.NET.Devices.SteelSeries
{ 0x1126, RGBDeviceType.Monitor, "MGP27C", LedMappings.MonitorOnehundredandthreeZone, SteelSeriesDeviceType.OneHundredAndThreeZone },
};
#endregion
#endregion
#region Constructors
#region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SteelSeriesDeviceProvider"/> class.
/// </summary>
/// <exception cref="InvalidOperationException">Thrown if this constructor is called even if there is already an instance of this class.</exception>
public SteelSeriesDeviceProvider()
{
if (_instance != null) throw new InvalidOperationException($"There can be only one instance of type {nameof(SteelSeriesDeviceProvider)}");
_instance = this;
}
#endregion
#region Methods
/// <inheritdoc />
protected override void InitializeSDK()
{
if (!SteelSeriesSDK.IsInitialized)
SteelSeriesSDK.Initialize();
}
/// <inheritdoc />
protected override IEnumerable<IRGBDevice> GetLoadedDevices(RGBDeviceType loadFilter)
{
DeviceDefinitions.LoadFilter = loadFilter;
return base.GetLoadedDevices(loadFilter);
}
/// <inheritdoc />
protected override IEnumerable<IRGBDevice> LoadDevices()
{
foreach ((HIDDeviceDefinition<SteelSeriesLedId, SteelSeriesDeviceType> definition, _) in DeviceDefinitions.GetConnectedDevices(x => x.CustomData))
{
string? apiName = definition.CustomData.GetAPIName();
if (apiName == null)
Throw(new RGBDeviceException($"Missing API-name for device {definition.Name}"));
else
yield return new SteelSeriesRGBDevice(new SteelSeriesRGBDeviceInfo(definition.DeviceType, definition.Name, definition.CustomData), apiName, definition.LedMapping, GetUpdateTrigger());
}
}
/// <inheritdoc />
protected override IDeviceUpdateTrigger CreateUpdateTrigger(int id, double updateRateHardLimit) => new SteelSeriesDeviceUpdateTrigger(updateRateHardLimit);
/// <inheritdoc />
public override void Dispose()
{
base.Dispose();
try { SteelSeriesSDK.Dispose(); }
catch { /* shit happens */ }
}
#endregion
/// <summary>
/// Initializes a new instance of the <see cref="SteelSeriesDeviceProvider"/> class.
/// </summary>
/// <exception cref="InvalidOperationException">Thrown if this constructor is called even if there is already an instance of this class.</exception>
public SteelSeriesDeviceProvider()
{
if (_instance != null) throw new InvalidOperationException($"There can be only one instance of type {nameof(SteelSeriesDeviceProvider)}");
_instance = this;
}
}
#endregion
#region Methods
/// <inheritdoc />
protected override void InitializeSDK()
{
if (!SteelSeriesSDK.IsInitialized)
SteelSeriesSDK.Initialize();
}
/// <inheritdoc />
protected override IEnumerable<IRGBDevice> GetLoadedDevices(RGBDeviceType loadFilter)
{
DeviceDefinitions.LoadFilter = loadFilter;
return base.GetLoadedDevices(loadFilter);
}
/// <inheritdoc />
protected override IEnumerable<IRGBDevice> LoadDevices()
{
foreach ((HIDDeviceDefinition<SteelSeriesLedId, SteelSeriesDeviceType> definition, _) in DeviceDefinitions.GetConnectedDevices(x => x.CustomData))
{
string? apiName = definition.CustomData.GetAPIName();
if (apiName == null)
Throw(new RGBDeviceException($"Missing API-name for device {definition.Name}"));
else
yield return new SteelSeriesRGBDevice(new SteelSeriesRGBDeviceInfo(definition.DeviceType, definition.Name, definition.CustomData), apiName, definition.LedMapping, GetUpdateTrigger());
}
}
/// <inheritdoc />
protected override IDeviceUpdateTrigger CreateUpdateTrigger(int id, double updateRateHardLimit) => new SteelSeriesDeviceUpdateTrigger(updateRateHardLimit);
/// <inheritdoc />
public override void Dispose()
{
base.Dispose();
try { SteelSeriesSDK.Dispose(); }
catch { /* shit happens */ }
}
#endregion
}