From 03c8d3542164066fd467762d3e39b04661026bcd Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 28 Dec 2019 13:19:21 +0100 Subject: [PATCH 1/4] Device Support Asus strix scope tested Asus strix flare not tested Signed-off-by: Alex --- .../Generic/AsusUpdateQueue.cs | 59 +++- .../Keyboard/AsusKeyboardRGBDevice.cs | 264 +++++++++++++++++- .../Keyboard/AsusKeyboardRGBDeviceInfo.cs | 2 +- 3 files changed, 309 insertions(+), 16 deletions(-) diff --git a/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs b/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs index fb32a3e..48f2b0d 100644 --- a/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs +++ b/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs @@ -48,14 +48,58 @@ namespace RGB.NET.Devices.Asus { try { - foreach (KeyValuePair 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 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 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 } } diff --git a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs index f16acf4..f3d1b6a 100644 --- a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs +++ b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs @@ -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; /// 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()); } /// - protected override object CreateLedCustomData(LedId ledId) => (int)ledId - (int)LedId.Keyboard_Escape; + protected override object CreateLedCustomData(LedId ledId) => asusCode; + /// + 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 } } diff --git a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDeviceInfo.cs b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDeviceInfo.cs index bf020a6..5b8a55e 100644 --- a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDeviceInfo.cs +++ b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDeviceInfo.cs @@ -33,7 +33,7 @@ namespace RGB.NET.Devices.Asus /// The backing this RGB.NET device. /// The of the layout this keyboard is using. internal AsusKeyboardRGBDeviceInfo(IAuraSyncDevice device, CultureInfo culture) - : base(RGBDeviceType.Keyboard, device, "Claymore") + : base(RGBDeviceType.Keyboard, device, device.Name) { SetLayouts(culture.KeyboardLayoutId); } From 5b3a0775577cddd4a509f8e7c3dc63927261439c Mon Sep 17 00:00:00 2001 From: Darth Affe Date: Sat, 22 Feb 2020 15:11:27 +0100 Subject: [PATCH 2/4] Started Asus refactoring (WIP) --- RGB.NET.Devices.Asus/Enum/AsusDeviceTypes.cs | 25 +++ RGB.NET.Devices.Asus/Enum/AsusLedIds.cs | 153 ++++++++++++++++++ .../Generic/AsusUpdateQueue.cs | 2 +- .../Keyboard/AsusKeyboardLedMappings.cs | 138 ++++++++++++++++ .../Keyboard/AsusKeyboardRGBDevice.cs | 1 - 5 files changed, 317 insertions(+), 2 deletions(-) create mode 100644 RGB.NET.Devices.Asus/Enum/AsusDeviceTypes.cs create mode 100644 RGB.NET.Devices.Asus/Enum/AsusLedIds.cs create mode 100644 RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMappings.cs diff --git a/RGB.NET.Devices.Asus/Enum/AsusDeviceTypes.cs b/RGB.NET.Devices.Asus/Enum/AsusDeviceTypes.cs new file mode 100644 index 0000000..a86ac4c --- /dev/null +++ b/RGB.NET.Devices.Asus/Enum/AsusDeviceTypes.cs @@ -0,0 +1,25 @@ +// ReSharper disable InconsistentNaming + +namespace RGB.NET.Devices.Asus +{ + internal enum AsusDeviceTypes + { + ALL = 0, + MB_RGB = 0x10000, + MB_ADDRESABLE = 0x11000, + DESKTOP_RGB = 0x12000, + VGA_RGB = 0x20000, + DISPLAY_RGB = 0x30000, + HEADSET_RGB = 0x40000, + MICROPHONE_RGB = 0x50000, + EXTERNAL_HARD_DRIVER_RGB = 0x60000, + EXTERNAL_BLUE_RAY_RGB = 0x61000, + DRAM_RGB = 0x70000, + KEYBOARD_RGB = 0x80000, + NB_KB_RGB = 0x81000, + NB_KB_4ZONE_RGB = 0x81001, + MOUSE_RGB = 0x90000, + CHASSIS_RGB = 0xB0000, + PROJECTOR_RGB = 0xC0000 + } +} diff --git a/RGB.NET.Devices.Asus/Enum/AsusLedIds.cs b/RGB.NET.Devices.Asus/Enum/AsusLedIds.cs new file mode 100644 index 0000000..665015f --- /dev/null +++ b/RGB.NET.Devices.Asus/Enum/AsusLedIds.cs @@ -0,0 +1,153 @@ +// ReSharper disable InconsistentNaming + +namespace RGB.NET.Devices.Asus +{ + internal enum AsusLedIds + { + KEY_ESCAPE = 0x01, + KEY_1 = 0x02, + KEY_2 = 0x03, + KEY_3 = 0x04, + KEY_4 = 0x05, + KEY_5 = 0x06, + KEY_6 = 0x07, + KEY_7 = 0x08, + KEY_8 = 0x09, + KEY_9 = 0x0A, + KEY_0 = 0x0B, + KEY_MINUS = 0x0C, // - on main keyboard + KEY_EQUALS = 0x0D, + KEY_BACK = 0x0E, // backspace + KEY_TAB = 0x0F, + KEY_Q = 0x10, + KEY_W = 0x11, + KEY_E = 0x12, + KEY_R = 0x13, + KEY_T = 0x14, + KEY_Y = 0x15, + KEY_U = 0x16, + KEY_I = 0x17, + KEY_O = 0x18, + KEY_P = 0x19, + KEY_LBRACKET = 0x1A, + KEY_RBRACKET = 0x1B, + KEY_RETURN = 0x1C, // Enter on main keyboard + KEY_LCONTROL = 0x1D, + KEY_A = 0x1E, + KEY_S = 0x1F, + KEY_D = 0x20, + KEY_F = 0x21, + KEY_G = 0x22, + KEY_H = 0x23, + KEY_J = 0x24, + KEY_K = 0x25, + KEY_L = 0x26, + KEY_SEMICOLON = 0x27, + KEY_APOSTROPHE = 0x28, + KEY_GRAVE = 0x29, // accent grave + KEY_LSHIFT = 0x2A, + KEY_BACKSLASH = 0x2B, + KEY_Z = 0x2C, + KEY_X = 0x2D, + KEY_C = 0x2E, + KEY_V = 0x2F, + KEY_B = 0x30, + KEY_N = 0x31, + KEY_M = 0x32, + KEY_COMMA = 0x33, + KEY_PERIOD = 0x34, // . on main keyboard + KEY_SLASH = 0x35, // / on main keyboard + KEY_RSHIFT = 0x36, + KEY_MULTIPLY = 0x37, // * on numeric keypad + KEY_LMENU = 0x38, // left Alt + KEY_SPACE = 0x39, + KEY_CAPITAL = 0x3A, + KEY_F1 = 0x3B, + KEY_F2 = 0x3C, + KEY_F3 = 0x3D, + KEY_F4 = 0x3E, + KEY_F5 = 0x3F, + KEY_F6 = 0x40, + KEY_F7 = 0x41, + KEY_F8 = 0x42, + KEY_F9 = 0x43, + KEY_F10 = 0x44, + KEY_NUMLOCK = 0x45, + KEY_SCROLL = 0x46, // Scroll Lock + KEY_NUMPAD7 = 0x47, + KEY_NUMPAD8 = 0x48, + KEY_NUMPAD9 = 0x49, + KEY_SUBTRACT = 0x4A, // - on numeric keypad + KEY_NUMPAD4 = 0x4B, + KEY_NUMPAD5 = 0x4C, + KEY_NUMPAD6 = 0x4D, + KEY_ADD = 0x4E, // + on numeric keypad + KEY_NUMPAD1 = 0x4F, + KEY_NUMPAD2 = 0x50, + KEY_NUMPAD3 = 0x51, + KEY_NUMPAD0 = 0x52, + KEY_DECIMAL = 0x53, // . on numeric keypad + KEY_OEM_102 = 0x56, // < > | on UK/Germany keyboards + KEY_F11 = 0x57, + KEY_F12 = 0x58, + KEY_F13 = 0x64, // (NEC PC98) + KEY_F14 = 0x65, // (NEC PC98) + KEY_F15 = 0x66, // (NEC PC98) + KEY_KANA = 0x70, // (Japanese keyboard) + KEY_ABNT_C1 = 0x73, // / ? on Portugese (Brazilian) keyboards + KEY_CONVERT = 0x79, // (Japanese keyboard) + KEY_NOCONVERT = 0x7B, // (Japanese keyboard) + KEY_YEN = 0x7D, // (Japanese keyboard) + KEY_ABNT_C2 = 0x7E, // Numpad . on Portugese (Brazilian) keyboards + KEY_NUMPADEQUALS = 0x8D, // = on numeric keypad (NEC PC98) + KEY_CIRCUMFLEX = 0x90, // (Japanese keyboard) + KEY_AT = 0x91, // (NEC PC98) + KEY_COLON = 0x92, // (NEC PC98) + KEY_UNDERLINE = 0x93, // (NEC PC98) + KEY_KANJI = 0x94, // (Japanese keyboard) + KEY_STOP = 0x95, // (NEC PC98) + KEY_AX = 0x96, // (Japan AX) + KEY_UNLABELED = 0x97, // (J3100) + KEY_NEXTTRACK = 0x99, // Next Track + KEY_NUMPADENTER = 0x9C, // Enter on numeric keypad + KEY_RCONTROL = 0x9D, // + KEY_MUTE = 0xA0, // Mute + KEY_CALCULATOR = 0xA1, // Calculator + KEY_PLAYPAUSE = 0xA2, // Play / Pause + KEY_MEDIASTOP = 0xA4, // Media Stop + KEY_VOLUMEDOWN = 0xAE, // Volume - + KEY_VOLUMEUP = 0xB0, // Volume + + KEY_WEBHOME = 0xB2, // Web home + KEY_NUMPADCOMMA = 0xB3, // , on numeric keypad (NEC PC98) + KEY_DIVIDE = 0xB5, // / on numeric keypad + KEY_SYSRQ = 0xB7, // + KEY_RMENU = 0xB8, // right Alt + KEY_PAUSE = 0xC5, // Pause + KEY_HOME = 0xC7, // Home on arrow keypad + KEY_UP = 0xC8, // UpArrow on arrow keypad + KEY_PRIOR = 0xC9, // PgUp on arrow keypad + KEY_LEFT = 0xCB, // LeftArrow on arrow keypad + KEY_RIGHT = 0xCD, // RightArrow on arrow keypad + KEY_END = 0xCF, // End on arrow keypad + KEY_DOWN = 0xD0, // DownArrow on arrow keypad + KEY_NEXT = 0xD1, // PgDn on arrow keypad + KEY_INSERT = 0xD2, // Insert on arrow keypad + KEY_DELETE = 0xD3, // Delete on arrow keypad + KEY_LWIN = 0xDB, // Left Windows key + KEY_RWIN = 0xDC, // Right Windows key + KEY_APPS = 0xDD, // AppMenu key + KEY_POWER = 0xDE, // + KEY_SLEEP = 0xDF, // + KEY_WAKE = 0xE3, // System Wake + KEY_WEBSEARCH = 0xE5, // Web Search + KEY_WEBFAVORITES = 0xE6, // Web Favorites + KEY_WEBREFRESH = 0xE7, // Web Refresh + KEY_WEBSTOP = 0xE8, // Web Stop + KEY_WEBFORWARD = 0xE9, // Web Forward + KEY_WEBBACK = 0xEA, // Web Back + KEY_MYCOMPUTER = 0xEB, // My Computer + KEY_MAIL = 0xEC, // Mail + KEY_MEDIASELECT = 0xED, // Media Select + KEY_FN = 0x100, // Function key + } +} diff --git a/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs b/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs index 48f2b0d..4328dc1 100644 --- a/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs +++ b/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs @@ -48,7 +48,7 @@ namespace RGB.NET.Devices.Asus { try { - if (Device.Type == 0x00080000 || Device.Type == 0x00081000)//Keyboard + if ((Device.Type == 0x00080000) || (Device.Type == 0x00081000)) //Keyboard { foreach (KeyValuePair data in dataSet) { diff --git a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMappings.cs b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMappings.cs new file mode 100644 index 0000000..7c336ac --- /dev/null +++ b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMappings.cs @@ -0,0 +1,138 @@ +using System.Collections.Generic; +using RGB.NET.Core; + +namespace RGB.NET.Devices.Asus +{ + internal static class AsusKeyboardLedMappings + { + private static readonly Dictionary MasterKeysL_US = new Dictionary + { + { LedId.Keyboard_Escape, (0,0) }, + { LedId.Keyboard_F1, (0,1) }, + { LedId.Keyboard_F2, (0,2) }, + { LedId.Keyboard_F3, (0,3) }, + { LedId.Keyboard_F4, (0,4) }, + { LedId.Keyboard_F5, (0,6) }, + { LedId.Keyboard_F6, (0,7) }, + { LedId.Keyboard_F7, (0,8) }, + { LedId.Keyboard_F8, (0,9) }, + { LedId.Keyboard_F9, (0,11) }, + { LedId.Keyboard_F10, (0,12) }, + { LedId.Keyboard_F11, (0,13) }, + { LedId.Keyboard_F12, (0,14) }, + { LedId.Keyboard_PrintScreen, (0,15) }, + { LedId.Keyboard_ScrollLock, (0,16) }, + { LedId.Keyboard_PauseBreak, (0,17) }, + { LedId.Keyboard_Programmable1, (0,18) }, + { LedId.Keyboard_Programmable2, (0,19) }, + { LedId.Keyboard_Programmable3, (0,20) }, + { LedId.Keyboard_Programmable4, (0,21) }, + + { LedId.Keyboard_GraveAccentAndTilde, (1,0) }, + { LedId.Keyboard_1, (1,1) }, + { LedId.Keyboard_2, (1,2) }, + { LedId.Keyboard_3, (1,3) }, + { LedId.Keyboard_4, (1,4) }, + { LedId.Keyboard_5, (1,5) }, + { LedId.Keyboard_6, (1,6) }, + { LedId.Keyboard_7, (1,7) }, + { LedId.Keyboard_8, (1,8) }, + { LedId.Keyboard_9, (1,9) }, + { LedId.Keyboard_0, (1,10) }, + { LedId.Keyboard_MinusAndUnderscore, (1,11) }, + { LedId.Keyboard_EqualsAndPlus, (1,12) }, + { LedId.Keyboard_Backspace, (1,14) }, + { LedId.Keyboard_Insert, (1,15) }, + { LedId.Keyboard_Home, (1,16) }, + { LedId.Keyboard_PageUp, (1,17) }, + { LedId.Keyboard_NumLock, (1,18) }, + { LedId.Keyboard_NumSlash, (1,19) }, + { LedId.Keyboard_NumAsterisk, (1,20) }, + { LedId.Keyboard_NumMinus, (1,21) }, + + { LedId.Keyboard_Tab, (2,0) }, + { LedId.Keyboard_Q, (2,1) }, + { LedId.Keyboard_W, (2,2) }, + { LedId.Keyboard_E, (2,3) }, + { LedId.Keyboard_R, (2,4) }, + { LedId.Keyboard_T, (2,5) }, + { LedId.Keyboard_Y, (2,6) }, + { LedId.Keyboard_U, (2,7) }, + { LedId.Keyboard_I, (2,8) }, + { LedId.Keyboard_O, (2,9) }, + { LedId.Keyboard_P, (2,10) }, + { LedId.Keyboard_BracketLeft, (2,11) }, + { LedId.Keyboard_BracketRight, (2,12) }, + { LedId.Keyboard_Backslash, (2,14) }, + { LedId.Keyboard_Delete, (2,15) }, + { LedId.Keyboard_End, (2,16) }, + { LedId.Keyboard_PageDown, (2,17) }, + { LedId.Keyboard_Num7, (2,18) }, + { LedId.Keyboard_Num8, (2,19) }, + { LedId.Keyboard_Num9, (2,20) }, + { LedId.Keyboard_NumPlus, (2,21) }, + + { LedId.Keyboard_CapsLock, (3,0) }, + { LedId.Keyboard_A, (3,1) }, + { LedId.Keyboard_S, (3,2) }, + { LedId.Keyboard_D, (3,3) }, + { LedId.Keyboard_F, (3,4) }, + { LedId.Keyboard_G, (3,5) }, + { LedId.Keyboard_H, (3,6) }, + { LedId.Keyboard_J, (3,7) }, + { LedId.Keyboard_K, (3,8) }, + { LedId.Keyboard_L, (3,9) }, + { LedId.Keyboard_SemicolonAndColon, (3,10) }, + { LedId.Keyboard_ApostropheAndDoubleQuote, (3,11) }, + { LedId.Keyboard_Enter, (3,14) }, + { LedId.Keyboard_Num4, (3,18) }, + { LedId.Keyboard_Num5, (3,19) }, + { LedId.Keyboard_Num6, (3,20) }, + + { LedId.Keyboard_LeftShift, (4,0) }, + { LedId.Keyboard_Z, (4,2) }, + { LedId.Keyboard_X, (4,3) }, + { LedId.Keyboard_C, (4,4) }, + { LedId.Keyboard_V, (4,5) }, + { LedId.Keyboard_B, (4,6) }, + { LedId.Keyboard_N, (4,7) }, + { LedId.Keyboard_M, (4,8) }, + { LedId.Keyboard_CommaAndLessThan, (4,9) }, + { LedId.Keyboard_PeriodAndBiggerThan, (4,10) }, + { LedId.Keyboard_SlashAndQuestionMark, (4,11) }, + { LedId.Keyboard_RightShift, (4,14) }, + { LedId.Keyboard_ArrowUp, (4,16) }, + { LedId.Keyboard_Num1, (4,18) }, + { LedId.Keyboard_Num2, (4,19) }, + { LedId.Keyboard_Num3, (4,20) }, + { LedId.Keyboard_NumEnter, (4,21) }, + + { LedId.Keyboard_LeftCtrl, (5,0) }, + { LedId.Keyboard_LeftGui, (5,1) }, + { LedId.Keyboard_LeftAlt, (5,2) }, + { LedId.Keyboard_Space, (5,6) }, + { LedId.Keyboard_RightAlt, (5,10) }, + { LedId.Keyboard_RightGui, (5,11) }, + { LedId.Keyboard_Application, (5,12) }, + { LedId.Keyboard_RightCtrl, (5,14) }, + { LedId.Keyboard_ArrowLeft, (5,15) }, + { LedId.Keyboard_ArrowDown, (5,16) }, + { LedId.Keyboard_ArrowRight, (5,17) }, + { LedId.Keyboard_Num0, (5,18) }, + { LedId.Keyboard_NumPeriodAndDelete, (5,20) } + }; + + /// + /// Contains all the hardware-id mappings for CoolerMaster devices. + /// + public static readonly Dictionary>> Mapping = + new Dictionary>> + { + { "", new Dictionary> + { + { AsusPhysicalKeyboardLayout.TODO, MasterKeysL_US } + } + }, + }; + } +} diff --git a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs index f3d1b6a..46a7a21 100644 --- a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs +++ b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs @@ -59,7 +59,6 @@ namespace RGB.NET.Devices.Asus /// protected override object CreateLedCustomData(LedId ledId) => asusCode; - /// private LedId AsusLedIdMapper(ushort asusKey) { switch (asusKey) From acdd7c19aa1717cb403b3a94003108a8e7d7b7c3 Mon Sep 17 00:00:00 2001 From: Darth Affe Date: Sat, 11 Jul 2020 23:50:18 +0200 Subject: [PATCH 3/4] Added additional custom-keyboard-keys --- RGB.NET.Core/Leds/LedId.cs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/RGB.NET.Core/Leds/LedId.cs b/RGB.NET.Core/Leds/LedId.cs index 6278aae..536263e 100644 --- a/RGB.NET.Core/Leds/LedId.cs +++ b/RGB.NET.Core/Leds/LedId.cs @@ -213,6 +213,38 @@ namespace RGB.NET.Core Keyboard_Custom30 = 0x0000701E, Keyboard_Custom31 = 0x0000701F, Keyboard_Custom32 = 0x00007020, + Keyboard_Custom33 = 0x00007021, + Keyboard_Custom34 = 0x00007022, + Keyboard_Custom35 = 0x00007023, + Keyboard_Custom36 = 0x00007024, + Keyboard_Custom37 = 0x00007025, + Keyboard_Custom38 = 0x00007026, + Keyboard_Custom39 = 0x00007027, + Keyboard_Custom40 = 0x00007028, + Keyboard_Custom41 = 0x00007029, + Keyboard_Custom42 = 0x0000702A, + Keyboard_Custom43 = 0x0000702B, + Keyboard_Custom44 = 0x0000702C, + Keyboard_Custom45 = 0x0000702D, + Keyboard_Custom46 = 0x0000702E, + Keyboard_Custom47 = 0x0000702F, + Keyboard_Custom48 = 0x00007030, + Keyboard_Custom49 = 0x00007031, + Keyboard_Custom50 = 0x00007032, + Keyboard_Custom51 = 0x00007033, + Keyboard_Custom52 = 0x00007034, + Keyboard_Custom53 = 0x00007035, + Keyboard_Custom54 = 0x00007036, + Keyboard_Custom55 = 0x00007037, + Keyboard_Custom56 = 0x00007038, + Keyboard_Custom57 = 0x00007039, + Keyboard_Custom58 = 0x0000703A, + Keyboard_Custom59 = 0x0000703B, + Keyboard_Custom60 = 0x0000703C, + Keyboard_Custom61 = 0x0000703D, + Keyboard_Custom62 = 0x0000703E, + Keyboard_Custom63 = 0x0000703F, + Keyboard_Custom64 = 0x00007040, /*### Mouse ###*/ Mouse1 = 0x00100001, From ca29490f0228ebc3e66311add11f4f6738cb04d9 Mon Sep 17 00:00:00 2001 From: Darth Affe Date: Sat, 11 Jul 2020 23:50:33 +0200 Subject: [PATCH 4/4] Refactored asus keyboard implementation --- .../{AsusDeviceTypes.cs => AsusDeviceType.cs} | 2 +- .../Enum/{AsusLedIds.cs => AsusLedId.cs} | 9 +- .../Generic/AsusUpdateQueue.cs | 45 ++- .../Keyboard/AsusKeyboardLedMapping.cs | 161 +++++++++++ .../Keyboard/AsusKeyboardLedMappings.cs | 138 --------- .../Keyboard/AsusKeyboardRGBDevice.cs | 263 ++---------------- 6 files changed, 207 insertions(+), 411 deletions(-) rename RGB.NET.Devices.Asus/Enum/{AsusDeviceTypes.cs => AsusDeviceType.cs} (93%) rename RGB.NET.Devices.Asus/Enum/{AsusLedIds.cs => AsusLedId.cs} (96%) create mode 100644 RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMapping.cs delete mode 100644 RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMappings.cs diff --git a/RGB.NET.Devices.Asus/Enum/AsusDeviceTypes.cs b/RGB.NET.Devices.Asus/Enum/AsusDeviceType.cs similarity index 93% rename from RGB.NET.Devices.Asus/Enum/AsusDeviceTypes.cs rename to RGB.NET.Devices.Asus/Enum/AsusDeviceType.cs index a86ac4c..7990bce 100644 --- a/RGB.NET.Devices.Asus/Enum/AsusDeviceTypes.cs +++ b/RGB.NET.Devices.Asus/Enum/AsusDeviceType.cs @@ -2,7 +2,7 @@ namespace RGB.NET.Devices.Asus { - internal enum AsusDeviceTypes + internal enum AsusDeviceType : uint { ALL = 0, MB_RGB = 0x10000, diff --git a/RGB.NET.Devices.Asus/Enum/AsusLedIds.cs b/RGB.NET.Devices.Asus/Enum/AsusLedId.cs similarity index 96% rename from RGB.NET.Devices.Asus/Enum/AsusLedIds.cs rename to RGB.NET.Devices.Asus/Enum/AsusLedId.cs index 665015f..f56d64a 100644 --- a/RGB.NET.Devices.Asus/Enum/AsusLedIds.cs +++ b/RGB.NET.Devices.Asus/Enum/AsusLedId.cs @@ -2,7 +2,7 @@ namespace RGB.NET.Devices.Asus { - internal enum AsusLedIds + internal enum AsusLedId : ushort { KEY_ESCAPE = 0x01, KEY_1 = 0x02, @@ -149,5 +149,12 @@ namespace RGB.NET.Devices.Asus KEY_MAIL = 0xEC, // Mail KEY_MEDIASELECT = 0xED, // Media Select KEY_FN = 0x100, // Function key + + // Undocumented + UNDOCUMENTED_1 = 0x59, + UNDOCUMENTED_2 = 0x56, + UNDOCUMENTED_3 = 0x101, + UNDOCUMENTED_4 = 0x102, + UNDOCUMENTED_5 = 0x103, } } diff --git a/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs b/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs index 4328dc1..9a3b260 100644 --- a/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs +++ b/RGB.NET.Devices.Asus/Generic/AsusUpdateQueue.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using AuraServiceLib; using RGB.NET.Core; @@ -48,40 +47,31 @@ namespace RGB.NET.Devices.Asus { try { - if ((Device.Type == 0x00080000) || (Device.Type == 0x00081000)) //Keyboard + if ((Device.Type == (uint)AsusDeviceType.KEYBOARD_RGB) || (Device.Type == (uint)AsusDeviceType.NB_KB_RGB)) { foreach (KeyValuePair data in dataSet) { - ushort index = (ushort)data.Key; + AsusLedId index = (AsusLedId)data.Key; IAuraSyncKeyboard keyboard = (IAuraSyncKeyboard)Device; if (keyboard != null) { - IAuraRgbLight light; - //UK keyboard Layout - if (index == 0x56) + IAuraRgbLight light = index switch { - 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]; - } + //UK keyboard Layout + AsusLedId.KEY_OEM_102 => keyboard.Lights[(int)((3 * keyboard.Width) + 13)], + AsusLedId.UNDOCUMENTED_1 => keyboard.Lights[(int)((4 * keyboard.Width) + 1)], + _ => keyboard.Key[(ushort)index] + }; + // Asus Strix Scope if (keyboard.Name == "Charm") - { - if (index == 0XDB) + light = index switch { - light = keyboard.Lights[(int)(5 * keyboard.Width + 2)]; - } - else if (index == 0x38) - { - light = keyboard.Lights[(int)(5 * keyboard.Width + 3)]; - } - } + AsusLedId.KEY_LWIN => keyboard.Lights[(int)((5 * keyboard.Width) + 2)], + AsusLedId.KEY_LMENU => keyboard.Lights[(int)((5 * keyboard.Width) + 3)], + _ => light + }; + (_, byte r, byte g, byte b) = data.Value.GetRGBBytes(); light.Red = r; light.Green = g; @@ -95,6 +85,7 @@ namespace RGB.NET.Devices.Asus { 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; @@ -104,7 +95,7 @@ namespace RGB.NET.Devices.Asus Device.Apply(); } - catch (Exception ex) + catch { /* "The server threw an exception." seems to be a thing here ... */ } } #endregion diff --git a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMapping.cs b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMapping.cs new file mode 100644 index 0000000..2b48961 --- /dev/null +++ b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMapping.cs @@ -0,0 +1,161 @@ +using System.Collections.Generic; +using RGB.NET.Core; + +namespace RGB.NET.Devices.Asus +{ + internal static class AsusKeyboardLedMapping + { + public static readonly Dictionary MAPPING = new Dictionary + { + { LedId.Keyboard_Escape, AsusLedId.KEY_ESCAPE }, + { LedId.Keyboard_F1, AsusLedId.KEY_F1 }, + { LedId.Keyboard_F2, AsusLedId.KEY_F2 }, + { LedId.Keyboard_F3, AsusLedId.KEY_F3 }, + { LedId.Keyboard_F4, AsusLedId.KEY_F4 }, + { LedId.Keyboard_F5, AsusLedId.KEY_F5 }, + { LedId.Keyboard_F6, AsusLedId.KEY_F6 }, + { LedId.Keyboard_F7, AsusLedId.KEY_F7 }, + { LedId.Keyboard_F8, AsusLedId.KEY_F8 }, + { LedId.Keyboard_F9, AsusLedId.KEY_F9 }, + { LedId.Keyboard_F10, AsusLedId.KEY_F10 }, + { LedId.Keyboard_F11, AsusLedId.KEY_F11 }, + { LedId.Keyboard_F12, AsusLedId.KEY_F12 }, + { LedId.Keyboard_1, AsusLedId.KEY_1 }, + { LedId.Keyboard_2, AsusLedId.KEY_2 }, + { LedId.Keyboard_3, AsusLedId.KEY_3 }, + { LedId.Keyboard_4, AsusLedId.KEY_4 }, + { LedId.Keyboard_5, AsusLedId.KEY_5 }, + { LedId.Keyboard_6, AsusLedId.KEY_6 }, + { LedId.Keyboard_7, AsusLedId.KEY_7 }, + { LedId.Keyboard_8, AsusLedId.KEY_8 }, + { LedId.Keyboard_9, AsusLedId.KEY_9 }, + { LedId.Keyboard_0, AsusLedId.KEY_0 }, + { LedId.Keyboard_MinusAndUnderscore, AsusLedId.KEY_MINUS }, + { LedId.Keyboard_EqualsAndPlus, AsusLedId.KEY_EQUALS }, + { LedId.Keyboard_Backspace, AsusLedId.KEY_BACK }, + { LedId.Keyboard_Tab, AsusLedId.KEY_TAB }, + { LedId.Keyboard_Q, AsusLedId.KEY_Q }, + { LedId.Keyboard_W, AsusLedId.KEY_W }, + { LedId.Keyboard_E, AsusLedId.KEY_E }, + { LedId.Keyboard_R, AsusLedId.KEY_R }, + { LedId.Keyboard_T, AsusLedId.KEY_T }, + { LedId.Keyboard_Y, AsusLedId.KEY_Y }, + { LedId.Keyboard_U, AsusLedId.KEY_U }, + { LedId.Keyboard_I, AsusLedId.KEY_I }, + { LedId.Keyboard_O, AsusLedId.KEY_O }, + { LedId.Keyboard_P, AsusLedId.KEY_P }, + { LedId.Keyboard_BracketLeft, AsusLedId.KEY_LBRACKET }, + { LedId.Keyboard_BracketRight, AsusLedId.KEY_RBRACKET }, + { LedId.Keyboard_Enter, AsusLedId.KEY_RETURN }, + { LedId.Keyboard_CapsLock, AsusLedId.KEY_CAPITAL }, + { LedId.Keyboard_A, AsusLedId.KEY_A }, + { LedId.Keyboard_S, AsusLedId.KEY_S }, + { LedId.Keyboard_D, AsusLedId.KEY_D }, + { LedId.Keyboard_F, AsusLedId.KEY_F }, + { LedId.Keyboard_G, AsusLedId.KEY_G }, + { LedId.Keyboard_H, AsusLedId.KEY_H }, + { LedId.Keyboard_J, AsusLedId.KEY_J }, + { LedId.Keyboard_K, AsusLedId.KEY_K }, + { LedId.Keyboard_L, AsusLedId.KEY_L }, + { LedId.Keyboard_SemicolonAndColon, AsusLedId.KEY_SEMICOLON }, + { LedId.Keyboard_ApostropheAndDoubleQuote, AsusLedId.KEY_APOSTROPHE }, + { LedId.Keyboard_GraveAccentAndTilde, AsusLedId.KEY_GRAVE }, + { LedId.Keyboard_LeftShift, AsusLedId.KEY_LSHIFT }, + { LedId.Keyboard_Backslash, AsusLedId.KEY_BACKSLASH }, + { LedId.Keyboard_Z, AsusLedId.KEY_Z }, + { LedId.Keyboard_X, AsusLedId.KEY_X }, + { LedId.Keyboard_C, AsusLedId.KEY_C }, + { LedId.Keyboard_V, AsusLedId.KEY_V }, + { LedId.Keyboard_B, AsusLedId.KEY_B }, + { LedId.Keyboard_N, AsusLedId.KEY_N }, + { LedId.Keyboard_M, AsusLedId.KEY_M }, + { LedId.Keyboard_CommaAndLessThan, AsusLedId.KEY_COMMA }, + { LedId.Keyboard_PeriodAndBiggerThan, AsusLedId.KEY_PERIOD }, + { LedId.Keyboard_SlashAndQuestionMark, AsusLedId.KEY_SLASH }, + { LedId.Keyboard_RightShift, AsusLedId.KEY_RSHIFT }, + { LedId.Keyboard_LeftCtrl, AsusLedId.KEY_LCONTROL }, + { LedId.Keyboard_LeftGui, AsusLedId.KEY_LWIN }, + { LedId.Keyboard_LeftAlt, AsusLedId.KEY_LMENU }, + { LedId.Keyboard_Space, AsusLedId.KEY_SPACE }, + { LedId.Keyboard_RightAlt, AsusLedId.KEY_RMENU }, + { LedId.Keyboard_RightGui, AsusLedId.KEY_RWIN }, + { LedId.Keyboard_Application, AsusLedId.KEY_APPS }, + { LedId.Keyboard_RightCtrl, AsusLedId.KEY_RCONTROL }, + { LedId.Keyboard_PrintScreen, AsusLedId.KEY_SYSRQ }, + { LedId.Keyboard_ScrollLock, AsusLedId.KEY_SCROLL }, + { LedId.Keyboard_PauseBreak, AsusLedId.KEY_PAUSE }, + { LedId.Keyboard_Insert, AsusLedId.KEY_INSERT }, + { LedId.Keyboard_Home, AsusLedId.KEY_HOME }, + { LedId.Keyboard_PageUp, AsusLedId.KEY_PRIOR }, + { LedId.Keyboard_Delete, AsusLedId.KEY_DELETE }, + { LedId.Keyboard_End, AsusLedId.KEY_END }, + { LedId.Keyboard_PageDown, AsusLedId.KEY_NEXT }, + { LedId.Keyboard_ArrowUp, AsusLedId.KEY_UP }, + { LedId.Keyboard_ArrowLeft, AsusLedId.KEY_LEFT }, + { LedId.Keyboard_ArrowDown, AsusLedId.KEY_DOWN }, + { LedId.Keyboard_ArrowRight, AsusLedId.KEY_RIGHT }, + { LedId.Keyboard_NumLock, AsusLedId.KEY_NUMLOCK }, + { LedId.Keyboard_NumSlash, AsusLedId.KEY_DIVIDE }, + { LedId.Keyboard_NumAsterisk, AsusLedId.KEY_MULTIPLY }, + { LedId.Keyboard_NumMinus, AsusLedId.KEY_SUBTRACT }, + { LedId.Keyboard_Num7, AsusLedId.KEY_NUMPAD7 }, + { LedId.Keyboard_Num8, AsusLedId.KEY_NUMPAD8 }, + { LedId.Keyboard_Num9, AsusLedId.KEY_NUMPAD9 }, + { LedId.Keyboard_NumPeriodAndDelete, AsusLedId.KEY_DECIMAL }, + { LedId.Keyboard_NumPlus, AsusLedId.KEY_ADD }, + { LedId.Keyboard_Num4, AsusLedId.KEY_NUMPAD4 }, + { LedId.Keyboard_Num5, AsusLedId.KEY_NUMPAD5 }, + { LedId.Keyboard_Num6, AsusLedId.KEY_NUMPAD6 }, + { LedId.Keyboard_Num1, AsusLedId.KEY_NUMPAD1 }, + { LedId.Keyboard_Num2, AsusLedId.KEY_NUMPAD2 }, + { LedId.Keyboard_Num3, AsusLedId.KEY_NUMPAD3 }, + { LedId.Keyboard_Num0, AsusLedId.KEY_NUMPAD0 }, + { LedId.Keyboard_NumEnter, AsusLedId.KEY_NUMPADENTER }, + { LedId.Keyboard_NonUsBackslash, AsusLedId.UNDOCUMENTED_1 }, + { LedId.Keyboard_NonUsTilde, AsusLedId.UNDOCUMENTED_2 }, + { LedId.Keyboard_NumComma, AsusLedId.KEY_NUMPADCOMMA }, + { LedId.Logo, AsusLedId.UNDOCUMENTED_3 }, + { LedId.Keyboard_Custom1, AsusLedId.UNDOCUMENTED_4 }, + { LedId.Keyboard_Custom2, AsusLedId.UNDOCUMENTED_5 }, + { LedId.Keyboard_Custom3, AsusLedId.KEY_F13 }, + { LedId.Keyboard_Custom4, AsusLedId.KEY_F14 }, + { LedId.Keyboard_Custom5, AsusLedId.KEY_F15 }, + { LedId.Keyboard_Custom6, AsusLedId.KEY_KANA }, + { LedId.Keyboard_Custom7, AsusLedId.KEY_ABNT_C1 }, + { LedId.Keyboard_Custom8, AsusLedId.KEY_CONVERT }, + { LedId.Keyboard_Custom9, AsusLedId.KEY_NOCONVERT }, + { LedId.Keyboard_Custom10, AsusLedId.KEY_YEN }, + { LedId.Keyboard_Custom11, AsusLedId.KEY_ABNT_C2 }, + { LedId.Keyboard_Custom12, AsusLedId.KEY_NUMPADEQUALS }, + { LedId.Keyboard_Custom13, AsusLedId.KEY_CIRCUMFLEX }, + { LedId.Keyboard_Custom14, AsusLedId.KEY_AT }, + { LedId.Keyboard_Custom15, AsusLedId.KEY_COLON }, + { LedId.Keyboard_Custom16, AsusLedId.KEY_UNDERLINE }, + { LedId.Keyboard_Custom17, AsusLedId.KEY_KANJI }, + { LedId.Keyboard_Custom18, AsusLedId.KEY_STOP }, + { LedId.Keyboard_Custom19, AsusLedId.KEY_AX }, + { LedId.Keyboard_Custom20, AsusLedId.KEY_UNLABELED }, + { LedId.Keyboard_Custom21, AsusLedId.KEY_NEXTTRACK }, + { LedId.Keyboard_Custom22, AsusLedId.KEY_CALCULATOR }, + { LedId.Keyboard_Custom23, AsusLedId.KEY_POWER }, + { LedId.Keyboard_Custom24, AsusLedId.KEY_SLEEP }, + { LedId.Keyboard_Custom25, AsusLedId.KEY_WAKE }, + { LedId.Keyboard_Custom26, AsusLedId.KEY_WEBSEARCH }, + { LedId.Keyboard_Custom27, AsusLedId.KEY_WEBFAVORITES }, + { LedId.Keyboard_Custom28, AsusLedId.KEY_WEBREFRESH }, + { LedId.Keyboard_Custom29, AsusLedId.KEY_WEBSTOP }, + { LedId.Keyboard_Custom30, AsusLedId.KEY_WEBFORWARD }, + { LedId.Keyboard_Custom31, AsusLedId.KEY_WEBHOME }, + { LedId.Keyboard_Custom32, AsusLedId.KEY_WEBBACK }, + { LedId.Keyboard_Custom33, AsusLedId.KEY_MYCOMPUTER }, + { LedId.Keyboard_Custom34, AsusLedId.KEY_MAIL }, + { LedId.Keyboard_Custom35, AsusLedId.KEY_MEDIASELECT }, + { LedId.Keyboard_Custom36, AsusLedId.KEY_FN }, + { LedId.Keyboard_MediaMute, AsusLedId.KEY_MUTE }, + { LedId.Keyboard_MediaPlay, AsusLedId.KEY_PLAYPAUSE }, + { LedId.Keyboard_MediaStop, AsusLedId.KEY_MEDIASTOP }, + { LedId.Keyboard_MediaVolumeDown, AsusLedId.KEY_VOLUMEDOWN }, + { LedId.Keyboard_MediaVolumeUp, AsusLedId.KEY_VOLUMEUP }, + }; + } +} diff --git a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMappings.cs b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMappings.cs deleted file mode 100644 index 7c336ac..0000000 --- a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardLedMappings.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System.Collections.Generic; -using RGB.NET.Core; - -namespace RGB.NET.Devices.Asus -{ - internal static class AsusKeyboardLedMappings - { - private static readonly Dictionary MasterKeysL_US = new Dictionary - { - { LedId.Keyboard_Escape, (0,0) }, - { LedId.Keyboard_F1, (0,1) }, - { LedId.Keyboard_F2, (0,2) }, - { LedId.Keyboard_F3, (0,3) }, - { LedId.Keyboard_F4, (0,4) }, - { LedId.Keyboard_F5, (0,6) }, - { LedId.Keyboard_F6, (0,7) }, - { LedId.Keyboard_F7, (0,8) }, - { LedId.Keyboard_F8, (0,9) }, - { LedId.Keyboard_F9, (0,11) }, - { LedId.Keyboard_F10, (0,12) }, - { LedId.Keyboard_F11, (0,13) }, - { LedId.Keyboard_F12, (0,14) }, - { LedId.Keyboard_PrintScreen, (0,15) }, - { LedId.Keyboard_ScrollLock, (0,16) }, - { LedId.Keyboard_PauseBreak, (0,17) }, - { LedId.Keyboard_Programmable1, (0,18) }, - { LedId.Keyboard_Programmable2, (0,19) }, - { LedId.Keyboard_Programmable3, (0,20) }, - { LedId.Keyboard_Programmable4, (0,21) }, - - { LedId.Keyboard_GraveAccentAndTilde, (1,0) }, - { LedId.Keyboard_1, (1,1) }, - { LedId.Keyboard_2, (1,2) }, - { LedId.Keyboard_3, (1,3) }, - { LedId.Keyboard_4, (1,4) }, - { LedId.Keyboard_5, (1,5) }, - { LedId.Keyboard_6, (1,6) }, - { LedId.Keyboard_7, (1,7) }, - { LedId.Keyboard_8, (1,8) }, - { LedId.Keyboard_9, (1,9) }, - { LedId.Keyboard_0, (1,10) }, - { LedId.Keyboard_MinusAndUnderscore, (1,11) }, - { LedId.Keyboard_EqualsAndPlus, (1,12) }, - { LedId.Keyboard_Backspace, (1,14) }, - { LedId.Keyboard_Insert, (1,15) }, - { LedId.Keyboard_Home, (1,16) }, - { LedId.Keyboard_PageUp, (1,17) }, - { LedId.Keyboard_NumLock, (1,18) }, - { LedId.Keyboard_NumSlash, (1,19) }, - { LedId.Keyboard_NumAsterisk, (1,20) }, - { LedId.Keyboard_NumMinus, (1,21) }, - - { LedId.Keyboard_Tab, (2,0) }, - { LedId.Keyboard_Q, (2,1) }, - { LedId.Keyboard_W, (2,2) }, - { LedId.Keyboard_E, (2,3) }, - { LedId.Keyboard_R, (2,4) }, - { LedId.Keyboard_T, (2,5) }, - { LedId.Keyboard_Y, (2,6) }, - { LedId.Keyboard_U, (2,7) }, - { LedId.Keyboard_I, (2,8) }, - { LedId.Keyboard_O, (2,9) }, - { LedId.Keyboard_P, (2,10) }, - { LedId.Keyboard_BracketLeft, (2,11) }, - { LedId.Keyboard_BracketRight, (2,12) }, - { LedId.Keyboard_Backslash, (2,14) }, - { LedId.Keyboard_Delete, (2,15) }, - { LedId.Keyboard_End, (2,16) }, - { LedId.Keyboard_PageDown, (2,17) }, - { LedId.Keyboard_Num7, (2,18) }, - { LedId.Keyboard_Num8, (2,19) }, - { LedId.Keyboard_Num9, (2,20) }, - { LedId.Keyboard_NumPlus, (2,21) }, - - { LedId.Keyboard_CapsLock, (3,0) }, - { LedId.Keyboard_A, (3,1) }, - { LedId.Keyboard_S, (3,2) }, - { LedId.Keyboard_D, (3,3) }, - { LedId.Keyboard_F, (3,4) }, - { LedId.Keyboard_G, (3,5) }, - { LedId.Keyboard_H, (3,6) }, - { LedId.Keyboard_J, (3,7) }, - { LedId.Keyboard_K, (3,8) }, - { LedId.Keyboard_L, (3,9) }, - { LedId.Keyboard_SemicolonAndColon, (3,10) }, - { LedId.Keyboard_ApostropheAndDoubleQuote, (3,11) }, - { LedId.Keyboard_Enter, (3,14) }, - { LedId.Keyboard_Num4, (3,18) }, - { LedId.Keyboard_Num5, (3,19) }, - { LedId.Keyboard_Num6, (3,20) }, - - { LedId.Keyboard_LeftShift, (4,0) }, - { LedId.Keyboard_Z, (4,2) }, - { LedId.Keyboard_X, (4,3) }, - { LedId.Keyboard_C, (4,4) }, - { LedId.Keyboard_V, (4,5) }, - { LedId.Keyboard_B, (4,6) }, - { LedId.Keyboard_N, (4,7) }, - { LedId.Keyboard_M, (4,8) }, - { LedId.Keyboard_CommaAndLessThan, (4,9) }, - { LedId.Keyboard_PeriodAndBiggerThan, (4,10) }, - { LedId.Keyboard_SlashAndQuestionMark, (4,11) }, - { LedId.Keyboard_RightShift, (4,14) }, - { LedId.Keyboard_ArrowUp, (4,16) }, - { LedId.Keyboard_Num1, (4,18) }, - { LedId.Keyboard_Num2, (4,19) }, - { LedId.Keyboard_Num3, (4,20) }, - { LedId.Keyboard_NumEnter, (4,21) }, - - { LedId.Keyboard_LeftCtrl, (5,0) }, - { LedId.Keyboard_LeftGui, (5,1) }, - { LedId.Keyboard_LeftAlt, (5,2) }, - { LedId.Keyboard_Space, (5,6) }, - { LedId.Keyboard_RightAlt, (5,10) }, - { LedId.Keyboard_RightGui, (5,11) }, - { LedId.Keyboard_Application, (5,12) }, - { LedId.Keyboard_RightCtrl, (5,14) }, - { LedId.Keyboard_ArrowLeft, (5,15) }, - { LedId.Keyboard_ArrowDown, (5,16) }, - { LedId.Keyboard_ArrowRight, (5,17) }, - { LedId.Keyboard_Num0, (5,18) }, - { LedId.Keyboard_NumPeriodAndDelete, (5,20) } - }; - - /// - /// Contains all the hardware-id mappings for CoolerMaster devices. - /// - public static readonly Dictionary>> Mapping = - new Dictionary>> - { - { "", new Dictionary> - { - { AsusPhysicalKeyboardLayout.TODO, MasterKeysL_US } - } - }, - }; - } -} diff --git a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs index 46a7a21..ce44e12 100644 --- a/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs +++ b/RGB.NET.Devices.Asus/Keyboard/AsusKeyboardRGBDevice.cs @@ -1,4 +1,6 @@ -using AuraServiceLib; +using System.Collections.Generic; +using System.Linq; +using AuraServiceLib; using RGB.NET.Core; namespace RGB.NET.Devices.Asus @@ -23,33 +25,28 @@ namespace RGB.NET.Devices.Asus #endregion #region Methods - private ushort asusCode; + /// protected override void InitializeLayout() { - if (DeviceInfo.Device.Type != 0x00081001) + Dictionary reversedMapping = AsusKeyboardLedMapping.MAPPING.ToDictionary(x => x.Value, x => x.Key); + + if (DeviceInfo.Device.Type != (uint)AsusDeviceType.NB_KB_4ZONE_RGB) { 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)); - } + InitializeLed(reversedMapping[(AsusLedId)key.Code], new Point(pos++ * 19, 0), new Size(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)); + InitializeLed(reversedMapping[AsusLedId.KEY_OEM_102], new Point(pos++ * 19, 0), new Size(19, 19)); + + InitializeLed(reversedMapping[AsusLedId.UNDOCUMENTED_1], new Point(pos * 19, 0), new Size(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)); - } - + InitializeLed(LedId.Keyboard_Custom1 + i, new Point(i * 19, 0), new Size(19, 19)); } string model = DeviceInfo.Model.Replace(" ", string.Empty).ToUpper(); @@ -57,236 +54,14 @@ namespace RGB.NET.Devices.Asus } /// - protected override object CreateLedCustomData(LedId ledId) => asusCode; - - private LedId AsusLedIdMapper(ushort asusKey) + protected override object CreateLedCustomData(LedId ledId) { - 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; - } + if (DeviceInfo.Device.Type == (uint)AsusDeviceType.NB_KB_4ZONE_RGB) + return ledId - LedId.Keyboard_Custom1; + + return AsusKeyboardLedMapping.MAPPING[ledId]; } + #endregion } }