diff --git a/Controllers/RedragonController/RedragonControllerDetect.cpp b/Controllers/RedragonController/RedragonControllerDetect.cpp index de4ee55f..2306de83 100644 --- a/Controllers/RedragonController/RedragonControllerDetect.cpp +++ b/Controllers/RedragonController/RedragonControllerDetect.cpp @@ -1,8 +1,8 @@ #include "RedragonK556Controller.h" #include "RedragonM711Controller.h" #include "RGBController.h" +#include "RGBController_RedragonK556.h" #include "RGBController_RedragonM711.h" -#include "RGBController_Dummy.h" #include #include @@ -88,10 +88,8 @@ void DetectRedragonControllers(std::vector& rgb_controllers) case DEVICE_TYPE_KEYBOARD: { RedragonK556Controller* controller = new RedragonK556Controller(dev); - RGBController_Dummy* rgb_controller = new RGBController_Dummy(); - rgb_controller->name = device_list[device_idx].name; - + RGBController_RedragonK556* rgb_controller = new RGBController_RedragonK556(controller); rgb_controllers.push_back(rgb_controller); } break; diff --git a/Controllers/RedragonController/RedragonK556Controller.cpp b/Controllers/RedragonController/RedragonK556Controller.cpp index 44faa48a..4e433998 100644 --- a/Controllers/RedragonController/RedragonK556Controller.cpp +++ b/Controllers/RedragonController/RedragonK556Controller.cpp @@ -5,26 +5,6 @@ RedragonK556Controller::RedragonK556Controller(hid_device* dev_handle) { dev = dev_handle; - - unsigned char color_data[0x36 * 7]; - - SendKeyboardBegin(); - SendKeyboardMode(20); - - for(int i = 0; i < 0x36 * 7; i += 3) - { - color_data[i] = 0x00; - color_data[i+1] = 0xff; - color_data[i+2] = 0x00; - } - - SetKeyboardColors - ( - color_data, - 0x36 * 6 - ); - - SendKeyboardEnd(); } void RedragonK556Controller::SetKeyboardColors diff --git a/Controllers/RedragonController/RedragonK556Controller.h b/Controllers/RedragonController/RedragonK556Controller.h index 8fd8b3e6..abf99227 100644 --- a/Controllers/RedragonController/RedragonK556Controller.h +++ b/Controllers/RedragonController/RedragonK556Controller.h @@ -50,9 +50,6 @@ public: unsigned char * color_data, unsigned int size ); - -private: - hid_device* dev; void SendKeyboardBegin(); @@ -70,14 +67,6 @@ private: void SendKeyboardEnd(); - void SendMouseApply(); - - void SendMouseMode - ( - unsigned char mode, - unsigned char speed, - unsigned char red, - unsigned char green, - unsigned char blue - ); +private: + hid_device* dev; }; diff --git a/OpenRGB.pro b/OpenRGB.pro index 24843701..e7217538 100644 --- a/OpenRGB.pro +++ b/OpenRGB.pro @@ -145,6 +145,7 @@ SOURCES += \ RGBController/RGBController_PatriotViper.cpp \ RGBController/RGBController_Polychrome.cpp \ RGBController/RGBController_PoseidonZRGB.cpp \ + RGBController/RGBController_RedragonK556.cpp \ RGBController/RGBController_RedragonM711.cpp \ RGBController/RGBController_RGBFusion.cpp \ RGBController/RGBController_RGBFusion2USB.cpp \ @@ -212,6 +213,7 @@ HEADERS += \ RGBController/RGBController_PatriotViper.h \ RGBController/RGBController_Polychrome.h \ RGBController/RGBController_PoseidonZRGB.h \ + RGBController/RGBController_RedragonK556.h \ RGBController/RGBController_RedragonM711.h \ RGBController/RGBController_RGBFusion.h \ RGBController/RGBController_RGBFusion2USB.h \ diff --git a/RGBController/RGBController_RedragonK556.cpp b/RGBController/RGBController_RedragonK556.cpp new file mode 100644 index 00000000..e94582c5 --- /dev/null +++ b/RGBController/RGBController_RedragonK556.cpp @@ -0,0 +1,103 @@ +/*-----------------------------------------*\ +| RGBController_RedragonK556.cpp | +| | +| Generic RGB Interface for Redragon K556 | +| Devarajas RGB Keyboard | +| | +| Adam Honse (CalcProgrammer1) 3/25/2020 | +\*-----------------------------------------*/ + +#include "RGBController_RedragonK556.h" + +RGBController_RedragonK556::RGBController_RedragonK556(RedragonK556Controller* redragon_ptr) +{ + redragon = redragon_ptr; + + name = "Redragon K556 Devarajas"; + type = DEVICE_TYPE_KEYBOARD; + description = "Redragon K556 Device"; + + mode Custom; + Custom.name = "Custom"; + Custom.value = REDRAGON_K556_MODE_CUSTOM; + Custom.flags = MODE_FLAG_HAS_PER_LED_COLOR; + Custom.color_mode = MODE_COLORS_PER_LED; + modes.push_back(Custom); + + SetupZones(); +} + +void RGBController_RedragonK556::SetupZones() +{ + zone new_zone; + + new_zone.name = "Keyboard"; + new_zone.type = ZONE_TYPE_MATRIX; + new_zone.leds_min = 126; + new_zone.leds_max = 126; + new_zone.leds_count = 126; + + zones.push_back(new_zone); + + for(int led_idx = 0; led_idx < 126; led_idx++) + { + led new_led; + + new_led.name = "Keyboard LED "; + new_led.name.append(std::to_string(led_idx)); + + leds.push_back(new_led); + } + + SetupColors(); +} + +void RGBController_RedragonK556::ResizeZone(int /*zone*/, int /*new_size*/) +{ + /*---------------------------------------------------------*\ + | This device does not support resizing zones | + \*---------------------------------------------------------*/ +} + +void RGBController_RedragonK556::UpdateLEDs() +{ + unsigned char color_data[7*0x36]; + + for(int led_idx = 0; led_idx < 126; led_idx++) + { + color_data[(3 * led_idx) + 0] = RGBGetRValue(colors[led_idx]); + color_data[(3 * led_idx) + 1] = RGBGetGValue(colors[led_idx]); + color_data[(3 * led_idx) + 2] = RGBGetBValue(colors[led_idx]); + } + + redragon->SendKeyboardBegin(); + redragon->SendKeyboardMode(20); + + redragon->SetKeyboardColors + ( + color_data, + 0x36 * 7 + ); + + redragon->SendKeyboardEnd(); +} + +void RGBController_RedragonK556::UpdateZoneLEDs(int /*zone*/) +{ + UpdateLEDs(); +} + +void RGBController_RedragonK556::UpdateSingleLED(int /*led*/) +{ + UpdateLEDs(); +} + +void RGBController_RedragonK556::SetCustomMode() +{ + +} + +void RGBController_RedragonK556::UpdateMode() +{ + UpdateLEDs(); +} diff --git a/RGBController/RGBController_RedragonK556.h b/RGBController/RGBController_RedragonK556.h new file mode 100644 index 00000000..93d8f2f9 --- /dev/null +++ b/RGBController/RGBController_RedragonK556.h @@ -0,0 +1,32 @@ +/*-----------------------------------------*\ +| RGBController_RedragonK556.h | +| | +| Generic RGB Interface for Redragon K556 | +| Devarajas RGB Keyboard | +| | +| Adam Honse (CalcProgrammer1) 3/25/2020 | +\*-----------------------------------------*/ + +#pragma once +#include "RGBController.h" +#include "RedragonK556Controller.h" + +class RGBController_RedragonK556 : public RGBController +{ +public: + RGBController_RedragonK556(RedragonK556Controller* redragon_ptr); + + void SetupZones(); + + void ResizeZone(int zone, int new_size); + + void UpdateLEDs(); + void UpdateZoneLEDs(int zone); + void UpdateSingleLED(int led); + + void SetCustomMode(); + void UpdateMode(); + +private: + RedragonK556Controller* redragon; +}; \ No newline at end of file diff --git a/RGBController/RGBController_RedragonM711.cpp b/RGBController/RGBController_RedragonM711.cpp index fc8cebec..3dccfd04 100644 --- a/RGBController/RGBController_RedragonM711.cpp +++ b/RGBController/RGBController_RedragonM711.cpp @@ -1,5 +1,5 @@ /*-----------------------------------------*\ -| RGBController_RedragonM711.h | +| RGBController_RedragonM711.cpp | | | | Generic RGB Interface for Redragon M711 | | Cobra RGB Mouse |