Use generic interfaces for Razer Chroma SDK, get mouse and Chroma HDK working
This commit is contained in:
parent
0a61e38ee1
commit
c8a1363b35
3 changed files with 175 additions and 37 deletions
|
|
@ -34,8 +34,9 @@ RGBController_RazerChromaSDK::RGBController_RazerChromaSDK(unsigned int device_t
|
|||
|
||||
zone* new_zone = new zone();
|
||||
new_zone->name = device_list[i]->zones[zone_id]->name;
|
||||
new_zone->type = device_list[i]->zones[zone_id]->type;
|
||||
|
||||
std::vector<int>* new_zone_map = new std::vector<int>();
|
||||
std::vector<int> new_zone_map;
|
||||
|
||||
for (int led_id = 0; led_id < device_list[i]->zones[zone_id]->leds; led_id++)
|
||||
{
|
||||
|
|
@ -46,11 +47,13 @@ RGBController_RazerChromaSDK::RGBController_RazerChromaSDK(unsigned int device_t
|
|||
new_led->name = device_list[i]->zones[zone_id]->name;
|
||||
leds.push_back(*new_led);
|
||||
|
||||
new_zone_map->push_back(led_count);
|
||||
new_zone_map.push_back(led_count);
|
||||
|
||||
led_count++;
|
||||
}
|
||||
|
||||
new_zone->map.push_back(new_zone_map);
|
||||
|
||||
zones.push_back(*new_zone);
|
||||
}
|
||||
}
|
||||
|
|
@ -114,17 +117,72 @@ void RGBController_RazerChromaSDK::UpdateLEDs()
|
|||
{
|
||||
switch (device->type)
|
||||
{
|
||||
case RAZER_FIREFLY_CHROMA:
|
||||
case RAZER_GENERIC_MOUSE:
|
||||
{
|
||||
//Firefly Chroma
|
||||
ChromaSDK::Mousepad::CUSTOM_EFFECT_TYPE FireflyEffect = {};
|
||||
ChromaSDK::Mouse::CUSTOM_EFFECT_TYPE2 MouseEffect = {};
|
||||
|
||||
std::vector<int> left_zone_map = zones[0].map[0];
|
||||
|
||||
for (int left = 1; left < 8; left++)
|
||||
{
|
||||
MouseEffect.Color[left][0] = colors[left_zone_map[left - 1]];
|
||||
}
|
||||
|
||||
std::vector<int> right_zone_map = zones[1].map[0];
|
||||
|
||||
for (int right = 1; right < 8; right++)
|
||||
{
|
||||
MouseEffect.Color[right][6] = colors[right_zone_map[right - 1]];
|
||||
}
|
||||
|
||||
std::vector<int> bottom_zone_map = zones[2].map[0];
|
||||
|
||||
for (int bottom = 1; bottom < 6; bottom++)
|
||||
{
|
||||
MouseEffect.Color[8][bottom] = colors[bottom_zone_map[bottom - 1]];
|
||||
}
|
||||
|
||||
std::vector<int> scroll_wheel_zone_map = zones[3].map[0];
|
||||
|
||||
MouseEffect.Color[2][3] = colors[scroll_wheel_zone_map[0]];
|
||||
|
||||
std::vector<int> logo_zone_map = zones[4].map[0];
|
||||
|
||||
MouseEffect.Color[7][3] = colors[logo_zone_map[0]];
|
||||
|
||||
std::vector<int> numpad_backlight_zone_map = zones[5].map[0];
|
||||
|
||||
MouseEffect.Color[4][3] = colors[numpad_backlight_zone_map[0]];
|
||||
|
||||
CreateMouseEffect(ChromaSDK::Mouse::CHROMA_CUSTOM2, &MouseEffect, NULL);
|
||||
}
|
||||
break;
|
||||
|
||||
case RAZER_GENERIC_MOUSEPAD:
|
||||
{
|
||||
ChromaSDK::Mousepad::CUSTOM_EFFECT_TYPE MousepadEffect = {};
|
||||
|
||||
for (int x = 0; x < 15; x++)
|
||||
{
|
||||
FireflyEffect.Color[x] = colors[x];
|
||||
MousepadEffect.Color[x] = colors[x];
|
||||
}
|
||||
|
||||
CreateMousepadEffect(ChromaSDK::Mousepad::CHROMA_CUSTOM, &FireflyEffect, NULL);
|
||||
CreateMousepadEffect(ChromaSDK::Mousepad::CHROMA_CUSTOM, &MousepadEffect, NULL);
|
||||
}
|
||||
break;
|
||||
|
||||
case RAZER_CHROMA_HDK:
|
||||
{
|
||||
ChromaSDK::CUSTOM_EFFECT_TYPE ChromaBoxEffect = {};
|
||||
|
||||
for (int x = 0; x < 16; x++)
|
||||
{
|
||||
for (int y = 0; y < 4; y++)
|
||||
{
|
||||
ChromaBoxEffect.Color[y][x] = colors[(y*16) + x];
|
||||
}
|
||||
}
|
||||
CreateEffect(ChromaSDK::CHROMABOX, ChromaSDK::CHROMA_CUSTOM, &ChromaBoxEffect, NULL);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,29 +26,14 @@ typedef RZRESULT(*CREATEMOUSEPADEFFECT)(ChromaSDK::Mousepad::EFFECT_TYPE Effect,
|
|||
typedef RZRESULT(*CREATEHEADSETEFFECT)(ChromaSDK::Headset::EFFECT_TYPE Effect, PRZPARAM pParam, RZEFFECTID* pEffectId);
|
||||
typedef RZRESULT(*CREATECHROMALINKEFFECT)(ChromaSDK::ChromaLink::EFFECT_TYPE Effect, PRZPARAM pParam, RZEFFECTID* pEffectId);
|
||||
|
||||
#define RAZER_MAX_ZONES 4
|
||||
#define RAZER_NUM_DEVICES 2
|
||||
#define RAZER_MAX_ZONES 6
|
||||
#define RAZER_NUM_DEVICES 3
|
||||
|
||||
enum
|
||||
{
|
||||
RAZER_NO_DEVICE,
|
||||
RAZER_BLACKWIDOW_CHROMA,
|
||||
RAZER_DEATHSTALKER_CHROMA,
|
||||
RAZER_ORNATA_CHROMA,
|
||||
RAZER_BLADE_STEALTH,
|
||||
RAZER_BLADE_PRO,
|
||||
RAZER_TARTARUS_CHROMA,
|
||||
RAZER_DEATHADDER_CHROMA,
|
||||
RAZER_DEATHADDER_ELITE,
|
||||
RAZER_NAGA_CHROMA,
|
||||
RAZER_DIAMONDBACK_CHROMA,
|
||||
RAZER_MAMBA_TOURNAMENT_EDITION_CHROMA,
|
||||
RAZER_FIREFLY_CHROMA,
|
||||
RAZER_GOLIATHUS_EXTENDED_CHROMA,
|
||||
RAZER_MUG_HOLDER,
|
||||
RAZER_CORE,
|
||||
RAZER_KRAKEN_V1,
|
||||
RAZER_KRAKEN_V2,
|
||||
RAZER_GENERIC_KEYBOARD,
|
||||
RAZER_GENERIC_MOUSE,
|
||||
RAZER_GENERIC_MOUSEPAD,
|
||||
RAZER_CHROMA_HDK
|
||||
};
|
||||
|
||||
|
|
@ -79,25 +64,110 @@ typedef struct
|
|||
} razer_device;
|
||||
|
||||
/*------------------------------------------------------------ *\
|
||||
| Razer Firefly |
|
||||
| Razer Generic Mouse |
|
||||
| |
|
||||
| Zone "Left" |
|
||||
| Linear |
|
||||
| 7 LEDs |
|
||||
| |
|
||||
| Zone "Right" |
|
||||
| Linear |
|
||||
| 7 LEDs |
|
||||
| |
|
||||
| Zone "Bottom" |
|
||||
| Linear |
|
||||
| 5 LEDs |
|
||||
| |
|
||||
| Zone "Scroll Wheel" |
|
||||
| Single |
|
||||
| 1 LED |
|
||||
| |
|
||||
| Zone "Logo" |
|
||||
| Single |
|
||||
| 1 LED |
|
||||
| |
|
||||
| Zone "Numpad/Backlight" |
|
||||
| Single |
|
||||
| 1 LED |
|
||||
\*-------------------------------------------------------------*/
|
||||
static const razer_zone mouse_left_zone =
|
||||
{
|
||||
"Left LED Strip",
|
||||
ZONE_TYPE_LINEAR,
|
||||
7
|
||||
};
|
||||
|
||||
static const razer_zone mouse_right_zone =
|
||||
{
|
||||
"Right LED Strip",
|
||||
ZONE_TYPE_LINEAR,
|
||||
7
|
||||
};
|
||||
|
||||
static const razer_zone mouse_bottom_zone =
|
||||
{
|
||||
"Bottom LED Strip",
|
||||
ZONE_TYPE_LINEAR,
|
||||
5
|
||||
};
|
||||
|
||||
static const razer_zone mouse_scroll_wheel_zone =
|
||||
{
|
||||
"Scroll Wheel",
|
||||
ZONE_TYPE_SINGLE,
|
||||
1
|
||||
};
|
||||
|
||||
static const razer_zone mouse_logo_zone =
|
||||
{
|
||||
"Logo",
|
||||
ZONE_TYPE_SINGLE,
|
||||
1
|
||||
};
|
||||
|
||||
static const razer_zone mouse_numpad_backlight_zone =
|
||||
{
|
||||
"Numpad/Backlight",
|
||||
ZONE_TYPE_SINGLE,
|
||||
1
|
||||
};
|
||||
|
||||
static const razer_device mouse_device =
|
||||
{
|
||||
"Razer Generic Mouse",
|
||||
RAZER_GENERIC_MOUSE,
|
||||
{
|
||||
&mouse_left_zone,
|
||||
&mouse_right_zone,
|
||||
&mouse_bottom_zone,
|
||||
&mouse_scroll_wheel_zone,
|
||||
&mouse_logo_zone,
|
||||
&mouse_numpad_backlight_zone
|
||||
}
|
||||
};
|
||||
|
||||
/*------------------------------------------------------------ *\
|
||||
| Razer Generic Mousepad (Firefly, Mug Holder) |
|
||||
| |
|
||||
| Zone "LED Strip" |
|
||||
| Linear |
|
||||
| 15 LEDs |
|
||||
\*-------------------------------------------------------------*/
|
||||
static const razer_zone firefly_zone =
|
||||
static const razer_zone mousepad_zone =
|
||||
{
|
||||
"LED Strip",
|
||||
ZONE_TYPE_LINEAR,
|
||||
15
|
||||
};
|
||||
|
||||
static const razer_device firefly_device =
|
||||
static const razer_device mousepad_device =
|
||||
{
|
||||
"Razer Firefly",
|
||||
RAZER_FIREFLY_CHROMA,
|
||||
"Razer Generic Mousepad",
|
||||
RAZER_GENERIC_MOUSEPAD,
|
||||
{
|
||||
&firefly_zone,
|
||||
&mousepad_zone,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
|
|
@ -138,13 +208,16 @@ static const razer_device chromahdk_device =
|
|||
&chromahdk_zone,
|
||||
&chromahdk_zone,
|
||||
&chromahdk_zone,
|
||||
&chromahdk_zone
|
||||
&chromahdk_zone,
|
||||
NULL,
|
||||
NULL
|
||||
}
|
||||
};
|
||||
|
||||
static const razer_device* device_list[RAZER_NUM_DEVICES] =
|
||||
{
|
||||
&firefly_device,
|
||||
&mouse_device,
|
||||
&mousepad_device,
|
||||
&chromahdk_device
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -40,6 +40,8 @@ typedef RZRESULT(*CREATECHROMALINKEFFECT)(ChromaSDK::ChromaLink::EFFECT_TYPE Eff
|
|||
|
||||
void DetectRazerChromaSDKControllers(std::vector<RGBController*>& rgb_controllers)
|
||||
{
|
||||
RGBController_RazerChromaSDK* razer_rgb;
|
||||
|
||||
// Dynamically loads the Chroma SDK library.
|
||||
hModule = LoadLibrary(CHROMASDKDLL);
|
||||
if (hModule)
|
||||
|
|
@ -52,11 +54,16 @@ void DetectRazerChromaSDKControllers(std::vector<RGBController*>& rgb_controller
|
|||
}
|
||||
}
|
||||
|
||||
RGBController_RazerChromaSDK* razer_rgb = new RGBController_RazerChromaSDK(RAZER_CHROMA_HDK, &hModule);
|
||||
|
||||
razer_rgb = new RGBController_RazerChromaSDK(RAZER_GENERIC_MOUSE, &hModule);
|
||||
|
||||
rgb_controllers.push_back(razer_rgb);
|
||||
|
||||
razer_rgb = new RGBController_RazerChromaSDK(RAZER_FIREFLY_CHROMA, &hModule);
|
||||
razer_rgb = new RGBController_RazerChromaSDK(RAZER_GENERIC_MOUSEPAD, &hModule);
|
||||
|
||||
rgb_controllers.push_back(razer_rgb);
|
||||
|
||||
razer_rgb = new RGBController_RazerChromaSDK(RAZER_CHROMA_HDK, &hModule);
|
||||
|
||||
rgb_controllers.push_back(razer_rgb);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue