Move HID detector calls to RunHIDDetector/RunHIDWrappedDetector functions and return controller list from detector functions

This commit is contained in:
Adam Honse
2026-01-12 19:05:21 -06:00
parent f5558e5d78
commit abade53d77
196 changed files with 4459 additions and 4299 deletions

View File

@@ -7,33 +7,33 @@
| SPDX-License-Identifier: GPL-2.0-or-later |
\*---------------------------------------------------------*/
/*-----------------------------------------------------*\
| OpenRGB includes |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| OpenRGB includes |
\*---------------------------------------------------------*/
#include <hidapi.h>
#include "DetectionManager.h"
#include "LogManager.h"
#include "RGBController.h"
/*-----------------------------------------------------*\
| Corsair Peripheral specific includes |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Corsair Peripheral specific includes |
\*---------------------------------------------------------*/
#include "RGBController_CorsairPeripheral.h"
#include "RGBController_CorsairK55RGBPROXT.h"
#include "RGBController_CorsairK65Mini.h"
#define CORSAIR_PERIPHERAL_CONTROLLER_NAME "Corsair peripheral"
/*-----------------------------------------------------*\
| Corsair vendor ID |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Corsair vendor ID |
\*---------------------------------------------------------*/
#define CORSAIR_VID 0x1B1C
/*-----------------------------------------------------*\
| Keyboard product IDs |
| List taken from ckb-next |
| Non-RGB keyboards were omitted from this list |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Keyboard product IDs |
| List taken from ckb-next |
| Non-RGB keyboards were omitted from this list |
\*---------------------------------------------------------*/
#define CORSAIR_K55_RGB_PID 0x1B3D
#define CORSAIR_K65_RGB_PID 0x1B17
@@ -57,17 +57,17 @@
#define CORSAIR_STRAFE_RED_PID 0x1B44
#define CORSAIR_STRAFE_MK2_PID 0x1B48
/*-----------------------------------------------------*\
| Non-RGB Keyboard product IDs |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Non-RGB Keyboard product IDs |
\*---------------------------------------------------------*/
#define CORSAIR_K70_LUX_PID 0x1B36
#define CORSAIR_K68_RED_PID 0x1B3F
#define CORSAIR_K68_RED_SHADOW_PID 0x1BA5
/*-----------------------------------------------------*\
| Mouse product IDs |
| List taken from ckb-next |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Mouse product IDs |
| List taken from ckb-next |
\*---------------------------------------------------------*/
#define CORSAIR_GLAIVE_RGB_PID 0x1B34
#define CORSAIR_GLAIVE_RGB_PRO_PID 0x1B74
#define CORSAIR_HARPOON_RGB_PID 0x1B3C
@@ -82,66 +82,72 @@
#define CORSAIR_SCIMITAR_ELITE_RGB_PID 0x1B8B
#define CORSAIR_SABRE_RGB_PID 0x1B2F
/*-----------------------------------------------------*\
| Mousepad product IDs |
| List taken from ckb-next |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Mousepad product IDs |
| List taken from ckb-next |
\*---------------------------------------------------------*/
#define CORSAIR_MM800_RGB_POLARIS_PID 0x1B3B
/*-----------------------------------------------------*\
| Headset Stand product IDs |
| List taken from ckb-next |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Headset Stand product IDs |
| List taken from ckb-next |
\*---------------------------------------------------------*/
#define CORSAIR_ST100_PID 0x0A34
/*-----------------------------------------------------*\
| Corsair K55 RGB PRO XT Keyboard product ID |
| This keyboard uses a separate driver |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Corsair K55 RGB PRO XT Keyboard product ID |
| This keyboard uses a separate driver |
\*---------------------------------------------------------*/
#define CORSAIR_K55_RGB_PRO_XT_PID 0x1BA1
/*-----------------------------------------------------*\
| Corsair K65 Mini Keyboard product ID |
| This keyboard uses a separate driver |
\*-----------------------------------------------------*/
/*---------------------------------------------------------*\
| Corsair K65 Mini Keyboard product ID |
| This keyboard uses a separate driver |
\*---------------------------------------------------------*/
#define CORSAIR_K65_MINI_PID 0x1BAF
void DetectCorsairK55RGBPROXTControllers(hid_device_info* info, const std::string& name)
DetectedControllers DetectCorsairK55RGBPROXTControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
CorsairK55RGBPROXTController* controller = new CorsairK55RGBPROXTController(dev, info->path, name);
CorsairK55RGBPROXTController* controller = new CorsairK55RGBPROXTController(dev, info->path, name);
RGBController_CorsairK55RGBPROXT* rgb_controller = new RGBController_CorsairK55RGBPROXT(controller);
DetectionManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
} /* DetectCorsairK55RGBPROXTControllers() */
void DetectCorsairK65MiniControllers(hid_device_info* info, const std::string& name)
return(detected_controllers);
}
DetectedControllers DetectCorsairK65MiniControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
CorsairK65MiniController* controller = new CorsairK65MiniController(dev, info->path, name);
RGBController_CorsairK65Mini* rgb_controller = new RGBController_CorsairK65Mini(controller);
DetectionManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
} /* DetectCorsairK65MiniControllers() */
/******************************************************************************************\
* *
* DetectCorsairPeripheralControllers *
* *
* Tests the USB address to see if a Corsair RGB Keyboard controller exists there. *
* *
\******************************************************************************************/
void DetectCorsairPeripheralControllers(hid_device_info* info, const std::string& name)
return(detected_controllers);
}
DetectedControllers DetectCorsairPeripheralControllers(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
DetectedControllers detected_controllers;
hid_device* dev;
dev = hid_open_path(info->path);
if(dev)
{
@@ -156,7 +162,8 @@ void DetectCorsairPeripheralControllers(hid_device_info* info, const std::string
(info->product_id == CORSAIR_K70_RGB_MK2_LP_PID);
RGBController_CorsairPeripheral* rgb_controller = new RGBController_CorsairPeripheral(controller, supports_hardware_modes);
DetectionManager::get()->RegisterRGBController(rgb_controller);
detected_controllers.push_back(rgb_controller);
}
else
{
@@ -164,11 +171,13 @@ void DetectCorsairPeripheralControllers(hid_device_info* info, const std::string
delete controller;
}
}
} /* DetectCorsairPeripheralControllers() */
/*-----------------------------------------------------------------------------------------------------*\
| Keyboards |
\*-----------------------------------------------------------------------------------------------------*/
return(detected_controllers);
}
/*---------------------------------------------------------*\
| Keyboards |
\*---------------------------------------------------------*/
REGISTER_HID_DETECTOR_IP("Corsair K55 RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_K55_RGB_PID, 1, 0xFFC2);
REGISTER_HID_DETECTOR_IP("Corsair K65 RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_K65_RGB_PID, 1, 0xFFC2);
REGISTER_HID_DETECTOR_IP("Corsair K65 LUX RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_K65_LUX_RGB_PID, 1, 0xFFC2);
@@ -189,9 +198,9 @@ REGISTER_HID_DETECTOR_IP("Corsair K95 RGB PLATINUM SE", DetectCorsairPeriphe
REGISTER_HID_DETECTOR_IP("Corsair Strafe", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_STRAFE_PID, 1, 0xFFC2);
REGISTER_HID_DETECTOR_IP("Corsair Strafe Red", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_STRAFE_RED_PID, 1, 0xFFC2);
REGISTER_HID_DETECTOR_IP("Corsair Strafe MK.2", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_STRAFE_MK2_PID, 1, 0xFFC2);
/*-----------------------------------------------------------------------------------------------------*\
| Mice |
\*-----------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| Mice |
\*---------------------------------------------------------*/
REGISTER_HID_DETECTOR_IP("Corsair Glaive RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_GLAIVE_RGB_PID, 1, 0xFFC2);
REGISTER_HID_DETECTOR_IP("Corsair Glaive RGB PRO", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_GLAIVE_RGB_PRO_PID, 1, 0xFFC2);
REGISTER_HID_DETECTOR_IP("Corsair Harpoon RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_HARPOON_RGB_PID, 1, 0xFFC2);
@@ -206,29 +215,29 @@ REGISTER_HID_DETECTOR_IP("Corsair Scimitar PRO RGB", DetectCorsairPeriphe
REGISTER_HID_DETECTOR_IP("Corsair Scimitar Elite RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_SCIMITAR_ELITE_RGB_PID, 1, 0xFFC2);
REGISTER_HID_DETECTOR_IP("Corsair Sabre RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_SABRE_RGB_PID, 1, 0xFFC2);
/*-----------------------------------------------------------------------------------------------------*\
| Mousemats |
\*-----------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| Mousemats |
\*---------------------------------------------------------*/
#ifdef USE_HID_USAGE
REGISTER_HID_DETECTOR_P("Corsair MM800 RGB Polaris", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_MM800_RGB_POLARIS_PID, 0xFFC2);
#else
REGISTER_HID_DETECTOR_I("Corsair MM800 RGB Polaris", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_MM800_RGB_POLARIS_PID, 0);
#endif
/*-----------------------------------------------------------------------------------------------------*\
| Headset Stands |
\*-----------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| Headset Stands |
\*---------------------------------------------------------*/
#ifdef USE_HID_USAGE
REGISTER_HID_DETECTOR_P("Corsair ST100 RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_ST100_PID, 0xFFC2);
#else
REGISTER_HID_DETECTOR_I("Corsair ST100 RGB", DetectCorsairPeripheralControllers, CORSAIR_VID, CORSAIR_ST100_PID, 0);
#endif
/*-----------------------------------------------------------------------------------------------------*\
| Corsair K65 Mini Keyboard |
\*-----------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| Corsair K65 Mini Keyboard |
\*---------------------------------------------------------*/
REGISTER_HID_DETECTOR_I("Corsair K65 Mini", DetectCorsairK65MiniControllers, CORSAIR_VID, CORSAIR_K65_MINI_PID, 1);
/*-----------------------------------------------------------------------------------------------------*\
| Corsair K55 RGB PRO XT Keyboard |
\*-----------------------------------------------------------------------------------------------------*/
/*---------------------------------------------------------*\
| Corsair K55 RGB PRO XT Keyboard |
\*---------------------------------------------------------*/
REGISTER_HID_DETECTOR_IP("Corsair K55 RGB PRO XT", DetectCorsairK55RGBPROXTControllers, CORSAIR_VID, CORSAIR_K55_RGB_PRO_XT_PID, 1, 0xFF42);