Feat/ms 1565
This commit is contained in:
parent
f76dbb08cc
commit
bdaebe1218
5 changed files with 531 additions and 0 deletions
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*---------------------------------------------------------*\
|
||||||
|
| MSIKeyboardControllerDetect.cpp |
|
||||||
|
| |
|
||||||
|
| Detector for MSI Mystic Light MS-1565 Keyboard |
|
||||||
|
| |
|
||||||
|
| This file is part of the OpenRGB project |
|
||||||
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
\*---------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "Detector.h"
|
||||||
|
#include "MSIMysticLightKBController.h"
|
||||||
|
#include "RGBController_MSIMysticLightKB.h"
|
||||||
|
|
||||||
|
#define MSI_USB_VID 0x1462
|
||||||
|
|
||||||
|
/*----------------------------------------------------------*\
|
||||||
|
| |
|
||||||
|
| DetectMSIKeyboardController |
|
||||||
|
| |
|
||||||
|
| Detect MSI Mystic Light MS-1565 keyboard |
|
||||||
|
| |
|
||||||
|
\*----------------------------------------------------------*/
|
||||||
|
|
||||||
|
void DetectMSIKeyboardController
|
||||||
|
(
|
||||||
|
hid_device_info* info,
|
||||||
|
const std::string& /*name*/
|
||||||
|
)
|
||||||
|
{
|
||||||
|
hid_device* dev = hid_open_path(info->path);
|
||||||
|
if(dev != nullptr)
|
||||||
|
{
|
||||||
|
MSIKeyboardController* controller = new MSIKeyboardController(dev, info->path);
|
||||||
|
RGBController_MSIKeyboard* rgb_controller = new RGBController_MSIKeyboard(controller);
|
||||||
|
ResourceManager::get()->RegisterRGBController(rgb_controller);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
REGISTER_HID_DETECTOR_PU("MSI Keyboard MS_1565", DetectMSIKeyboardController, MSI_USB_VID, 0x1601, 0x00FF, 0x01);
|
||||||
|
|
@ -0,0 +1,128 @@
|
||||||
|
/*---------------------------------------------------------*\
|
||||||
|
| MSIMysticLightKBController.cpp |
|
||||||
|
| |
|
||||||
|
| Driver for MSI Mystic Light MS-1565 keyboard leds |
|
||||||
|
| |
|
||||||
|
| This file is part of the OpenRGB project |
|
||||||
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
\*---------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "MSIMysticLightKBController.h"
|
||||||
|
|
||||||
|
#include "StringUtils.h"
|
||||||
|
#include "hidapi.h"
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
std::map<MS_1565_ZONE, unsigned char> zone_map =
|
||||||
|
{
|
||||||
|
{ MS_1565_ZONE_1, 1 },
|
||||||
|
{ MS_1565_ZONE_2, 2 },
|
||||||
|
{ MS_1565_ZONE_3, 4 },
|
||||||
|
{ MS_1565_ZONE_4, 8 },
|
||||||
|
{ MS_1565_ZONE_DEVICE, 15}
|
||||||
|
};
|
||||||
|
|
||||||
|
MSIKeyboardController::MSIKeyboardController
|
||||||
|
(
|
||||||
|
hid_device *handle,
|
||||||
|
const char *path
|
||||||
|
)
|
||||||
|
{
|
||||||
|
dev = handle;
|
||||||
|
if(dev)
|
||||||
|
{
|
||||||
|
location = path;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MSIKeyboardController::~MSIKeyboardController()
|
||||||
|
{
|
||||||
|
hid_close(dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MSIKeyboardController::SetMode
|
||||||
|
(
|
||||||
|
MS_1565_MODE mode,
|
||||||
|
MS_1565_SPEED speed1,
|
||||||
|
MS_1565_SPEED speed2,
|
||||||
|
MS_1565_WAVE_DIRECTION wave_dir,
|
||||||
|
MS_1565_ZONE zone,
|
||||||
|
ColorKeyFrame color_keyframes[]
|
||||||
|
)
|
||||||
|
{
|
||||||
|
unsigned char buf[64] = {};
|
||||||
|
buf[0] = 0x02;
|
||||||
|
buf[1] = 0x01;
|
||||||
|
buf[2] = zone_map[zone];
|
||||||
|
hid_send_feature_report(dev, buf, sizeof(buf));
|
||||||
|
|
||||||
|
FeaturePacket_MS1565 data;
|
||||||
|
data.mode = (unsigned char)(mode);
|
||||||
|
for(int i = 0; i < MAX_MS_1565_KEYFRAMES; i++)
|
||||||
|
{
|
||||||
|
data.color_keyframes[i] = color_keyframes[i];
|
||||||
|
}
|
||||||
|
data.speed2 = speed2;
|
||||||
|
data.speed1 = speed1;
|
||||||
|
|
||||||
|
data.wave_dir = (unsigned char)(wave_dir);
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Send packet to hardware, return true if successful |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
hid_send_feature_report(dev, (unsigned char *)&data, sizeof(data));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string MSIKeyboardController::GetDeviceName()
|
||||||
|
{
|
||||||
|
wchar_t tname[256];
|
||||||
|
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Get the manufacturer string from HID |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
hid_get_manufacturer_string(dev, tname, 256);
|
||||||
|
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Convert to std::string |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
std::string name = StringUtils::wstring_to_string(tname);
|
||||||
|
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Get the product string from HID |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
hid_get_product_string(dev, tname, 256);
|
||||||
|
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| Append the product string to the manufacturer string |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
name.append(" ").append(StringUtils::wstring_to_string(tname));
|
||||||
|
|
||||||
|
return(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string MSIKeyboardController::GetFWVersion()
|
||||||
|
{
|
||||||
|
/*-----------------------------------------------------*\
|
||||||
|
| This device doesn't support firmware version |
|
||||||
|
\*-----------------------------------------------------*/
|
||||||
|
std::string firmware_version = "";
|
||||||
|
return firmware_version;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string MSIKeyboardController::GetDeviceLocation()
|
||||||
|
{
|
||||||
|
return ("HID: " + location);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string MSIKeyboardController::GetSerial()
|
||||||
|
{
|
||||||
|
wchar_t serial_string[128];
|
||||||
|
int ret = hid_get_serial_number_string(dev, serial_string, 128);
|
||||||
|
|
||||||
|
if(ret != 0)
|
||||||
|
{
|
||||||
|
return("");
|
||||||
|
}
|
||||||
|
|
||||||
|
return(StringUtils::wstring_to_string(serial_string));
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
/*---------------------------------------------------------*\
|
||||||
|
| MSIMysticLight1565Controller.h |
|
||||||
|
| |
|
||||||
|
| Driver for MSI Mystic Light MS-1565 keyboard leds |
|
||||||
|
| |
|
||||||
|
| This file is part of the OpenRGB project |
|
||||||
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
\*---------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef MSIMYSTICLIGHTKBCONTROLLER_H
|
||||||
|
#define MSIMYSTICLIGHTKBCONTROLLER_H
|
||||||
|
|
||||||
|
#include <cstring>
|
||||||
|
#include <string>
|
||||||
|
#include <hidapi.h>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
struct Color
|
||||||
|
{
|
||||||
|
unsigned char R;
|
||||||
|
unsigned char G;
|
||||||
|
unsigned char B;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ColorKeyFrame
|
||||||
|
{
|
||||||
|
unsigned char time_frame = 0x00;
|
||||||
|
Color color;
|
||||||
|
};
|
||||||
|
|
||||||
|
#define MAX_MS_1565_KEYFRAMES 10
|
||||||
|
|
||||||
|
typedef unsigned char MS_1565_SPEED;
|
||||||
|
|
||||||
|
// 64 bytes long feature
|
||||||
|
struct FeaturePacket_MS1565
|
||||||
|
{
|
||||||
|
unsigned char report_id = 0x02; // Report ID
|
||||||
|
unsigned char packet_id = 0x02;
|
||||||
|
unsigned char mode = 0x00;
|
||||||
|
unsigned char speed2 = 0x00; // Seconds X 100 = duration of animation cycle
|
||||||
|
unsigned char speed1 = 0x00; // In little endian
|
||||||
|
// 1 second => 100 = 0x0064, speed2 = 0x64, speed1 = 0x00
|
||||||
|
const unsigned char unused = 0x00;
|
||||||
|
const unsigned char unused2 = 0x00;
|
||||||
|
const unsigned char unused3 = 0x0F;
|
||||||
|
const unsigned char unused4 = 0x01;
|
||||||
|
unsigned char wave_dir = 0x00;
|
||||||
|
ColorKeyFrame color_keyframes[MAX_MS_1565_KEYFRAMES] = {};
|
||||||
|
const unsigned char padding[14] = {}; //pad to make the packet size 64 bytes
|
||||||
|
};
|
||||||
|
|
||||||
|
enum MS_1565_MODE
|
||||||
|
{
|
||||||
|
MS_1565_OFF = 0,
|
||||||
|
MS_1565_STEADY = 1,
|
||||||
|
MS_1565_BREATHING = 2,
|
||||||
|
MS_1565_CYCLE = 3,
|
||||||
|
MS_1565_WAVE = 4,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum MS_1565_WAVE_DIRECTION
|
||||||
|
{
|
||||||
|
MS_1565_WAVE_DIRECTION_RIGHT_TO_LEFT = 0,
|
||||||
|
MS_1565_WAVE_DIRECTION_LEFT_TO_RIGHT = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
enum MS_1565_ZONE
|
||||||
|
{
|
||||||
|
MS_1565_ZONE_1 = 1,
|
||||||
|
MS_1565_ZONE_2,
|
||||||
|
MS_1565_ZONE_3,
|
||||||
|
MS_1565_ZONE_4,
|
||||||
|
MS_1565_ZONE_DEVICE
|
||||||
|
};
|
||||||
|
|
||||||
|
class MSIKeyboardController
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
MSIKeyboardController
|
||||||
|
(
|
||||||
|
hid_device* handle,
|
||||||
|
const char* path
|
||||||
|
);
|
||||||
|
~MSIKeyboardController();
|
||||||
|
|
||||||
|
void SetMode
|
||||||
|
(
|
||||||
|
MS_1565_MODE mode,
|
||||||
|
MS_1565_SPEED speed1,
|
||||||
|
MS_1565_SPEED speed2,
|
||||||
|
MS_1565_WAVE_DIRECTION wave_dir,
|
||||||
|
MS_1565_ZONE zone,
|
||||||
|
ColorKeyFrame color_keyframes[]
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
std::string GetDeviceName();
|
||||||
|
std::string GetDeviceLocation();
|
||||||
|
std::string GetFWVersion();
|
||||||
|
std::string GetSerial();
|
||||||
|
|
||||||
|
std::vector<MS_1565_ZONE> mode_zones;
|
||||||
|
|
||||||
|
private:
|
||||||
|
hid_device* dev;
|
||||||
|
std::string location;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // MSIMYSTICLIGHTKBCONTROLLER_H
|
||||||
|
|
@ -0,0 +1,203 @@
|
||||||
|
/*---------------------------------------------------------*\
|
||||||
|
| RGBController_MSIMysticLightKB.cpp |
|
||||||
|
| |
|
||||||
|
| Driver for MSI Mystic Light MS-1565 keyboard leds |
|
||||||
|
| |
|
||||||
|
| This file is part of the OpenRGB project |
|
||||||
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
\*---------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "RGBController_MSIMysticLightKB.h"
|
||||||
|
#include "MSIMysticLightKBController.h"
|
||||||
|
#include "RGBController.h"
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
|
||||||
|
/**------------------------------------------------------------------*\
|
||||||
|
@name MSI MS-1565 Mystic Light Keyboard (64 Byte)
|
||||||
|
@category Keyboard
|
||||||
|
@type USB
|
||||||
|
@save :robot:
|
||||||
|
@direct :white_check_mark:
|
||||||
|
@effects :white_check_mark:
|
||||||
|
@detectors DetectMSIMysticLight1565Controller
|
||||||
|
@comment
|
||||||
|
\*-------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
RGBController_MSIKeyboard::RGBController_MSIKeyboard
|
||||||
|
(
|
||||||
|
MSIKeyboardController *controller_ptr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
controller = controller_ptr;
|
||||||
|
name = controller->GetDeviceName();
|
||||||
|
vendor = "MSI";
|
||||||
|
type = DEVICE_TYPE_KEYBOARD;
|
||||||
|
description = "MSI Mystic Light MS-1565";
|
||||||
|
version = controller->GetFWVersion();
|
||||||
|
location = controller->GetDeviceLocation();
|
||||||
|
serial = controller->GetSerial();
|
||||||
|
SetupModes();
|
||||||
|
SetupColors();
|
||||||
|
}
|
||||||
|
|
||||||
|
RGBController_MSIKeyboard::~RGBController_MSIKeyboard()
|
||||||
|
{
|
||||||
|
delete controller;
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_MSIKeyboard::ResizeZone
|
||||||
|
(
|
||||||
|
int /*zone*/,
|
||||||
|
int /*new_size*/
|
||||||
|
)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_MSIKeyboard::SetupZones()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_MSIKeyboard::DeviceUpdateMode()
|
||||||
|
{
|
||||||
|
DeviceUpdateLEDs();
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_MSIKeyboard::DeviceUpdateLEDs()
|
||||||
|
{
|
||||||
|
mode &Mode = modes[active_mode];
|
||||||
|
MS_1565_MODE msi_mode = (MS_1565_MODE)Mode.value;
|
||||||
|
MS_1565_ZONE zone = controller->mode_zones[active_mode];
|
||||||
|
|
||||||
|
/*----------------------------------*\
|
||||||
|
| speed is cycle duration in 1/100s |
|
||||||
|
| Mode.speed = 0 % => speed = 12.00s |
|
||||||
|
| Mode.speed = 50 % => speed = 7.50s |
|
||||||
|
| Mode.speed = 100 % => speed = 3.00 |
|
||||||
|
\*--------------------------------- */
|
||||||
|
|
||||||
|
unsigned int speed = 1200 - 9 * Mode.speed;
|
||||||
|
unsigned char speed2 = (unsigned char)(speed & 0xFF);
|
||||||
|
unsigned char speed1 = (unsigned char)((speed & 0xFF00) >> 8);
|
||||||
|
|
||||||
|
MS_1565_WAVE_DIRECTION wave_direction = (MS_1565_WAVE_DIRECTION)(Mode.direction);
|
||||||
|
|
||||||
|
const size_t colors_size = Mode.colors.size();
|
||||||
|
|
||||||
|
ColorKeyFrame ck[MAX_MS_1565_KEYFRAMES] = {};
|
||||||
|
|
||||||
|
for(size_t idx = 0; idx < colors_size; idx++)
|
||||||
|
{
|
||||||
|
ck[idx].time_frame = idx * 100 / colors_size;
|
||||||
|
ck[idx].color.R = RGBGetRValue(Mode.colors[idx]) * Mode.brightness / 100;
|
||||||
|
ck[idx].color.G = RGBGetGValue(Mode.colors[idx]) * Mode.brightness / 100;
|
||||||
|
ck[idx].color.B = RGBGetBValue(Mode.colors[idx]) * Mode.brightness / 100;
|
||||||
|
}
|
||||||
|
ck[colors_size].time_frame = 100;
|
||||||
|
ck[colors_size].color.R = RGBGetRValue(Mode.colors[0]) * Mode.brightness / 100;
|
||||||
|
ck[colors_size].color.G = RGBGetGValue(Mode.colors[0]) * Mode.brightness / 100;
|
||||||
|
ck[colors_size].color.B = RGBGetBValue(Mode.colors[0]) * Mode.brightness / 100;
|
||||||
|
|
||||||
|
controller->SetMode(msi_mode, speed1, speed2, wave_direction, zone, ck);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_MSIKeyboard::UpdateZoneLEDs(int /*zone*/)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_MSIKeyboard::UpdateSingleLED(int /*led*/)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_MSIKeyboard::SetupModes()
|
||||||
|
{
|
||||||
|
SetupZonesMode("Off", MS_1565_MODE::MS_1565_OFF, 0);
|
||||||
|
SetupZonesMode("Static", MS_1565_MODE::MS_1565_STEADY, MODE_FLAG_HAS_MODE_SPECIFIC_COLOR |
|
||||||
|
MODE_FLAG_HAS_BRIGHTNESS);
|
||||||
|
SetupZonesMode("Breathing", MS_1565_MODE::MS_1565_BREATHING, MODE_FLAG_HAS_MODE_SPECIFIC_COLOR |
|
||||||
|
MODE_FLAG_HAS_SPEED |
|
||||||
|
MODE_FLAG_HAS_BRIGHTNESS);
|
||||||
|
SetupZonesMode("Color Cycle", MS_1565_MODE::MS_1565_CYCLE, MODE_FLAG_HAS_MODE_SPECIFIC_COLOR |
|
||||||
|
MODE_FLAG_HAS_SPEED |
|
||||||
|
MODE_FLAG_HAS_BRIGHTNESS);
|
||||||
|
SetupZonesMode("Wave", MS_1565_MODE::MS_1565_WAVE, MODE_FLAG_HAS_MODE_SPECIFIC_COLOR |
|
||||||
|
MODE_FLAG_HAS_SPEED |
|
||||||
|
MODE_FLAG_HAS_BRIGHTNESS |
|
||||||
|
MODE_FLAG_HAS_DIRECTION_LR);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_MSIKeyboard::SetupMode
|
||||||
|
(
|
||||||
|
const std::string name,
|
||||||
|
MS_1565_MODE mod,
|
||||||
|
unsigned int flags,
|
||||||
|
MS_1565_ZONE zone
|
||||||
|
)
|
||||||
|
{
|
||||||
|
mode Mode;
|
||||||
|
Mode.name = name;
|
||||||
|
Mode.value = mod;
|
||||||
|
Mode.flags = flags;
|
||||||
|
|
||||||
|
if(Mode.value == MS_1565_MODE::MS_1565_OFF)
|
||||||
|
{
|
||||||
|
Mode.color_mode= MODE_COLORS_NONE;
|
||||||
|
Mode.colors_min = 0;
|
||||||
|
Mode.colors_max = 0;
|
||||||
|
Mode.colors.resize(1);
|
||||||
|
modes.push_back(Mode);
|
||||||
|
controller->mode_zones.push_back(zone);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(flags & MODE_FLAG_HAS_MODE_SPECIFIC_COLOR)
|
||||||
|
{
|
||||||
|
Mode.color_mode= MODE_COLORS_MODE_SPECIFIC;
|
||||||
|
Mode.colors_min = 1;
|
||||||
|
if(Mode.value == MS_1565_MODE::MS_1565_STEADY)
|
||||||
|
{
|
||||||
|
Mode.colors_max = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Mode.colors_max = MAX_MS_1565_KEYFRAMES - 1;
|
||||||
|
}
|
||||||
|
Mode.colors.resize(Mode.colors_max);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(flags & MODE_FLAG_HAS_SPEED)
|
||||||
|
{
|
||||||
|
Mode.speed_min = 0;
|
||||||
|
Mode.speed_max = 100;
|
||||||
|
Mode.speed = 50;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(flags & MODE_FLAG_HAS_BRIGHTNESS)
|
||||||
|
{
|
||||||
|
Mode.brightness_min = 0;
|
||||||
|
Mode.brightness_max = 100;
|
||||||
|
}
|
||||||
|
Mode.brightness = 100;
|
||||||
|
|
||||||
|
if(flags & MODE_FLAG_HAS_DIRECTION_LR)
|
||||||
|
{
|
||||||
|
Mode.direction = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
modes.push_back(Mode);
|
||||||
|
controller->mode_zones.push_back(zone);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RGBController_MSIKeyboard::SetupZonesMode
|
||||||
|
(
|
||||||
|
const std::string name,
|
||||||
|
MS_1565_MODE mod,
|
||||||
|
unsigned int flags
|
||||||
|
)
|
||||||
|
{
|
||||||
|
SetupMode(name, mod, flags, MS_1565_ZONE_DEVICE);
|
||||||
|
for(int idx = 0; idx < 4; idx++)
|
||||||
|
{
|
||||||
|
SetupMode(name + " zone " + std::to_string(idx + 1), mod, flags, MS_1565_ZONE(idx + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*---------------------------------------------------------*\
|
||||||
|
| RGBController_MSIMysticLight1565.h |
|
||||||
|
| |
|
||||||
|
| Driver for MSI Mystic Light MS-1565 keyboard leds |
|
||||||
|
| |
|
||||||
|
| This file is part of the OpenRGB project |
|
||||||
|
| SPDX-License-Identifier: GPL-2.0-only |
|
||||||
|
\*---------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef RGBCONTROLLER_MSIMYSTICLIGHTKB_H
|
||||||
|
#define RGBCONTROLLER_MSIMYSTICLIGHTKB_H
|
||||||
|
|
||||||
|
#include "RGBController.h"
|
||||||
|
#include "MSIMysticLightKBController.h"
|
||||||
|
|
||||||
|
class RGBController_MSIKeyboard : public RGBController
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
RGBController_MSIKeyboard(MSIKeyboardController* controller_ptr);
|
||||||
|
~RGBController_MSIKeyboard();
|
||||||
|
|
||||||
|
void SetupZones();
|
||||||
|
void ResizeZone(int zone, int new_size);
|
||||||
|
|
||||||
|
void DeviceUpdateLEDs();
|
||||||
|
void UpdateZoneLEDs(int zone);
|
||||||
|
void UpdateSingleLED(int led);
|
||||||
|
|
||||||
|
void DeviceUpdateMode();
|
||||||
|
|
||||||
|
private:
|
||||||
|
MSIKeyboardController* controller;
|
||||||
|
|
||||||
|
void SetupModes();
|
||||||
|
void SetupMode
|
||||||
|
(
|
||||||
|
const std::string name,
|
||||||
|
MS_1565_MODE mode,
|
||||||
|
unsigned int flags,
|
||||||
|
MS_1565_ZONE zone
|
||||||
|
);
|
||||||
|
void SetupZonesMode
|
||||||
|
(
|
||||||
|
const std::string name,
|
||||||
|
MS_1565_MODE mod,
|
||||||
|
unsigned int flags
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // RGBCONTROLLER_MSIMYSTICLIGHTKB_H
|
||||||
Loading…
Add table
Add a link
Reference in a new issue