1
0
mirror of https://github.com/DarthAffe/RGB.NET.git synced 2025-12-13 10:08:31 +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
{
foreach (KeyValuePair<object, Color> data in dataSet)
if (Device.Type == 0x00080000 || Device.Type == 0x00081000)//Keyboard
{
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;
foreach (KeyValuePair<object, Color> data in dataSet)
{
ushort index = (ushort)data.Key;
IAuraSyncKeyboard keyboard = (IAuraSyncKeyboard)Device;
if (keyboard != null)
{
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();
@ -63,7 +107,6 @@ namespace RGB.NET.Devices.Asus
catch (Exception ex)
{ /* "The server threw an exception." seems to be a thing here ... */ }
}
#endregion
}
}

View File

@ -1,4 +1,5 @@
using RGB.NET.Core;
using AuraServiceLib;
using RGB.NET.Core;
namespace RGB.NET.Devices.Asus
{
@ -22,22 +23,271 @@ namespace RGB.NET.Devices.Asus
#endregion
#region Methods
private ushort asusCode;
/// <inheritdoc />
protected override void InitializeLayout()
{
//TODO DarthAffe 07.10.2017: This doesn't make sense at all ... Find someone with such a keyboard!
int ledCount = DeviceInfo.Device.Lights.Count;
for (int i = 0; i < ledCount; i++)
InitializeLed(LedId.Keyboard_Escape + i, new Rectangle(i * 19, 0, 19, 19));
if (DeviceInfo.Device.Type != 0x00081001)
{
int pos = 0;
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();
ApplyLayoutFromFile(PathHelper.GetAbsolutePath(this, $@"Layouts\Asus\Keyboards\{model}", $"{DeviceInfo.PhysicalLayout.ToString().ToUpper()}.xml"), DeviceInfo.LogicalLayout.ToString());
}
/// <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
}
}

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="culture">The <see cref="T:System.Globalization.CultureInfo" /> of the layout this keyboard is using.</param>
internal AsusKeyboardRGBDeviceInfo(IAuraSyncDevice device, CultureInfo culture)
: base(RGBDeviceType.Keyboard, device, "Claymore")
: base(RGBDeviceType.Keyboard, device, device.Name)
{
SetLayouts(culture.KeyboardLayoutId);
}