Add HyperX Pulsefire Mat RGB Mouse Pad XL support
This commit is contained in:
parent
9672cc88e4
commit
167acdf769
3 changed files with 50 additions and 29 deletions
|
|
@ -11,9 +11,10 @@
|
|||
\*-----------------------------------------------------*/
|
||||
#define HYPERX_VID 0x0951
|
||||
#define HYPERX_FURY_ULTRA_PID 0x1705
|
||||
#define HYPERX_FURY_A_XL_PID 0x1741
|
||||
|
||||
#define HYPERX_VID_2 0x03F0
|
||||
#define HYPERX_PULSEFIRE_PID 0x0F8D
|
||||
#define HYPERX_PULSEFIRE_PID 0x0F8D
|
||||
|
||||
/******************************************************************************************\
|
||||
* *
|
||||
|
|
@ -29,13 +30,22 @@ void DetectHyperXMousematControllers(hidapi_wrapper wrapper, hid_device_info* in
|
|||
|
||||
if(dev)
|
||||
{
|
||||
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;
|
||||
|
||||
HyperXMousematController* controller = new HyperXMousematController(wrapper, dev, info->path);
|
||||
RGBController_HyperXMousemat* rgb_controller = new RGBController_HyperXMousemat(controller);
|
||||
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);
|
||||
}
|
||||
} /* DetectHyperXMousematControllers() */
|
||||
|
||||
REGISTER_HID_WRAPPED_DETECTOR_I("HyperX Fury Ultra", DetectHyperXMousematControllers, HYPERX_VID, HYPERX_FURY_ULTRA_PID, 0);
|
||||
REGISTER_HID_WRAPPED_DETECTOR_IPU("HyperX Pulsefire Mat", DetectHyperXMousematControllers, HYPERX_VID_2, HYPERX_PULSEFIRE_PID, 1, 0xFF90, 0xFF00);
|
||||
|
||||
#ifdef _WIN32
|
||||
REGISTER_HID_WRAPPED_DETECTOR_IPU("HyperX Pulsefire Mat RGB Mouse Pad XL", DetectHyperXMousematControllers, HYPERX_VID, HYPERX_FURY_A_XL_PID, 1, 0xFF90, 0xFF00);
|
||||
#else
|
||||
REGISTER_HID_WRAPPED_DETECTOR_IPU("HyperX Pulsefire Mat RGB Mouse Pad XL", DetectHyperXMousematControllers, HYPERX_VID, HYPERX_FURY_A_XL_PID, 0, 0x0C, 0x01);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -22,9 +22,16 @@ using namespace std::chrono_literals;
|
|||
@comment
|
||||
\*-------------------------------------------------------------------*/
|
||||
|
||||
RGBController_HyperXMousemat::RGBController_HyperXMousemat(HyperXMousematController* controller_ptr)
|
||||
RGBController_HyperXMousemat::RGBController_HyperXMousemat
|
||||
(
|
||||
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;
|
||||
second_zone_leds_count = second_zone_leds_count_arg;
|
||||
|
||||
name = "HyperX Mousemat Device";
|
||||
vendor = "HyperX";
|
||||
|
|
@ -63,23 +70,30 @@ RGBController_HyperXMousemat::~RGBController_HyperXMousemat()
|
|||
|
||||
void RGBController_HyperXMousemat::SetupZones()
|
||||
{
|
||||
zone underglow;
|
||||
underglow.name = "Underglow";
|
||||
underglow.type = ZONE_TYPE_LINEAR;
|
||||
underglow.leds_min = 15;
|
||||
underglow.leds_max = 15;
|
||||
underglow.leds_count = 15;
|
||||
underglow.matrix_map = NULL;
|
||||
zones.push_back(underglow);
|
||||
if(first_zone_leds_count > 0)
|
||||
{
|
||||
zone underglow;
|
||||
underglow.name = "Underglow";
|
||||
underglow.type = ZONE_TYPE_LINEAR;
|
||||
underglow.leds_min = first_zone_leds_count;
|
||||
underglow.leds_max = first_zone_leds_count;
|
||||
underglow.leds_count = first_zone_leds_count;
|
||||
underglow.matrix_map = NULL;
|
||||
zones.push_back(underglow);
|
||||
}
|
||||
|
||||
if(second_zone_leds_count > 0)
|
||||
{
|
||||
zone led_strip;
|
||||
led_strip.name = "LED Strip";
|
||||
led_strip.type = ZONE_TYPE_LINEAR;
|
||||
led_strip.leds_min = second_zone_leds_count;
|
||||
led_strip.leds_max = second_zone_leds_count;
|
||||
led_strip.leds_count = second_zone_leds_count;
|
||||
led_strip.matrix_map = NULL;
|
||||
zones.push_back(led_strip);
|
||||
}
|
||||
|
||||
zone led_strip;
|
||||
led_strip.name = "LED Strip";
|
||||
led_strip.type = ZONE_TYPE_LINEAR;
|
||||
led_strip.leds_min = 5;
|
||||
led_strip.leds_max = 5;
|
||||
led_strip.leds_count = 5;
|
||||
led_strip.matrix_map = NULL;
|
||||
zones.push_back(led_strip);
|
||||
|
||||
for(unsigned int zone_idx = 0; zone_idx < zones.size(); zone_idx++)
|
||||
{
|
||||
|
|
@ -113,13 +127,7 @@ void RGBController_HyperXMousemat::DeviceUpdateLEDs()
|
|||
{
|
||||
last_update_time = std::chrono::steady_clock::now();
|
||||
|
||||
if(active_mode == 0)
|
||||
{
|
||||
controller->SendDirect(&colors[0]);
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
controller->SendDirect(&colors[0]);
|
||||
}
|
||||
|
||||
void RGBController_HyperXMousemat::UpdateZoneLEDs(int /*zone*/)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
class RGBController_HyperXMousemat : public RGBController
|
||||
{
|
||||
public:
|
||||
RGBController_HyperXMousemat(HyperXMousematController* controller_ptr);
|
||||
RGBController_HyperXMousemat(HyperXMousematController* controller_ptr, unsigned int first_zone_leds_count_arg, unsigned int second_zone_leds_count_arg);
|
||||
~RGBController_HyperXMousemat();
|
||||
|
||||
void SetupZones();
|
||||
|
|
@ -36,4 +36,7 @@ private:
|
|||
std::thread* keepalive_thread;
|
||||
std::atomic<bool> keepalive_thread_run;
|
||||
std::chrono::time_point<std::chrono::steady_clock> last_update_time;
|
||||
|
||||
unsigned int first_zone_leds_count;
|
||||
unsigned int second_zone_leds_count;
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue