Store name in EVisionKeyboardControllers to avoid setting it in detectors

This commit is contained in:
Adam Honse 2025-08-07 23:22:41 -05:00
parent d7f0872690
commit abe7068197
8 changed files with 259 additions and 258 deletions

View file

@ -14,10 +14,11 @@
#include "EVisionKeyboardController.h"
#include "StringUtils.h"
EVisionKeyboardController::EVisionKeyboardController(hid_device* dev_handle, const char* path)
EVisionKeyboardController::EVisionKeyboardController(hid_device* dev_handle, const char* path, std::string dev_name)
{
dev = dev_handle;
location = path;
name = dev_name;
}
EVisionKeyboardController::~EVisionKeyboardController()
@ -30,6 +31,11 @@ std::string EVisionKeyboardController::GetDeviceLocation()
return("HID: " + location);
}
std::string EVisionKeyboardController::GetNameString()
{
return(name);
}
std::string EVisionKeyboardController::GetSerialString()
{
wchar_t serial_string[128];

View file

@ -94,10 +94,11 @@ enum
class EVisionKeyboardController
{
public:
EVisionKeyboardController(hid_device* dev_handle, const char* path);
EVisionKeyboardController(hid_device* dev_handle, const char* path, std::string dev_name);
~EVisionKeyboardController();
std::string GetDeviceLocation();
std::string GetNameString();
std::string GetSerialString();
void SetKeyboardColors
@ -137,6 +138,7 @@ public:
private:
hid_device* dev;
std::string location;
std::string name;
void ComputeChecksum
(

View file

@ -46,15 +46,15 @@
* *
\******************************************************************************************/
void DetectEVisionKeyboards(hid_device_info* info, const std::string& /*name*/)
void DetectEVisionKeyboards(hid_device_info* info, const std::string& name)
{
hid_device* dev = hid_open_path(info->path);
if(dev)
{
EVisionKeyboardController* controller = new EVisionKeyboardController(dev, info->path);
EVisionKeyboardController* controller = new EVisionKeyboardController(dev, info->path, name);
RGBController_EVisionKeyboard* rgb_controller = new RGBController_EVisionKeyboard(controller);
rgb_controller->name = "EVision Keyboard";
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
@ -66,22 +66,19 @@ void DetectEVisionV2Keyboards(hid_device_info* info, const std::string& name)
if(dev)
{
EVisionV2KeyboardController* controller = new EVisionV2KeyboardController(dev, info->path, EVISION_V2_KEYBOARD_LAYOUT);
EVisionV2KeyboardController* controller = new EVisionV2KeyboardController(dev, info->path, EVISION_V2_KEYBOARD_LAYOUT, name);
RGBController_EVisionV2Keyboard* rgb_controller = new RGBController_EVisionV2Keyboard(controller, EVISION_V2_KEYBOARD_PART_KEYBOARD);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
if(!settings.contains("AdditionalZones") || settings["AdditionalZones"] == true)
{
rgb_controller = new RGBController_EVisionV2Keyboard(controller, EVISION_V2_KEYBOARD_PART_LOGO);
rgb_controller->name = name;
rgb_controller->name += " Logo";
rgb_controller = new RGBController_EVisionV2Keyboard(controller, EVISION_V2_KEYBOARD_PART_LOGO);
ResourceManager::get()->RegisterRGBController(rgb_controller);
rgb_controller = new RGBController_EVisionV2Keyboard(controller, EVISION_V2_KEYBOARD_PART_EDGE);
rgb_controller->name = name;
rgb_controller->name += " Edge";
rgb_controller = new RGBController_EVisionV2Keyboard(controller, EVISION_V2_KEYBOARD_PART_EDGE);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
@ -94,17 +91,15 @@ void DetectEndorfyKeyboards(hid_device_info* info, const std::string& name)
if(dev)
{
EVisionV2KeyboardController* controller = new EVisionV2KeyboardController(dev, info->path, ENDORFY_KEYBOARD_LAYOUT);
EVisionV2KeyboardController* controller = new EVisionV2KeyboardController(dev, info->path, ENDORFY_KEYBOARD_LAYOUT, name);
RGBController_EVisionV2Keyboard* rgb_controller = new RGBController_EVisionV2Keyboard(controller, EVISION_V2_KEYBOARD_PART_KEYBOARD);
rgb_controller->name = name;
ResourceManager::get()->RegisterRGBController(rgb_controller);
if(!settings.contains("AdditionalZones") || settings["AdditionalZones"] == true)
{
rgb_controller = new RGBController_EVisionV2Keyboard(controller, ENDORFY_KEYBOARD_PART_EDGE);
rgb_controller->name = name;
rgb_controller->name += " Edge";
rgb_controller = new RGBController_EVisionV2Keyboard(controller, ENDORFY_KEYBOARD_PART_EDGE);
ResourceManager::get()->RegisterRGBController(rgb_controller);
}
}
@ -113,18 +108,18 @@ void DetectEndorfyKeyboards(hid_device_info* info, const std::string& name)
/*---------------------------------------------------------------------------------------------------------------------------------------------*\
| Keyboards |
\*---------------------------------------------------------------------------------------------------------------------------------------------*/
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:5078", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, MARS_GAMING_MKMINI_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:5204", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, REDRAGON_K550_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:5104", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, REDRAGON_K552_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:5000", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, REDRAGON_K552_V2_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:5004", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, REDRAGON_K556_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:652F", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, TECWARE_PHANTOM_ELITE_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:8520", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, WARRIOR_KANE_TC235, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:502A", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, WOMIER_K87_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:7698", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, WOMIER_K66_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:5064", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, GLORIOUS_GMMK_TKL_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:5084", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, DEXP_BLAZE_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:505B", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, SKILLKORP_K5_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Endorfy Omnis", DetectEndorfyKeyboards, EVISION_KEYBOARD3_VID, ENDORFY_OMNIS_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("CSB/ICL01 Keyboard", DetectEVisionV2Keyboards, EVISION_KEYBOARD2_VID, BYGG_CSB_ICL01_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Gamepower Ogre RGB 0C45:7672", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, GAMEPOWER_OGRE_RGB_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:5078", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, MARS_GAMING_MKMINI_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:5204", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, REDRAGON_K550_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:5104", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, REDRAGON_K552_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:5000", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, REDRAGON_K552_V2_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:5004", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, REDRAGON_K556_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:652F", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, TECWARE_PHANTOM_ELITE_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:8520", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, WARRIOR_KANE_TC235, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:502A", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, WOMIER_K87_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 0C45:7698", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, WOMIER_K66_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:5064", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, GLORIOUS_GMMK_TKL_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:5084", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, DEXP_BLAZE_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("EVision Keyboard 320F:505B", DetectEVisionKeyboards, EVISION_KEYBOARD2_VID, SKILLKORP_K5_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Endorfy Omnis", DetectEndorfyKeyboards, EVISION_KEYBOARD3_VID, ENDORFY_OMNIS_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("CSB/ICL01 Keyboard", DetectEVisionV2Keyboards, EVISION_KEYBOARD2_VID, BYGG_CSB_ICL01_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);
REGISTER_HID_DETECTOR_IP("Gamepower Ogre RGB 0C45:7672", DetectEVisionKeyboards, EVISION_KEYBOARD_VID, GAMEPOWER_OGRE_RGB_PID, 1, EVISION_KEYBOARD_USAGE_PAGE);

View file

@ -48,22 +48,12 @@ static uint8_t endorfy_map[EVISION_V2_MATRIX_WIDTH * EVISION_V2_MATRIX_HEIGHT] =
105, 106, 107, 111, 115, 116, 117, 118, 119, 120, 121, 123, 124,
};
EVisionV2KeyboardController::EVisionV2KeyboardController(hid_device* dev_handle, const char* path, EVisionV2KeyboardLayout layout_)
EVisionV2KeyboardController::EVisionV2KeyboardController(hid_device* dev_handle, const char* path, EVisionV2KeyboardLayout dev_layout, std::string dev_name)
{
layout = layout_;
dev = dev_handle;
location = path;
/*---------------------------------------------------------*\
| Get device name from HID manufacturer and product strings |
\*---------------------------------------------------------*/
wchar_t name_string[HID_MAX_STR];
hid_get_manufacturer_string(dev, name_string, HID_MAX_STR);
device_name = StringUtils::wstring_to_string(name_string);
hid_get_product_string(dev, name_string, HID_MAX_STR);
device_name.append(" ").append(StringUtils::wstring_to_string(name_string));
name = dev_name;
layout = dev_layout;
/*---------------------------------------------------------*\
| Get capabilities and layout |
@ -87,6 +77,7 @@ EVisionV2KeyboardController::EVisionV2KeyboardController(hid_device* dev_handle,
keyvalue_map = evisionv2_map;
led_count = 106;
break;
case ENDORFY_KEYBOARD_LAYOUT:
keyvalue_map = endorfy_map;
led_count = 104;
@ -99,9 +90,9 @@ EVisionV2KeyboardController::~EVisionV2KeyboardController()
hid_close(dev);
}
std::string EVisionV2KeyboardController::GetDeviceName()
std::string EVisionV2KeyboardController::GetName()
{
return device_name;
return(name);
}
std::string EVisionV2KeyboardController::GetSerial()

View file

@ -157,10 +157,10 @@ struct EvisionV2ModeConfig
class EVisionV2KeyboardController
{
public:
EVisionV2KeyboardController(hid_device* dev_handle, const char* path, EVisionV2KeyboardLayout layout);
EVisionV2KeyboardController(hid_device* dev_handle, const char* path, EVisionV2KeyboardLayout dev_layout, std::string dev_name);
~EVisionV2KeyboardController();
std::string GetDeviceName();
std::string GetName();
std::string GetSerial();
std::string GetLocation();
@ -182,16 +182,16 @@ public:
EVisionV2KeyboardLayout layout;
private:
std::string device_name;
std::string name;
std::string serial;
std::string location;
hid_device* dev;
size_t map_size;
size_t macros_size;
size_t map_size;
size_t macros_size;
uint8_t *keyvalue_map;
size_t led_count;
uint8_t * keyvalue_map;
size_t led_count;
std::mutex query_mutex;
std::mutex query_mutex;
};

View file

@ -36,264 +36,264 @@ static unsigned int matrix_map[6][23] =
RGBController_EVisionKeyboard::RGBController_EVisionKeyboard(EVisionKeyboardController* controller_ptr)
{
controller = controller_ptr;
controller = controller_ptr;
name = "EVision Keyboard Device";
vendor = "EVision";
type = DEVICE_TYPE_KEYBOARD;
description = "EVision Keyboard Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
name = controller->GetNameString();
vendor = "EVision";
type = DEVICE_TYPE_KEYBOARD;
description = "EVision Keyboard Device";
location = controller->GetDeviceLocation();
serial = controller->GetSerialString();
mode Custom;
Custom.name = "Custom";
Custom.value = EVISION_KB_MODE_CUSTOM;
Custom.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Custom.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Custom.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Custom.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Custom.color_mode = MODE_COLORS_PER_LED;
Custom.name = "Custom";
Custom.value = EVISION_KB_MODE_CUSTOM;
Custom.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Custom.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Custom.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Custom.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Custom.color_mode = MODE_COLORS_PER_LED;
modes.push_back(Custom);
mode ColorWave;
ColorWave.name = "Color Wave";
ColorWave.value = EVISION_KB_MODE_COLOR_WAVE_LONG;
ColorWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_AUTOMATIC_SAVE;
ColorWave.speed_min = EVISION_KB_SPEED_SLOWEST;
ColorWave.speed_max = EVISION_KB_SPEED_FASTEST;
ColorWave.speed = EVISION_KB_SPEED_NORMAL;
ColorWave.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ColorWave.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWave.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWave.direction = MODE_DIRECTION_LEFT;
ColorWave.colors_min = 1;
ColorWave.colors_max = 1;
ColorWave.color_mode = MODE_COLORS_MODE_SPECIFIC;
ColorWave.name = "Color Wave";
ColorWave.value = EVISION_KB_MODE_COLOR_WAVE_LONG;
ColorWave.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_AUTOMATIC_SAVE;
ColorWave.speed_min = EVISION_KB_SPEED_SLOWEST;
ColorWave.speed_max = EVISION_KB_SPEED_FASTEST;
ColorWave.speed = EVISION_KB_SPEED_NORMAL;
ColorWave.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ColorWave.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWave.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWave.direction = MODE_DIRECTION_LEFT;
ColorWave.colors_min = 1;
ColorWave.colors_max = 1;
ColorWave.color_mode = MODE_COLORS_MODE_SPECIFIC;
ColorWave.colors.resize(1);
modes.push_back(ColorWave);
mode ColorWaveShort;
ColorWaveShort.name = "Color Wave (Short)";
ColorWaveShort.value = EVISION_KB_MODE_COLOR_WAVE_SHORT;
ColorWaveShort.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_AUTOMATIC_SAVE;
ColorWaveShort.speed_min = EVISION_KB_SPEED_SLOWEST;
ColorWaveShort.speed_max = EVISION_KB_SPEED_FASTEST;
ColorWaveShort.speed = EVISION_KB_SPEED_NORMAL;
ColorWaveShort.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ColorWaveShort.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWaveShort.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWaveShort.direction = MODE_DIRECTION_LEFT;
ColorWaveShort.colors_min = 1;
ColorWaveShort.colors_max = 1;
ColorWaveShort.color_mode = MODE_COLORS_MODE_SPECIFIC;
ColorWaveShort.name = "Color Wave (Short)";
ColorWaveShort.value = EVISION_KB_MODE_COLOR_WAVE_SHORT;
ColorWaveShort.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_AUTOMATIC_SAVE;
ColorWaveShort.speed_min = EVISION_KB_SPEED_SLOWEST;
ColorWaveShort.speed_max = EVISION_KB_SPEED_FASTEST;
ColorWaveShort.speed = EVISION_KB_SPEED_NORMAL;
ColorWaveShort.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ColorWaveShort.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWaveShort.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWaveShort.direction = MODE_DIRECTION_LEFT;
ColorWaveShort.colors_min = 1;
ColorWaveShort.colors_max = 1;
ColorWaveShort.color_mode = MODE_COLORS_MODE_SPECIFIC;
ColorWaveShort.colors.resize(1);
modes.push_back(ColorWaveShort);
mode ColorWheel;
ColorWheel.name = "Color Wheel";
ColorWheel.value = EVISION_KB_MODE_COLOR_WHEEL;
ColorWheel.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_AUTOMATIC_SAVE;
ColorWheel.speed_min = EVISION_KB_SPEED_SLOWEST;
ColorWheel.speed_max = EVISION_KB_SPEED_FASTEST;
ColorWheel.speed = EVISION_KB_SPEED_NORMAL;
ColorWheel.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ColorWheel.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWheel.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWheel.direction = MODE_DIRECTION_LEFT;
ColorWheel.colors_min = 1;
ColorWheel.colors_max = 1;
ColorWheel.color_mode = MODE_COLORS_MODE_SPECIFIC;
ColorWheel.name = "Color Wheel";
ColorWheel.value = EVISION_KB_MODE_COLOR_WHEEL;
ColorWheel.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_AUTOMATIC_SAVE;
ColorWheel.speed_min = EVISION_KB_SPEED_SLOWEST;
ColorWheel.speed_max = EVISION_KB_SPEED_FASTEST;
ColorWheel.speed = EVISION_KB_SPEED_NORMAL;
ColorWheel.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ColorWheel.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWheel.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ColorWheel.direction = MODE_DIRECTION_LEFT;
ColorWheel.colors_min = 1;
ColorWheel.colors_max = 1;
ColorWheel.color_mode = MODE_COLORS_MODE_SPECIFIC;
ColorWheel.colors.resize(1);
modes.push_back(ColorWheel);
mode SpectrumCycle;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = EVISION_KB_MODE_SPECTRUM_CYCLE;
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.speed_min = EVISION_KB_SPEED_SLOWEST;
SpectrumCycle.speed_max = EVISION_KB_SPEED_FASTEST;
SpectrumCycle.speed = EVISION_KB_SPEED_NORMAL;
SpectrumCycle.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
SpectrumCycle.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
SpectrumCycle.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
SpectrumCycle.name = "Spectrum Cycle";
SpectrumCycle.value = EVISION_KB_MODE_SPECTRUM_CYCLE;
SpectrumCycle.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
SpectrumCycle.speed_min = EVISION_KB_SPEED_SLOWEST;
SpectrumCycle.speed_max = EVISION_KB_SPEED_FASTEST;
SpectrumCycle.speed = EVISION_KB_SPEED_NORMAL;
SpectrumCycle.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
SpectrumCycle.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
SpectrumCycle.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
SpectrumCycle.color_mode = MODE_COLORS_NONE;
modes.push_back(SpectrumCycle);
mode Breathing;
Breathing.name = "Breathing";
Breathing.value = EVISION_KB_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.speed_min = EVISION_KB_SPEED_SLOWEST;
Breathing.speed_max = EVISION_KB_SPEED_FASTEST;
Breathing.speed = EVISION_KB_SPEED_NORMAL;
Breathing.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Breathing.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Breathing.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.name = "Breathing";
Breathing.value = EVISION_KB_MODE_BREATHING;
Breathing.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Breathing.speed_min = EVISION_KB_SPEED_SLOWEST;
Breathing.speed_max = EVISION_KB_SPEED_FASTEST;
Breathing.speed = EVISION_KB_SPEED_NORMAL;
Breathing.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Breathing.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Breathing.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Breathing.colors_min = 1;
Breathing.colors_max = 1;
Breathing.color_mode = MODE_COLORS_MODE_SPECIFIC;
Breathing.colors.resize(1);
modes.push_back(Breathing);
mode Hurricane;
Hurricane.name = "Hurricane";
Hurricane.value = EVISION_KB_MODE_HURRICANE;
Hurricane.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Hurricane.speed_min = EVISION_KB_SPEED_SLOWEST;
Hurricane.speed_max = EVISION_KB_SPEED_FASTEST;
Hurricane.speed = EVISION_KB_SPEED_NORMAL;
Hurricane.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Hurricane.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Hurricane.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Hurricane.colors_min = 1;
Hurricane.colors_max = 1;
Hurricane.color_mode = MODE_COLORS_MODE_SPECIFIC;
Hurricane.name = "Hurricane";
Hurricane.value = EVISION_KB_MODE_HURRICANE;
Hurricane.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Hurricane.speed_min = EVISION_KB_SPEED_SLOWEST;
Hurricane.speed_max = EVISION_KB_SPEED_FASTEST;
Hurricane.speed = EVISION_KB_SPEED_NORMAL;
Hurricane.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Hurricane.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Hurricane.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Hurricane.colors_min = 1;
Hurricane.colors_max = 1;
Hurricane.color_mode = MODE_COLORS_MODE_SPECIFIC;
Hurricane.colors.resize(1);
modes.push_back(Hurricane);
mode Accumulate;
Accumulate.name = "Accumulate";
Accumulate.value = EVISION_KB_MODE_ACCUMULATE;
Accumulate.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Accumulate.speed_min = EVISION_KB_SPEED_SLOWEST;
Accumulate.speed_max = EVISION_KB_SPEED_FASTEST;
Accumulate.speed = EVISION_KB_SPEED_NORMAL;
Accumulate.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Accumulate.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Accumulate.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Accumulate.colors_min = 1;
Accumulate.colors_max = 1;
Accumulate.color_mode = MODE_COLORS_MODE_SPECIFIC;
Accumulate.name = "Accumulate";
Accumulate.value = EVISION_KB_MODE_ACCUMULATE;
Accumulate.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Accumulate.speed_min = EVISION_KB_SPEED_SLOWEST;
Accumulate.speed_max = EVISION_KB_SPEED_FASTEST;
Accumulate.speed = EVISION_KB_SPEED_NORMAL;
Accumulate.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Accumulate.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Accumulate.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Accumulate.colors_min = 1;
Accumulate.colors_max = 1;
Accumulate.color_mode = MODE_COLORS_MODE_SPECIFIC;
Accumulate.colors.resize(1);
modes.push_back(Accumulate);
mode Starlight;
Starlight.name = "Starlight";
Starlight.value = EVISION_KB_MODE_STARLIGHT_FAST;
Starlight.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Starlight.speed_min = EVISION_KB_SPEED_SLOWEST;
Starlight.speed_max = EVISION_KB_SPEED_FASTEST;
Starlight.speed = EVISION_KB_SPEED_NORMAL;
Starlight.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Starlight.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Starlight.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Starlight.colors_min = 1;
Starlight.colors_max = 1;
Starlight.color_mode = MODE_COLORS_MODE_SPECIFIC;
Starlight.name = "Starlight";
Starlight.value = EVISION_KB_MODE_STARLIGHT_FAST;
Starlight.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Starlight.speed_min = EVISION_KB_SPEED_SLOWEST;
Starlight.speed_max = EVISION_KB_SPEED_FASTEST;
Starlight.speed = EVISION_KB_SPEED_NORMAL;
Starlight.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Starlight.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Starlight.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Starlight.colors_min = 1;
Starlight.colors_max = 1;
Starlight.color_mode = MODE_COLORS_MODE_SPECIFIC;
Starlight.colors.resize(1);
modes.push_back(Starlight);
mode Visor;
Visor.name = "Visor";
Visor.value = EVISION_KB_MODE_VISOR;
Visor.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Visor.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Visor.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Visor.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Visor.colors_min = 1;
Visor.colors_max = 1;
Visor.color_mode = MODE_COLORS_MODE_SPECIFIC;
Visor.name = "Visor";
Visor.value = EVISION_KB_MODE_VISOR;
Visor.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Visor.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Visor.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Visor.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Visor.colors_min = 1;
Visor.colors_max = 1;
Visor.color_mode = MODE_COLORS_MODE_SPECIFIC;
Visor.colors.resize(1);
modes.push_back(Visor);
mode Static;
Static.name = "Static";
Static.value = EVISION_KB_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Static.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Static.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Static.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Static.colors_min = 1;
Static.colors_max = 1;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.name = "Static";
Static.value = EVISION_KB_MODE_STATIC;
Static.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Static.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Static.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Static.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Static.colors_min = 1;
Static.colors_max = 1;
Static.color_mode = MODE_COLORS_MODE_SPECIFIC;
Static.colors.resize(1);
modes.push_back(Static);
mode RainbowCircle;
RainbowCircle.name = "Rainbow Circle";
RainbowCircle.value = EVISION_KB_MODE_RAINBOW_WAVE_CIRCLE;
RainbowCircle.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
RainbowCircle.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
RainbowCircle.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
RainbowCircle.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
RainbowCircle.color_mode = MODE_COLORS_RANDOM;
RainbowCircle.name = "Rainbow Circle";
RainbowCircle.value = EVISION_KB_MODE_RAINBOW_WAVE_CIRCLE;
RainbowCircle.flags = MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
RainbowCircle.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
RainbowCircle.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
RainbowCircle.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
RainbowCircle.color_mode = MODE_COLORS_RANDOM;
modes.push_back(RainbowCircle);
mode VerticalRainbow;
VerticalRainbow.name = "Vertical Rainbow";
VerticalRainbow.value = EVISION_KB_MODE_RAINBOW_WAVE_VERTICAL;
VerticalRainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_DIRECTION_UD | MODE_FLAG_AUTOMATIC_SAVE;
VerticalRainbow.speed_min = EVISION_KB_SPEED_SLOWEST;
VerticalRainbow.speed_max = EVISION_KB_SPEED_FASTEST;
VerticalRainbow.speed = EVISION_KB_SPEED_NORMAL;
VerticalRainbow.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
VerticalRainbow.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
VerticalRainbow.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
VerticalRainbow.direction = MODE_DIRECTION_UP;
VerticalRainbow.colors_min = 1;
VerticalRainbow.colors_max = 1;
VerticalRainbow.color_mode = MODE_COLORS_MODE_SPECIFIC;
VerticalRainbow.name = "Vertical Rainbow";
VerticalRainbow.value = EVISION_KB_MODE_RAINBOW_WAVE_VERTICAL;
VerticalRainbow.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_DIRECTION_UD | MODE_FLAG_AUTOMATIC_SAVE;
VerticalRainbow.speed_min = EVISION_KB_SPEED_SLOWEST;
VerticalRainbow.speed_max = EVISION_KB_SPEED_FASTEST;
VerticalRainbow.speed = EVISION_KB_SPEED_NORMAL;
VerticalRainbow.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
VerticalRainbow.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
VerticalRainbow.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
VerticalRainbow.direction = MODE_DIRECTION_UP;
VerticalRainbow.colors_min = 1;
VerticalRainbow.colors_max = 1;
VerticalRainbow.color_mode = MODE_COLORS_MODE_SPECIFIC;
VerticalRainbow.colors.resize(1);
modes.push_back(VerticalRainbow);
mode Blooming;
Blooming.name = "Blooming";
Blooming.value = EVISION_KB_MODE_BLOOMING;
Blooming.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Blooming.speed_min = EVISION_KB_SPEED_SLOWEST;
Blooming.speed_max = EVISION_KB_SPEED_FASTEST;
Blooming.speed = EVISION_KB_SPEED_NORMAL;
Blooming.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Blooming.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Blooming.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Blooming.color_mode = MODE_COLORS_RANDOM;
Blooming.name = "Blooming";
Blooming.value = EVISION_KB_MODE_BLOOMING;
Blooming.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
Blooming.speed_min = EVISION_KB_SPEED_SLOWEST;
Blooming.speed_max = EVISION_KB_SPEED_FASTEST;
Blooming.speed = EVISION_KB_SPEED_NORMAL;
Blooming.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Blooming.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Blooming.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Blooming.color_mode = MODE_COLORS_RANDOM;
modes.push_back(Blooming);
mode Reactive;
Reactive.name = "Reactive";
Reactive.value = EVISION_KB_MODE_REACTIVE;
Reactive.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Reactive.speed_min = EVISION_KB_SPEED_SLOWEST;
Reactive.speed_max = EVISION_KB_SPEED_FASTEST;
Reactive.speed = EVISION_KB_SPEED_NORMAL;
Reactive.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Reactive.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Reactive.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Reactive.colors_min = 1;
Reactive.colors_max = 1;
Reactive.color_mode = MODE_COLORS_MODE_SPECIFIC;
Reactive.name = "Reactive";
Reactive.value = EVISION_KB_MODE_REACTIVE;
Reactive.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
Reactive.speed_min = EVISION_KB_SPEED_SLOWEST;
Reactive.speed_max = EVISION_KB_SPEED_FASTEST;
Reactive.speed = EVISION_KB_SPEED_NORMAL;
Reactive.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
Reactive.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
Reactive.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
Reactive.colors_min = 1;
Reactive.colors_max = 1;
Reactive.color_mode = MODE_COLORS_MODE_SPECIFIC;
Reactive.colors.resize(1);
modes.push_back(Reactive);
mode ReactiveRipple;
ReactiveRipple.name = "Reactive Ripple";
ReactiveRipple.value = EVISION_KB_MODE_REACTIVE_RIPPLE;
ReactiveRipple.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
ReactiveRipple.speed_min = EVISION_KB_SPEED_SLOWEST;
ReactiveRipple.speed_max = EVISION_KB_SPEED_FASTEST;
ReactiveRipple.speed = EVISION_KB_SPEED_NORMAL;
ReactiveRipple.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ReactiveRipple.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ReactiveRipple.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ReactiveRipple.colors_min = 1;
ReactiveRipple.colors_max = 1;
ReactiveRipple.color_mode = MODE_COLORS_MODE_SPECIFIC;
ReactiveRipple.name = "Reactive Ripple";
ReactiveRipple.value = EVISION_KB_MODE_REACTIVE_RIPPLE;
ReactiveRipple.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
ReactiveRipple.speed_min = EVISION_KB_SPEED_SLOWEST;
ReactiveRipple.speed_max = EVISION_KB_SPEED_FASTEST;
ReactiveRipple.speed = EVISION_KB_SPEED_NORMAL;
ReactiveRipple.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ReactiveRipple.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ReactiveRipple.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ReactiveRipple.colors_min = 1;
ReactiveRipple.colors_max = 1;
ReactiveRipple.color_mode = MODE_COLORS_MODE_SPECIFIC;
ReactiveRipple.colors.resize(1);
modes.push_back(ReactiveRipple);
mode ReactiveLine;
ReactiveLine.name = "Reactive Line";
ReactiveLine.value = EVISION_KB_MODE_REACTIVE_LINE;
ReactiveLine.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
ReactiveLine.speed_min = EVISION_KB_SPEED_SLOWEST;
ReactiveLine.speed_max = EVISION_KB_SPEED_FASTEST;
ReactiveLine.speed = EVISION_KB_SPEED_NORMAL;
ReactiveLine.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ReactiveLine.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ReactiveLine.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ReactiveLine.colors_min = 1;
ReactiveLine.colors_max = 1;
ReactiveLine.color_mode = MODE_COLORS_MODE_SPECIFIC;
ReactiveLine.name = "Reactive Line";
ReactiveLine.value = EVISION_KB_MODE_REACTIVE_LINE;
ReactiveLine.flags = MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_AUTOMATIC_SAVE;
ReactiveLine.speed_min = EVISION_KB_SPEED_SLOWEST;
ReactiveLine.speed_max = EVISION_KB_SPEED_FASTEST;
ReactiveLine.speed = EVISION_KB_SPEED_NORMAL;
ReactiveLine.brightness_min = EVISION_KB_BRIGHTNESS_LOWEST;
ReactiveLine.brightness_max = EVISION_KB_BRIGHTNESS_HIGHEST;
ReactiveLine.brightness = EVISION_KB_BRIGHTNESS_HIGHEST;
ReactiveLine.colors_min = 1;
ReactiveLine.colors_max = 1;
ReactiveLine.color_mode = MODE_COLORS_MODE_SPECIFIC;
ReactiveLine.colors.resize(1);
modes.push_back(ReactiveLine);

View file

@ -281,12 +281,12 @@ static const char *led_endorfy[] =
like directions for some modes.
\*-------------------------------------------------------------------*/
RGBController_EVisionV2Keyboard::RGBController_EVisionV2Keyboard(EVisionV2KeyboardController* controller_ptr, EVisionV2KeyboardPart part_)
RGBController_EVisionV2Keyboard::RGBController_EVisionV2Keyboard(EVisionV2KeyboardController* controller_ptr, EVisionV2KeyboardPart kb_part)
{
controller = controller_ptr;
part = part_;
part = kb_part;
name = "EVision Keyboard Device";
name = controller->GetName();
vendor = "Evision";
type = DEVICE_TYPE_KEYBOARD;
description = "EVision Keyboard Device";
@ -299,10 +299,17 @@ RGBController_EVisionV2Keyboard::RGBController_EVisionV2Keyboard(EVisionV2Keyboa
case EVISION_V2_KEYBOARD_PART_KEYBOARD:
SetupKeyboardModes();
break;
case EVISION_V2_KEYBOARD_PART_LOGO:
case EVISION_V2_KEYBOARD_PART_EDGE:
name += " Logo";
SetupLogoEdgeModes();
break;
case EVISION_V2_KEYBOARD_PART_EDGE:
name += " Edge";
SetupLogoEdgeModes();
break;
case ENDORFY_KEYBOARD_PART_EDGE:
SetupEdgeModes();
break;

View file

@ -19,7 +19,7 @@
class RGBController_EVisionV2Keyboard : public RGBController
{
public:
RGBController_EVisionV2Keyboard(EVisionV2KeyboardController* controller_ptr, EVisionV2KeyboardPart part);
RGBController_EVisionV2Keyboard(EVisionV2KeyboardController* controller_ptr, EVisionV2KeyboardPart kb_part);
~RGBController_EVisionV2Keyboard();
void SetupZones() override;