From 74446a3c67fd448e55e361e235d598199352b1c5 Mon Sep 17 00:00:00 2001 From: Chris M Date: Mon, 3 Mar 2025 11:34:05 +1100 Subject: [PATCH] Fixed profile loading on Asus ROG Strix Scope II * Reverted regression introduced with b4d15b954 * Resolves #4632 --- .../AsusAuraTUFKeyboardController.cpp | 37 ++++++++----------- .../AsusAuraTUFKeyboardController.h | 2 + 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.cpp b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.cpp index 532b54d5..7eedbee2 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.cpp +++ b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.cpp @@ -39,36 +39,29 @@ std::string AuraTUFKeyboardController::GetDeviceLocation() return("HID: " + location); } -std::string clean_serial(const std::wstring& wstr) +std::string AuraTUFKeyboardController::GetSerialString() { + wchar_t serial_string[HID_MAX_STR]; + memset(serial_string, 0, sizeof(serial_string)); + + int ret = hid_get_serial_number_string(dev, serial_string, HID_MAX_STR); + if(ret != 0) + { + return(""); + } + /*-------------------------------------------------------------------------*\ | Skip non-ASCII, trailing garbage in serial numbers. Required by the | | Scope II 96, whose original firmware outputs garbage, which even differs | | after computer reboots and therefore breaks OpenRGB profile matching. | \*-------------------------------------------------------------------------*/ - std::string result; - for(wchar_t c : wstr) + switch(device_pid) { - // Forbid control chars and anything above final printable low-ASCII. - if(c < 32 || c > 126) - { + case AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID: + serial_string[12] = L'\0'; + break; + default: break; - } - - result += (char)c; - } - - return(result); -} - -std::string AuraTUFKeyboardController::GetSerialString() -{ - wchar_t serial_string[128]; - int ret = hid_get_serial_number_string(dev, serial_string, 128); - - if(ret != 0) - { - return(""); } return(StringUtils::wstring_to_string(serial_string)); diff --git a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.h b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.h index 0e0bb833..1b7efc64 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.h +++ b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController/AsusAuraTUFKeyboardController.h @@ -17,6 +17,8 @@ #include "RGBController.h" #include "AsusAuraTUFKeyboardLayouts.h" +#define HID_MAX_STR 128 + enum { AURA_KEYBOARD_MODE_STATIC = 0,