Add optional HID device hotplug support (requires https://gitlab.com/OpenRGBDevelopers/hidapi-hotplug)

This commit is contained in:
Adam Honse
2026-01-22 13:02:56 -06:00
parent 3d113dab3c
commit 39f112bb98
46 changed files with 1434 additions and 226 deletions

View File

@@ -210,7 +210,7 @@ DetectedControllers DetectLogitechKeyboardG810(hid_device_info* info, const std:
}
if(dev_usage_0x0602 && dev_usage_0x0604)
{
LogitechG810Controller* controller = new LogitechG810Controller(dev_usage_0x0602, dev_usage_0x0604, name);
LogitechG810Controller* controller = new LogitechG810Controller(dev_usage_0x0602, dev_usage_0x0604, info->path, name);
RGBController_LogitechG810* rgb_controller = new RGBController_LogitechG810(controller);
detected_controllers.push_back(rgb_controller);
@@ -226,7 +226,7 @@ DetectedControllers DetectLogitechKeyboardG810(hid_device_info* info, const std:
if(dev)
{
LogitechG810Controller* controller = new LogitechG810Controller(dev, dev, name);
LogitechG810Controller* controller = new LogitechG810Controller(dev, dev, info->path, name);
RGBController_LogitechG810* rgb_controller = new RGBController_LogitechG810(controller);
detected_controllers.push_back(rgb_controller);
@@ -274,7 +274,7 @@ DetectedControllers DetectLogitechKeyboardG910(hid_device_info* info, const std:
}
if(dev_usage_0x0602 && dev_usage_0x0604)
{
LogitechG910Controller* controller = new LogitechG910Controller(dev_usage_0x0602, dev_usage_0x0604, name);
LogitechG910Controller* controller = new LogitechG910Controller(dev_usage_0x0602, dev_usage_0x0604, info->path, name);
RGBController_LogitechG910* rgb_controller = new RGBController_LogitechG910(controller);
detected_controllers.push_back(rgb_controller);
@@ -290,7 +290,7 @@ DetectedControllers DetectLogitechKeyboardG910(hid_device_info* info, const std:
if(dev)
{
LogitechG910Controller* controller = new LogitechG910Controller(dev, dev, name);
LogitechG910Controller* controller = new LogitechG910Controller(dev, dev, info->path, name);
RGBController_LogitechG910* rgb_controller = new RGBController_LogitechG910(controller);
detected_controllers.push_back(rgb_controller);

View File

@@ -13,10 +13,11 @@
#include "LogitechG810Controller.h"
#include "StringUtils.h"
LogitechG810Controller::LogitechG810Controller(hid_device* dev_handle_0x11, hid_device* dev_handle_0x12, std::string dev_name)
LogitechG810Controller::LogitechG810Controller(hid_device* dev_handle_0x11, hid_device* dev_handle_0x12, char* path, std::string dev_name)
{
dev_pkt_0x11 = dev_handle_0x11;
dev_pkt_0x12 = dev_handle_0x12;
location = path;
name = dev_name;
}
@@ -26,6 +27,11 @@ LogitechG810Controller::~LogitechG810Controller()
hid_close(dev_pkt_0x12);
}
std::string LogitechG810Controller::GetLocationString()
{
return("HID: " + location);
}
std::string LogitechG810Controller::GetNameString()
{
return(name);

View File

@@ -52,9 +52,10 @@ enum
class LogitechG810Controller
{
public:
LogitechG810Controller(hid_device* dev_handle_0x11, hid_device* dev_handle_0x12, std::string dev_name);
LogitechG810Controller(hid_device* dev_handle_0x11, hid_device* dev_handle_0x12, char* path, std::string dev_name);
~LogitechG810Controller();
std::string GetLocationString();
std::string GetNameString();
std::string GetSerialString();
@@ -79,6 +80,7 @@ public:
private:
hid_device* dev_pkt_0x11;
hid_device* dev_pkt_0x12;
std::string location;
std::string name;
void SendDirectFrame

View File

@@ -187,6 +187,7 @@ RGBController_LogitechG810::RGBController_LogitechG810(LogitechG810Controller* c
vendor = "Logitech";
type = DEVICE_TYPE_KEYBOARD;
description = "Logitech Keyboard Device";
location = controller->GetLocationString();
serial = controller->GetSerialString();
mode Direct;

View File

@@ -13,10 +13,11 @@
#include "LogitechG910Controller.h"
#include "StringUtils.h"
LogitechG910Controller::LogitechG910Controller(hid_device* dev_handle_0x11, hid_device* dev_handle_0x12, std::string dev_name)
LogitechG910Controller::LogitechG910Controller(hid_device* dev_handle_0x11, hid_device* dev_handle_0x12, char* path, std::string dev_name)
{
dev_pkt_0x11 = dev_handle_0x11;
dev_pkt_0x12 = dev_handle_0x12;
location = path;
name = dev_name;
}
@@ -31,6 +32,11 @@ std::string LogitechG910Controller::GetNameString()
return(name);
}
std::string LogitechG910Controller::GetLocationString()
{
return("HID: " + location);
}
std::string LogitechG910Controller::GetSerialString()
{
wchar_t serial_string[128];

View File

@@ -52,9 +52,10 @@ enum
class LogitechG910Controller
{
public:
LogitechG910Controller(hid_device* dev_handle_0x11, hid_device* dev_handle_0x12, std::string dev_name);
LogitechG910Controller(hid_device* dev_handle_0x11, hid_device* dev_handle_0x12, char* path, std::string dev_name);
~LogitechG910Controller();
std::string GetLocationString();
std::string GetNameString();
std::string GetSerialString();
@@ -79,6 +80,7 @@ public:
private:
hid_device* dev_pkt_0x11;
hid_device* dev_pkt_0x12;
std::string location;
std::string name;
void SendDirectFrame

View File

@@ -188,6 +188,7 @@ RGBController_LogitechG910::RGBController_LogitechG910(LogitechG910Controller* c
vendor = "Logitech";
type = DEVICE_TYPE_KEYBOARD;
description = "Logitech Keyboard Device";
location = controller->GetLocationString();
serial = controller->GetSerialString();
mode Direct;