1
0
mirror of https://github.com/DarthAffe/RGB.NET.git synced 2025-12-13 01:58:30 +00:00

Device Support

Asus strix scope tested
Asus strix flare not tested

Signed-off-by: Alex <ritt.alex@gmail.com>
This commit is contained in:
Alex 2019-12-28 13:19:21 +01:00
parent 0a378b3424
commit 03c8d35421
3 changed files with 309 additions and 16 deletions

View File

@ -48,14 +48,58 @@ namespace RGB.NET.Devices.Asus
{ {
try try
{ {
foreach (KeyValuePair<object, Color> data in dataSet) if (Device.Type == 0x00080000 || Device.Type == 0x00081000)//Keyboard
{ {
int index = (int)data.Key; foreach (KeyValuePair<object, Color> data in dataSet)
IAuraRgbLight light = Device.Lights[index]; {
(_, byte r, byte g, byte b) = data.Value.GetRGBBytes(); ushort index = (ushort)data.Key;
light.Red = r; IAuraSyncKeyboard keyboard = (IAuraSyncKeyboard)Device;
light.Green = g; if (keyboard != null)
light.Blue = b; {
IAuraRgbLight light;
//UK keyboard Layout
if (index == 0x56)
{
light = keyboard.Lights[(int)(3 * keyboard.Width + 13)];
}
else if (index == 0x59)
{
light = keyboard.Lights[(int)(4 * keyboard.Width + 1)];
}
else
{
light = keyboard.Key[index];
}
// Asus Strix Scope
if (keyboard.Name == "Charm")
{
if (index == 0XDB)
{
light = keyboard.Lights[(int)(5 * keyboard.Width + 2)];
}
else if (index == 0x38)
{
light = keyboard.Lights[(int)(5 * keyboard.Width + 3)];
}
}
(_, byte r, byte g, byte b) = data.Value.GetRGBBytes();
light.Red = r;
light.Green = g;
light.Blue = b;
}
}
}
else
{
foreach (KeyValuePair<object, Color> data in dataSet)
{
int index = (int)data.Key;
IAuraRgbLight light = Device.Lights[index];
(_, byte r, byte g, byte b) = data.Value.GetRGBBytes();
light.Red = r;
light.Green = g;
light.Blue = b;
}
} }
Device.Apply(); Device.Apply();
@ -63,7 +107,6 @@ namespace RGB.NET.Devices.Asus
catch (Exception ex) catch (Exception ex)
{ /* "The server threw an exception." seems to be a thing here ... */ } { /* "The server threw an exception." seems to be a thing here ... */ }
} }
#endregion #endregion
} }
} }

View File

