mirror of
https://github.com/MatMoul/g810-led.git
synced 2026-03-14 04:16:55 +00:00
Initial work to add G213 support
Currently supported:
- G213 by region {1..5}
- Standard FX calls
- Startup behavior
- Help and command-line app support
resolves MatMoul/g810-led#69
Signed-off-by: Kevin Pearson <pearson.kevin.m@gmail.com>
This commit is contained in:
committed by
Kevin Pearson
parent
1f0458ea4f
commit
793aa0d557
@@ -231,6 +231,8 @@ LedKeyboard::KeyboardModel LedKeyboard::getKeyboardModel() {
|
||||
bool LedKeyboard::commit() {
|
||||
byte_buffer_t data;
|
||||
switch (m_keyboardModel) {
|
||||
case KeyboardModel::g213:
|
||||
break; // Keyboard is non-transactional
|
||||
case KeyboardModel::g410:
|
||||
case KeyboardModel::g610:
|
||||
case KeyboardModel::g810:
|
||||
@@ -430,17 +432,32 @@ bool LedKeyboard::setGroupKeys(KeyGroup keyGroup, LedKeyboard::Color color) {
|
||||
|
||||
bool LedKeyboard::setAllKeys(LedKeyboard::Color color) {
|
||||
KeyValueArray keyValues;
|
||||
for (uint8_t i = 0; i < keyGroupLogo.size(); i++) keyValues.push_back({keyGroupLogo[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupIndicators.size(); i++) keyValues.push_back({keyGroupIndicators[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupMultimedia.size(); i++) keyValues.push_back({keyGroupMultimedia[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupGKeys.size(); i++) keyValues.push_back({keyGroupGKeys[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupFKeys.size(); i++) keyValues.push_back({keyGroupFKeys[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupFunctions.size(); i++) keyValues.push_back({keyGroupFunctions[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupArrows.size(); i++) keyValues.push_back({keyGroupArrows[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupNumeric.size(); i++) keyValues.push_back({keyGroupNumeric[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupModifiers.size(); i++) keyValues.push_back({keyGroupModifiers[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupKeys.size(); i++) keyValues.push_back({keyGroupKeys[i], color});
|
||||
return setKeys(keyValues);
|
||||
|
||||
switch (m_keyboardModel) {
|
||||
case KeyboardModel::g213:
|
||||
for (uint8_t rIndex=0x01; rIndex <= 0x05; rIndex++) {
|
||||
if (! setRegion(rIndex,color)) return false;
|
||||
}
|
||||
return true;
|
||||
case KeyboardModel::g410:
|
||||
case KeyboardModel::g610:
|
||||
case KeyboardModel::g810:
|
||||
case KeyboardModel::g910:
|
||||
for (uint8_t i = 0; i < keyGroupLogo.size(); i++) keyValues.push_back({keyGroupLogo[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupIndicators.size(); i++) keyValues.push_back({keyGroupIndicators[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupMultimedia.size(); i++) keyValues.push_back({keyGroupMultimedia[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupGKeys.size(); i++) keyValues.push_back({keyGroupGKeys[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupFKeys.size(); i++) keyValues.push_back({keyGroupFKeys[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupFunctions.size(); i++) keyValues.push_back({keyGroupFunctions[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupArrows.size(); i++) keyValues.push_back({keyGroupArrows[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupNumeric.size(); i++) keyValues.push_back({keyGroupNumeric[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupModifiers.size(); i++) keyValues.push_back({keyGroupModifiers[i], color});
|
||||
for (uint8_t i = 0; i < keyGroupKeys.size(); i++) keyValues.push_back({keyGroupKeys[i], color});
|
||||
return setKeys(keyValues);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -510,10 +527,25 @@ bool LedKeyboard::setGKeysMode(uint8_t value) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool LedKeyboard::setRegion(uint8_t region, LedKeyboard::Color color) {
|
||||
LedKeyboard::byte_buffer_t data;
|
||||
switch (m_keyboardModel) {
|
||||
case KeyboardModel::g213:
|
||||
data = {0x11, 0xff, 0x0c, 0x3a, region, 0x01, color.red, color.green, color.blue };
|
||||
data.resize(20,0x00);
|
||||
return sendDataInternal(data);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool LedKeyboard::setStartupMode(StartupMode startupMode) {
|
||||
byte_buffer_t data;
|
||||
switch (m_keyboardModel) {
|
||||
case KeyboardModel::g213:
|
||||
case KeyboardModel::g410:
|
||||
case KeyboardModel::g610:
|
||||
case KeyboardModel::g810:
|
||||
@@ -535,6 +567,11 @@ bool LedKeyboard::setNativeEffect(NativeEffect effect, NativeEffectPart part, ui
|
||||
uint8_t protocolByte = 0;
|
||||
|
||||
switch (m_keyboardModel) {
|
||||
case KeyboardModel::g213:
|
||||
protocolByte = 0x0c;
|
||||
|
||||
if (part == NativeEffectPart::logo) return false; //Does not have logo component
|
||||
break;
|
||||
case KeyboardModel::g410:
|
||||
case KeyboardModel::g610: // Unconfirmed
|
||||
case KeyboardModel::g810:
|
||||
@@ -653,6 +690,8 @@ bool LedKeyboard::sendDataInternal(byte_buffer_t &data) {
|
||||
|
||||
LedKeyboard::byte_buffer_t LedKeyboard::getKeyGroupAddress(LedKeyboard::KeyAddressGroup keyAddressGroup) {
|
||||
switch (m_keyboardModel) {
|
||||
case KeyboardModel::g213:
|
||||
return {}; // Device doesn't support per-key setting
|
||||
case KeyboardModel::g410:
|
||||
case KeyboardModel::g610:
|
||||
case KeyboardModel::g810:
|
||||
|
||||
Reference in New Issue
Block a user