add support for Asus ROG Strix Scope NX Wireless Deluxe to resolve #3777

This commit is contained in:
Mola19 2023-12-16 20:57:42 +01:00 committed by Adam Honse
parent a489cd5458
commit de2b60b0bd
4 changed files with 222 additions and 48 deletions

View file

@ -97,9 +97,13 @@ std::string AuraTUFKeyboardController::GetVersion()
{
case AURA_TUF_K3_GAMING_PID:
case AURA_ROG_STRIX_FLARE_II_ANIMATE_PID:
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID:
case AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID:
snprintf(version, 9, "%02X.%02X.%02X", usb_buf_out[6], usb_buf_out[5], usb_buf_out[4]);
break;
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID:
snprintf(version, 9, "%02X.%02X.%02X", usb_buf_out[13], usb_buf_out[12], usb_buf_out[11]);
break;
default:
snprintf(version, 9, "%02X.%02X.%02X", usb_buf_out[5], usb_buf_out[6], usb_buf_out[7]);
}
@ -343,6 +347,132 @@ void AuraTUFKeyboardController::UpdateK1Wave
AwaitResponse(20);
}
void AuraTUFKeyboardController::UpdateScopeIIRainbowRipple
(
unsigned char mode,
std::vector<RGBColor> colors,
unsigned char direction,
unsigned char color_mode,
unsigned char speed,
unsigned char brightness
)
{
unsigned char usb_buf[65];
memset(usb_buf, 0x00, sizeof(usb_buf));
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x51;
usb_buf[0x02] = 0x2C;
usb_buf[0x03] = mode;
usb_buf[0x04] = 0x02;
usb_buf[0x05] = speed;
usb_buf[0x06] = brightness;
usb_buf[0x07] = color_mode;
usb_buf[0x08] = direction;
usb_buf[0x09] = 0x02;
usb_buf[0x0A] = colors.size();
for(unsigned int i = 0; i < 2; i ++)
{
if (i >= colors.size()) continue;
usb_buf[11 + i * 4] = 100/(double)colors.size()*(i+1);
usb_buf[12 + i * 4] = RGBGetRValue(colors[i]);
usb_buf[13 + i * 4] = RGBGetGValue(colors[i]);
usb_buf[14 + i * 4] = RGBGetBValue(colors[i]);
}
ClearResponses();
hid_write(dev, usb_buf, 65);
AwaitResponse(20);
memset(usb_buf + 4, 0x00, sizeof(usb_buf) - 4);
usb_buf[0x04] = 0x01;
for(unsigned int i = 0; i < 4; i ++)
{
if (i + 2 >= colors.size()) continue;
usb_buf[5 + i * 4] = 100/(double)colors.size()*(i+1+2);
usb_buf[6 + i * 4] = RGBGetRValue(colors[i+2]);
usb_buf[7 + i * 4] = RGBGetGValue(colors[i+2]);
usb_buf[8 + i * 4] = RGBGetBValue(colors[i+2]);
}
ClearResponses();
hid_write(dev, usb_buf, 65);
AwaitResponse(20);
memset(usb_buf + 4, 0x00, sizeof(usb_buf) - 4);
usb_buf[0x04] = 0x00;
for(unsigned int i = 0; i < 1; i ++)
{
if (i + 6 >= colors.size()) continue;
usb_buf[5 + i * 4] = 100/(double)colors.size()*(i+1+6);
usb_buf[6 + i * 4] = RGBGetRValue(colors[i+6]);
usb_buf[7 + i * 4] = RGBGetGValue(colors[i+6]);
usb_buf[8 + i * 4] = RGBGetBValue(colors[i+6]);
}
ClearResponses();
hid_write(dev, usb_buf, 65);
AwaitResponse(20);
}
void AuraTUFKeyboardController::UpdateScopeIIQuicksand
(
std::vector<RGBColor> colors,
unsigned char direction,
unsigned char color_mode,
unsigned char speed,
unsigned char brightness
)
{
unsigned char usb_buf[65];
memset(usb_buf, 0x00, sizeof(usb_buf));
usb_buf[0x00] = 0x00;
usb_buf[0x01] = 0x51;
usb_buf[0x02] = 0x2C;
usb_buf[0x03] = 0x07;
usb_buf[0x04] = 0x01;
usb_buf[0x05] = speed;
usb_buf[0x06] = brightness;
usb_buf[0x07] = color_mode;
usb_buf[0x08] = direction;
usb_buf[0x09] = 0x02;
for(unsigned int i = 0; i < 3; i ++)
{
usb_buf[10 + i * 3] = RGBGetRValue(colors[i]);
usb_buf[11 + i * 3] = RGBGetGValue(colors[i]);
usb_buf[12 + i * 3] = RGBGetBValue(colors[i]);
}
ClearResponses();
hid_write(dev, usb_buf, 65);
AwaitResponse(20);
memset(usb_buf + 4, 0x00, sizeof(usb_buf) - 4);
usb_buf[0x04] = 0x00;
for(unsigned int i = 0; i < 3; i ++)
{
usb_buf[5 + i * 3] = RGBGetRValue(colors[i+3]);
usb_buf[6 + i * 3] = RGBGetGValue(colors[i+3]);
usb_buf[7 + i * 3] = RGBGetBValue(colors[i+3]);
}
ClearResponses();
hid_write(dev, usb_buf, 65);
AwaitResponse(20);
}
void AuraTUFKeyboardController::UpdateDevice
(
unsigned char mode,
@ -357,6 +487,20 @@ void AuraTUFKeyboardController::UpdateDevice
{
return UpdateK1Wave(colors, direction, speed, brightness);
}
if(device_pid == AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID
|| device_pid == AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID
|| device_pid == AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID)
{
if(mode == AURA_KEYBOARD_MODE_WAVE || mode == AURA_KEYBOARD_MODE_RIPPLE)
{
return UpdateScopeIIRainbowRipple(mode, colors, direction, color_mode, speed, brightness);
}
else if (mode == AURA_KEYBOARD_MODE_QUICKSAND)
{
return UpdateScopeIIQuicksand(colors, direction, color_mode, speed, brightness);
}
}
unsigned char usb_buf[65];
memset(usb_buf, 0x00, sizeof(usb_buf));

View file

@ -33,20 +33,22 @@ enum
enum
{
AURA_ROG_STRIX_FLARE_PID = 0x1875,
AURA_ROG_STRIX_FLARE_PNK_LTD_PID = 0x18CF,
AURA_ROG_STRIX_FLARE_COD_BO4_PID = 0x18AF,
AURA_ROG_FALCHION_WIRED_PID = 0x193C,
AURA_ROG_FALCHION_WIRELESS_PID = 0x193E,
AURA_ROG_STRIX_SCOPE_PID = 0x18F8,
AURA_ROG_STRIX_SCOPE_RX_PID = 0x1951,
AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID = 0x1AAE,
AURA_ROG_STRIX_FLARE_II_ANIMATE_PID = 0x19FC,
AURA_TUF_K1_GAMING_PID = 0x1945,
AURA_TUF_K3_GAMING_PID = 0x194B,
AURA_TUF_K5_GAMING_PID = 0x1899,
AURA_TUF_K7_GAMING_PID = 0x18AA,
AURA_ROG_CLAYMORE_PID = 0x184D,
AURA_ROG_CLAYMORE_PID = 0x184D,
AURA_ROG_FALCHION_WIRED_PID = 0x193C,
AURA_ROG_FALCHION_WIRELESS_PID = 0x193E,
AURA_ROG_STRIX_FLARE_PID = 0x1875,
AURA_ROG_STRIX_FLARE_PNK_LTD_PID = 0x18CF,
AURA_ROG_STRIX_FLARE_COD_BO4_PID = 0x18AF,
AURA_ROG_STRIX_FLARE_II_ANIMATE_PID = 0x19FC,
AURA_ROG_STRIX_SCOPE_PID = 0x18F8,
AURA_ROG_STRIX_SCOPE_RX_PID = 0x1951,
AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID = 0x19F6,
AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID = 0x19F8,
AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID = 0x1AAE,
AURA_TUF_K1_GAMING_PID = 0x1945,
AURA_TUF_K3_GAMING_PID = 0x194B,
AURA_TUF_K5_GAMING_PID = 0x1899,
AURA_TUF_K7_GAMING_PID = 0x18AA,
};
struct led_color
@ -90,6 +92,26 @@ public:
unsigned char brightness
);
void UpdateScopeIIRainbowRipple
(
unsigned char mode,
std::vector<RGBColor> colors,
unsigned char direction,
unsigned char color_mode,
unsigned char speed,
unsigned char brightness
);
void UpdateScopeIIQuicksand
(
std::vector<RGBColor> colors,
unsigned char direction,
unsigned char color_mode,
unsigned char speed,
unsigned char brightness
);
void UpdateDevice
(
unsigned char mode,

View file

@ -44,23 +44,25 @@
/*-----------------------------------------------------------------*\
| 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_FLARE_COD_BO4_PID 0x18AF
#define AURA_ROG_STRIX_FLARE_II_ANIMATE_PID 0x19FC
#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_STRIX_SCOPE_RX_TKL_DELUXE_PID 0x1A05
#define AURA_ROG_STRIX_SCOPE_TKL_PNK_LTD_PID 0x1954
#define AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID 0x1AAE
#define AURA_ROG_CLAYMORE_PID 0x184D
#define AURA_TUF_K1_GAMING_PID 0x1945
#define AURA_TUF_K3_GAMING_PID 0x194B
#define AURA_TUF_K5_GAMING_PID 0x1899
#define AURA_TUF_K7_GAMING_PID 0x18AA
#define AURA_ROG_CLAYMORE_PID 0x184D
#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_FLARE_COD_BO4_PID 0x18AF
#define AURA_ROG_STRIX_FLARE_II_ANIMATE_PID 0x19FC
#define AURA_ROG_STRIX_SCOPE_PID 0x18F8
#define AURA_ROG_STRIX_SCOPE_TKL_PID 0x190C
#define AURA_ROG_STRIX_SCOPE_TKL_PNK_LTD_PID 0x1954
#define AURA_ROG_STRIX_SCOPE_RX_PID 0x1951
#define AURA_ROG_STRIX_SCOPE_RX_TKL_DELUXE_PID 0x1A05
#define AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID 0x19F6
#define AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID 0x19F8
#define AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID 0x1AAE
#define AURA_TUF_K1_GAMING_PID 0x1945
#define AURA_TUF_K3_GAMING_PID 0x194B
#define AURA_TUF_K5_GAMING_PID 0x1899
#define AURA_TUF_K7_GAMING_PID 0x18AA
/*-----------------------------------------------------------------*\
| MICE - defined in AsusAuraMouseDevices.h |
@ -330,23 +332,25 @@ REGISTER_HID_DETECTOR ("ASUS Aura Motherboard", DetectAs
/*-----------------------------------------------------------------*\
| KEYBOARDS |
\*-----------------------------------------------------------------*/
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope TKL", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_TKL_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope RX TKL Wireless Deluxe", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_RX_TKL_DELUXE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope TKL PNK LTD", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_TKL_PNK_LTD_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Claymore", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_CLAYMORE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_FLARE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare PNK LTD", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_FLARE_PNK_LTD_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare CoD Black Ops 4 Edition",DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_FLARE_COD_BO4_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wired)", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_FALCHION_WIRED_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wireless)", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_FALCHION_WIRELESS_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare II Animate", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_FLARE_II_ANIMATE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K1", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K1_GAMING_PID, 2, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K3", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K3_GAMING_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K5", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K5_GAMING_PID, 2, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope RX", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_RX_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K7", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K7_GAMING_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope II 96 Wireless USB", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_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_IP("ASUS ROG Strix Scope RX TKL Wireless Deluxe", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_RX_TKL_DELUXE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope TKL PNK LTD", DetectAsusAuraUSBKeyboards, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_TKL_PNK_LTD_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Claymore", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_CLAYMORE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_FLARE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare PNK LTD", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_FLARE_PNK_LTD_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare CoD Black Ops 4 Edition", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_FLARE_COD_BO4_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wired)", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_FALCHION_WIRED_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wireless)", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_FALCHION_WIRELESS_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Flare II Animate", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_FLARE_II_ANIMATE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope RX", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_RX_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope NX Wireless Deluxe USB", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope NX Wireless Deluxe 2.4GHz", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope II 96 Wireless USB", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K1", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K1_GAMING_PID, 2, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K3", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K3_GAMING_PID, 1, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K5", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K5_GAMING_PID, 2, 0xFF00);
REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K7", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K7_GAMING_PID, 1, 0xFF00);
/*-----------------------------------------------------------------*\
| MICE |

View file

@ -63,6 +63,8 @@ RGBController_AuraTUFKeyboard::RGBController_AuraTUFKeyboard(AuraTUFKeyboardCont
case AURA_ROG_STRIX_FLARE_II_ANIMATE_PID:
case AURA_ROG_STRIX_SCOPE_RX_PID:
case AURA_ROG_STRIX_SCOPE_PID:
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID:
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID:
case AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID:
case AURA_TUF_K5_GAMING_PID:
AURA_KEYBOARD_SPEED_MIN = 255;
@ -410,6 +412,8 @@ void RGBController_AuraTUFKeyboard::SetupZones()
break;
case AURA_ROG_STRIX_SCOPE_PID:
case AURA_ROG_STRIX_SCOPE_RX_PID:
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID:
case AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID:
keyboard_ptr = &AsusROGStrixScopeLayouts;
break;
case AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID: