Skip to content

Commit 68960b7

Browse files
Add RGBController for Redragon K556 keyboard, only supports custom mode for now
1 parent ad85efc commit 68960b7

File tree

7 files changed

+142
-38
lines changed

7 files changed

+142
-38
lines changed

Controllers/RedragonController/RedragonControllerDetect.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#include "RedragonK556Controller.h"
22
#include "RedragonM711Controller.h"
33
#include "RGBController.h"
4+
#include "RGBController_RedragonK556.h"
45
#include "RGBController_RedragonM711.h"
5-
#include "RGBController_Dummy.h"
66
#include <vector>
77
#include <hidapi/hidapi.h>
88

@@ -88,10 +88,8 @@ void DetectRedragonControllers(std::vector<RGBController*>& rgb_controllers)
8888
case DEVICE_TYPE_KEYBOARD:
8989
{
9090
RedragonK556Controller* controller = new RedragonK556Controller(dev);
91-
RGBController_Dummy* rgb_controller = new RGBController_Dummy();
9291

93-
rgb_controller->name = device_list[device_idx].name;
94-
92+
RGBController_RedragonK556* rgb_controller = new RGBController_RedragonK556(controller);
9593
rgb_controllers.push_back(rgb_controller);
9694
}
9795
break;

Controllers/RedragonController/RedragonK556Controller.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,6 @@
55
RedragonK556Controller::RedragonK556Controller(hid_device* dev_handle)
66
{
77
dev = dev_handle;
8-
9-
unsigned char color_data[0x36 * 7];
10-
11-
SendKeyboardBegin();
12-
SendKeyboardMode(20);
13-
14-
for(int i = 0; i < 0x36 * 7; i += 3)
15-
{
16-
color_data[i] = 0x00;
17-
color_data[i+1] = 0xff;
18-
color_data[i+2] = 0x00;
19-
}
20-
21-
SetKeyboardColors
22-
(
23-
color_data,
24-
0x36 * 6
25-
);
26-
27-
SendKeyboardEnd();
288
}
299

3010
void RedragonK556Controller::SetKeyboardColors

Controllers/RedragonController/RedragonK556Controller.h

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,6 @@ class RedragonK556Controller
5050
unsigned char * color_data,
5151
unsigned int size
5252
);
53-
54-
private:
55-
hid_device* dev;
5653

5754
void SendKeyboardBegin();
5855

@@ -70,14 +67,6 @@ class RedragonK556Controller
7067

7168
void SendKeyboardEnd();
7269

73-
void SendMouseApply();
74-
75-
void SendMouseMode
76-
(
77-
unsigned char mode,
78-
unsigned char speed,
79-
unsigned char red,
80-
unsigned char green,
81-
unsigned char blue
82-
);
70+
private:
71+
hid_device* dev;
8372
};

OpenRGB.pro

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ SOURCES += \
145145
RGBController/RGBController_PatriotViper.cpp \
146146
RGBController/RGBController_Polychrome.cpp \
147147
RGBController/RGBController_PoseidonZRGB.cpp \
148+
RGBController/RGBController_RedragonK556.cpp \
148149
RGBController/RGBController_RedragonM711.cpp \
149150
RGBController/RGBController_RGBFusion.cpp \
150151
RGBController/RGBController_RGBFusion2USB.cpp \
@@ -212,6 +213,7 @@ HEADERS += \
212213
RGBController/RGBController_PatriotViper.h \
213214
RGBController/RGBController_Polychrome.h \
214215
RGBController/RGBController_PoseidonZRGB.h \
216+
RGBController/RGBController_RedragonK556.h \
215217
RGBController/RGBController_RedragonM711.h \
216218
RGBController/RGBController_RGBFusion.h \
217219
RGBController/RGBController_RGBFusion2USB.h \
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
/*-----------------------------------------*\
2+
| RGBController_RedragonK556.cpp |
3+
| |
4+
| Generic RGB Interface for Redragon K556 |
5+
| Devarajas RGB Keyboard |
6+
| |
7+
| Adam Honse (CalcProgrammer1) 3/25/2020 |
8+
\*-----------------------------------------*/
9+
10+
#include "RGBController_RedragonK556.h"
11+
12+
RGBController_RedragonK556::RGBController_RedragonK556(RedragonK556Controller* redragon_ptr)
13+
{
14+
redragon = redragon_ptr;
15+
16+
name = "Redragon K556 Devarajas";
17+
type = DEVICE_TYPE_KEYBOARD;
18+
description = "Redragon K556 Device";
19+
20+
mode Custom;
21+
Custom.name = "Custom";
22+
Custom.value = REDRAGON_K556_MODE_CUSTOM;
23+
Custom.flags = MODE_FLAG_HAS_PER_LED_COLOR;
24+
Custom.color_mode = MODE_COLORS_PER_LED;
25+
modes.push_back(Custom);
26+
27+
SetupZones();
28+
}
29+
30+
void RGBController_RedragonK556::SetupZones()
31+
{
32+
zone new_zone;
33+
34+
new_zone.name = "Keyboard";
35+
new_zone.type = ZONE_TYPE_MATRIX;
36+
new_zone.leds_min = 126;
37+
new_zone.leds_max = 126;
38+
new_zone.leds_count = 126;
39+
40+
zones.push_back(new_zone);
41+
42+
for(int led_idx = 0; led_idx < 126; led_idx++)
43+
{
44+
led new_led;
45+
46+
new_led.name = "Keyboard LED ";
47+
new_led.name.append(std::to_string(led_idx));
48+
49+
leds.push_back(new_led);
50+
}
51+
52+
SetupColors();
53+
}
54+
55+
void RGBController_RedragonK556::ResizeZone(int /*zone*/, int /*new_size*/)
56+
{
57+
/*---------------------------------------------------------*\
58+
| This device does not support resizing zones |
59+
\*---------------------------------------------------------*/
60+
}
61+
62+
void RGBController_RedragonK556::UpdateLEDs()
63+
{
64+
unsigned char color_data[7*0x36];
65+
66+
for(int led_idx = 0; led_idx < 126; led_idx++)
67+
{
68+
color_data[(3 * led_idx) + 0] = RGBGetRValue(colors[led_idx]);
69+
color_data[(3 * led_idx) + 1] = RGBGetGValue(colors[led_idx]);
70+
color_data[(3 * led_idx) + 2] = RGBGetBValue(colors[led_idx]);
71+
}
72+
73+
redragon->SendKeyboardBegin();
74+
redragon->SendKeyboardMode(20);
75+
76+
redragon->SetKeyboardColors
77+
(
78+
color_data,
79+
0x36 * 7
80+
);
81+
82+
redragon->SendKeyboardEnd();
83+
}
84+
85+
void RGBController_RedragonK556::UpdateZoneLEDs(int /*zone*/)
86+
{
87+
UpdateLEDs();
88+
}
89+
90+
void RGBController_RedragonK556::UpdateSingleLED(int /*led*/)
91+
{
92+
UpdateLEDs();
93+
}
94+
95+
void RGBController_RedragonK556::SetCustomMode()
96+
{
97+
98+
}
99+
100+
void RGBController_RedragonK556::UpdateMode()
101+
{
102+
UpdateLEDs();
103+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*-----------------------------------------*\
2+
| RGBController_RedragonK556.h |
3+
| |
4+
| Generic RGB Interface for Redragon K556 |
5+
| Devarajas RGB Keyboard |
6+
| |
7+
| Adam Honse (CalcProgrammer1) 3/25/2020 |
8+
\*-----------------------------------------*/
9+
10+
#pragma once
11+
#include "RGBController.h"
12+
#include "RedragonK556Controller.h"
13+
14+
class RGBController_RedragonK556 : public RGBController
15+
{
16+
public:
17+
RGBController_RedragonK556(RedragonK556Controller* redragon_ptr);
18+
19+
void SetupZones();
20+
21+
void ResizeZone(int zone, int new_size);
22+
23+
void UpdateLEDs();
24+
void UpdateZoneLEDs(int zone);
25+
void UpdateSingleLED(int led);
26+
27+
void SetCustomMode();
28+
void UpdateMode();
29+
30+
private:
31+
RedragonK556Controller* redragon;
32+
};

RGBController/RGBController_RedragonM711.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*-----------------------------------------*\
2-
| RGBController_RedragonM711.h |
2+
| RGBController_RedragonM711.cpp |
33
| |
44
| Generic RGB Interface for Redragon M711 |
55
| Cobra RGB Mouse |

0 commit comments

Comments
 (0)