Store name in HyperXMousematControllers to avoid setting it in detector

This commit is contained in:
Adam Honse 2025-08-11 17:18:29 -05:00
parent 12f90a67f9
commit 0269cdd068
4 changed files with 22 additions and 20 deletions

View file

@ -13,11 +13,12 @@
#include "HyperXMousematController.h" #include "HyperXMousematController.h"
#include "StringUtils.h" #include "StringUtils.h"
HyperXMousematController::HyperXMousematController(hidapi_wrapper hid_wrapper, hid_device* dev_handle, const char* path) HyperXMousematController::HyperXMousematController(hidapi_wrapper hid_wrapper, hid_device* dev_handle, const char* path, std::string dev_name)
{ {
wrapper = hid_wrapper; wrapper = hid_wrapper;
dev = dev_handle; dev = dev_handle;
location = path; location = path;
name = dev_name;
} }
HyperXMousematController::~HyperXMousematController() HyperXMousematController::~HyperXMousematController()
@ -30,6 +31,11 @@ std::string HyperXMousematController::GetDeviceLocation()
return("HID " + location); return("HID " + location);
} }
std::string HyperXMousematController::GetNameString()
{
return(name);
}
std::string HyperXMousematController::GetSerialString() std::string HyperXMousematController::GetSerialString()
{ {
wchar_t serial_string[128]; wchar_t serial_string[128];

View file

@ -18,10 +18,11 @@
class HyperXMousematController class HyperXMousematController
{ {
public: public:
HyperXMousematController(hidapi_wrapper hid_wrapper, hid_device* dev_handle, const char* path); HyperXMousematController(hidapi_wrapper hid_wrapper, hid_device* dev_handle, const char* path, std::string dev_name);
~HyperXMousematController(); ~HyperXMousematController();
std::string GetDeviceLocation(); std::string GetDeviceLocation();
std::string GetNameString();
std::string GetSerialString(); std::string GetSerialString();
void SendDirect void SendDirect
@ -33,4 +34,5 @@ private:
hidapi_wrapper wrapper; hidapi_wrapper wrapper;
hid_device* dev; hid_device* dev;
std::string location; std::string location;
std::string name;
}; };

View file

@ -41,9 +41,8 @@ void DetectHyperXMousematControllers(hidapi_wrapper wrapper, hid_device_info* in
int first_zone_leds_count = info->product_id == HYPERX_FURY_A_XL_PID ? 2 : 15; int first_zone_leds_count = info->product_id == HYPERX_FURY_A_XL_PID ? 2 : 15;
int second_zone_leds_count = info->product_id == HYPERX_FURY_A_XL_PID ? 0 : 5; int second_zone_leds_count = info->product_id == HYPERX_FURY_A_XL_PID ? 0 : 5;
HyperXMousematController* controller = new HyperXMousematController(wrapper, dev, info->path); HyperXMousematController* controller = new HyperXMousematController(wrapper, dev, info->path, name);
RGBController_HyperXMousemat* rgb_controller = new RGBController_HyperXMousemat(controller, first_zone_leds_count, second_zone_leds_count); RGBController_HyperXMousemat* rgb_controller = new RGBController_HyperXMousemat(controller, first_zone_leds_count, second_zone_leds_count);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller); ResourceManager::get()->RegisterRGBController(rgb_controller);
} }

View file

@ -24,29 +24,24 @@ using namespace std::chrono_literals;
@comment @comment
\*-------------------------------------------------------------------*/ \*-------------------------------------------------------------------*/
RGBController_HyperXMousemat::RGBController_HyperXMousemat RGBController_HyperXMousemat::RGBController_HyperXMousemat(HyperXMousematController* controller_ptr, unsigned int first_zone_leds_count_arg, unsigned int second_zone_leds_count_arg)
(
HyperXMousematController* controller_ptr,
unsigned int first_zone_leds_count_arg,
unsigned int second_zone_leds_count_arg
)
{ {
controller = controller_ptr; controller = controller_ptr;
first_zone_leds_count = first_zone_leds_count_arg; first_zone_leds_count = first_zone_leds_count_arg;
second_zone_leds_count = second_zone_leds_count_arg; second_zone_leds_count = second_zone_leds_count_arg;
name = "HyperX Mousemat Device"; name = controller->GetNameString();
vendor = "HyperX"; vendor = "HyperX";
type = DEVICE_TYPE_MOUSEMAT; type = DEVICE_TYPE_MOUSEMAT;
description = "HyperX Mousemat Device"; description = "HyperX Mousemat Device";
location = controller->GetDeviceLocation(); location = controller->GetDeviceLocation();
serial = controller->GetSerialString(); serial = controller->GetSerialString();
mode Direct; mode Direct;
Direct.name = "Direct"; Direct.name = "Direct";
Direct.value = 0xFFFF; Direct.value = 0xFFFF;
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR; Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
Direct.color_mode = MODE_COLORS_PER_LED; Direct.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Direct); modes.push_back(Direct);
SetupZones(); SetupZones();