diff --git a/OpenRGB.cpp b/OpenRGB.cpp index 4148268b1..902184317 100644 --- a/OpenRGB.cpp +++ b/OpenRGB.cpp @@ -334,7 +334,7 @@ void DetectRGBControllers(void) DetectAMDWraithPrismControllers(rgb_controllers); DetectMSI3ZoneControllers(rgb_controllers); //DetectPoseidonZRGBControllers(rgb_controllers); - //DetectHyperXKeyboardControllers(rgb_controllers); + DetectHyperXKeyboardControllers(rgb_controllers); //DetectCorsairKeyboardControllers(rgb_controllers); DetectCorsairLightingNodeControllers(rgb_controllers); DetectThermaltakeRiingControllers(rgb_controllers); diff --git a/OpenRGB.pro b/OpenRGB.pro index 986ae6c00..f3d26abf1 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -40,7 +40,7 @@ INCLUDEPATH += \ Controllers/Hue2Controller/ \ Controllers/HuePlusController/ \ Controllers/HyperXController/ \ -# Controllers/HyperXKeyboardController/ \ + Controllers/HyperXKeyboardController/ \ Controllers/LEDStripController/ \ Controllers/MSI3ZoneController/ \ Controllers/MSIRGBController/ \ @@ -97,8 +97,8 @@ SOURCES += \ Controllers/HuePlusController/HuePlusControllerDetect.cpp \ Controllers/HyperXController/HyperXController.cpp \ Controllers/HyperXController/HyperXControllerDetect.cpp \ -# Controllers/HyperXKeyboardController/HyperXKeyboardController.cpp \ -# Controllers/HyperXKeyboardController/HyperXKeyboardControllerDetect.cpp \ + Controllers/HyperXKeyboardController/HyperXKeyboardController.cpp \ + Controllers/HyperXKeyboardController/HyperXKeyboardControllerDetect.cpp \ Controllers/LEDStripController/LEDStripController.cpp \ Controllers/LEDStripController/LEDStripControllerDetect.cpp \ Controllers/MSI3ZoneController/MSI3ZoneController.cpp \ @@ -133,7 +133,7 @@ SOURCES += \ RGBController/RGBController_Hue2.cpp \ RGBController/RGBController_HuePlus.cpp \ RGBController/RGBController_HyperX.cpp \ -# RGBController/RGBController_HyperXKeyboard.cpp \ + RGBController/RGBController_HyperXKeyboard.cpp \ RGBController/RGBController_E131.cpp \ RGBController/RGBController_LEDStrip.cpp \ RGBController/RGBController_MSI3Zone.cpp \ diff --git a/RGBController/RGBController_HyperXKeyboard.cpp b/RGBController/RGBController_HyperXKeyboard.cpp index 6ffc8ad90..2c9ceb345 100644 --- a/RGBController/RGBController_HyperXKeyboard.cpp +++ b/RGBController/RGBController_HyperXKeyboard.cpp @@ -233,31 +233,7 @@ RGBController_HyperXKeyboard::RGBController_HyperXKeyboard(HyperXKeyboardControl Breathing.colors.resize(2); modes.push_back(Breathing); - colors.resize(126); - - unsigned int led_idx = 0; - for(unsigned int zone_idx = 0; zone_idx < 3; zone_idx++) - { - zone new_zone; - new_zone.name.append(zone_names[zone_idx]); - - std::vector new_zone_map; - - for(unsigned int led_count = 0; led_count < zone_sizes[zone_idx]; led_count++) - { - led new_led; - new_led.name.append(led_names[led_idx]); - leds.push_back(new_led); - - new_zone_map.push_back(led_idx); - - led_idx++; - } - - new_zone.map.push_back(new_zone_map); - - zones.push_back(new_zone); - } + SetupZones(); /*-----------------------------------------------------*\ | The Corsair Lighting Node Pro requires a packet within| @@ -278,6 +254,41 @@ RGBController_HyperXKeyboard::~RGBController_HyperXKeyboard() } +void RGBController_HyperXKeyboard::SetupZones() +{ + /*---------------------------------------------------------*\ + | Set up zones | + \*---------------------------------------------------------*/ + unsigned int total_led_count = 0; + for(unsigned int zone_idx = 0; zone_idx < 3; zone_idx++) + { + zone new_zone; + new_zone.name = zone_names[zone_idx]; + new_zone.leds_min = zone_sizes[zone_idx]; + new_zone.leds_max = zone_sizes[zone_idx]; + new_zone.leds_count = zone_sizes[zone_idx]; + zones.push_back(new_zone); + + total_led_count += zone_sizes[zone_idx]; + } + + for(unsigned int led_idx = 0; led_idx < total_led_count; led_idx++) + { + led new_led; + new_led.name = led_names[led_idx]; + leds.push_back(new_led); + } + + SetupColors(); +} + +void RGBController_HyperXKeyboard::ResizeZone(int /*zone*/, int /*new_size*/) +{ + /*---------------------------------------------------------*\ + | This device does not support resizing zones | + \*---------------------------------------------------------*/ +} + void RGBController_HyperXKeyboard::UpdateLEDs() { if(active_mode == 0) diff --git a/RGBController/RGBController_HyperXKeyboard.h b/RGBController/RGBController_HyperXKeyboard.h index 5a936cdc5..41b00e678 100644 --- a/RGBController/RGBController_HyperXKeyboard.h +++ b/RGBController/RGBController_HyperXKeyboard.h @@ -16,6 +16,11 @@ class RGBController_HyperXKeyboard : public RGBController public: RGBController_HyperXKeyboard(HyperXKeyboardController* hyperx_ptr); ~RGBController_HyperXKeyboard(); + + void SetupZones(); + + void ResizeZone(int zone, int new_size); + void UpdateLEDs(); void UpdateZoneLEDs(int zone); void UpdateSingleLED(int led);