From 3cf1f58f304dc01574ad54bc6efd9449ec5e7a43 Mon Sep 17 00:00:00 2001 From: Chris M Date: Mon, 3 Jun 2024 13:05:10 +1000 Subject: [PATCH] Updated UDEV rules script * Improved device processing * Updated shebang to improve compatibility * Converted SteelSeriesControllerDetect to UNIX line endings * Corrected hex literals in Artic and SteelSeries detection --- .../ArcticControllerDetect.cpp | 2 +- .../SteelSeriesControllerDetect.cpp | 720 +++++++++--------- scripts/build-udev-rules.sh | 15 +- 3 files changed, 369 insertions(+), 368 deletions(-) diff --git a/Controllers/ArcticController/ArcticControllerDetect.cpp b/Controllers/ArcticController/ArcticControllerDetect.cpp index 6c90ce45..99880c99 100644 --- a/Controllers/ArcticController/ArcticControllerDetect.cpp +++ b/Controllers/ArcticController/ArcticControllerDetect.cpp @@ -47,5 +47,5 @@ REGISTER_DETECTOR("Arctic RGB controller", DetectArcticControllers); /*---------------------------------------------------------------------------------------------------------*\ | Entries for dynamic UDEV rules | | | -| DUMMY_DEVICE_DETECTOR("Arctic RGB controller", DetectArcticControllers, 0x1a86, 0x7523 ) | +| DUMMY_DEVICE_DETECTOR("Arctic RGB controller", DetectArcticControllers, 0x1A86, 0x7523 ) | \*---------------------------------------------------------------------------------------------------------*/ diff --git a/Controllers/SteelSeriesController/SteelSeriesControllerDetect.cpp b/Controllers/SteelSeriesController/SteelSeriesControllerDetect.cpp index b3c93dda..293b4582 100644 --- a/Controllers/SteelSeriesController/SteelSeriesControllerDetect.cpp +++ b/Controllers/SteelSeriesController/SteelSeriesControllerDetect.cpp @@ -1,360 +1,360 @@ -#include -#include "Detector.h" -#include "RGBController.h" -#include "SteelSeriesGeneric.h" - -#include "SteelSeriesAerox9Controller.h" -#include "SteelSeriesArctis5Controller.h" -#include "SteelSeriesApex8ZoneController.h" -#include "SteelSeriesApexController.h" -#include "SteelSeriesApexMController.h" -#include "SteelSeriesApexTZoneController.h" -#include "SteelSeriesOldApexController.h" -#include "SteelSeriesQCKMatController.h" -#include "SteelSeriesRivalController.h" -#include "SteelSeriesRival3Controller.h" -#include "SteelSeriesSenseiController.h" -#include "SteelSeriesSiberiaController.h" - -#include "RGBController_SteelSeriesArctis5.h" -#include "RGBController_SteelSeriesApex.h" -#include "RGBController_SteelSeriesApex3.h" -#include "RGBController_SteelSeriesOldApex.h" -#include "RGBController_SteelSeriesQCKMat.h" -#include "RGBController_SteelSeriesRival.h" -#include "RGBController_SteelSeriesRival3.h" -#include "RGBController_SteelSeriesSensei.h" -#include "RGBController_SteelSeriesSiberia.h" - -/*-----------------------------------------------------*\ -| Vendor ID | -\*-----------------------------------------------------*/ -#define STEELSERIES_VID 0x1038 -/*-----------------------------------------------------*\ -| Mouse product IDs | -\*-----------------------------------------------------*/ -#define STEELSERIES_AEROX_3_PID 0x1836 -#define STEELSERIES_AEROX_9_PID 0x185A -#define STEELSERIES_RIVAL_100_PID 0x1702 -#define STEELSERIES_RIVAL_100_DOTA_PID 0x170c -#define STEELSERIES_RIVAL_105_PID 0x1814 -#define STEELSERIES_RIVAL_106_PID 0x1816 -#define STEELSERIES_RIVAL_110_PID 0x1729 -#define STEELSERIES_RIVAL_300_PID 0x1710 -#define ACER_PREDATOR_RIVAL_300_PID 0x1714 -#define STEELSERIES_RIVAL_300_CSGO_PID 0x1394 -#define STEELSERIES_RIVAL_300_CSGO_STM32_PID 0x1716 -#define STEELSERIES_RIVAL_300_CSGO_HYPERBEAST_PID 0x171a -#define STEELSERIES_RIVAL_300_DOTA_PID 0x1392 -#define STEELSERIES_RIVAL_300_HP_PID 0x1718 -#define STEELSERIES_RIVAL_300_BLACKOPS_PID 0x1710 -#define STEELSERIES_RIVAL_310_PID 0x1720 -#define STEELSERIES_RIVAL_310_CSGO_HOWL_PID 0x171e -#define STEELSERIES_RIVAL_310_PUBG_PID 0x1736 -#define STEELSERIES_RIVAL_600_PID 0x1724 -#define STEELSERIES_RIVAL_600_DOTA_2_PID 0x172E -#define STEELSERIES_RIVAL_650_PID 0x172B -#define STEELSERIES_RIVAL_650_WIRELESS_PID 0x1726 -#define STEELSERIES_RIVAL_700_PID 0x1700 -#define STEELSERIES_RIVAL_710_PID 0x1730 -#define STEELSERIES_RIVAL_3_OLD_PID 0x1824 -#define STEELSERIES_RIVAL_3_PID 0x184C -#define STEELSERIES_SENSEI_TEN_PID 0x1832 -#define STEELSERIES_SENSEI_TEN_CSGO_NEON_RIDER_PID 0x1834 -#define STEELSERIES_SENSEI_310_PID 0x1722 -/*-----------------------------------------------------*\ -| Headset product IDs | -\*-----------------------------------------------------*/ -#define STEELSERIES_SIBERIA_350_PID 0x1229 -#define STEELSERIES_ARCTIS_5_PID 0x12AA -/*--------------------------------------------------------------*\ -| Mousemat product IDs | -\*--------------------------------------------------------------*/ -#define STEELSERIES_QCK_PRISM_CLOTH_MED_PID 0x150A -#define STEELSERIES_QCK_PRISM_CLOTH_XL_PID 0x150D -#define STEELSERIES_QCK_PRISM_CLOTH_XL_DESTINY_PID 0x151E -#define STEELSERIES_QCK_PRISM_CLOTH_XL_CSGO_NEON_RIDER_PID 0x1514 -#define STEELSERIES_QCK_PRISM_CLOTH_XL_CSGO_NEO_NOIR_PID 0x151C -#define STEELSERIES_QCK_PRISM_CLOTH_3XL_PID 0x1516 -#define STEELSERIES_QCK_PRISM_CLOTH_4XL_PID 0x1518 -/*-----------------------------------------------------*\ -| Keyboard product IDs | -\*-----------------------------------------------------*/ -#define STEELSERIES_APEX_3_PID 0x161A -#define STEELSERIES_APEX_3_TKL_PID 0x1622 -#define STEELSERIES_APEX_5_PID 0x161C -#define STEELSERIES_APEX_7_PID 0x1612 -#define STEELSERIES_APEX_7_TKL_PID 0x1618 -#define STEELSERIES_APEX_PRO_PID 0x1610 -#define STEELSERIES_APEX_PRO_TKL_PID 0x1614 -#define STEELSERIES_APEX_M750_PID 0x0616 -#define STEELSERIES_APEX_OG_PID 0x1202 -#define STEELSERIES_APEX_350_PID 0x1206 - -void DetectSteelSeriesAerox3(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesAerox3Controller* controller = new SteelSeriesAerox3Controller(dev, AEROX_3, info->path); - RGBController_SteelSeriesRival3* rgb_controller = new RGBController_SteelSeriesRival3(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesAerox9(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesAerox9Controller* controller = new SteelSeriesAerox9Controller(dev, AEROX_3, info->path); - RGBController_SteelSeriesRival3* rgb_controller = new RGBController_SteelSeriesRival3(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesApex3Full(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesApexTZoneController* controller = new SteelSeriesApexTZoneController(dev, info->path); - RGBController_SteelSeriesApex3* rgb_controller = new RGBController_SteelSeriesApex3(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesApex3TKL(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesApex8ZoneController* controller = new SteelSeriesApex8ZoneController(dev, info->path); - RGBController_SteelSeriesApex3* rgb_controller = new RGBController_SteelSeriesApex3(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesApex(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesApexController* controller = new SteelSeriesApexController(dev, APEX, info->path); - RGBController_SteelSeriesApex* rgb_controller = new RGBController_SteelSeriesApex(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesApexM(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesApexMController* controller = new SteelSeriesApexMController(dev, APEX_M, info->path); - RGBController_SteelSeriesApex* rgb_controller = new RGBController_SteelSeriesApex(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesApexOld(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesOldApexController* controller = new SteelSeriesOldApexController(dev, APEX_OLD, info->path); - RGBController_SteelSeriesOldApex* rgb_controller = new RGBController_SteelSeriesOldApex(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesHeadset(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesSiberiaController* controller = new SteelSeriesSiberiaController(dev, info->path); - RGBController_SteelSeriesSiberia* rgb_controller = new RGBController_SteelSeriesSiberia(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesMousemat(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesQCKMatController* controller = new SteelSeriesQCKMatController(dev, info->path); - RGBController_SteelSeriesQCKMat* rgb_controller = new RGBController_SteelSeriesQCKMat(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesRival100(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_100, info->path); - RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesRival300(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_300, info->path); - RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesRival600(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_600, info->path); - RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - - -void DetectSteelSeriesRival650(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_650, info->path); - RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesRival700(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_700, info->path); - RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - - -void DetectSteelSeriesRival3(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesRival3Controller* controller = new SteelSeriesRival3Controller(dev, RIVAL_3, info->path); - RGBController_SteelSeriesRival3* rgb_controller = new RGBController_SteelSeriesRival3(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesSensei(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - if(dev) - { - SteelSeriesSenseiController* controller = new SteelSeriesSenseiController(dev, SENSEI, info->path); - RGBController_SteelSeriesSensei* rgb_controller = new RGBController_SteelSeriesSensei(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -void DetectSteelSeriesArctis5(hid_device_info* info, const std::string& name) -{ - hid_device* dev = hid_open_path(info->path); - - if(dev) - { - SteelSeriesArctis5Controller* controller = new SteelSeriesArctis5Controller(dev, *info); - RGBController_SteelSeriesArctis5* rgb_controller = new RGBController_SteelSeriesArctis5(controller); - rgb_controller->name = name; - ResourceManager::get()->RegisterRGBController(rgb_controller); - } -} - -/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*\ -| Mice | -\*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_IPU("SteelSeries Aerox 3 Wired", DetectSteelSeriesAerox3, STEELSERIES_VID, STEELSERIES_AEROX_3_PID, 3, 0xFFC0, 1 ); -REGISTER_HID_DETECTOR_IPU("SteelSeries Aerox 9 Wired", DetectSteelSeriesAerox9, STEELSERIES_VID, STEELSERIES_AEROX_9_PID, 3, 0xFFC0, 1 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 100", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_100_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 100 DotA 2 Edition", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_100_DOTA_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 105", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_105_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 106", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_106_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 110", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_110_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 300", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_PID, 0 ); -REGISTER_HID_DETECTOR_I("Acer Predator Gaming Mouse (Rival 300)", DetectSteelSeriesRival300, STEELSERIES_VID, ACER_PREDATOR_RIVAL_300_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 CS:GO Fade Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_CSGO_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 CS:GO Fade Edition (stm32)", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_CSGO_STM32_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 CS:GO Hyperbeast Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_CSGO_HYPERBEAST_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 Dota 2 Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_DOTA_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 HP Omen Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_HP_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 Black Ops Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_BLACKOPS_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 310", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_RIVAL_310_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 310 CS:GO Howl Edition", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_RIVAL_310_CSGO_HOWL_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 310 PUBG Edition", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_RIVAL_310_PUBG_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 600", DetectSteelSeriesRival600, STEELSERIES_VID, STEELSERIES_RIVAL_600_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 600 Dota 2 Edition", DetectSteelSeriesRival600, STEELSERIES_VID, STEELSERIES_RIVAL_600_DOTA_2_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 650", DetectSteelSeriesRival650, STEELSERIES_VID, STEELSERIES_RIVAL_650_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 650 Wireless", DetectSteelSeriesRival650, STEELSERIES_VID, STEELSERIES_RIVAL_650_WIRELESS_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 700", DetectSteelSeriesRival700, STEELSERIES_VID, STEELSERIES_RIVAL_700_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 710", DetectSteelSeriesRival700, STEELSERIES_VID, STEELSERIES_RIVAL_710_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 3 (Old Firmware)", DetectSteelSeriesRival3, STEELSERIES_VID, STEELSERIES_RIVAL_3_OLD_PID, 3 ); -REGISTER_HID_DETECTOR_I("SteelSeries Rival 3", DetectSteelSeriesRival3, STEELSERIES_VID, STEELSERIES_RIVAL_3_PID, 3 ); -REGISTER_HID_DETECTOR_I("SteelSeries Sensei TEN", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_SENSEI_TEN_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Sensei TEN CS:GO Neon Rider Edition", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_SENSEI_TEN_CSGO_NEON_RIDER_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries Sensei 310", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_SENSEI_310_PID, 0 ); -/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*\ -| Headsets | -\*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_I("SteelSeries Siberia 350", DetectSteelSeriesHeadset, STEELSERIES_VID, STEELSERIES_SIBERIA_350_PID, 3 ); -REGISTER_HID_DETECTOR_I("SteelSeries Arctis 5", DetectSteelSeriesArctis5, STEELSERIES_VID, STEELSERIES_ARCTIS_5_PID, 5 ); -/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*\ -| Mousemats | -\*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth Medium", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_MED_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth XL", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_XL_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth XL Destiny Ed.", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_XL_DESTINY_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth XL CS:GO Neon Rider Ed.", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_XL_CSGO_NEON_RIDER_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth XL CS:GO Neo Noir Ed.", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_XL_CSGO_NEO_NOIR_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth 3XL", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_3XL_PID, 0 ); -REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth 4XL", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_4XL_PID, 0 ); -/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*\ -| Keyboards | -\*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ -REGISTER_HID_DETECTOR_I ("SteelSeries Apex 3", DetectSteelSeriesApex3Full, STEELSERIES_VID, STEELSERIES_APEX_3_PID, 3 ); -REGISTER_HID_DETECTOR_IPU("SteelSeries Apex 3 TKL", DetectSteelSeriesApex3TKL, STEELSERIES_VID, STEELSERIES_APEX_3_TKL_PID, 1, 0xFFC0, 1 ); -REGISTER_HID_DETECTOR_I ("SteelSeries Apex 5", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_5_PID, 1 ); -REGISTER_HID_DETECTOR_I ("SteelSeries Apex 7", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_7_PID, 1 ); -REGISTER_HID_DETECTOR_I ("SteelSeries Apex 7 TKL", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_7_TKL_PID, 1 ); -REGISTER_HID_DETECTOR_I ("SteelSeries Apex Pro", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_PRO_PID, 1 ); -REGISTER_HID_DETECTOR_I ("SteelSeries Apex Pro TKL", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_PRO_TKL_PID, 1 ); -REGISTER_HID_DETECTOR_I ("SteelSeries Apex M750", DetectSteelSeriesApexM, STEELSERIES_VID, STEELSERIES_APEX_M750_PID, 2 ); -REGISTER_HID_DETECTOR_I ("SteelSeries Apex (OG)/Apex Fnatic", DetectSteelSeriesApexOld, STEELSERIES_VID, STEELSERIES_APEX_OG_PID, 0 ); -REGISTER_HID_DETECTOR_I ("SteelSeries Apex 350", DetectSteelSeriesApexOld, STEELSERIES_VID, STEELSERIES_APEX_350_PID, 0 ); +#include +#include "Detector.h" +#include "RGBController.h" +#include "SteelSeriesGeneric.h" + +#include "SteelSeriesAerox9Controller.h" +#include "SteelSeriesArctis5Controller.h" +#include "SteelSeriesApex8ZoneController.h" +#include "SteelSeriesApexController.h" +#include "SteelSeriesApexMController.h" +#include "SteelSeriesApexTZoneController.h" +#include "SteelSeriesOldApexController.h" +#include "SteelSeriesQCKMatController.h" +#include "SteelSeriesRivalController.h" +#include "SteelSeriesRival3Controller.h" +#include "SteelSeriesSenseiController.h" +#include "SteelSeriesSiberiaController.h" + +#include "RGBController_SteelSeriesArctis5.h" +#include "RGBController_SteelSeriesApex.h" +#include "RGBController_SteelSeriesApex3.h" +#include "RGBController_SteelSeriesOldApex.h" +#include "RGBController_SteelSeriesQCKMat.h" +#include "RGBController_SteelSeriesRival.h" +#include "RGBController_SteelSeriesRival3.h" +#include "RGBController_SteelSeriesSensei.h" +#include "RGBController_SteelSeriesSiberia.h" + +/*-----------------------------------------------------*\ +| Vendor ID | +\*-----------------------------------------------------*/ +#define STEELSERIES_VID 0x1038 +/*-----------------------------------------------------*\ +| Mouse product IDs | +\*-----------------------------------------------------*/ +#define STEELSERIES_AEROX_3_PID 0x1836 +#define STEELSERIES_AEROX_9_PID 0x185A +#define STEELSERIES_RIVAL_100_PID 0x1702 +#define STEELSERIES_RIVAL_100_DOTA_PID 0x170C +#define STEELSERIES_RIVAL_105_PID 0x1814 +#define STEELSERIES_RIVAL_106_PID 0x1816 +#define STEELSERIES_RIVAL_110_PID 0x1729 +#define STEELSERIES_RIVAL_300_PID 0x1710 +#define ACER_PREDATOR_RIVAL_300_PID 0x1714 +#define STEELSERIES_RIVAL_300_CSGO_PID 0x1394 +#define STEELSERIES_RIVAL_300_CSGO_STM32_PID 0x1716 +#define STEELSERIES_RIVAL_300_CSGO_HYPERBEAST_PID 0x171A +#define STEELSERIES_RIVAL_300_DOTA_PID 0x1392 +#define STEELSERIES_RIVAL_300_HP_PID 0x1718 +#define STEELSERIES_RIVAL_300_BLACKOPS_PID 0x1710 +#define STEELSERIES_RIVAL_310_PID 0x1720 +#define STEELSERIES_RIVAL_310_CSGO_HOWL_PID 0x171E +#define STEELSERIES_RIVAL_310_PUBG_PID 0x1736 +#define STEELSERIES_RIVAL_600_PID 0x1724 +#define STEELSERIES_RIVAL_600_DOTA_2_PID 0x172E +#define STEELSERIES_RIVAL_650_PID 0x172B +#define STEELSERIES_RIVAL_650_WIRELESS_PID 0x1726 +#define STEELSERIES_RIVAL_700_PID 0x1700 +#define STEELSERIES_RIVAL_710_PID 0x1730 +#define STEELSERIES_RIVAL_3_OLD_PID 0x1824 +#define STEELSERIES_RIVAL_3_PID 0x184C +#define STEELSERIES_SENSEI_TEN_PID 0x1832 +#define STEELSERIES_SENSEI_TEN_CSGO_NEON_RIDER_PID 0x1834 +#define STEELSERIES_SENSEI_310_PID 0x1722 +/*-----------------------------------------------------*\ +| Headset product IDs | +\*-----------------------------------------------------*/ +#define STEELSERIES_SIBERIA_350_PID 0x1229 +#define STEELSERIES_ARCTIS_5_PID 0x12AA +/*--------------------------------------------------------------*\ +| Mousemat product IDs | +\*--------------------------------------------------------------*/ +#define STEELSERIES_QCK_PRISM_CLOTH_MED_PID 0x150A +#define STEELSERIES_QCK_PRISM_CLOTH_XL_PID 0x150D +#define STEELSERIES_QCK_PRISM_CLOTH_XL_DESTINY_PID 0x151E +#define STEELSERIES_QCK_PRISM_CLOTH_XL_CSGO_NEON_RIDER_PID 0x1514 +#define STEELSERIES_QCK_PRISM_CLOTH_XL_CSGO_NEO_NOIR_PID 0x151C +#define STEELSERIES_QCK_PRISM_CLOTH_3XL_PID 0x1516 +#define STEELSERIES_QCK_PRISM_CLOTH_4XL_PID 0x1518 +/*-----------------------------------------------------*\ +| Keyboard product IDs | +\*-----------------------------------------------------*/ +#define STEELSERIES_APEX_3_PID 0x161A +#define STEELSERIES_APEX_3_TKL_PID 0x1622 +#define STEELSERIES_APEX_5_PID 0x161C +#define STEELSERIES_APEX_7_PID 0x1612 +#define STEELSERIES_APEX_7_TKL_PID 0x1618 +#define STEELSERIES_APEX_PRO_PID 0x1610 +#define STEELSERIES_APEX_PRO_TKL_PID 0x1614 +#define STEELSERIES_APEX_M750_PID 0x0616 +#define STEELSERIES_APEX_OG_PID 0x1202 +#define STEELSERIES_APEX_350_PID 0x1206 + +void DetectSteelSeriesAerox3(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesAerox3Controller* controller = new SteelSeriesAerox3Controller(dev, AEROX_3, info->path); + RGBController_SteelSeriesRival3* rgb_controller = new RGBController_SteelSeriesRival3(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesAerox9(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesAerox9Controller* controller = new SteelSeriesAerox9Controller(dev, AEROX_3, info->path); + RGBController_SteelSeriesRival3* rgb_controller = new RGBController_SteelSeriesRival3(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesApex3Full(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesApexTZoneController* controller = new SteelSeriesApexTZoneController(dev, info->path); + RGBController_SteelSeriesApex3* rgb_controller = new RGBController_SteelSeriesApex3(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesApex3TKL(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesApex8ZoneController* controller = new SteelSeriesApex8ZoneController(dev, info->path); + RGBController_SteelSeriesApex3* rgb_controller = new RGBController_SteelSeriesApex3(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesApex(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesApexController* controller = new SteelSeriesApexController(dev, APEX, info->path); + RGBController_SteelSeriesApex* rgb_controller = new RGBController_SteelSeriesApex(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesApexM(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesApexMController* controller = new SteelSeriesApexMController(dev, APEX_M, info->path); + RGBController_SteelSeriesApex* rgb_controller = new RGBController_SteelSeriesApex(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesApexOld(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesOldApexController* controller = new SteelSeriesOldApexController(dev, APEX_OLD, info->path); + RGBController_SteelSeriesOldApex* rgb_controller = new RGBController_SteelSeriesOldApex(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesHeadset(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesSiberiaController* controller = new SteelSeriesSiberiaController(dev, info->path); + RGBController_SteelSeriesSiberia* rgb_controller = new RGBController_SteelSeriesSiberia(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesMousemat(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesQCKMatController* controller = new SteelSeriesQCKMatController(dev, info->path); + RGBController_SteelSeriesQCKMat* rgb_controller = new RGBController_SteelSeriesQCKMat(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesRival100(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_100, info->path); + RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesRival300(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_300, info->path); + RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesRival600(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_600, info->path); + RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + + +void DetectSteelSeriesRival650(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_650, info->path); + RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesRival700(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesRivalController* controller = new SteelSeriesRivalController(dev, RIVAL_700, info->path); + RGBController_SteelSeriesRival* rgb_controller = new RGBController_SteelSeriesRival(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + + +void DetectSteelSeriesRival3(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesRival3Controller* controller = new SteelSeriesRival3Controller(dev, RIVAL_3, info->path); + RGBController_SteelSeriesRival3* rgb_controller = new RGBController_SteelSeriesRival3(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesSensei(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + if(dev) + { + SteelSeriesSenseiController* controller = new SteelSeriesSenseiController(dev, SENSEI, info->path); + RGBController_SteelSeriesSensei* rgb_controller = new RGBController_SteelSeriesSensei(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +void DetectSteelSeriesArctis5(hid_device_info* info, const std::string& name) +{ + hid_device* dev = hid_open_path(info->path); + + if(dev) + { + SteelSeriesArctis5Controller* controller = new SteelSeriesArctis5Controller(dev, *info); + RGBController_SteelSeriesArctis5* rgb_controller = new RGBController_SteelSeriesArctis5(controller); + rgb_controller->name = name; + ResourceManager::get()->RegisterRGBController(rgb_controller); + } +} + +/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*\ +| Mice | +\*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ +REGISTER_HID_DETECTOR_IPU("SteelSeries Aerox 3 Wired", DetectSteelSeriesAerox3, STEELSERIES_VID, STEELSERIES_AEROX_3_PID, 3, 0xFFC0, 1 ); +REGISTER_HID_DETECTOR_IPU("SteelSeries Aerox 9 Wired", DetectSteelSeriesAerox9, STEELSERIES_VID, STEELSERIES_AEROX_9_PID, 3, 0xFFC0, 1 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 100", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_100_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 100 DotA 2 Edition", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_100_DOTA_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 105", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_105_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 106", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_106_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 110", DetectSteelSeriesRival100, STEELSERIES_VID, STEELSERIES_RIVAL_110_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 300", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_PID, 0 ); +REGISTER_HID_DETECTOR_I("Acer Predator Gaming Mouse (Rival 300)", DetectSteelSeriesRival300, STEELSERIES_VID, ACER_PREDATOR_RIVAL_300_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 CS:GO Fade Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_CSGO_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 CS:GO Fade Edition (stm32)", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_CSGO_STM32_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 CS:GO Hyperbeast Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_CSGO_HYPERBEAST_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 Dota 2 Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_DOTA_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 HP Omen Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_HP_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 300 Black Ops Edition", DetectSteelSeriesRival300, STEELSERIES_VID, STEELSERIES_RIVAL_300_BLACKOPS_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 310", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_RIVAL_310_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 310 CS:GO Howl Edition", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_RIVAL_310_CSGO_HOWL_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 310 PUBG Edition", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_RIVAL_310_PUBG_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 600", DetectSteelSeriesRival600, STEELSERIES_VID, STEELSERIES_RIVAL_600_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 600 Dota 2 Edition", DetectSteelSeriesRival600, STEELSERIES_VID, STEELSERIES_RIVAL_600_DOTA_2_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 650", DetectSteelSeriesRival650, STEELSERIES_VID, STEELSERIES_RIVAL_650_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 650 Wireless", DetectSteelSeriesRival650, STEELSERIES_VID, STEELSERIES_RIVAL_650_WIRELESS_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 700", DetectSteelSeriesRival700, STEELSERIES_VID, STEELSERIES_RIVAL_700_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 710", DetectSteelSeriesRival700, STEELSERIES_VID, STEELSERIES_RIVAL_710_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 3 (Old Firmware)", DetectSteelSeriesRival3, STEELSERIES_VID, STEELSERIES_RIVAL_3_OLD_PID, 3 ); +REGISTER_HID_DETECTOR_I("SteelSeries Rival 3", DetectSteelSeriesRival3, STEELSERIES_VID, STEELSERIES_RIVAL_3_PID, 3 ); +REGISTER_HID_DETECTOR_I("SteelSeries Sensei TEN", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_SENSEI_TEN_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Sensei TEN CS:GO Neon Rider Edition", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_SENSEI_TEN_CSGO_NEON_RIDER_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries Sensei 310", DetectSteelSeriesSensei, STEELSERIES_VID, STEELSERIES_SENSEI_310_PID, 0 ); +/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*\ +| Headsets | +\*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ +REGISTER_HID_DETECTOR_I("SteelSeries Siberia 350", DetectSteelSeriesHeadset, STEELSERIES_VID, STEELSERIES_SIBERIA_350_PID, 3 ); +REGISTER_HID_DETECTOR_I("SteelSeries Arctis 5", DetectSteelSeriesArctis5, STEELSERIES_VID, STEELSERIES_ARCTIS_5_PID, 5 ); +/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*\ +| Mousemats | +\*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ +REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth Medium", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_MED_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth XL", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_XL_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth XL Destiny Ed.", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_XL_DESTINY_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth XL CS:GO Neon Rider Ed.", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_XL_CSGO_NEON_RIDER_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth XL CS:GO Neo Noir Ed.", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_XL_CSGO_NEO_NOIR_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth 3XL", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_3XL_PID, 0 ); +REGISTER_HID_DETECTOR_I("SteelSeries QCK Prism Cloth 4XL", DetectSteelSeriesMousemat, STEELSERIES_VID, STEELSERIES_QCK_PRISM_CLOTH_4XL_PID, 0 ); +/*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*\ +| Keyboards | +\*-------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/ +REGISTER_HID_DETECTOR_I ("SteelSeries Apex 3", DetectSteelSeriesApex3Full, STEELSERIES_VID, STEELSERIES_APEX_3_PID, 3 ); +REGISTER_HID_DETECTOR_IPU("SteelSeries Apex 3 TKL", DetectSteelSeriesApex3TKL, STEELSERIES_VID, STEELSERIES_APEX_3_TKL_PID, 1, 0xFFC0, 1 ); +REGISTER_HID_DETECTOR_I ("SteelSeries Apex 5", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_5_PID, 1 ); +REGISTER_HID_DETECTOR_I ("SteelSeries Apex 7", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_7_PID, 1 ); +REGISTER_HID_DETECTOR_I ("SteelSeries Apex 7 TKL", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_7_TKL_PID, 1 ); +REGISTER_HID_DETECTOR_I ("SteelSeries Apex Pro", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_PRO_PID, 1 ); +REGISTER_HID_DETECTOR_I ("SteelSeries Apex Pro TKL", DetectSteelSeriesApex, STEELSERIES_VID, STEELSERIES_APEX_PRO_TKL_PID, 1 ); +REGISTER_HID_DETECTOR_I ("SteelSeries Apex M750", DetectSteelSeriesApexM, STEELSERIES_VID, STEELSERIES_APEX_M750_PID, 2 ); +REGISTER_HID_DETECTOR_I ("SteelSeries Apex (OG)/Apex Fnatic", DetectSteelSeriesApexOld, STEELSERIES_VID, STEELSERIES_APEX_OG_PID, 0 ); +REGISTER_HID_DETECTOR_I ("SteelSeries Apex 350", DetectSteelSeriesApexOld, STEELSERIES_VID, STEELSERIES_APEX_350_PID, 0 ); diff --git a/scripts/build-udev-rules.sh b/scripts/build-udev-rules.sh index 71129c4b..09340751 100755 --- a/scripts/build-udev-rules.sh +++ b/scripts/build-udev-rules.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash #-----------------------------------------------------------------------------# # This script relies on the preprocessed *.ii and *.s files from # # all "RGBController_" .cpp files and the detectors that call them # @@ -48,10 +48,11 @@ echo -e "$UDEV_HEADER" > "$UDEV_FILE" # # # | callback_function | VID | PID | Name | # #-----------------------------------------------------------------------------# +DLM=$'\x01' echo -e "Creating device list" -HID_LIST=$(grep -hR -e "static HIDDeviceDetector" . | cut -d '(' -f 2- | awk -F , '{ print $2 ":|" $3 "|" $4 "|" $1 "|" }') -HID_WRAPPER_LIST=$(grep -hR -e "static HIDWrappedDeviceDetector" . | cut -d '(' -f 2- | awk -F , '{ print $2 ":|" $3 "|" $4 "|" $1 "|" }') -DUMMY_LIST=$( grep -hR -e DUMMY_DEVICE_DETECTOR ${CONTROLLER_PATH} | cut -d '(' -f 2- | cut -d ')' -f 1 | awk -F , '{ print $2 ":|" $3 "|" $4 "|" $1 "|" }') +HID_LIST=$(grep -hR -e "static HIDDeviceDetector" . | sed -e "s/^.*\(\".*\"\), \(.*\), \([0-9ABCDEFx]*\), \([0-9ABCDEFx]*\),.*,.*,.*;$/\2${DLM}\3${DLM}\4${DLM}\1/g") +HID_WRAPPER_LIST=$(grep -hR -e "static HIDWrappedDeviceDetector" . | sed -e "s/^.*\(\".*\"\), \(.*\), \([0-9ABCDEFx]*\), \([0-9ABCDEFx]*\).*,.*,.*,.*;$/\2${DLM}\3${DLM}\4${DLM}\1/") +DUMMY_LIST=$(grep -hR -e DUMMY_DEVICE_DETECTOR\( ${CONTROLLER_PATH} | sed -e "s/^.*\(\".*\"\), \(.*\), \([0-9ABCDEFx]*\), \([0-9ABCDEFx]*\) ).*/\2${DLM}\3${DLM}\4${DLM}\1/") #Check the output of the hid_list # echo -e "$HID_LIST\n$DUMMY_LIST" >> "hid_list.txt" @@ -85,16 +86,16 @@ do while read -r detector do #Filter the list for all devices that use this detector - text=$(printf '%s\n%s\n%s' "$HID_LIST" "$HID_WRAPPER_LIST" "$DUMMY_LIST" | grep ${detector} | cut -d: -f 2- | sed -e 's/"//g') + text=$(printf '%s\n%s\n%s' "$HID_LIST" "$HID_WRAPPER_LIST" "$DUMMY_LIST" | grep ${detector} | sed -e 's/"//g') #Replace the detector string with the list of devices detectors=${detectors/${detector}/${text}} #Add a section heading for each RGBcontroller_ - printf "#---------------------------------------------------------------#\n# %s - %s\n#---------------------------------------------------------------#\n" "$name" "$detector" >> "$UDEV_FILE" + printf "${UDEV_LINE}# %s - %s\n${UDEV_LINE}" "$name" "$detector" >> "$UDEV_FILE" while read -r device do - IFS='|' read null vid pid device_name null <<<"$device" + IFS="${DLM}" read null vid pid device_name null <<<"$device" #Remove leading hex signifier from $vid and $pid vid=${vid/0x/}