mirror of
https://github.com/MatMoul/g810-led.git
synced 2025-12-24 15:52:36 +00:00
Add native effect support
This commit is contained in:
@@ -491,6 +491,13 @@ bool Keyboard::parseColor(std::string color, KeyColors &colors) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Keyboard::parseSpeed(std::string speed, uint8_t &speedValue) {
|
||||
if (speed.length() == 1) speed = speed + "0";
|
||||
if (speed.length() != 2) return false;
|
||||
speedValue = std::stoul("0x"+speed, nullptr, 16);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Keyboard::sendDataInternal(unsigned char *data, uint16_t data_size) {
|
||||
if (m_isAttached == false) return false;
|
||||
int r;
|
||||
@@ -849,34 +856,6 @@ bool Keyboard::setFXColor(KeyColors colors) {
|
||||
int data_size = 20;
|
||||
unsigned char *data = new unsigned char[data_size];
|
||||
|
||||
// Indicators
|
||||
data[0] = 0x11; // Base address
|
||||
data[1] = 0xff; // Base address
|
||||
data[2] = 0x0c; // Base address
|
||||
data[3] = 0x4c; // Base address
|
||||
data[4] = 0x00; // Base address
|
||||
data[5] = 0x40; // Base address
|
||||
|
||||
data[6] = colors.red;
|
||||
data[7] = colors.green;
|
||||
data[8] = colors.blue;
|
||||
|
||||
for(int i = 9; i < data_size; i++) data[i] = 0x00;
|
||||
|
||||
retval = sendDataInternal(data, data_size);
|
||||
|
||||
|
||||
data[0] = 0x11; // Base address
|
||||
data[1] = 0xff; // Base address
|
||||
data[2] = 0x0c; // Base address
|
||||
data[3] = 0x5c; // Base address
|
||||
|
||||
for(int i = 4; i < data_size; i++) data[i] = 0x00;
|
||||
|
||||
retval = sendDataInternal(data, data_size);
|
||||
|
||||
|
||||
|
||||
// Keys
|
||||
data[0] = 0x11; // Base address
|
||||
data[1] = 0xff; // Base address
|
||||
@@ -884,17 +863,13 @@ bool Keyboard::setFXColor(KeyColors colors) {
|
||||
data[3] = 0x3c; // Base address
|
||||
data[4] = 0x00; // Base address
|
||||
data[5] = 0x01; // Base address
|
||||
|
||||
data[6] = colors.red;
|
||||
data[7] = colors.green;
|
||||
data[8] = colors.blue;
|
||||
data[9] = 0x02;
|
||||
|
||||
for(int i = 10; i < data_size; i++) data[i] = 0x00;
|
||||
|
||||
retval = sendDataInternal(data, data_size);
|
||||
|
||||
|
||||
// Logo
|
||||
data[0] = 0x11; // Base address
|
||||
data[1] = 0xff; // Base address
|
||||
@@ -902,17 +877,103 @@ bool Keyboard::setFXColor(KeyColors colors) {
|
||||
data[3] = 0x3c; // Base address
|
||||
data[4] = 0x01; // Base address
|
||||
data[5] = 0x01; // Base address
|
||||
|
||||
data[6] = colors.red;
|
||||
data[7] = colors.green;
|
||||
data[8] = colors.blue;
|
||||
data[9] = 0x02;
|
||||
|
||||
for(int i = 10; i < data_size; i++) data[i] = 0x00;
|
||||
|
||||
retval = sendDataInternal(data, data_size);
|
||||
|
||||
|
||||
delete[] data;
|
||||
return retval;
|
||||
}
|
||||
|
||||
bool Keyboard::setFXBreathing(KeyColors colors, uint8_t speed) {
|
||||
bool retval = false;
|
||||
int data_size = 20;
|
||||
unsigned char *data = new unsigned char[data_size];
|
||||
|
||||
// Keys
|
||||
data[0] = 0x11; // Base address
|
||||
data[1] = 0xff; // Base address
|
||||
data[2] = 0x0d; // Base address
|
||||
data[3] = 0x3c; // Base address
|
||||
data[4] = 0x00; // Base address
|
||||
data[5] = 0x02; // Base address
|
||||
data[6] = colors.red;
|
||||
data[7] = colors.green;
|
||||
data[8] = colors.blue;
|
||||
data[9] = speed; // Speed
|
||||
data[10] = 0x10; // ???
|
||||
data[11] = 0x00;
|
||||
data[12] = 0x64;
|
||||
for(int i = 13; i < data_size; i++) data[i] = 0x00;
|
||||
retval = sendDataInternal(data, data_size);
|
||||
|
||||
// Logo
|
||||
data[0] = 0x11; // Base address
|
||||
data[1] = 0xff; // Base address
|
||||
data[2] = 0x0d; // Base address
|
||||
data[3] = 0x3c; // Base address
|
||||
data[4] = 0x01; // Base address
|
||||
data[5] = 0x02; // Base address
|
||||
data[6] = colors.red;
|
||||
data[7] = colors.green;
|
||||
data[8] = colors.blue;
|
||||
data[9] = speed; // Speed
|
||||
data[10] = 0x10; // ???
|
||||
data[11] = 0x00;
|
||||
data[12] = 0x64;
|
||||
for(int i = 13; i < data_size; i++) data[i] = 0x00;
|
||||
retval = sendDataInternal(data, data_size);
|
||||
|
||||
delete[] data;
|
||||
return retval;
|
||||
}
|
||||
|
||||
bool Keyboard::setFXColorCycle(uint8_t speed) {
|
||||
bool retval = false;
|
||||
int data_size = 20;
|
||||
unsigned char *data = new unsigned char[data_size];
|
||||
|
||||
// Keys
|
||||
data[0] = 0x11; // Base address
|
||||
data[1] = 0xff; // Base address
|
||||
data[2] = 0x0d; // Base address
|
||||
data[3] = 0x3c; // Base address
|
||||
data[4] = 0x00; // Base address
|
||||
data[5] = 0x03; // Base address
|
||||
data[6] = 0x00;
|
||||
data[7] = 0x00;
|
||||
data[8] = 0x00;
|
||||
data[9] = 0x00;
|
||||
data[10] = 0x00;
|
||||
data[11] = speed; // Speed
|
||||
data[12] = 0x00; // ???
|
||||
data[13] = 0x00;
|
||||
data[14] = 0x64;
|
||||
for(int i = 15; i < data_size; i++) data[i] = 0x00;
|
||||
retval = sendDataInternal(data, data_size);
|
||||
|
||||
// Logo
|
||||
data[0] = 0x11; // Base address
|
||||
data[1] = 0xff; // Base address
|
||||
data[2] = 0x0d; // Base address
|
||||
data[3] = 0x3c; // Base address
|
||||
data[4] = 0x01; // Base address
|
||||
data[5] = 0x03; // Base address
|
||||
data[6] = 0x00;
|
||||
data[7] = 0x00;
|
||||
data[8] = 0x00;
|
||||
data[9] = 0x00;
|
||||
data[10] = 0x00;
|
||||
data[11] = speed; // Speed
|
||||
data[12] = 0x00; // ???
|
||||
data[13] = 0x00;
|
||||
data[14] = 0x64;
|
||||
for(int i = 15; i < data_size; i++) data[i] = 0x00;
|
||||
retval = sendDataInternal(data, data_size);
|
||||
|
||||
delete[] data;
|
||||
return retval;
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ class Keyboard {
|
||||
bool parseKey(std::string key, KeyAddress &keyAddress);
|
||||
bool parseKeyGroup(std::string key, KeyGroup &keyGroup);
|
||||
bool parseColor(std::string color, KeyColors &colors);
|
||||
bool parseSpeed(std::string speed, uint8_t &speedValue);
|
||||
bool setPowerOnEffect(PowerOnEffect powerOnEffect);
|
||||
bool setKey(KeyValue keyValue);
|
||||
bool setKey(Key key, KeyColors colors);
|
||||
@@ -52,6 +53,8 @@ class Keyboard {
|
||||
bool setAllKeys(KeyColors colors);
|
||||
bool setGroupKeys(KeyGroup keyGroup, KeyColors colors);
|
||||
bool setFXColor(KeyColors colors);
|
||||
bool setFXBreathing(KeyColors colors, uint8_t speed);
|
||||
bool setFXColorCycle(uint8_t speed);
|
||||
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user