/*---------------------------------------------------------*\ | HyperXMousematControllerDetect.cpp | | | | Detector for HyperX mousemat | | | | Adam Honse (CalcProgrammer1) 25 Oct 2020 | | | | This file is part of the OpenRGB project | | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ #include "DetectionManager.h" #include "hidapi_wrapper.h" #include "HyperXMousematController.h" #include "RGBController_HyperXMousemat.h" /*---------------------------------------------------------*\ | HyperX mousemat vendor IDs | \*---------------------------------------------------------*/ #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 DetectedControllers DetectHyperXMousematControllers(hidapi_wrapper wrapper, hid_device_info* info, const std::string& name) { DetectedControllers detected_controllers; hid_device* dev; dev = wrapper.hid_open_path(info->path); 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, name); RGBController_HyperXMousemat* rgb_controller = new RGBController_HyperXMousemat(controller, first_zone_leds_count, second_zone_leds_count); detected_controllers.push_back(rgb_controller); } return(detected_controllers); } 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