@ -1,4 +1,5 @@
using RGB.NET.Core; using AuraServiceLib;
using RGB.NET.Core;
namespace RGB.NET.Devices.Asus namespace RGB.NET.Devices.Asus
{ {
@ -22,22 +23,271 @@ namespace RGB.NET.Devices.Asus
#endregion #endregion
#region Methods #region Methods
private ushort asusCode;
/// <inheritdoc /> /// <inheritdoc />
protected override void InitializeLayout() protected override void InitializeLayout()
{ {
//TODO DarthAffe 07.10.2017: This doesn't make sense at all ... Find someone with such a keyboard! if (DeviceInfo.Device.Type != 0x00081001)
int ledCount = DeviceInfo.Device.Lights.Count; {
for (int i = 0; i < ledCount; i++) int pos = 0;
InitializeLed(LedId.Keyboard_Escape + i, new Rectangle(i * 19, 0, 19, 19)); foreach (IAuraRgbKey key in ((IAuraSyncKeyboard)DeviceInfo.Device).Keys)
{
asusCode = key.Code;
InitializeLed(AsusLedIdMapper(key.Code), new Rectangle(pos++ * 19, 0, 19, 19));
}
//UK Layout
asusCode = 0x56;
InitializeLed(AsusLedIdMapper(asusCode), new Rectangle(pos++ * 19, 0, 19, 19));
asusCode = 0x59;
InitializeLed(AsusLedIdMapper(asusCode), new Rectangle(pos++ * 19, 0, 19, 19));
}
else
{
int ledCount = DeviceInfo.Device.Lights.Count;
for (int i = 0; i < ledCount; i++)
{
asusCode = (ushort)i;
InitializeLed(LedId.Keyboard_Custom1 + i, new Rectangle(i * 19, 0, 19, 19));
}
}
string model = DeviceInfo.Model.Replace(" ", string.Empty).ToUpper(); string model = DeviceInfo.Model.Replace(" ", string.Empty).ToUpper();
ApplyLayoutFromFile(PathHelper.GetAbsolutePath(this, $@"Layouts\Asus\Keyboards\{model}", $"{DeviceInfo.PhysicalLayout.ToString().ToUpper()}.xml"), DeviceInfo.LogicalLayout.ToString()); ApplyLayoutFromFile(PathHelper.GetAbsolutePath(this, $@"Layouts\Asus\Keyboards\{model}", $"{DeviceInfo.PhysicalLayout.ToString().ToUpper()}.xml"), DeviceInfo.LogicalLayout.ToString());
} }
/// <inheritdoc /> /// <inheritdoc />
protected override object CreateLedCustomData(LedId ledId) => (int)ledId - (int)LedId.Keyboard_Escape; protected override object CreateLedCustomData(LedId ledId) => asusCode;
/// <inheritdoc />
private LedId AsusLedIdMapper(ushort asusKey)
{
switch (asusKey)
{
case 0x01:
return LedId.Keyboard_Escape;
case 0x3B:
return LedId.Keyboard_F1;
case 0x3C:
return LedId.Keyboard_F2;
case 0x3D:
return LedId.Keyboard_F3;
case 0x3E:
return LedId.Keyboard_F4;
case 0x3F:
return LedId.Keyboard_F5;
case 0x40:
return LedId.Keyboard_F6;
case 0x41:
return LedId.Keyboard_F7;
case 0x42:
return LedId.Keyboard_F8;
case 0x43:
return LedId.Keyboard_F9;
case 0x44:
return LedId.Keyboard_F10;
case 0x57:
return LedId.Keyboard_F11;
case 0x58:
return LedId.Keyboard_F12;
case 0x02:
return LedId.Keyboard_1;
case 0x03:
return LedId.Keyboard_2;
case 0x04:
return LedId.Keyboard_3;
case 0x05:
return LedId.Keyboard_4;
case 0x06:
return LedId.Keyboard_5;
case 0x07:
return LedId.Keyboard_6;
case 0x08:
return LedId.Keyboard_7;
case 0x09:
return LedId.Keyboard_8;
case 0x0A:
return LedId.Keyboard_9;
case 0x0B:
return LedId.Keyboard_0;
case 0x0C:
return LedId.Keyboard_MinusAndUnderscore;
case 0x0D:
return LedId.Keyboard_EqualsAndPlus;
case 0x0E:
return LedId.Keyboard_Backspace;
case 0x0F:
return LedId.Keyboard_Tab;
case 0x10:
return LedId.Keyboard_Q;
case 0x11:
return LedId.Keyboard_W;
case 0x12:
return LedId.Keyboard_E;
case 0x13:
return LedId.Keyboard_R;
case 0x14:
return LedId.Keyboard_T;
case 0x15:
return LedId.Keyboard_Y;
case 0x16:
return LedId.Keyboard_U;
case 0x17:
return LedId.Keyboard_I;
case 0x18:
return LedId.Keyboard_O;
case 0x19:
return LedId.Keyboard_P;
case 0x1A:
return LedId.Keyboard_BracketLeft;
case 0x1B:
return LedId.Keyboard_BracketRight;
case 0x1C:
return LedId.Keyboard_Enter;
case 0x3A:
return LedId.Keyboard_CapsLock;
case 0x1E:
return LedId.Keyboard_A;
case 0x1F:
return LedId.Keyboard_S;
case 0x20:
return LedId.Keyboard_D;
case 0x21:
return LedId.Keyboard_F;
case 0x22:
return LedId.Keyboard_G;
case 0x23:
return LedId.Keyboard_H;
case 0x24:
return LedId.Keyboard_J;
case 0x25:
return LedId.Keyboard_K;
case 0x26:
return LedId.Keyboard_L;
case 0x27:
return LedId.Keyboard_SemicolonAndColon;
case 0x28:
return LedId.Keyboard_ApostropheAndDoubleQuote;
case 0x29:
return LedId.Keyboard_GraveAccentAndTilde;
case 0x2A:
return LedId.Keyboard_LeftShift;
case 0x2B:
return LedId.Keyboard_Backslash;
case 0x2C:
return LedId.Keyboard_Z;
case 0x2D:
return LedId.Keyboard_X;
case 0x2E:
return LedId.Keyboard_C;
case 0x2F:
return LedId.Keyboard_V;
case 0x30:
return LedId.Keyboard_B;
case 0x31:
return LedId.Keyboard_N;
case 0x32:
return LedId.Keyboard_M;
case 0x33:
return LedId.Keyboard_CommaAndLessThan;
case 0x34:
return LedId.Keyboard_PeriodAndBiggerThan;
case 0x35:
return LedId.Keyboard_SlashAndQuestionMark;
case 0x36:
return LedId.Keyboard_RightShift;
case 0x1D:
return LedId.Keyboard_LeftCtrl;
case 0xDB:
return LedId.Keyboard_LeftGui;
case 0x38:
return LedId.Keyboard_LeftAlt;
case 0x39:
return LedId.Keyboard_Space;
case 0xB8:
return LedId.Keyboard_RightAlt;
case 0x100:
return LedId.Keyboard_RightGui;
case 0xDD:
return LedId.Keyboard_Application;
case 0x9D:
return LedId.Keyboard_RightCtrl;
case 0xB7:
return LedId.Keyboard_PrintScreen;
case 0x46:
return LedId.Keyboard_ScrollLock;
case 0xC5:
return LedId.Keyboard_PauseBreak;
case 0xD2:
return LedId.Keyboard_Insert;
case 0xC7:
return LedId.Keyboard_Home;
case 0xC9:
return LedId.Keyboard_PageUp;
case 0xD3:
return LedId.Keyboard_Delete;
case 0xCF:
return LedId.Keyboard_End;
case 0xD1:
return LedId.Keyboard_PageDown;
case 0xC8:
return LedId.Keyboard_ArrowUp;
case 0xCB:
return LedId.Keyboard_ArrowLeft;
case 0xD0:
return LedId.Keyboard_ArrowDown;
case 0xCD:
return LedId.Keyboard_ArrowRight;
case 0x45:
return LedId.Keyboard_NumLock;
case 0xB5:
return LedId.Keyboard_NumSlash;
case 0x37:
return LedId.Keyboard_NumAsterisk;
case 0x4A:
return LedId.Keyboard_NumMinus;
case 0x47:
return LedId.Keyboard_Num7;
case 0x48:
return LedId.Keyboard_Num8;
case 0x49:
return LedId.Keyboard_Num9;
case 0x53:
return LedId.Keyboard_NumPeriodAndDelete;
case 0x4E:
return LedId.Keyboard_NumPlus;
case 0x4B:
return LedId.Keyboard_Num4;
case 0x4C:
return LedId.Keyboard_Num5;
case 0x4D:
return LedId.Keyboard_Num6;
case 0x4F:
return LedId.Keyboard_Num1;
case 0x50:
return LedId.Keyboard_Num2;
case 0x51:
return LedId.Keyboard_Num3;
case 0x52:
return LedId.Keyboard_Num0;
case 0x9C:
return LedId.Keyboard_NumEnter;
case 0x59:
return LedId.Keyboard_NonUsBackslash;
case 0x56:
return LedId.Keyboard_NonUsTilde;
case 0xB3:
return LedId.Keyboard_NumComma;
case 0x101:
return LedId.Logo;
case 0x102:
return LedId.Keyboard_Custom1;
case 0x103:
return LedId.Keyboard_Custom2;
default:
return LedId.Invalid;
}
}
#endregion #endregion
} }
} }

View File

@ -33,7 +33,7 @@ namespace RGB.NET.Devices.Asus
/// <param name="device">The <see cref="IAuraSyncDevice"/> backing this RGB.NET device.</param> /// <param name="device">The <see cref="IAuraSyncDevice"/> backing this RGB.NET device.</param>
/// <param name="culture">The <see cref="T:System.Globalization.CultureInfo" /> of the layout this keyboard is using.</param> /// <param name="culture">The <see cref="T:System.Globalization.CultureInfo" /> of the layout this keyboard is using.</param>
internal AsusKeyboardRGBDeviceInfo(IAuraSyncDevice device, CultureInfo culture) internal AsusKeyboardRGBDeviceInfo(IAuraSyncDevice device, CultureInfo culture)
: base(RGBDeviceType.Keyboard, device, "Claymore") : base(RGBDeviceType.Keyboard, device, device.Name)
{ {
SetLayouts(culture.KeyboardLayoutId); SetLayouts(culture.KeyboardLayoutId);
} }