diff --git a/60-openrgb.rules b/60-openrgb.rules index 9deb9342d..0336c7548 100644 --- a/60-openrgb.rules +++ b/60-openrgb.rules @@ -56,19 +56,31 @@ SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18f3", TAG+="uacces SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18a5", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1939", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18af", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18dd", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1845", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1875", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1877", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18cd", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18cf", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18e5", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18e3", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1958", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18f8", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1951", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="190c", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18a0", TAG+="uaccess" + +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="193c", TAG+="uaccess" #ROG Falchion Wired +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="193e", TAG+="uaccess" #ROG Falchion Wireless +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1875", TAG+="uaccess" #ROG Strix Flare +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18cf", TAG+="uaccess" #ROG Strix Flare Pink +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18f8", TAG+="uaccess" #ROG Strix Scope +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1951", TAG+="uaccess" #ROG Strix Scope RX +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="190c", TAG+="uaccess" #ROG Strix Scope TKL +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18a0", TAG+="uaccess" #TUF K7 Gaming + +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18dd", TAG+="uaccess" #ROG Gladius II Core +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1845", TAG+="uaccess" #ROG Gladius II +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1877", TAG+="uaccess" #ROG Gladius II Origin +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18cd", TAG+="uaccess" #ROG Gladius II Origin Pink +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18b1", TAG+="uaccess" #ROG Gladius II Origin COD +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="189e", TAG+="uaccess" #ROG Gladius II Wireless1 +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18a0", TAG+="uaccess" #ROG Gladius II Wireless2 +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18e5", TAG+="uaccess" #ROG Chakram Wireless +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18e3", TAG+="uaccess" #ROG Chakram Wired1 +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1958", TAG+="uaccess" #ROG Chakram Wired2 +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1846", TAG+="uaccess" #ROG Pugio +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1906", TAG+="uaccess" #ROG Pugio II Wired +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1908", TAG+="uaccess" #ROG Pugio II Wireless +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="18e1", TAG+="uaccess" #ROG Strix Impact II +SUBSYSTEMS=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1910", TAG+="uaccess" #TUF M3 & M7 #---------------------------------------------------------------# # ASUS TUF Laptops (faustus) # diff --git a/Controllers/AsusAuraUSBController/AsusAuraMouseController.cpp b/Controllers/AsusAuraUSBController/AsusAuraMouseController.cpp index 219c0edfc..93f3f2dca 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraMouseController.cpp +++ b/Controllers/AsusAuraUSBController/AsusAuraMouseController.cpp @@ -30,8 +30,8 @@ std::string AuraMouseController::GetDeviceLocation() std::string AuraMouseController::GetSerialString() { - wchar_t serial_string[128]; - int ret = hid_get_serial_number_string(dev, serial_string, 128); + wchar_t serial_string[HID_MAX_STR]; + int ret = hid_get_serial_number_string(dev, serial_string, HID_MAX_STR); if(ret != 0) { @@ -44,6 +44,13 @@ std::string AuraMouseController::GetSerialString() return(return_string); } +void AuraMouseController::SaveMode() +{ + unsigned char usb_save_buf[ASUS_AURA_MOUSE_PACKET_SIZE] = { 0x00, 0x50, 0x03 }; + + hid_write(dev, usb_save_buf, ASUS_AURA_MOUSE_PACKET_SIZE); +} + void AuraMouseController::SendUpdate ( unsigned char zone, @@ -53,16 +60,15 @@ void AuraMouseController::SendUpdate unsigned char blu, unsigned char dir, bool random, - unsigned char speed, - bool save + unsigned char speed ) { - unsigned char usb_buf[65]; + unsigned char usb_buf[ASUS_AURA_MOUSE_PACKET_SIZE]; /*-----------------------------------------------------*\ | Zero out buffer | \*-----------------------------------------------------*/ - memset(usb_buf, 0x00, sizeof(usb_buf)); + memset(usb_buf, 0x00, ASUS_AURA_MOUSE_PACKET_SIZE); /*-----------------------------------------------------*\ | Set up message packet | @@ -77,35 +83,24 @@ void AuraMouseController::SendUpdate usb_buf[0x07] = red; usb_buf[0x08] = grn; usb_buf[0x09] = blu; - - if(device_pid == 0x18CD) + if (device_pid == AURA_ROG_GLADIUS_II_ORIGIN_PNK_LTD_PID) { usb_buf[0x0A] = 0; usb_buf[0x0B] = 0; - usb_buf[0x0D] = 0; + usb_buf[0x0C] = 0; usb_buf[0x0D] = dir; usb_buf[0x0E] = random; - usb_buf[0x0F] = (speed == 0) ? 0 : 256 - speed; + usb_buf[0x0F] = speed; } else { usb_buf[0x0A] = dir; usb_buf[0x0B] = random; - usb_buf[0x0C] = (speed == 0) ? 0 : 256 - speed; + usb_buf[0x0C] = speed; } /*-----------------------------------------------------*\ | Send packet | \*-----------------------------------------------------*/ - hid_write(dev, usb_buf, 65); - - if(save) - { - unsigned char usb_save_buf[65]; - memset(usb_save_buf, 0x00, sizeof(usb_save_buf)); - usb_save_buf[0x00] = 0x00; - usb_save_buf[0x01] = 0x50; - usb_save_buf[0x02] = 0x03; - hid_write(dev, usb_save_buf, 65); - } + hid_write(dev, usb_buf, ASUS_AURA_MOUSE_PACKET_SIZE); } diff --git a/Controllers/AsusAuraUSBController/AsusAuraMouseController.h b/Controllers/AsusAuraUSBController/AsusAuraMouseController.h index 5cbfa8b64..ea9168902 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraMouseController.h +++ b/Controllers/AsusAuraUSBController/AsusAuraMouseController.h @@ -8,21 +8,15 @@ \*-----------------------------------------*/ #include "RGBController.h" +#include "AsusAuraMouseDevices.h" #include -#include -#include #include #pragma once -enum -{ - AURA_MOUSE_ZONE_LOGO = 0, - AURA_MOUSE_ZONE_SCROLL = 1, - AURA_MOUSE_ZONE_UNDERGLOW = 2, - AURA_MOUSE_ZONE_ALL = 3, -}; +#define ASUS_AURA_MOUSE_PACKET_SIZE 65 +#define HID_MAX_STR 255 class AuraMouseController { @@ -33,6 +27,7 @@ public: std::string GetDeviceLocation(); std::string GetSerialString(); + void SaveMode(); void SendUpdate ( unsigned char zone, @@ -42,9 +37,8 @@ public: unsigned char blu, unsigned char dir, bool random, - unsigned char speed, - bool save - ); + unsigned char speed + ); uint16_t device_pid; diff --git a/Controllers/AsusAuraUSBController/AsusAuraMouseDevices.h b/Controllers/AsusAuraUSBController/AsusAuraMouseDevices.h new file mode 100644 index 000000000..4dd3e547b --- /dev/null +++ b/Controllers/AsusAuraUSBController/AsusAuraMouseDevices.h @@ -0,0 +1,212 @@ +/*-------------------------------------------------------------------*\ +| AsusAuraMouseDevices.h | +| | +| Asus Aura Mouse definitions and mapping | +| | +| Chris M (Dr_No) 11th July 2021 | +\*-------------------------------------------------------------------*/ + +#include +#include + +#pragma once + +#define AURA_ROG_GLADIUS_II_CORE_PID 0x18DD +#define AURA_ROG_GLADIUS_II_PID 0x1845 +#define AURA_ROG_GLADIUS_II_ORIGIN_PID 0x1877 +#define AURA_ROG_GLADIUS_II_ORIGIN_PNK_LTD_PID 0x18CD +#define AURA_ROG_GLADIUS_II_ORIGIN_COD_PID 0x18B1 +#define AURA_ROG_GLADIUS_II_WIRELESS_1_PID 0x189E +#define AURA_ROG_GLADIUS_II_WIRELESS_2_PID 0x18A0 +#define AURA_ROG_CHAKRAM_WIRELESS_PID 0x18E5 +#define AURA_ROG_CHAKRAM_WIRED_1_PID 0x18E3 +#define AURA_ROG_CHAKRAM_WIRED_2_PID 0x1958 +#define AURA_ROG_PUGIO_PID 0x1846 +#define AURA_ROG_PUGIO_II_WIRED_PID 0x1906 +#define AURA_ROG_PUGIO_II_WIRELESS_PID 0x1908 +#define AURA_ROG_STRIX_IMPACT_II_PID 0x18E1 +#define AURA_TUF_M3_PID 0x1910 +#define AURA_TUF_M5_PID 0x1910 + +enum +{ + AURA_MOUSE_ZONE_LOGO = 0, + AURA_MOUSE_ZONE_SCROLL = 1, + AURA_MOUSE_ZONE_UNDERGLOW = 2, + AURA_MOUSE_ZONE_ALL = 3, +}; + +enum +{ + AURA_MOUSE_MODE_STATIC = 0, + AURA_MOUSE_MODE_BREATHING = 1, + AURA_MOUSE_MODE_SPECTRUM = 2, + AURA_MOUSE_MODE_WAVE = 3, + AURA_MOUSE_MODE_REACTIVE = 4, + AURA_MOUSE_MODE_COMET = 5, + AURA_MOUSE_MODE_BATTERY = 6 +}; + +typedef struct +{ + uint8_t speed_min; + uint8_t speed_max; + std::vector mouse_zones; + std::vector mouse_modes; +} mouse_type; + +/*-----------------------------------------------------------------*\ +| DEVICE MAP | +| | +| This structure maps the OpenRGB modes to the mode values | +| sent to each mouse. As not all modes are present on each | +| mouse the "mode index" is different. Eg. "Reactive" is mode | +| 4 on the Gladius II and mode 3 on the Gladius II wireless | +\*-----------------------------------------------------------------*/ +static std::map aura_mouse_devices = +{ + { + AURA_ROG_GLADIUS_II_CORE_PID, // ROG Gladius II Core + { + 255, //Speed Min - The Asus Mouse protocol defines larger numbers as slow + 1, //Speed Max + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_REACTIVE } + } + }, + { + AURA_ROG_GLADIUS_II_PID, // ROG Gladius II + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET } + } + }, + { + AURA_ROG_GLADIUS_II_ORIGIN_PID, // ROG Gladius II Origin + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET } + } + }, + { + AURA_ROG_GLADIUS_II_ORIGIN_COD_PID, // ROG Gladius II COD + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET } + } + }, + { + AURA_ROG_GLADIUS_II_ORIGIN_PNK_LTD_PID, // ROG Gladius II PNK LTD + { + 255, + 1, + { AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET } + } + }, + { + AURA_ROG_GLADIUS_II_WIRELESS_1_PID, // ROG Gladius II Wireless + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET } + } + }, + { + AURA_ROG_GLADIUS_II_WIRELESS_2_PID, // ROG Gladius II Wireless + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_BATTERY } + } + }, + { + AURA_ROG_CHAKRAM_WIRELESS_PID, // ROG Chakram Wireless + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET, AURA_MOUSE_MODE_BATTERY } + } + }, + { + AURA_ROG_CHAKRAM_WIRED_1_PID, // ROG Chakram Wired 1 + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET, AURA_MOUSE_MODE_BATTERY } + } + }, + { + AURA_ROG_CHAKRAM_WIRED_2_PID, // ROG Chakram Wired 2 + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET, AURA_MOUSE_MODE_BATTERY } + } + }, + { + AURA_ROG_PUGIO_PID, // ROG Pugio + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET, AURA_MOUSE_MODE_BATTERY } + } + }, + { + AURA_ROG_PUGIO_II_WIRED_PID, // ROG Pugio II Wired + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET, AURA_MOUSE_MODE_BATTERY } + } + }, + { + AURA_ROG_PUGIO_II_WIRELESS_PID, // ROG Pugio II Wireless + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_WAVE, AURA_MOUSE_MODE_REACTIVE, AURA_MOUSE_MODE_COMET, AURA_MOUSE_MODE_BATTERY } + } + }, + { + AURA_ROG_STRIX_IMPACT_II_PID, // ROG Strix Impact II + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO, AURA_MOUSE_ZONE_SCROLL, AURA_MOUSE_ZONE_UNDERGLOW }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_REACTIVE } + } + }, + { + AURA_TUF_M3_PID, // TUF M3 + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_REACTIVE } + } + }, + { + AURA_TUF_M5_PID, // TUF M5 + { + 255, + 1, + { AURA_MOUSE_ZONE_LOGO }, + { AURA_MOUSE_MODE_STATIC, AURA_MOUSE_MODE_BREATHING, AURA_MOUSE_MODE_SPECTRUM, AURA_MOUSE_MODE_REACTIVE } + } + }, +}; diff --git a/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp b/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp index 3bf22f3f6..fe0cc8c43 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp +++ b/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp @@ -16,7 +16,10 @@ #include "dependencies/dmiinfo.h" #define AURA_USB_VID 0x0B05 -#define AURA_TERMINAL_PID 0x1889 + +/*-----------------------------------------------------------------*\ +| MOTHERBOARDS | +\*-----------------------------------------------------------------*/ #define AURA_ADDRESSABLE_1_PID 0x1867 #define AURA_ADDRESSABLE_2_PID 0x1872 #define AURA_ADDRESSABLE_3_PID 0x18A3 @@ -24,32 +27,30 @@ #define AURA_MOTHERBOARD_1_PID 0x18F3 #define AURA_MOTHERBOARD_2_PID 0x1939 #define AURA_MOTHERBOARD_3_PID 0x19AF -#define AURA_ROG_GLADIUS_II_CORE_PID 0x18DD -#define AURA_ROG_GLADIUS_II_PID 0x1845 -#define AURA_ROG_GLADIUS_II_ORIGIN_PID 0x1877 -#define AURA_ROG_GLADIUS_II_ORIGIN_PNK_LTD_PID 0x18CD -#define AURA_ROG_GLADIUS_II_WIRELESS_PID 0x18A0 -#define AURA_ROG_PUGIO_PID 0x1846 -#define AURA_ROG_GLADIUS_II_ORIGIN_COD_PID 0x18B1 -#define AURA_ROG_GLADIUS_II_WIRELESS_1_PID 0x189E -#define AURA_ROG_GLADIUS_II_WIRELESS_2_PID 0x18A0 -#define AURA_ROG_PUGIO_II_WIRED_PID 0x1906 -#define AURA_ROG_PUGIO_II_WIRELESS_PID 0x1908 -#define AURA_TUF_M3_PID 0x1910 -#define AURA_TUF_M5_PID 0x1910 -#define AURA_ROG_STRIX_IMPACT_II_PID 0x18E1 + +/*-----------------------------------------------------------------*\ +| KEYBOARDS | +\*-----------------------------------------------------------------*/ +#define AURA_ROG_FALCHION_WIRED_PID 0x193C +#define AURA_ROG_FALCHION_WIRELESS_PID 0x193E #define AURA_ROG_STRIX_FLARE_PID 0x1875 #define AURA_ROG_STRIX_FLARE_PNK_LTD_PID 0x18CF #define AURA_ROG_STRIX_SCOPE_PID 0x18F8 #define AURA_ROG_STRIX_SCOPE_RX_PID 0x1951 #define AURA_ROG_STRIX_SCOPE_TKL_PID 0x190C -#define AURA_ROG_CHAKRAM_WIRELESS_PID 0x18E5 -#define AURA_ROG_CHAKRAM_WIRED_1_PID 0x18E3 -#define AURA_ROG_CHAKRAM_WIRED_2_PID 0x1958 +#define AURA_TUF_K7_GAMING_PID 0x18AA + +/*-----------------------------------------------------------------*\ +| MICE - defined in AsusAuraMouseDevices.h | +\*-----------------------------------------------------------------*/ + + +/*-----------------------------------------------------------------*\ +| OTHER | +\*-----------------------------------------------------------------*/ +#define AURA_TERMINAL_PID 0x1889 #define AURA_ROG_THRONE_QI_PID 0x18C5 -#define AURA_TUF_K7_GAMING_PID 0x18AA -#define AURA_ROG_FALCHION_WIRED_PID 0x193C -#define AURA_ROG_FALCHION_WIRELESS_PID 0x193E + AuraKeyboardMappingLayoutType GetKeyboardMappingLayoutType(int pid) { @@ -173,7 +174,9 @@ void DetectAsusAuraTUFUSBKeyboard(hid_device_info* info, const std::string& name } } -REGISTER_HID_DETECTOR ("ASUS ROG AURA Terminal", DetectAsusAuraUSBTerminal, AURA_USB_VID, AURA_TERMINAL_PID); +/*-----------------------------------------------------------------*\ +| MOTHERBOARDS | +\*-----------------------------------------------------------------*/ REGISTER_HID_DETECTOR ("ASUS Aura Addressable", DetectAsusAuraUSBAddressable, AURA_USB_VID, AURA_ADDRESSABLE_1_PID); REGISTER_HID_DETECTOR ("ASUS Aura Addressable", DetectAsusAuraUSBAddressable, AURA_USB_VID, AURA_ADDRESSABLE_2_PID); REGISTER_HID_DETECTOR ("ASUS Aura Addressable", DetectAsusAuraUSBAddressable, AURA_USB_VID, AURA_ADDRESSABLE_3_PID); @@ -181,29 +184,41 @@ REGISTER_HID_DETECTOR ("ASUS Aura Addressable", DetectAsusAuraUS REGISTER_HID_DETECTOR ("ASUS Aura Motherboard", DetectAsusAuraUSBMotherboards, AURA_USB_VID, AURA_MOTHERBOARD_1_PID); REGISTER_HID_DETECTOR ("ASUS Aura Motherboard", DetectAsusAuraUSBMotherboards, AURA_USB_VID, AURA_MOTHERBOARD_2_PID); REGISTER_HID_DETECTOR ("ASUS Aura Motherboard", DetectAsusAuraUSBMotherboards, AURA_USB_VID, AURA_MOTHERBOARD_3_PID); -REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Core", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_CORE_PID, 0, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_PID, 2, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Origin", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_ORIGIN_PID, 2, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Origin PNK LTD", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_ORIGIN_PNK_LTD_PID, 2, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Wireless", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_WIRELESS_PID, 2, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Origin COD", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_ORIGIN_COD_PID, 1, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Wireless", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_WIRELESS_1_PID, 1, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Wireless", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_WIRELESS_2_PID, 1, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Chakram (Wireless)", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_CHAKRAM_WIRELESS_PID, 0, 0xFF01); -REGISTER_HID_DETECTOR_IP("Asus ROG Chakram (Wired)", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_CHAKRAM_WIRED_1_PID, 0, 0xFF01); -REGISTER_HID_DETECTOR_IP("Asus ROG Chakram (Wired)", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_CHAKRAM_WIRED_2_PID, 0, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Pugio", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_PUGIO_PID, 2, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Pugio II (Wired)", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_PUGIO_II_WIRED_PID, 1, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS ROG Pugio II (Wireless)", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_PUGIO_II_WIRELESS_PID, 1, 0xFF13); -REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Impact II", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_STRIX_IMPACT_II_PID, 1, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming M3", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_TUF_M3_PID, 1, 0xFF01); -REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming M5", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_TUF_M5_PID, 1, 0xFF01); + +/*-----------------------------------------------------------------*\ +| KEYBOARDS | +\*-----------------------------------------------------------------*/ +REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wired)", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_FALCHION_WIRED_PID, 1, 0xFF00); +REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wireless)", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_FALCHION_WIRELESS_PID, 1, 0xFF00); REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_FLARE_PID, 1, 0xFF00); REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare PNK LTD", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_FLARE_PNK_LTD_PID, 1, 0xFF00); REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_PID, 1, 0xFF00); REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope RX", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_RX_PID, 1, 0xFF00); REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope TKL", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_TKL_PID, 1, 0xFF00); -REGISTER_HID_DETECTOR_I ("ASUS ROG Throne QI", DetectAsusAuraUSBHeadsetStand, AURA_USB_VID, AURA_ROG_THRONE_QI_PID, 0); REGISTER_HID_DETECTOR_I ("ASUS TUF Gaming K7", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K7_GAMING_PID, 1); -REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wired)", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_FALCHION_WIRED_PID, 1, 0xFF00); -REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wireless)", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_FALCHION_WIRELESS_PID, 1, 0xFF00); + +/*-----------------------------------------------------------------*\ +| MICE | +\*-----------------------------------------------------------------*/ +REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Core", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_CORE_PID, 0, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_PID, 2, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Origin", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_ORIGIN_PID, 2, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Origin PNK LTD", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_ORIGIN_PNK_LTD_PID, 2, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Origin COD", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_ORIGIN_COD_PID, 1, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Wireless", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_WIRELESS_1_PID, 1, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Gladius II Wireless", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_GLADIUS_II_WIRELESS_2_PID, 2, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Chakram (Wireless)", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_CHAKRAM_WIRELESS_PID, 0, 0xFF01); +REGISTER_HID_DETECTOR_IP("Asus ROG Chakram (Wired)", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_CHAKRAM_WIRED_1_PID, 0, 0xFF01); +REGISTER_HID_DETECTOR_IP("Asus ROG Chakram (Wired)", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_CHAKRAM_WIRED_2_PID, 0, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Pugio", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_PUGIO_PID, 2, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Pugio II", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_PUGIO_II_WIRED_PID, 1, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS ROG Pugio II", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_PUGIO_II_WIRELESS_PID, 1, 0xFF13); +REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Impact II", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_ROG_STRIX_IMPACT_II_PID, 1, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming M3", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_TUF_M3_PID, 1, 0xFF01); +REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming M5", DetectAsusAuraUSBMice, AURA_USB_VID, AURA_TUF_M5_PID, 1, 0xFF01); + +/*-----------------------------------------------------------------*\ +| OTHER | +\*-----------------------------------------------------------------*/ +REGISTER_HID_DETECTOR ("ASUS ROG AURA Terminal", DetectAsusAuraUSBTerminal, AURA_USB_VID, AURA_TERMINAL_PID); +REGISTER_HID_DETECTOR_I ("ASUS ROG Throne QI", DetectAsusAuraUSBHeadsetStand, AURA_USB_VID, AURA_ROG_THRONE_QI_PID, 0); diff --git a/Controllers/AsusAuraUSBController/RGBController_AsusAuraMouse.cpp b/Controllers/AsusAuraUSBController/RGBController_AsusAuraMouse.cpp index 8f53c8c3c..1d7c7e975 100644 --- a/Controllers/AsusAuraUSBController/RGBController_AsusAuraMouse.cpp +++ b/Controllers/AsusAuraUSBController/RGBController_AsusAuraMouse.cpp @@ -8,125 +8,116 @@ \*-----------------------------------------*/ #include "RGBController_AsusAuraMouse.h" -#include -typedef struct +static std::string aura_mouse_zone_names[3] { - std::vector zone_names; - std::vector mode_names; -} mouse_type; - -std::map DEVICES = -{ - { 0x18DD, {{ "Logo", "Scroll Wheel" }, { "Static", "Breathing", "Color Cycle", "Reactive" }}}, // ROG Gladius II Core - { 0x1845, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet" }}}, // ROG Gladius II - { 0x1877, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet" }}}, // ROG Gladius II Origin - { 0x18B1, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet" }}}, // ROG Gladius II COD - { 0x18CD, {{ "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet" }}}, // ROG Gladius II PNK LTD - { 0x189E, {{ "Logo", "Scroll Wheel" }, { "Static", "Breathing", "Color Cycle", "", "Reactive", "", "Battery Mode" }}}, // ROG Gladius II Wireless - { 0x18A0, {{ "Logo", "Scroll Wheel" }, { "Static", "Breathing", "Color Cycle", "", "Reactive", "", "Battery Mode" }}}, // ROG Gladius II Wireless - { 0x18E5, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet", "Battery Mode" }}}, // ROG Chakram Wireless - { 0x18E3, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet", "Battery Mode" }}}, // ROG Chakram Wired 1 - { 0x1958, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet", "Battery Mode" }}}, // ROG Chakram Wired 2 - { 0x1846, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet" }}}, // ROG Pugio - { 0x1906, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet", "Battery Mode" }}}, // ROG Pugio II Wired - { 0x1908, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Wave", "Reactive", "Comet", "Battery Mode" }}}, // ROG Pugio II Wireless - { 0x18E1, {{ "Logo", "Scroll Wheel", "Underglow" }, { "Static", "Breathing", "Color Cycle", "Reactive" }}}, // ROG Strix Impact II - { 0x1910, {{ "Logo" }, { "Static", "Breathing", "Color Cycle", "Reactive" }}}, // TUF M3 - { 0x1898, {{ "Logo" }, { "Static", "Breathing", "Color Cycle", "Reactive" }}}, // TUF M5 - + "Logo", + "Scroll Wheel", + "Underglow" }; RGBController_AuraMouse::RGBController_AuraMouse(AuraMouseController* aura_ptr) { - aura = aura_ptr; + aura = aura_ptr; - name = "ASUS Aura Mouse"; - vendor = "ASUS"; - type = DEVICE_TYPE_MOUSE; - description = "ASUS Aura Mouse Device"; - location = aura->GetDeviceLocation(); - serial = aura->GetSerialString(); + name = "ASUS Aura Mouse"; + vendor = "ASUS"; + type = DEVICE_TYPE_MOUSE; + description = "ASUS Aura Mouse Device"; + location = aura->GetDeviceLocation(); + serial = aura->GetSerialString(); - uint16_t pid = aura->device_pid; + uint16_t pid = aura->device_pid; + std::vector mm = aura_mouse_devices[pid].mouse_modes; - for(unsigned int i = 0; i < DEVICES[pid].mode_names.size(); i++) + for(std::vector::iterator it = mm.begin(); it != mm.end(); it++) { - if(DEVICES[pid].mode_names[i].size() == 0) + switch(*it) { - continue; - } + case AURA_MOUSE_MODE_STATIC: + { + mode Direct; + Direct.name = "Direct"; + Direct.value = AURA_MOUSE_MODE_STATIC; + Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Direct.color_mode = MODE_COLORS_PER_LED; + modes.push_back(Direct); + } + break; - if(DEVICES[pid].mode_names[i] == "Static") - { - mode Direct; - Direct.name = "Direct"; - Direct.value = i; - Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; - Direct.color_mode = MODE_COLORS_PER_LED; - modes.push_back(Direct); - } - else if(DEVICES[pid].mode_names[i] == "Breathing") - { - mode Breathing; - Breathing.name = "Breathing"; - Breathing.value = i; - Breathing.flags = MODE_FLAG_HAS_PER_LED_COLOR; - Breathing.color_mode = MODE_COLORS_PER_LED; - modes.push_back(Breathing); - } - else if(DEVICES[pid].mode_names[i] == "Color Cycle") - { - mode ColorCycle; - ColorCycle.name = "Color Cycle"; - ColorCycle.value = i; - ColorCycle.flags = 0; - ColorCycle.color_mode = MODE_COLORS_NONE; - modes.push_back(ColorCycle); - } - else if(DEVICES[pid].mode_names[i] == "Wave") - { - mode Wave; - Wave.name = "Wave"; - Wave.value = i; - Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR; - Wave.direction = 0; - Wave.speed_min = 1; - Wave.speed_max = 255; - Wave.speed = 128; - Wave.color_mode = MODE_COLORS_NONE; - modes.push_back(Wave); - } - else if(DEVICES[pid].mode_names[i] == "Reactive") - { - mode Reactive; - Reactive.name = "Reactive"; - Reactive.value = i; - Reactive.flags = MODE_FLAG_HAS_PER_LED_COLOR; - Reactive.color_mode = MODE_COLORS_PER_LED; - modes.push_back(Reactive); - } - else if(DEVICES[pid].mode_names[i] == "Comet") - { - mode Comet; - Comet.name = "Comet"; - Comet.value = i; - Comet.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_DIRECTION_LR; - Comet.color_mode = MODE_COLORS_MODE_SPECIFIC; - Comet.direction = 0; - Comet.colors_min = 1; - Comet.colors_max = 1; - Comet.colors.resize(1); - modes.push_back(Comet); - } - else if(DEVICES[pid].mode_names[i] == "Battery Mode") - { - mode BatteryMode; - BatteryMode.name = "Battery Mode"; - BatteryMode.value = i; - BatteryMode.flags = 0; - BatteryMode.color_mode = MODE_COLORS_NONE; - modes.push_back(BatteryMode); + case AURA_MOUSE_MODE_BREATHING: + { + mode Breathing; + Breathing.name = "Breathing"; + Breathing.value = AURA_MOUSE_MODE_BREATHING; + Breathing.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Breathing.color_mode = MODE_COLORS_PER_LED; + modes.push_back(Breathing); + } + break; + + case AURA_MOUSE_MODE_SPECTRUM: + { + mode ColorCycle; + ColorCycle.name = "Spectrum Cycle"; + ColorCycle.value = AURA_MOUSE_MODE_SPECTRUM; + ColorCycle.flags = 0; + ColorCycle.color_mode = MODE_COLORS_NONE; + modes.push_back(ColorCycle); + } + break; + + case AURA_MOUSE_MODE_WAVE: + { + mode Wave; + Wave.name = "Wave"; + Wave.value = AURA_MOUSE_MODE_WAVE; + Wave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR; + Wave.direction = 0; + Wave.speed_min = aura_mouse_devices[pid].speed_min; + Wave.speed_max = aura_mouse_devices[pid].speed_max; + Wave.speed = 128; + Wave.color_mode = MODE_COLORS_NONE; + modes.push_back(Wave); + } + break; + + case AURA_MOUSE_MODE_REACTIVE: + { + mode Reactive; + Reactive.name = "Reactive"; + Reactive.value = AURA_MOUSE_MODE_REACTIVE; + Reactive.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Reactive.color_mode = MODE_COLORS_PER_LED; + modes.push_back(Reactive); + } + break; + + case AURA_MOUSE_MODE_COMET: + { + mode Comet; + Comet.name = "Comet"; + Comet.value = AURA_MOUSE_MODE_COMET; + Comet.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_DIRECTION_LR; + Comet.color_mode = MODE_COLORS_MODE_SPECIFIC; + Comet.direction = 0; + Comet.colors_min = 1; + Comet.colors_max = 1; + Comet.colors.resize(1); + modes.push_back(Comet); + } + break; + + case AURA_MOUSE_MODE_BATTERY: + { + mode BatteryMode; + BatteryMode.name = "Battery"; + BatteryMode.value = AURA_MOUSE_MODE_BATTERY; + BatteryMode.flags = 0; + BatteryMode.color_mode = MODE_COLORS_NONE; + modes.push_back(BatteryMode); + } + break; } } @@ -140,24 +131,26 @@ RGBController_AuraMouse::~RGBController_AuraMouse() void RGBController_AuraMouse::SetupZones() { - uint16_t pid = aura->device_pid; - for(unsigned long long i = 0; i < DEVICES[pid].zone_names.size(); i++) - { + uint16_t pid = aura->device_pid; + + for(std::vector::iterator zone_it = aura_mouse_devices[pid].mouse_zones.begin(); zone_it != aura_mouse_devices[pid].mouse_zones.end(); zone_it++) + { zone mouse_zone; - mouse_zone.name = DEVICES[pid].zone_names[i]; - mouse_zone.type = ZONE_TYPE_SINGLE; - mouse_zone.leds_min = 1; - mouse_zone.leds_max = 1; - mouse_zone.leds_count = 1; - mouse_zone.matrix_map = NULL; + mouse_zone.name = aura_mouse_zone_names[*zone_it]; + mouse_zone.type = ZONE_TYPE_SINGLE; + mouse_zone.leds_min = 1; + mouse_zone.leds_max = 1; + mouse_zone.leds_count = 1; + mouse_zone.matrix_map = NULL; zones.push_back(mouse_zone); led mouse_led; - mouse_led.name = DEVICES[pid].zone_names[i]; + mouse_led.name = mouse_zone.name + " LED"; + mouse_led.value = *zone_it; leds.push_back(mouse_led); } @@ -172,7 +165,10 @@ void RGBController_AuraMouse::ResizeZone(int /*zone*/, int /*new_size*/) void RGBController_AuraMouse::DeviceUpdateLEDs() { - DeviceUpdateMode(); + for(std::vector::iterator led_it = leds.begin(); led_it != leds.end(); led_it++) + { + UpdateSingleLED(led_it->value); + } } void RGBController_AuraMouse::UpdateZoneLEDs(int zone) @@ -182,41 +178,11 @@ void RGBController_AuraMouse::UpdateZoneLEDs(int zone) void RGBController_AuraMouse::UpdateSingleLED(int led) { - unsigned char red = 0; - unsigned char grn = 0; - unsigned char blu = 0; + uint8_t red = RGBGetRValue(colors[led]); + uint8_t grn = RGBGetGValue(colors[led]); + uint8_t blu = RGBGetBValue(colors[led]); - if(modes[active_mode].color_mode == MODE_COLORS_PER_LED) - { - if(leds[led].name == "Logo") - { - red = RGBGetRValue(colors[led]); - grn = RGBGetGValue(colors[led]); - blu = RGBGetBValue(colors[led]); - - aura->SendUpdate(AURA_MOUSE_ZONE_LOGO, modes[active_mode].value, red, grn, blu, 0, false, 0, false); - } - else if(leds[led].name == "Scroll Wheel") - { - red = RGBGetRValue(colors[led]); - grn = RGBGetGValue(colors[led]); - blu = RGBGetBValue(colors[led]); - - aura->SendUpdate(AURA_MOUSE_ZONE_SCROLL, modes[active_mode]. value, red, grn, blu, 0, false, 0, false); - } - else - { - red = RGBGetRValue(colors[led]); - grn = RGBGetGValue(colors[led]); - blu = RGBGetBValue(colors[led]); - - aura->SendUpdate(AURA_MOUSE_ZONE_UNDERGLOW, modes[active_mode].value, red, grn, blu, 0, false, 0, false); - } - } - else - { - aura->SendUpdate(AURA_MOUSE_ZONE_ALL, modes[active_mode].value, red, grn, blu, 0, false, 0, false); - } + aura->SendUpdate(leds[led].value, active_mode, red, grn, blu, 0, false, 0); } void RGBController_AuraMouse::SetCustomMode() @@ -226,39 +192,24 @@ void RGBController_AuraMouse::SetCustomMode() void RGBController_AuraMouse::DeviceUpdateMode() { - unsigned char red = 0; - unsigned char grn = 0; - unsigned char blu = 0; - if(modes[active_mode].color_mode == MODE_COLORS_PER_LED) { - bool save = false; - red = RGBGetRValue(colors[0]); - grn = RGBGetGValue(colors[0]); - blu = RGBGetBValue(colors[0]); - - aura->SendUpdate(AURA_MOUSE_ZONE_LOGO, modes[active_mode].value, red, grn, blu, 0, false, 0, save); - - red = RGBGetRValue(colors[1]); - grn = RGBGetGValue(colors[1]); - blu = RGBGetBValue(colors[1]); - - aura->SendUpdate(AURA_MOUSE_ZONE_SCROLL, modes[active_mode].value, red, grn, blu, 0, false, 0, save); - - red = RGBGetRValue(colors[2]); - grn = RGBGetGValue(colors[2]); - blu = RGBGetBValue(colors[2]); - - aura->SendUpdate(AURA_MOUSE_ZONE_UNDERGLOW, modes[active_mode].value, red, grn, blu, 0, false, 0, save); + DeviceUpdateLEDs(); } else { - if(modes[active_mode].value == 5) + unsigned char red = 0; + unsigned char grn = 0; + unsigned char blu = 0; + + if (modes[active_mode].color_mode == MODE_COLORS_MODE_SPECIFIC) { red = RGBGetRValue(modes[active_mode].colors[0]); grn = RGBGetGValue(modes[active_mode].colors[0]); blu = RGBGetBValue(modes[active_mode].colors[0]); } - aura->SendUpdate(AURA_MOUSE_ZONE_ALL, modes[active_mode].value, red, grn, blu, modes[active_mode].direction, modes[active_mode].color_mode == MODE_COLORS_RANDOM, modes[active_mode].speed, true); + + aura->SendUpdate(AURA_MOUSE_ZONE_ALL, active_mode, red, grn, blu, modes[active_mode].direction, modes[active_mode].color_mode == MODE_COLORS_RANDOM, modes[active_mode].speed); + aura->SaveMode(); } } diff --git a/OpenRGB.pro b/OpenRGB.pro index 5831ec3b4..e48d44ec7 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -205,6 +205,7 @@ HEADERS += Controllers/AsusAuraUSBController/AsusAuraKeyboardController.h \ Controllers/AsusAuraUSBController/AsusAuraMainboardController.h \ Controllers/AsusAuraUSBController/AsusAuraMouseController.h \ + Controllers/AsusAuraUSBController/AsusAuraMouseDevices.h \ Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.h \ Controllers/AsusAuraUSBController/RGBController_AsusAuraHeadsetStand.h \ Controllers/AsusAuraUSBController/RGBController_AsusAuraKeyboard.h \