Compare commits
18
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
18aa6b6cd8 | ||
|
|
a0422d7ea5 | ||
|
|
f8fe2ff7f8 | ||
|
|
643e51e71b | ||
|
|
04ebe3e702 | ||
|
|
f782c92faf | ||
|
|
1e89f652cc | ||
|
|
4879ae9bbe | ||
|
|
cbf5fe90f6 | ||
|
|
5ae3997e73 | ||
|
|
8687bc23b3 | ||
|
|
961aad8650 | ||
|
|
fed086e0c2 | ||
|
|
0b78d81c4e | ||
|
|
bbbf93beae | ||
|
|
99f7645d9a | ||
|
|
847b10bda9 | ||
|
|
7825734f07 |
@@ -6,6 +6,8 @@ OpenRGB
|
||||
openrgb
|
||||
OpenRGB-x86_64.AppImage
|
||||
60-openrgb.rules
|
||||
debian/changelog
|
||||
fedora/OpenRGB.spec
|
||||
|
||||
# Directories
|
||||
.build/
|
||||
|
||||
+9
-1
@@ -109,6 +109,7 @@ before_script:
|
||||
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:buster-32
|
||||
stage: build
|
||||
script:
|
||||
- ./scripts/build-package-files.sh debian/changelog
|
||||
- dpkg-architecture -l
|
||||
- dpkg-buildpackage --target-arch i386 -us -B
|
||||
- rm -v ../openrgb-dbgsym*.*deb
|
||||
@@ -137,6 +138,7 @@ before_script:
|
||||
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:buster-64
|
||||
stage: build
|
||||
script:
|
||||
- ./scripts/build-package-files.sh debian/changelog
|
||||
- dpkg-architecture -l
|
||||
- dpkg-buildpackage -us -B
|
||||
- rm -v ../openrgb-dbgsym*.*deb
|
||||
@@ -165,6 +167,7 @@ before_script:
|
||||
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-32
|
||||
stage: build
|
||||
script:
|
||||
- ./scripts/build-package-files.sh debian/changelog
|
||||
- dpkg-architecture -l
|
||||
- dpkg-buildpackage --target-arch i386 -us -B
|
||||
- rm -v ../openrgb-dbgsym*.*deb
|
||||
@@ -193,6 +196,7 @@ before_script:
|
||||
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bullseye-64
|
||||
stage: build
|
||||
script:
|
||||
- ./scripts/build-package-files.sh debian/changelog
|
||||
- dpkg-architecture -l
|
||||
- dpkg-buildpackage -us -B
|
||||
- rm -v ../openrgb-dbgsym*.*deb
|
||||
@@ -221,6 +225,7 @@ before_script:
|
||||
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-32
|
||||
stage: build
|
||||
script:
|
||||
- ./scripts/build-package-files.sh debian/changelog
|
||||
- dpkg-architecture -l
|
||||
- dpkg-buildpackage --target-arch i386 -us -B
|
||||
- rm -v ../openrgb-dbgsym*.deb
|
||||
@@ -249,6 +254,7 @@ before_script:
|
||||
image: registry.gitlab.com/openrgbdevelopers/openrgb-linux-ci-deb-builder:bookworm-64
|
||||
stage: build
|
||||
script:
|
||||
- ./scripts/build-package-files.sh debian/changelog
|
||||
- dpkg-architecture -l
|
||||
- dpkg-buildpackage -us -B
|
||||
- rm -v ../openrgb-dbgsym*.deb
|
||||
@@ -278,6 +284,7 @@ before_script:
|
||||
script:
|
||||
- dnf install rpmdevtools dnf-plugins-core -y
|
||||
- rpmdev-setuptree
|
||||
- ./scripts/build-package-files.sh fedora/OpenRGB.spec
|
||||
- ls /root/
|
||||
- cp fedora/OpenRGB.spec /root/rpmbuild/SPECS
|
||||
- cp ../OpenRGB /root/rpmbuild/SOURCES/ -r
|
||||
@@ -310,8 +317,9 @@ before_script:
|
||||
image: fedora:36
|
||||
stage: build
|
||||
script:
|
||||
- dnf install rpmdevtools dnf-plugins-core libcurl-devel -y
|
||||
- dnf install rpmdevtools dnf-plugins-core libcurl-devel qt5-qtbase-devel -y
|
||||
- rpmdev-setuptree
|
||||
- ./scripts/build-package-files.sh fedora/OpenRGB.spec
|
||||
- ls /root/
|
||||
- cp fedora/OpenRGB.spec /root/rpmbuild/SPECS
|
||||
- cp ../OpenRGB /root/rpmbuild/SOURCES/ -r
|
||||
|
||||
@@ -138,7 +138,7 @@ int AuraTUFKeyboardController::GetLayout()
|
||||
{
|
||||
char layout[4];
|
||||
|
||||
snprintf(layout, 4, "%X", version);
|
||||
sprintf(layout, "%X", version);
|
||||
|
||||
int layoutnum = std::stoi(std::string(layout, 1));
|
||||
|
||||
|
||||
@@ -37,10 +37,11 @@ void DetectColorfulGPUControllers(i2c_smbus_interface* bus, uint8_t i2c_addr, co
|
||||
}
|
||||
}
|
||||
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ultra W OC 12G L-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ultra W OC 12G L-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G_2, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV2, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ultra W OC LHR", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ULTRAW_OC, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_TI_ADVANCED_OCV2, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4080 Ultra W OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4080_ULTRAW_OCV2, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ultra W OC 12G L-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ultra W OC 12G L-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G_2, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3060 Ti Ultra W OC LHR-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3060_ULTRAW_OC_12G_2, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ADVANCED_OCV2, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ultra W OC LHR", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070_LHR_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_ULTRAW_OC, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 3070 Ti Advanced OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_3070_TI_ADVANCED_OCV2, 0x61);
|
||||
REGISTER_I2C_PCI_DETECTOR("iGame GeForce RTX 4080 Ultra W OC-V", DetectColorfulGPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, COLORFUL_SUB_VEN, COLORFUL_IGAME_RTX_4080_ULTRAW_OCV2, 0x61);
|
||||
|
||||
@@ -240,7 +240,7 @@ void RGBController_CorsairLightingNode::SetupZones()
|
||||
for (unsigned int channel_idx = 0; channel_idx < CORSAIR_LIGHTING_NODE_NUM_CHANNELS; channel_idx++)
|
||||
{
|
||||
char ch_idx_string[2];
|
||||
snprintf(ch_idx_string, 2, "%d", channel_idx + 1);
|
||||
sprintf(ch_idx_string, "%d", channel_idx + 1);
|
||||
|
||||
zones[channel_idx].name = "Corsair Channel ";
|
||||
zones[channel_idx].name.append(ch_idx_string);
|
||||
@@ -264,7 +264,7 @@ void RGBController_CorsairLightingNode::SetupZones()
|
||||
for (unsigned int led_ch_idx = 0; led_ch_idx < zones[channel_idx].leds_count; led_ch_idx++)
|
||||
{
|
||||
char led_idx_string[4];
|
||||
snprintf(led_idx_string, 4, "%d", led_ch_idx + 1);
|
||||
sprintf(led_idx_string, "%d", led_ch_idx + 1);
|
||||
|
||||
led new_led;
|
||||
new_led.name = "Corsair Channel ";
|
||||
|
||||
@@ -132,6 +132,17 @@ ENESMBusController::ENESMBusController(ENESMBusInterface* interface, ene_dev_id
|
||||
// Read LED count from configuration table
|
||||
led_count = config_table[ENE_CONFIG_LED_COUNT_0107];
|
||||
}
|
||||
// AUMA0-E6K5-1110 - Third generation GPU controller?
|
||||
// found an ASUS ROG Strix 4080 OC, seems to be equal to AUMA0-E6K5-0107
|
||||
else if (strcmp(device_name, "AUMA0-E6K5-1110") == 0)
|
||||
{
|
||||
direct_reg = ENE_REG_COLORS_DIRECT_V2;
|
||||
effect_reg = ENE_REG_COLORS_EFFECT_V2;
|
||||
channel_cfg = ENE_CONFIG_CHANNEL_V2;
|
||||
|
||||
// Read LED count from configuration table
|
||||
led_count = config_table[ENE_CONFIG_LED_COUNT_1110];
|
||||
}
|
||||
// Assume first generation controller if string does not match
|
||||
else
|
||||
{
|
||||
@@ -213,6 +224,20 @@ const char * ENESMBusController::GetChannelName(unsigned int led)
|
||||
return(ene_channels[9]);
|
||||
break;
|
||||
|
||||
/*---------------------------------------------*\
|
||||
| If the config table entry is zero, this LED |
|
||||
| is part of the previous zone. Search |
|
||||
| backwards until finding a non-zero entry. |
|
||||
\*---------------------------------------------*/
|
||||
case 0:
|
||||
for(int id = led; led >= 0; id--)
|
||||
{
|
||||
if(config_table[channel_cfg + id] != 0)
|
||||
{
|
||||
return(GetChannelName(id));
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
return(ene_channels[10]);
|
||||
break;
|
||||
|
||||
@@ -90,6 +90,7 @@ enum
|
||||
{
|
||||
ENE_CONFIG_LED_COUNT = 0x02, /* LED Count configuration offset */
|
||||
ENE_CONFIG_LED_COUNT_0107 = 0x03, /* LED Count configuration offset */
|
||||
ENE_CONFIG_LED_COUNT_1110 = 0x03, /* LED Count configuration offset */
|
||||
ENE_CONFIG_CHANNEL_V1 = 0x13, /* LED Channel configuration offset */
|
||||
ENE_CONFIG_CHANNEL_V2 = 0x1B, /* LED Channel V2 configuration offset */
|
||||
};
|
||||
|
||||
@@ -364,6 +364,7 @@ REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3070Ti O8G V2 GAMING", DetectEN
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3070Ti O8G GAMING", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3070TI_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3070TI_O8G_GAMING, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3080 10G GAMING", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3080_10G_GAMING_PD, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3080 10G GAMING", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3080_10G_GAMING, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS ROG RTX 3080 10G GUNDAM EDITION", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3080_10G_GUNDAM_EDITION, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3080 O10G OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3080_O10G_OC, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX 3080 10G GAMING", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3080_10G_GAMING, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX 3080 O10G GAMING", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_3080_O10G_GAMING, 0x67);
|
||||
@@ -387,6 +388,8 @@ REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3090 O24G", DetectEN
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3090 O24G OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3090_O24G_OC, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 3090Ti O24G OC GAMING", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX3090TI_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_3090TI_O24G_OC_GAMING, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 4070 Ti 12G Gaming", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_4070TI_12G_GAMING, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 4070 Ti O12G Gaming", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_4070TI_O12G_GAMING, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 4080 O16G GAMING", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_4080_O16G_GAMING, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 4090 O24G OC", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_4090_O24G_OC_GAMING, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS TUF RTX 4090 O24G", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, ASUS_SUB_VEN, ASUS_TUF_RTX_4090_O24G_GAMING, 0x67);
|
||||
REGISTER_I2C_PCI_DETECTOR("ASUS ROG STRIX RTX 4090 O24G GAMING", DetectENESMBusGPUControllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, ASUS_SUB_VEN, ASUS_ROG_STRIX_RTX_4090_O24G_GAMING, 0x67);
|
||||
|
||||
@@ -373,16 +373,17 @@ void RGBController_ENESMBus::SetupZones()
|
||||
/*---------------------------------------------------------*\
|
||||
| Create LED entries for each zone |
|
||||
\*---------------------------------------------------------*/
|
||||
std::size_t led_idx = 0;
|
||||
for(std::size_t zone_idx = 0; zone_idx < zones.size(); zone_idx++)
|
||||
{
|
||||
for(std::size_t led_idx = 0; led_idx < zones[zone_idx].leds_count; led_idx++)
|
||||
for(std::size_t zone_led_idx = 0; zone_led_idx < zones[zone_idx].leds_count; zone_led_idx++)
|
||||
{
|
||||
led* new_led = new led();
|
||||
|
||||
new_led->name = zones[zone_idx].name + " LED ";
|
||||
new_led->name.append(std::to_string(led_idx + 1));
|
||||
new_led->name.append(std::to_string(zone_led_idx + 1));
|
||||
|
||||
new_led->value = led_map[led_idx];
|
||||
new_led->value = led_map[led_idx++];
|
||||
|
||||
leds.push_back(*new_led);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ GaiZhongGaiKeyboardController::GaiZhongGaiKeyboardController(hid_device* dev_han
|
||||
| Obtaining the Firmware Version |
|
||||
\*-----------------------------------------------------*/
|
||||
char str[10];
|
||||
snprintf(str, 10, "Ver%04X", info->release_number);
|
||||
sprintf(str, "Ver%04X", info->release_number);
|
||||
version = str;
|
||||
}
|
||||
|
||||
|
||||
+4
-1
@@ -55,7 +55,7 @@ bool TestForGigabyteRGBFusion2GPUController(i2c_smbus_interface* bus, unsigned c
|
||||
// Assemble C-string with respons for debugging
|
||||
char str[32];
|
||||
for(int idx = 0; idx < read_sz; ++idx)
|
||||
snprintf(&str[5*idx], 32, " 0x%02X", data_readpkt[idx]);
|
||||
sprintf(&str[5*idx], " 0x%02X", data_readpkt[idx]);
|
||||
LOG_DEBUG("[%s] at address 0x%02X invalid. Expected 0xAB [0x*] but received:%s", GIGABYTEGPU_CONTROLLER_NAME2, address, str);
|
||||
pass = false;
|
||||
}
|
||||
@@ -99,8 +99,10 @@ REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX2080 SUPER 8G Rev 1.0",
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX2080 SUPER Waterforce WB 8G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX2080S_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX2080S_WATERFORCE_WB_SUB_DEV, 0x51);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX2080 Ti XTREME 11G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX2080TI_A_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX2080TI_EXTREME_SUB_DEV, 0x50);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX3060 ELITE 12G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_GA104_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060_ELITE_12GB_SUB_DEV, 0x70);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX3060 ELITE 12G Rev a1", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_GA106_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060_ELITE_12GB_SUB_DEV, 0x70);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX3060 ELITE 12G LHR", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX3060_LHR_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060_ELITE_12GB_SUB_DEV, 0x70);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX3060 Ti ELITE 8G LHR", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060TI_ELITE_8GB_SUB_DEV, 0x70);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte RTX3060 Ti GAMING OC 8G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060TI_GAMING_OC_SUB_DEV, 0x62);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte RTX3060 Ti GAMING OC LHR 8G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060TI_GAMING_OC_SUB_DEV, 0x62);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte RTX3060 Ti GAMING OC PRO 8G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060TI_GAMING_OC_PRO_SUB_DEV, 0x62);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte RTX3060 Ti Gaming OC PRO 8G LHR", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3060TI_GAMING_OC_PRO_SUB_DEV, 0x62);
|
||||
@@ -118,5 +120,6 @@ REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX3090 XTREME WATERFORCE 24G",
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX3090 XTREME WATERFORCE WB 24G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX3090_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX3090_XTREME_WATERFORCE_WB_SUB_DEV, 0x64);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte RTX4080 Gaming OC 16G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX4080_GAMING_OC_SUB_DEV, 0x71);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX4080 MASTER 16G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX4080_MASTER_16G_SUB_DEV, 0x71);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte RTX4090 GAMING OC 24G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, GIGABYTE_SUB_VEN, GIGABYTE_RTX4090_GAMING_OC_24G_SUB_DEV, 0x71);
|
||||
REGISTER_I2C_PCI_DETECTOR("Gigabyte AORUS RTX4090 MASTER 24G", DetectGigabyteRGBFusion2GPUControllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, GIGABYTE_SUB_VEN, GIGABYTE_AORUS_RTX4090_MASTER_24G_SUB_DEV, 0x71);
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ HyperXAlloyOriginsCoreController::HyperXAlloyOriginsCoreController(hid_device* d
|
||||
memset(fw_version_buf, '\0', sizeof(fw_version_buf));
|
||||
|
||||
unsigned short version = dev_info->release_number;
|
||||
snprintf(fw_version_buf, 8, "%.2X.%.2X", (version & 0xFF00) >> 8, version & 0x00FF);
|
||||
sprintf(fw_version_buf, "%.2X.%.2X", (version & 0xFF00) >> 8, version & 0x00FF);
|
||||
|
||||
firmware_version = fw_version_buf;
|
||||
}
|
||||
|
||||
@@ -37,7 +37,8 @@ void DetectMSIGPUv2Controllers(i2c_smbus_interface* bus, uint8_t i2c_addr, const
|
||||
|
||||
} /* DetectMSIGPUv2Controllers() */
|
||||
|
||||
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti 12GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_SUB_DEV, 0x68);
|
||||
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti 12GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_GAMING_X_TRIO_SUB_DEV, 0x68);
|
||||
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4070Ti 12GB Suprim X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4070TI_DEV, MSI_SUB_VEN, MSI_RTX4070TI_SUPRIM_X_TRIO_SUB_DEV, 0x68);
|
||||
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_GAMING_X_TRIO_SUB_DEV, 0x68);
|
||||
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4080 16GB Suprim X", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4080_DEV, MSI_SUB_VEN, MSI_RTX4080_SUPRIM_X_SUB_DEV, 0x68);
|
||||
REGISTER_I2C_PCI_DETECTOR("MSI GeForce RTX 4090 24GB Gaming X Trio", DetectMSIGPUv2Controllers, NVIDIA_VEN, NVIDIA_RTX4090_DEV, MSI_SUB_VEN, MSI_RTX4090_GAMING_X_TRIO_SUB_DEV, 0x68);
|
||||
|
||||
@@ -379,7 +379,7 @@ void MountainKeyboardController::SendColorPacketCmd(unsigned char pkt_no,unsigne
|
||||
memset(&usb_buf[MOUNTAIN_KEYBOARD_USB_BUFFER_HEADER_SIZE + data_size],0x00,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE-data_size);
|
||||
}
|
||||
hid_write(dev, usb_buf, MOUNTAIN_KEYBOARD_USB_BUFFER_SIZE);
|
||||
std::this_thread::sleep_for(10ms);
|
||||
std::this_thread::sleep_for(5ms);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,7 +402,7 @@ void MountainKeyboardController::SendColorEdgePacketCmd(unsigned char pkt_no, un
|
||||
memset(&usb_buf[MOUNTAIN_KEYBOARD_USB_BUFFER_HEADER_SIZE + data_size],0x00,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE-data_size);
|
||||
}
|
||||
hid_write(dev, usb_buf, MOUNTAIN_KEYBOARD_USB_BUFFER_SIZE);
|
||||
std::this_thread::sleep_for(10ms);
|
||||
std::this_thread::sleep_for(5ms);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -422,48 +422,106 @@ void MountainKeyboardController::SendColorPacketFinishCmd()
|
||||
}
|
||||
}
|
||||
|
||||
void MountainKeyboardController::SendDirectColorEdgeCmd(unsigned char brightness, unsigned char *color_data, unsigned int data_size)
|
||||
void MountainKeyboardController::SendDirectColorEdgeCmd(bool quick_mode, unsigned char brightness, unsigned char *color_data, unsigned int data_size)
|
||||
{
|
||||
unsigned char pkt_no = 0;
|
||||
static bool first_call = true;
|
||||
static unsigned char prv_buffer[MOUNTAIN_KEYBOARD_TRANSFER_EDGE_BUFFER_SIZE] = {0};
|
||||
|
||||
unsigned char *data_ptr = color_data;
|
||||
SendColorStartPacketCmd(brightness);
|
||||
while(data_size>0)
|
||||
unsigned char pkt_no = 0;
|
||||
unsigned char *data_ptr = color_data;
|
||||
unsigned char *prv_data_ptr = prv_buffer;
|
||||
unsigned int data_len = data_size;
|
||||
|
||||
if(MOUNTAIN_KEYBOARD_TRANSFER_EDGE_BUFFER_SIZE >= data_len)
|
||||
{
|
||||
if(data_size >= MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE)
|
||||
if(!quick_mode)
|
||||
{
|
||||
MountainKeyboardController::SendColorEdgePacketCmd(pkt_no++,data_ptr,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE);
|
||||
data_ptr += MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
data_size -= MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
SendColorStartPacketCmd(brightness);
|
||||
}
|
||||
else
|
||||
while(data_len>0)
|
||||
{
|
||||
MountainKeyboardController::SendColorEdgePacketCmd(pkt_no++,data_ptr,data_size);
|
||||
data_size = 0;;
|
||||
if(data_len >= MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE)
|
||||
{
|
||||
if(first_call || !quick_mode || memcmp(data_ptr,prv_data_ptr,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE))
|
||||
{
|
||||
MountainKeyboardController::SendColorEdgePacketCmd(pkt_no,data_ptr,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE);
|
||||
memcpy(prv_data_ptr,data_ptr,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE);
|
||||
}
|
||||
pkt_no++;
|
||||
data_ptr += MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
prv_data_ptr += MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
data_len -= MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(first_call || !quick_mode || memcmp(data_ptr,prv_data_ptr,data_len))
|
||||
{
|
||||
MountainKeyboardController::SendColorEdgePacketCmd(pkt_no,data_ptr,data_len);
|
||||
memcpy(prv_data_ptr,data_ptr,data_len);
|
||||
}
|
||||
data_len = 0;
|
||||
}
|
||||
}
|
||||
if(!quick_mode)
|
||||
{
|
||||
SendColorPacketFinishCmd();
|
||||
}
|
||||
|
||||
if (first_call)
|
||||
{
|
||||
first_call = false;
|
||||
}
|
||||
}
|
||||
SendColorPacketFinishCmd();
|
||||
}
|
||||
|
||||
void MountainKeyboardController::SendDirectColorCmd(unsigned char brightness, unsigned char *color_data, unsigned int data_size)
|
||||
void MountainKeyboardController::SendDirectColorCmd(bool quick_mode, unsigned char brightness, unsigned char *color_data, unsigned int data_size)
|
||||
{
|
||||
unsigned char pkt_no = 0;
|
||||
static bool first_call = true;
|
||||
static unsigned char prv_buffer[MOUNTAIN_KEYBOARD_TRANSFER_BUFFER_SIZE] = {0};
|
||||
|
||||
unsigned char *data_ptr = color_data;
|
||||
SendColorStartPacketCmd(brightness);
|
||||
while(data_size>0)
|
||||
unsigned char pkt_no = 0;
|
||||
unsigned char *data_ptr = color_data;
|
||||
unsigned char *prv_data_ptr = prv_buffer;
|
||||
unsigned int data_len = data_size;
|
||||
|
||||
if(MOUNTAIN_KEYBOARD_TRANSFER_BUFFER_SIZE >= data_len)
|
||||
{
|
||||
if(data_size >= MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE)
|
||||
if(!quick_mode)
|
||||
{
|
||||
MountainKeyboardController::SendColorPacketCmd(pkt_no++,brightness,data_ptr,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE);
|
||||
data_ptr += MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
data_size -= MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
SendColorStartPacketCmd(brightness);
|
||||
}
|
||||
else
|
||||
while(data_len>0)
|
||||
{
|
||||
MountainKeyboardController::SendColorPacketCmd(pkt_no++,brightness,data_ptr,data_size);
|
||||
data_size = 0;;
|
||||
if(data_len >= MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE)
|
||||
{
|
||||
if(first_call || !quick_mode || memcmp(data_ptr,prv_data_ptr,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE))
|
||||
{
|
||||
MountainKeyboardController::SendColorPacketCmd(pkt_no,brightness,data_ptr,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE);
|
||||
memcpy(prv_data_ptr,data_ptr,MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE);
|
||||
}
|
||||
pkt_no++;
|
||||
data_ptr += MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
prv_data_ptr += MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
data_len -= MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(first_call || !quick_mode || memcmp(data_ptr,prv_data_ptr,data_len))
|
||||
{
|
||||
MountainKeyboardController::SendColorPacketCmd(pkt_no,brightness,data_ptr,data_len);
|
||||
memcpy(prv_data_ptr,data_ptr,data_len);
|
||||
}
|
||||
data_len = 0;
|
||||
}
|
||||
}
|
||||
if(!quick_mode)
|
||||
{
|
||||
SendColorPacketFinishCmd();
|
||||
}
|
||||
|
||||
if (first_call)
|
||||
{
|
||||
first_call = false;
|
||||
}
|
||||
}
|
||||
SendColorPacketFinishCmd();
|
||||
}
|
||||
|
||||
@@ -22,6 +22,12 @@
|
||||
#define MOUNTAIN_EVEREST_PID 0x0001
|
||||
|
||||
|
||||
#define MOUNTAIN_KEYBOARD_MAX_TRANSFER_COLORS 126
|
||||
#define MOUNTAIN_KEYBOARD_TRANSFER_BUFFER_SIZE (3*MOUNTAIN_KEYBOARD_MAX_TRANSFER_COLORS)
|
||||
|
||||
#define MOUNTAIN_KEYBOARD_MAX_TRANSFER_EDGE_COLORS 46
|
||||
#define MOUNTAIN_KEYBOARD_TRANSFER_EDGE_BUFFER_SIZE (3*MOUNTAIN_KEYBOARD_MAX_TRANSFER_EDGE_COLORS)
|
||||
|
||||
#define MOUNTAIN_KEYBOARD_USB_BUFFER_SIZE 65
|
||||
#define MOUNTAIN_KEYBOARD_USB_BUFFER_HEADER_SIZE 8
|
||||
#define MOUNTAIN_KEYBOARD_USB_MAX_DIRECT_PAYLOAD_SIZE \
|
||||
@@ -129,8 +135,8 @@ public:
|
||||
void SendColorMatrixCmd(color_setup setup);
|
||||
void SendColorReactiveCmd(color_setup setup);
|
||||
|
||||
void SendDirectColorCmd(unsigned char brightness, unsigned char *color_data, unsigned int color_count);
|
||||
void SendDirectColorEdgeCmd(unsigned char brightness, unsigned char *color_data, unsigned int data_size);
|
||||
void SendDirectColorCmd(bool quick_mode, unsigned char brightness, unsigned char *color_data, unsigned int color_count);
|
||||
void SendDirectColorEdgeCmd(bool quick_mode, unsigned char brightness, unsigned char *color_data, unsigned int data_size);
|
||||
|
||||
void SaveData(unsigned char mode_idx);
|
||||
void SelectMode(unsigned char mode_idx);
|
||||
|
||||
@@ -19,51 +19,308 @@ static const unsigned char reactive_speed_values [MOUNTAIN_KEYBOARD_SPEED_MAX
|
||||
//0xFFFFFFFF indicates an unused entry in matrix
|
||||
#define NA 0xFFFFFFFF
|
||||
|
||||
#define KEYBOARD_MATRIX_HEIGHT 6
|
||||
#define KEYBOARD_MATRIX_WIDTH 24
|
||||
#define KEYBOARD_MATRIX_TKL_HEIGHT 6
|
||||
#define KEYBOARD_MATRIX_TKL_WIDTH 19
|
||||
#define KEYBOARD_MATRIX_TKL_KEYS_NO 87
|
||||
|
||||
#define KEYBOARD_MATRIX_EDGE_HEIGHT 6
|
||||
#define KEYBOARD_MATRIX_EDGE_WIDTH 19
|
||||
#define KEYBOARD_MATRIX_NUM_HEIGHT 6
|
||||
#define KEYBOARD_MATRIX_NUM_WIDTH 4
|
||||
#define KEYBOARD_MATRIX_NUM_KEYS_NO 17
|
||||
|
||||
static unsigned int matrix_map[KEYBOARD_MATRIX_HEIGHT][KEYBOARD_MATRIX_WIDTH] =
|
||||
{ { 0, NA, 9, 18, 27, 36, NA, 45, 54, 63, 72, NA, 81, 90, 99, 108, 117, 114, 123, NA, NA, NA, NA, NA },
|
||||
{ 1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, NA, 100, 109, 87, NA, 96, 105, 115, NA, 6, 24, 16, 15 },
|
||||
{ 2, NA, 11, 20, 29, 38, NA, 47, 56, 65, 74, 83, 92, 101, 110, 119, 88, 97, 106, NA, 61, 69, 70, 7 },
|
||||
{ 3, NA, 12, 21, 30, 39, NA, 48, 57, 6, 75, 84, 93, 102, NA, 120, NA, NA, NA, NA, 51, 52, 60, NA },
|
||||
{ 4, NA, 22, 31, 40, 49, NA, 58, NA, 67, 76, 85, 94, 103, 121, NA, NA, 124, NA, NA, 34, 42, 43, 33 },
|
||||
{ 5, 14, 23, NA, NA, NA, NA, 41, NA, NA, NA, NA, 68, 77, 86, 95, 104, 113, 122, NA, 78, NA, 79, NA } };
|
||||
#define KEYBOARD_MATRIX_EDGE_TKL_HEIGHT 6
|
||||
#define KEYBOARD_MATRIX_EDGE_TKL_WIDTH 14
|
||||
#define KEYBOARD_MATRIX_EDGE_TKL_KEYS_NO 32
|
||||
|
||||
#define KEYBOARD_MATRIX_EDGE_NUMPAD_HEIGHT 6
|
||||
#define KEYBOARD_MATRIX_EDGE_NUMPAD_WIDTH 5
|
||||
#define KEYBOARD_MATRIX_EDGE_NUMPAD_KEYS_NO 14
|
||||
|
||||
static unsigned int matrix_edge_map[KEYBOARD_MATRIX_EDGE_HEIGHT][KEYBOARD_MATRIX_EDGE_WIDTH] =
|
||||
{ { NA, 13, 14, 15, 7, 6, 5, 4, 3, 2, 1, 0, 45, NA, NA, 44, 43, 42, NA },
|
||||
{ 16, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 9, 31, NA, NA, NA, 41 },
|
||||
{ 17, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 8, 32, NA, NA, NA, 40 },
|
||||
{ 18, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 10, 33, NA, NA, NA, 39 },
|
||||
{ 19, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 11, 34, NA, NA, NA, 38 },
|
||||
{ NA, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 12, NA, NA, 35, 36, 37, NA } };
|
||||
#define KEYBOARD_MATRIX_KEYS_NO (KEYBOARD_MATRIX_TKL_KEYS_NO + KEYBOARD_MATRIX_NUM_KEYS_NO)
|
||||
#define KEYBOARD_MATRIX_EDGE_KEYS_NO (KEYBOARD_MATRIX_EDGE_TKL_KEYS_NO + KEYBOARD_MATRIX_EDGE_NUMPAD_KEYS_NO)
|
||||
|
||||
/*-------------------------------*\
|
||||
| TODO: Detect detached keypad |
|
||||
\*-------------------------------*/
|
||||
enum
|
||||
{
|
||||
IDX_EDGE_00,
|
||||
IDX_EDGE_01,
|
||||
IDX_EDGE_02,
|
||||
IDX_EDGE_03,
|
||||
IDX_EDGE_04,
|
||||
IDX_EDGE_05,
|
||||
IDX_EDGE_06,
|
||||
IDX_EDGE_07,
|
||||
IDX_EDGE_08,
|
||||
IDX_EDGE_09,
|
||||
IDX_EDGE_10,
|
||||
IDX_EDGE_11,
|
||||
IDX_EDGE_12,
|
||||
IDX_EDGE_13,
|
||||
IDX_EDGE_14,
|
||||
IDX_EDGE_15,
|
||||
IDX_EDGE_16,
|
||||
IDX_EDGE_17,
|
||||
IDX_EDGE_18,
|
||||
IDX_EDGE_19,
|
||||
IDX_EDGE_20,
|
||||
IDX_EDGE_21,
|
||||
IDX_EDGE_22,
|
||||
IDX_EDGE_23,
|
||||
IDX_EDGE_24,
|
||||
IDX_EDGE_25,
|
||||
IDX_EDGE_26,
|
||||
IDX_EDGE_27,
|
||||
IDX_EDGE_28,
|
||||
IDX_EDGE_29,
|
||||
IDX_EDGE_30,
|
||||
IDX_EDGE_31,
|
||||
IDX_EDGE_32,
|
||||
IDX_EDGE_33,
|
||||
IDX_EDGE_34,
|
||||
IDX_EDGE_35,
|
||||
IDX_EDGE_36,
|
||||
IDX_EDGE_37,
|
||||
IDX_EDGE_38,
|
||||
IDX_EDGE_39,
|
||||
IDX_EDGE_40,
|
||||
IDX_EDGE_41,
|
||||
IDX_EDGE_42,
|
||||
IDX_EDGE_43,
|
||||
IDX_EDGE_44,
|
||||
IDX_EDGE_45
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
IDX_KEY_EN_ESCAPE = 0,
|
||||
IDX_KEY_EN_BACK_TICK,
|
||||
IDX_KEY_EN_TAB,
|
||||
IDX_KEY_EN_CAPS_LOCK,
|
||||
IDX_KEY_EN_LEFT_SHIFT,
|
||||
IDX_KEY_EN_LEFT_CONTROL,
|
||||
IDX_KEY_EN_NUMPAD_LOCK,
|
||||
IDX_KEY_EN_NUMPAD_PLUS,
|
||||
IDX_KEY_EN_UNUSED_8,
|
||||
IDX_KEY_EN_F1,
|
||||
IDX_KEY_EN_1,
|
||||
IDX_KEY_EN_Q,
|
||||
IDX_KEY_EN_A,
|
||||
IDX_KEY_EN_UNUSED_13,
|
||||
IDX_KEY_EN_LEFT_WINDOWS,
|
||||
IDX_KEY_EN_NUMPAD_TIMES,
|
||||
IDX_KEY_EN_NUMPAD_MINUS,
|
||||
IDX_KEY_EN_UNUSED_17,
|
||||
IDX_KEY_EN_F2,
|
||||
IDX_KEY_EN_2,
|
||||
IDX_KEY_EN_W,
|
||||
IDX_KEY_EN_S,
|
||||
IDX_KEY_EN_Z,
|
||||
IDX_KEY_EN_LEFT_ALT,
|
||||
IDX_KEY_EN_NUMPAD_DIVIDE,
|
||||
IDX_KEY_EN_UNUSED_25,
|
||||
IDX_KEY_EN_UNUSED_26,
|
||||
IDX_KEY_EN_F3,
|
||||
IDX_KEY_EN_3,
|
||||
IDX_KEY_EN_E,
|
||||
IDX_KEY_EN_D,
|
||||
IDX_KEY_EN_X,
|
||||
IDX_KEY_EN_UNUSED_32,
|
||||
IDX_KEY_EN_NUMPAD_ENTER,
|
||||
IDX_KEY_EN_NUMPAD_1,
|
||||
IDX_KEY_EN_UNUSED_35,
|
||||
IDX_KEY_EN_F4,
|
||||
IDX_KEY_EN_4,
|
||||
IDX_KEY_EN_R,
|
||||
IDX_KEY_EN_F,
|
||||
IDX_KEY_EN_C,
|
||||
IDX_KEY_EN_SPACE,
|
||||
IDX_KEY_EN_NUMPAD_2,
|
||||
IDX_KEY_EN_NUMPAD_3,
|
||||
IDX_KEY_EN_UNUSED_44,
|
||||
IDX_KEY_EN_F5,
|
||||
IDX_KEY_EN_5,
|
||||
IDX_KEY_EN_T,
|
||||
IDX_KEY_EN_G,
|
||||
IDX_KEY_EN_V,
|
||||
IDX_KEY_EN_UNUSED_50,
|
||||
IDX_KEY_EN_NUMPAD_4,
|
||||
IDX_KEY_EN_NUMPAD_5,
|
||||
IDX_KEY_EN_UNUSED_53,
|
||||
IDX_KEY_EN_F6,
|
||||
IDX_KEY_EN_6,
|
||||
IDX_KEY_EN_Y,
|
||||
IDX_KEY_EN_H,
|
||||
IDX_KEY_EN_B,
|
||||
IDX_KEY_EN_UNUSED_59,
|
||||
IDX_KEY_EN_NUMPAD_6,
|
||||
IDX_KEY_EN_NUMPAD_7,
|
||||
IDX_KEY_EN_UNUSED_62,
|
||||
IDX_KEY_EN_F7,
|
||||
IDX_KEY_EN_7,
|
||||
IDX_KEY_EN_U,
|
||||
IDX_KEY_EN_J,
|
||||
IDX_KEY_EN_N,
|
||||
IDX_KEY_EN_RIGHT_ALT,
|
||||
IDX_KEY_EN_NUMPAD_8,
|
||||
IDX_KEY_EN_NUMPAD_9,
|
||||
IDX_KEY_EN_UNUSED_71,
|
||||
IDX_KEY_EN_F8,
|
||||
IDX_KEY_EN_8,
|
||||
IDX_KEY_EN_I,
|
||||
IDX_KEY_EN_K,
|
||||
IDX_KEY_EN_M,
|
||||
IDX_KEY_EN_RIGHT_WINDOWS,
|
||||
IDX_KEY_EN_NUMPAD_0,
|
||||
IDX_KEY_EN_NUMPAD_PERIOD,
|
||||
IDX_KEY_EN_UNUSED_80,
|
||||
IDX_KEY_EN_F9,
|
||||
IDX_KEY_EN_9,
|
||||
IDX_KEY_EN_O,
|
||||
IDX_KEY_EN_L,
|
||||
IDX_KEY_EN_COMMA,
|
||||
IDX_KEY_EN_RIGHT_FUNCTION,
|
||||
IDX_KEY_EN_BACKSPACE,
|
||||
IDX_KEY_EN_DELETE,
|
||||
IDX_KEY_EN_UNUSED_89,
|
||||
IDX_KEY_EN_F10,
|
||||
IDX_KEY_EN_0,
|
||||
IDX_KEY_EN_P,
|
||||
IDX_KEY_EN_SEMICOLON,
|
||||
IDX_KEY_EN_PERIOD,
|
||||
IDX_KEY_EN_RIGHT_CONTROL,
|
||||
IDX_KEY_EN_INSERT,
|
||||
IDX_KEY_EN_END,
|
||||
IDX_KEY_EN_UNUSED_98,
|
||||
IDX_KEY_EN_F11,
|
||||
IDX_KEY_EN_MINUS,
|
||||
IDX_KEY_EN_LEFT_BRACKET,
|
||||
IDX_KEY_EN_QUOTE,
|
||||
IDX_KEY_EN_FORWARD_SLASH,
|
||||
IDX_KEY_EN_LEFT_ARROW,
|
||||
IDX_KEY_EN_HOME,
|
||||
IDX_KEY_EN_PAGE_DOWN,
|
||||
IDX_KEY_EN_UNUSED_107,
|
||||
IDX_KEY_EN_F12,
|
||||
IDX_KEY_EN_EQUALS,
|
||||
IDX_KEY_EN_RIGHT_BRACKET,
|
||||
IDX_KEY_EN_UNUSED_111,
|
||||
IDX_KEY_EN_UNUSED_112,
|
||||
IDX_KEY_EN_DOWN_ARROW,
|
||||
IDX_KEY_EN_SCROLL_LOCK,
|
||||
IDX_KEY_EN_PAGE_UP,
|
||||
IDX_KEY_EN_UNUSED_116,
|
||||
IDX_KEY_EN_PRINT_SCREEN,
|
||||
IDX_KEY_EN_UNUSED_118,
|
||||
IDX_KEY_EN_ANSI_BACK_SLASH,
|
||||
IDX_KEY_EN_ANSI_ENTER,
|
||||
IDX_KEY_EN_RIGHT_SHIFT,
|
||||
IDX_KEY_EN_RIGHT_ARROW,
|
||||
IDX_KEY_EN_PAUSE_BREAK,
|
||||
IDX_KEY_EN_UP_ARROW,
|
||||
};
|
||||
|
||||
static unsigned int matrix_tkl_map[KEYBOARD_MATRIX_TKL_HEIGHT][KEYBOARD_MATRIX_TKL_WIDTH] =
|
||||
{ { 0, NA, 8, 14, 19, 24, NA, 30, 36, 40, 45, NA, 53, 59, 65, 70, 74, 78, 83},
|
||||
{ 1, 6, 9, 15, 20, 25, 29, 31, 37, 41, 46, NA, 54, 60, 66, NA, 75, 79, 84},
|
||||
{ 2, NA, 10, 16, 21, 26, NA, 32, 38, 42, 47, 50, 55, 61, 67, 71, 76, 80, 85},
|
||||
{ 3, NA, 11, 17, 22, 27, NA, 33, 39, 43, 48, 51, 56, 62, NA, 72, NA, NA, NA},
|
||||
{ 4, NA, 12, 18, 23, 28, NA, 34, NA, 44, 49, 52, 57, 63, 68, NA, NA, 81, NA},
|
||||
{ 5, 7, 13, NA, NA, NA, NA, 35, NA, NA, NA, NA, 58, 64, 69, 73, 77, 82, 86} };
|
||||
|
||||
static unsigned int matrix_num_map[KEYBOARD_MATRIX_NUM_HEIGHT][KEYBOARD_MATRIX_NUM_WIDTH] =
|
||||
{ { NA, NA, NA, NA },
|
||||
{ 0, 5, 9, 14 },
|
||||
{ 1, 6, 10, 15 },
|
||||
{ 2, 7, 11, NA },
|
||||
{ 3, 8, 12, 16 },
|
||||
{ 4, NA, 13, NA } };
|
||||
|
||||
static unsigned int matrix_tkl_map_lut[KEYBOARD_MATRIX_TKL_KEYS_NO] =
|
||||
{
|
||||
IDX_KEY_EN_ESCAPE, IDX_KEY_EN_BACK_TICK, IDX_KEY_EN_TAB, IDX_KEY_EN_CAPS_LOCK, IDX_KEY_EN_LEFT_SHIFT, IDX_KEY_EN_LEFT_CONTROL,
|
||||
IDX_KEY_EN_1, IDX_KEY_EN_LEFT_WINDOWS,
|
||||
IDX_KEY_EN_F1, IDX_KEY_EN_2, IDX_KEY_EN_Q, IDX_KEY_EN_A, IDX_KEY_EN_Z, IDX_KEY_EN_LEFT_ALT,
|
||||
IDX_KEY_EN_F2, IDX_KEY_EN_3, IDX_KEY_EN_W, IDX_KEY_EN_S, IDX_KEY_EN_X,
|
||||
IDX_KEY_EN_F3, IDX_KEY_EN_4, IDX_KEY_EN_E, IDX_KEY_EN_D, IDX_KEY_EN_C,
|
||||
IDX_KEY_EN_F4, IDX_KEY_EN_5, IDX_KEY_EN_R, IDX_KEY_EN_F, IDX_KEY_EN_V,
|
||||
IDX_KEY_EN_6,
|
||||
IDX_KEY_EN_F5, IDX_KEY_EN_7, IDX_KEY_EN_T, IDX_KEY_EN_G, IDX_KEY_EN_B, IDX_KEY_EN_SPACE,
|
||||
IDX_KEY_EN_F6, IDX_KEY_EN_8, IDX_KEY_EN_Y, IDX_KEY_EN_H,
|
||||
IDX_KEY_EN_F7, IDX_KEY_EN_9, IDX_KEY_EN_U, IDX_KEY_EN_J, IDX_KEY_EN_N,
|
||||
IDX_KEY_EN_F8, IDX_KEY_EN_0, IDX_KEY_EN_I, IDX_KEY_EN_K, IDX_KEY_EN_M,
|
||||
IDX_KEY_EN_O, IDX_KEY_EN_L, IDX_KEY_EN_COMMA,
|
||||
IDX_KEY_EN_F9, IDX_KEY_EN_MINUS, IDX_KEY_EN_P, IDX_KEY_EN_SEMICOLON, IDX_KEY_EN_PERIOD, IDX_KEY_EN_RIGHT_ALT,
|
||||
IDX_KEY_EN_F10, IDX_KEY_EN_EQUALS, IDX_KEY_EN_LEFT_BRACKET, IDX_KEY_EN_QUOTE, IDX_KEY_EN_FORWARD_SLASH, IDX_KEY_EN_RIGHT_WINDOWS,
|
||||
IDX_KEY_EN_F11, IDX_KEY_EN_BACKSPACE, IDX_KEY_EN_RIGHT_BRACKET, IDX_KEY_EN_RIGHT_SHIFT, IDX_KEY_EN_RIGHT_FUNCTION,
|
||||
IDX_KEY_EN_F12, IDX_KEY_EN_ANSI_BACK_SLASH, IDX_KEY_EN_ANSI_ENTER, IDX_KEY_EN_RIGHT_CONTROL,
|
||||
IDX_KEY_EN_PRINT_SCREEN, IDX_KEY_EN_INSERT, IDX_KEY_EN_DELETE, IDX_KEY_EN_LEFT_ARROW,
|
||||
IDX_KEY_EN_SCROLL_LOCK, IDX_KEY_EN_HOME, IDX_KEY_EN_END, IDX_KEY_EN_UP_ARROW, IDX_KEY_EN_DOWN_ARROW,
|
||||
IDX_KEY_EN_PAUSE_BREAK, IDX_KEY_EN_PAGE_UP, IDX_KEY_EN_PAGE_DOWN, IDX_KEY_EN_RIGHT_ARROW
|
||||
};
|
||||
|
||||
static unsigned int matrix_num_map_lut[KEYBOARD_MATRIX_NUM_KEYS_NO] =
|
||||
{
|
||||
IDX_KEY_EN_NUMPAD_LOCK, IDX_KEY_EN_NUMPAD_7, IDX_KEY_EN_NUMPAD_4, IDX_KEY_EN_NUMPAD_1, IDX_KEY_EN_NUMPAD_0,
|
||||
IDX_KEY_EN_NUMPAD_DIVIDE, IDX_KEY_EN_NUMPAD_8, IDX_KEY_EN_NUMPAD_5, IDX_KEY_EN_NUMPAD_2,
|
||||
IDX_KEY_EN_NUMPAD_TIMES, IDX_KEY_EN_NUMPAD_9, IDX_KEY_EN_NUMPAD_6, IDX_KEY_EN_NUMPAD_3, IDX_KEY_EN_NUMPAD_PERIOD,
|
||||
IDX_KEY_EN_NUMPAD_MINUS, IDX_KEY_EN_NUMPAD_PLUS, IDX_KEY_EN_NUMPAD_ENTER
|
||||
};
|
||||
|
||||
static unsigned int matrix_edge_tkl_map_lut[KEYBOARD_MATRIX_EDGE_TKL_KEYS_NO]=
|
||||
{
|
||||
IDX_EDGE_16, IDX_EDGE_17, IDX_EDGE_18, IDX_EDGE_19,
|
||||
IDX_EDGE_13, IDX_EDGE_20,
|
||||
IDX_EDGE_14, IDX_EDGE_21,
|
||||
IDX_EDGE_15, IDX_EDGE_22,
|
||||
IDX_EDGE_07, IDX_EDGE_23,
|
||||
IDX_EDGE_06, IDX_EDGE_24,
|
||||
IDX_EDGE_05, IDX_EDGE_25,
|
||||
IDX_EDGE_04, IDX_EDGE_26,
|
||||
IDX_EDGE_03, IDX_EDGE_27,
|
||||
IDX_EDGE_02, IDX_EDGE_28,
|
||||
IDX_EDGE_01, IDX_EDGE_29,
|
||||
IDX_EDGE_00, IDX_EDGE_30,
|
||||
IDX_EDGE_45, IDX_EDGE_12,
|
||||
IDX_EDGE_09, IDX_EDGE_08, IDX_EDGE_10, IDX_EDGE_11
|
||||
};
|
||||
|
||||
static unsigned int matrix_edge_numpad_map_lut[KEYBOARD_MATRIX_EDGE_NUMPAD_KEYS_NO]=
|
||||
{
|
||||
IDX_EDGE_31, IDX_EDGE_32, IDX_EDGE_33, IDX_EDGE_34,
|
||||
IDX_EDGE_44, IDX_EDGE_35,
|
||||
IDX_EDGE_43, IDX_EDGE_36,
|
||||
IDX_EDGE_42, IDX_EDGE_37,
|
||||
IDX_EDGE_41, IDX_EDGE_40, IDX_EDGE_39, IDX_EDGE_38
|
||||
};
|
||||
|
||||
static unsigned int matrix_edge_tkl_map[KEYBOARD_MATRIX_EDGE_TKL_HEIGHT][KEYBOARD_MATRIX_EDGE_TKL_WIDTH] =
|
||||
{ { NA, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, NA },
|
||||
{ 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 28 },
|
||||
{ 1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 29 },
|
||||
{ 2, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 30 },
|
||||
{ 3, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 31 },
|
||||
{ NA, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, NA } };
|
||||
|
||||
static unsigned int matrix_edge_numpad_map[KEYBOARD_MATRIX_EDGE_NUMPAD_HEIGHT][KEYBOARD_MATRIX_EDGE_NUMPAD_WIDTH] =
|
||||
{ { NA, 4, 6, 8, NA },
|
||||
{ 0, NA, NA, NA, 10 },
|
||||
{ 1, NA, NA, NA, 11 },
|
||||
{ 2, NA, NA, NA, 12 },
|
||||
{ 3, NA, NA, NA, 13 },
|
||||
{ NA, 5, 7, 9, NA } };
|
||||
|
||||
/*---------------------------------------------------*\
|
||||
| TODO: Detect detached keypad |
|
||||
| TODO: Figure out how to read RGB state |
|
||||
| TODO: separatee display brughness from backlight |
|
||||
\*---------------------------------------------------*/
|
||||
|
||||
#if 0
|
||||
static unsigned int matrix_map_tkl[6][19] =
|
||||
{ { 0, NA, 9, 18, 27, 36, NA, 45, 54, 63, 72, NA, 81, 90, 99, 108, 117, 114, 123},
|
||||
{ 1, 10, 19, 28, 37, 46, 55, 64, 73, 82, 91, NA, 100, 109, 87, NA, 96, 105, 115},
|
||||
{ 2, NA, 11, 20, 29, 38, NA, 47, 56, 65, 74, 83, 92, 101, 110, 119, 88, 97, 106},
|
||||
{ 3, NA, 12, 21, 30, 39, NA, 48, 57, 6, 75, 84, 93, 102, NA, 120, NA, NA, NA},
|
||||
{ 4, NA, 22, 31, 40, 49, NA, 58, NA, 67, 76, 85, 94, 103, 121, NA, NA, 124, NA},
|
||||
{ 5, 14, 23, NA, NA, NA, NA, 41, NA, NA, NA, NA, 68, 77, 86, 95, 104, 113, 122} };
|
||||
#endif
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char* name;
|
||||
zone_type type;
|
||||
unsigned int* ptr;
|
||||
unsigned int* ptr_lut;
|
||||
unsigned int size;
|
||||
unsigned int height;
|
||||
unsigned int width;
|
||||
@@ -74,26 +331,43 @@ static const mountain_zone_t zone_definitions[] =
|
||||
{
|
||||
ZONE_EN_KEYBOARD,
|
||||
ZONE_TYPE_MATRIX,
|
||||
(unsigned int*)&matrix_map,
|
||||
125,
|
||||
KEYBOARD_MATRIX_HEIGHT,
|
||||
KEYBOARD_MATRIX_WIDTH
|
||||
(unsigned int*)&matrix_tkl_map,
|
||||
(unsigned int*)&matrix_tkl_map_lut,
|
||||
KEYBOARD_MATRIX_TKL_KEYS_NO,
|
||||
KEYBOARD_MATRIX_TKL_HEIGHT,
|
||||
KEYBOARD_MATRIX_TKL_WIDTH
|
||||
},
|
||||
{
|
||||
"Numpad",
|
||||
ZONE_TYPE_MATRIX,
|
||||
(unsigned int*)&matrix_num_map,
|
||||
(unsigned int*)&matrix_num_map_lut,
|
||||
KEYBOARD_MATRIX_NUM_KEYS_NO,
|
||||
KEYBOARD_MATRIX_NUM_HEIGHT,
|
||||
KEYBOARD_MATRIX_NUM_WIDTH
|
||||
},
|
||||
{
|
||||
"Keyboard Edge",
|
||||
ZONE_TYPE_MATRIX,
|
||||
(unsigned int*)&matrix_edge_map,
|
||||
46,
|
||||
KEYBOARD_MATRIX_EDGE_HEIGHT,
|
||||
KEYBOARD_MATRIX_EDGE_WIDTH
|
||||
(unsigned int*)&matrix_edge_tkl_map,
|
||||
(unsigned int*)&matrix_edge_tkl_map_lut,
|
||||
KEYBOARD_MATRIX_EDGE_TKL_KEYS_NO,
|
||||
KEYBOARD_MATRIX_EDGE_TKL_HEIGHT,
|
||||
KEYBOARD_MATRIX_EDGE_TKL_WIDTH
|
||||
},
|
||||
{
|
||||
"Numpad Edge",
|
||||
ZONE_TYPE_MATRIX,
|
||||
(unsigned int*)&matrix_edge_numpad_map,
|
||||
(unsigned int*)&matrix_edge_numpad_map_lut,
|
||||
KEYBOARD_MATRIX_EDGE_NUMPAD_KEYS_NO,
|
||||
KEYBOARD_MATRIX_EDGE_NUMPAD_HEIGHT,
|
||||
KEYBOARD_MATRIX_EDGE_NUMPAD_WIDTH
|
||||
}
|
||||
};
|
||||
|
||||
/*-------------------------------*\
|
||||
| TODO: Detect detached keypad |
|
||||
\*-------------------------------*/
|
||||
|
||||
static const char *led_names[] =
|
||||
static const char *led_names[MOUNTAIN_KEYBOARD_MAX_TRANSFER_COLORS] =
|
||||
{
|
||||
KEY_EN_ESCAPE,
|
||||
KEY_EN_BACK_TICK,
|
||||
@@ -227,7 +501,7 @@ static const char *led_names[] =
|
||||
@category Keyboard
|
||||
@type USB
|
||||
@save :white_check_mark:
|
||||
@direct :white_check_mark:
|
||||
@direct :rotating_light:
|
||||
@effects :white_check_mark:
|
||||
@detectors DetectMountainKeyboardControllers
|
||||
@comment
|
||||
@@ -247,13 +521,20 @@ RGBController_MountainKeyboard::RGBController_MountainKeyboard(MountainKeyboardC
|
||||
mode Direct;
|
||||
Direct.name = "Direct";
|
||||
Direct.value = MOUNTAIN_KEYBOARD_MODE_DIRECT;
|
||||
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE;
|
||||
Direct.brightness_min = MOUNTAIN_KEYBOARD_BRIGHTNESS_MIN;
|
||||
Direct.brightness = MOUNTAIN_KEYBOARD_BRIGHTNESS_MAX;
|
||||
Direct.brightness_max = MOUNTAIN_KEYBOARD_BRIGHTNESS_MAX;
|
||||
Direct.flags = MODE_FLAG_HAS_PER_LED_COLOR;
|
||||
Direct.color_mode = MODE_COLORS_PER_LED;
|
||||
modes.push_back(Direct);
|
||||
|
||||
mode Custom;
|
||||
Custom.name = "Custom";
|
||||
Custom.value = MOUNTAIN_KEYBOARD_MODE_DIRECT;
|
||||
Custom.flags = MODE_FLAG_HAS_PER_LED_COLOR | MODE_FLAG_HAS_BRIGHTNESS | MODE_FLAG_MANUAL_SAVE;
|
||||
Custom.brightness_min = MOUNTAIN_KEYBOARD_BRIGHTNESS_MIN;
|
||||
Custom.brightness = MOUNTAIN_KEYBOARD_BRIGHTNESS_MAX;
|
||||
Custom.brightness_max = MOUNTAIN_KEYBOARD_BRIGHTNESS_MAX;
|
||||
Custom.color_mode = MODE_COLORS_PER_LED;
|
||||
modes.push_back(Custom);
|
||||
|
||||
mode Off;
|
||||
Off.name = "Off";
|
||||
Off.value = MOUNTAIN_KEYBOARD_MODE_OFF;
|
||||
@@ -395,6 +676,7 @@ void RGBController_MountainKeyboard::SetupZones()
|
||||
for(unsigned int zone_idx = 0; zone_idx < sizeof(zone_definitions)/sizeof(zone_definitions[0]); zone_idx++)
|
||||
{
|
||||
zone new_zone;
|
||||
|
||||
new_zone.name = zone_definitions[zone_idx].name;
|
||||
new_zone.type = zone_definitions[zone_idx].type;
|
||||
new_zone.leds_min = zone_definitions[zone_idx].size;
|
||||
@@ -407,30 +689,37 @@ void RGBController_MountainKeyboard::SetupZones()
|
||||
zones.push_back(new_zone);
|
||||
}
|
||||
|
||||
for(unsigned int zone_idx = 0; zone_idx < zones.size(); zone_idx++)
|
||||
for(unsigned int zone_idx = 0; zone_idx < sizeof(zone_definitions)/sizeof(zone_definitions[0]); zone_idx++)
|
||||
{
|
||||
if (zone_definitions[zone_idx].ptr_lut)
|
||||
{
|
||||
for(unsigned int led_idx=0;led_idx<zones[zone_idx].leds_count;led_idx++)
|
||||
{
|
||||
led* new_led = new led();
|
||||
switch(zone_idx)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
{
|
||||
new_led->name = led_names[zone_definitions[zone_idx].ptr_lut[led_idx]];
|
||||
}
|
||||
break;
|
||||
|
||||
if(zone_idx == 0)
|
||||
{
|
||||
for(unsigned int led_idx=0;led_idx<zones[zone_idx].leds_count;led_idx++)
|
||||
{
|
||||
led* new_led = new led();
|
||||
new_led->name = led_names[led_idx];
|
||||
leds.push_back(*new_led);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(unsigned int led_idx=0;led_idx<zones[zone_idx].leds_count;led_idx++)
|
||||
{
|
||||
led* new_led = new led();
|
||||
new_led->name = zones[zone_idx].name + " LED:";
|
||||
new_led->name.append(std::to_string(led_idx + 1));
|
||||
case 2:
|
||||
case 3:
|
||||
{
|
||||
new_led->name = zones[zone_idx].name + " LED:";
|
||||
new_led->name.append(std::to_string(led_idx + 1));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
leds.push_back(*new_led);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SetupColors();
|
||||
|
||||
DeviceUpdateMode();
|
||||
@@ -449,42 +738,58 @@ void RGBController_MountainKeyboard::DeviceUpdate(const mode& current_mode)
|
||||
{
|
||||
case MOUNTAIN_KEYBOARD_MODE_DIRECT:
|
||||
{
|
||||
unsigned char *color_data;
|
||||
unsigned char color_data[MOUNTAIN_KEYBOARD_TRANSFER_BUFFER_SIZE] = {0};
|
||||
unsigned char color_edge_data[MOUNTAIN_KEYBOARD_TRANSFER_EDGE_BUFFER_SIZE] = {0};
|
||||
|
||||
color_data = (unsigned char*)malloc(colors.size() * 3);
|
||||
if(color_data)
|
||||
for(int led_idx = 0; led_idx < colors.size(); led_idx++)
|
||||
{
|
||||
for(int led_idx = 0; led_idx < colors.size(); led_idx++)
|
||||
if(led_idx < zones[0].leds_count)
|
||||
{
|
||||
color_data[(3 * led_idx)] = RGBGetRValue(colors[led_idx]);
|
||||
color_data[(3 * led_idx)+1] = RGBGetGValue(colors[led_idx]);
|
||||
color_data[(3 * led_idx)+2] = RGBGetBValue(colors[led_idx]);
|
||||
unsigned int zone_led_idx = led_idx;
|
||||
unsigned int idx = zone_definitions[0].ptr_lut[zone_led_idx];
|
||||
color_data[(3 * idx)] = RGBGetRValue(colors[led_idx]);
|
||||
color_data[(3 * idx)+1] = RGBGetGValue(colors[led_idx]);
|
||||
color_data[(3 * idx)+2] = RGBGetBValue(colors[led_idx]);
|
||||
}
|
||||
|
||||
unsigned char *color_ptr = color_data;
|
||||
for(unsigned int zone_idx=0;zone_idx<zones.size();zone_idx++)
|
||||
else if (led_idx < zones[0].leds_count + zones[1].leds_count)
|
||||
{
|
||||
switch(zone_idx)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
controller->SendDirectColorCmd(current_mode.brightness, color_ptr,zones[zone_idx].leds_count * 3);
|
||||
color_ptr += zones[zone_idx].leds_count * 3;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
controller->SendDirectColorEdgeCmd(current_mode.brightness, color_ptr,zones[zone_idx].leds_count * 3);
|
||||
color_ptr += zones[zone_idx].leds_count * 3;
|
||||
}
|
||||
break;
|
||||
unsigned int zone_led_idx = led_idx - zones[0].leds_count;
|
||||
unsigned int idx = zone_definitions[1].ptr_lut[zone_led_idx];
|
||||
color_data[(3 * idx)] = RGBGetRValue(colors[led_idx]);
|
||||
color_data[(3 * idx)+1] = RGBGetGValue(colors[led_idx]);
|
||||
color_data[(3 * idx)+2] = RGBGetBValue(colors[led_idx]);
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (led_idx < zones[0].leds_count + zones[1].leds_count + zones[2].leds_count)
|
||||
{
|
||||
unsigned int zone_led_idx = led_idx - zones[0].leds_count - zones[1].leds_count;
|
||||
unsigned int idx = zone_definitions[2].ptr_lut[zone_led_idx];
|
||||
color_edge_data[(3 * idx)] = RGBGetRValue(colors[led_idx]);
|
||||
color_edge_data[(3 * idx)+1] = RGBGetGValue(colors[led_idx]);
|
||||
color_edge_data[(3 * idx)+2] = RGBGetBValue(colors[led_idx]);
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int zone_led_idx = led_idx - zones[0].leds_count - zones[1].leds_count - zones[2].leds_count;
|
||||
unsigned int idx = zone_definitions[3].ptr_lut[zone_led_idx];
|
||||
color_edge_data[(3 * idx)] = RGBGetRValue(colors[led_idx]);
|
||||
color_edge_data[(3 * idx)+1] = RGBGetGValue(colors[led_idx]);
|
||||
color_edge_data[(3 * idx)+2] = RGBGetBValue(colors[led_idx]);
|
||||
}
|
||||
}
|
||||
|
||||
free(color_data);
|
||||
/*---------------------------------------------------------*\
|
||||
| Check if we running pseud DIRECT mode or CUSTOM one |
|
||||
\*---------------------------------------------------------*/
|
||||
if(current_mode.flags & MODE_FLAG_MANUAL_SAVE)
|
||||
{
|
||||
controller->SendDirectColorCmd(false, current_mode.brightness, color_data,MOUNTAIN_KEYBOARD_TRANSFER_BUFFER_SIZE);
|
||||
controller->SendDirectColorEdgeCmd(false, current_mode.brightness, color_edge_data,MOUNTAIN_KEYBOARD_TRANSFER_EDGE_BUFFER_SIZE);
|
||||
}
|
||||
else
|
||||
{
|
||||
controller->SendDirectColorCmd(true, current_mode.brightness, color_data,MOUNTAIN_KEYBOARD_TRANSFER_BUFFER_SIZE);
|
||||
controller->SendDirectColorEdgeCmd(true, current_mode.brightness, color_edge_data,MOUNTAIN_KEYBOARD_TRANSFER_EDGE_BUFFER_SIZE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -55,6 +55,7 @@ static const gpu_pci_device device_list[] =
|
||||
{NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, NVIDIA_VEN, NVIDIA_RTX3060TI_LHR_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA 3060TI LHR" },
|
||||
{NVIDIA_VEN, NVIDIA_RTX3080_DEV, NVIDIA_VEN, NVIDIA_RTX3080_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA 3080 FE" },
|
||||
{NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, NVIDIA_VEN, NVIDIA_RTX3080TI_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA 3080TI FE" },
|
||||
{NVIDIA_VEN, NVIDIA_RTX3080TI_DEV, NVIDIA_VEN, MANLI_RTX3080TI_GALLARDO_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGB, "MANLI 3080TI GALLARDO" },
|
||||
{NVIDIA_VEN, NVIDIA_RTX3090_DEV, NVIDIA_VEN, NVIDIA_RTX3090_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA 3090 FE" },
|
||||
{NVIDIA_VEN, NVIDIA_RTX3090TI_DEV, NVIDIA_VEN, NVIDIA_RTX3090TI_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA 3090TI FE" },
|
||||
{NVIDIA_VEN, NVIDIA_RTX4080_DEV, NVIDIA_VEN, NVIDIA_RTX4080_FE_SUB_DEV, NVIDIA_ILLUMINATION_V1, TREATS_RGBW_AS_RGBW, "NVIDIA 4080 FE" },
|
||||
|
||||
@@ -240,9 +240,10 @@ void RGBController_Razer::SetupZones()
|
||||
|
||||
for(unsigned int i = 0; i < device_list[device_index]->keymap_size; i++)
|
||||
{
|
||||
if(zone_id == device_list[device_index]->keymap[i].zone &&
|
||||
row_id == device_list[device_index]->keymap[i].row &&
|
||||
col_id == device_list[device_index]->keymap[i].col)
|
||||
if(zone_id == device_list[device_index]->keymap[i].zone &&
|
||||
row_id == device_list[device_index]->keymap[i].row &&
|
||||
col_id == device_list[device_index]->keymap[i].col &&
|
||||
layout_type & device_list[device_index]->keymap[i].layout)
|
||||
{
|
||||
new_led->name = device_list[device_index]->keymap[i].name;
|
||||
not_found = false;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "RazerController.h"
|
||||
#include "RazerDevices.h"
|
||||
#include "LogManager.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
@@ -55,6 +56,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
|
||||
case RAZER_BLACKWIDOW_2019_PID:
|
||||
case RAZER_BLACKWIDOW_V3_MINI_WIRED_PID:
|
||||
case RAZER_BLADE_2021_BASE_V2_PID:
|
||||
case RAZER_BLADE_14_2022_PID:
|
||||
case RAZER_CYNOSA_V2_PID:
|
||||
case RAZER_ORNATA_CHROMA_V2_PID:
|
||||
case RAZER_ORNATA_V3_PID:
|
||||
@@ -133,6 +135,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
|
||||
case RAZER_BASILISK_V3_PRO_BLUETOOTH_PID:
|
||||
case RAZER_BASE_STATION_CHROMA_PID:
|
||||
case RAZER_BASE_STATION_V2_CHROMA_PID:
|
||||
case RAZER_BLADE_14_2022_PID:
|
||||
case RAZER_CHARGING_PAD_CHROMA_PID:
|
||||
case RAZER_CHROMA_HDK_PID:
|
||||
case RAZER_CORE_X_PID:
|
||||
@@ -197,6 +200,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
|
||||
| These devices use a standard matrix report |
|
||||
\*-------------------------------------------------*/
|
||||
case RAZER_BLACKWIDOW_CHROMA_V2_PID:
|
||||
case RAZER_BLACKWIDOW_X_CHROMA_TE_PID:
|
||||
case RAZER_BLADE_2016_PID:
|
||||
case RAZER_BLADE_LATE_2016_PID:
|
||||
case RAZER_BLADE_2018_ADVANCED_PID:
|
||||
@@ -213,6 +217,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
|
||||
case RAZER_BLADE_2021_BASE_PID:
|
||||
case RAZER_BLADE_2021_BASE_V2_PID:
|
||||
case RAZER_BLADE_14_2021_PID:
|
||||
case RAZER_BLADE_14_2022_PID:
|
||||
case RAZER_BLADE_PRO_2016_PID:
|
||||
case RAZER_BLADE_PRO_2017_PID:
|
||||
case RAZER_BLADE_PRO_2017_FULLHD_PID:
|
||||
@@ -353,6 +358,9 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
|
||||
case RAZER_ORBWEAVER_CHROMA_PID:
|
||||
matrix_type = RAZER_MATRIX_TYPE_CUSTOM;
|
||||
break;
|
||||
|
||||
default:
|
||||
LOG_WARNING("[%s] Report matrix type was not selected, device may not repsond to mode updates.", name.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -583,6 +591,7 @@ bool RazerController::SupportsWave()
|
||||
case RAZER_BLADE_2021_BASE_PID:
|
||||
case RAZER_BLADE_2021_BASE_V2_PID:
|
||||
case RAZER_BLADE_14_2021_PID:
|
||||
case RAZER_BLADE_14_2022_PID:
|
||||
case RAZER_BLADE_PRO_2016_PID:
|
||||
case RAZER_BLADE_PRO_2017_PID:
|
||||
case RAZER_BLADE_PRO_2017_FULLHD_PID:
|
||||
@@ -1221,7 +1230,6 @@ unsigned char RazerController::GetKeyboardLayoutType()
|
||||
return RAZER_LAYOUT_TYPE_ANSI;
|
||||
|
||||
case RAZER_KEYBOARD_LAYOUT_GREEK: // Unconfirmed
|
||||
case RAZER_KEYBOARD_LAYOUT_GERMAN: // Unconfirmed
|
||||
case RAZER_KEYBOARD_LAYOUT_FRENCH:
|
||||
case RAZER_KEYBOARD_LAYOUT_UK:
|
||||
case RAZER_KEYBOARD_LAYOUT_NORDIC:
|
||||
@@ -1238,6 +1246,9 @@ unsigned char RazerController::GetKeyboardLayoutType()
|
||||
case RAZER_KEYBOARD_LAYOUT_JAPAN: // Unconfirmed
|
||||
return RAZER_LAYOUT_TYPE_JIS;
|
||||
|
||||
case RAZER_KEYBOARD_LAYOUT_GERMAN:
|
||||
return RAZER_LAYOUT_TYPE_QWERTZ;
|
||||
|
||||
default:
|
||||
return RAZER_LAYOUT_TYPE_ALL;
|
||||
}
|
||||
@@ -1253,7 +1264,7 @@ std::string RazerController::GetKeyboardLayoutName()
|
||||
switch(layout)
|
||||
{
|
||||
case RAZER_KEYBOARD_LAYOUT_US: return "US (ANSI)";
|
||||
case RAZER_KEYBOARD_LAYOUT_GERMAN: return "German (ISO)"; // Unconfirmed
|
||||
case RAZER_KEYBOARD_LAYOUT_GERMAN: return "German (QWERTZ)";
|
||||
case RAZER_KEYBOARD_LAYOUT_GREEK: return "Greek (ISO)"; // Unconfirmed
|
||||
case RAZER_KEYBOARD_LAYOUT_FRENCH: return "French (ISO)";
|
||||
case RAZER_KEYBOARD_LAYOUT_RUSSIAN: return "Russian (ANSI)"; // Unconfirmed
|
||||
|
||||
@@ -137,8 +137,10 @@ enum
|
||||
RAZER_LAYOUT_TYPE_ANSI = 0x01,
|
||||
RAZER_LAYOUT_TYPE_ISO = 0x02,
|
||||
RAZER_LAYOUT_TYPE_JIS = 0x04,
|
||||
RAZER_LAYOUT_TYPE_QWERTZ = 0x08,
|
||||
|
||||
RAZER_LAYOUT_TYPE_ALL = RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS
|
||||
RAZER_LAYOUT_TYPE_ALL = RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO
|
||||
| RAZER_LAYOUT_TYPE_JIS | RAZER_LAYOUT_TYPE_QWERTZ
|
||||
};
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
|
||||
@@ -277,6 +277,7 @@ REGISTER_HID_DETECTOR_IPU("Razer Ornata V3 X", Det
|
||||
REGISTER_HID_DETECTOR_IPU("Razer Blade (2016)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_2016_PID, 0x02, 0x01, 0x02);
|
||||
REGISTER_HID_DETECTOR_IPU("Razer Blade (Late 2016)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_LATE_2016_PID, 0x02, 0x01, 0x02);
|
||||
REGISTER_HID_DETECTOR_IPU("Razer Blade 14 (2021)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_14_2021_PID, 0x02, 0x01, 0x02);
|
||||
REGISTER_HID_DETECTOR_IPU("Razer Blade 14 (2022)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_14_2022_PID, 0x02, 0x01, 0x02);
|
||||
REGISTER_HID_DETECTOR_IPU("Razer Blade 15 (2018 Advanced)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_2018_ADVANCED_PID, 0x02, 0x01, 0x02);
|
||||
REGISTER_HID_DETECTOR_IPU("Razer Blade 15 (2018 Base)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_2018_BASE_PID, 0x02, 0x01, 0x02);
|
||||
REGISTER_HID_DETECTOR_IPU("Razer Blade 15 (2018 Mercury)", DetectRazerControllers, RAZER_VID, RAZER_BLADE_2018_MERCURY_PID, 0x02, 0x01, 0x02);
|
||||
|
||||
@@ -579,6 +579,107 @@ static const razer_key blade_14_2021_keymap[] =
|
||||
{ 0, 5, 15, KEY_EN_DOWN_ARROW, RAZER_LAYOUT_TYPE_ALL },
|
||||
};
|
||||
|
||||
#define BLADE_14_2022_KEYMAP_SIZE (sizeof(blade_14_2022_keymap) / sizeof(blade_14_2022_keymap[0]))
|
||||
|
||||
static const razer_key blade_14_2022_keymap[] =
|
||||
{
|
||||
/*-------------------------------------------------------------------------------------------------------------*\
|
||||
| Zone, Row, Column, Key Layout Type |
|
||||
\*-------------------------------------------------------------------------------------------------------------*/
|
||||
{ 0, 0, 1, KEY_EN_ESCAPE, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 2, KEY_EN_F1, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 3, KEY_EN_F2, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 4, KEY_EN_F3, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 5, KEY_EN_F4, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 6, KEY_EN_F5, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 7, KEY_EN_F6, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 8, KEY_EN_F7, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 9, KEY_EN_F8, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 10, KEY_EN_F9, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 11, KEY_EN_F10, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 12, KEY_EN_F11, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 13, KEY_EN_F12, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 14, KEY_EN_DELETE, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 0, 15, KEY_EN_POWER, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 1, KEY_EN_BACK_TICK, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 1, 1, KEY_JP_CHEVRON, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 1, 2, KEY_EN_1, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 3, KEY_EN_2, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 4, KEY_EN_3, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 5, KEY_EN_4, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 6, KEY_EN_5, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 7, KEY_EN_6, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 8, KEY_EN_7, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 9, KEY_EN_8, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 10, KEY_EN_9, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 11, KEY_EN_0, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 1, 12, KEY_EN_MINUS, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 1, 12, KEY_DE_ESZETT, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 1, 13, KEY_EN_EQUALS, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 1, 13, KEY_EN_BACK_TICK, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 1, 15, KEY_EN_BACKSPACE, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 1, KEY_EN_TAB, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 2, KEY_EN_Q, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 3, KEY_EN_W, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 4, KEY_EN_E, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 5, KEY_EN_R, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 6, KEY_EN_T, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 7, KEY_EN_Y, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 2, 7, KEY_EN_Z, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 2, 8, KEY_EN_U, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 9, KEY_EN_I, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 10, KEY_EN_O, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 11, KEY_EN_P, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 2, 12, KEY_EN_LEFT_BRACKET, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 2, 12, KEY_DE_DIAERESIS_U, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 2, 13, KEY_EN_RIGHT_BRACKET, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 2, 13, KEY_EN_PLUS, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 2, 15, KEY_EN_ANSI_BACK_SLASH, RAZER_LAYOUT_TYPE_ANSI },
|
||||
{ 0, 3, 1, KEY_EN_CAPS_LOCK, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 2, KEY_EN_A, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 3, KEY_EN_S, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 4, KEY_EN_D, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 5, KEY_EN_F, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 6, KEY_EN_G, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 7, KEY_EN_H, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 8, KEY_EN_J, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 9, KEY_EN_K, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 10, KEY_EN_L, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 3, 11, KEY_EN_SEMICOLON, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 3, 11, KEY_DE_DIAERESIS_O, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 3, 12, KEY_EN_QUOTE, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 3, 12, KEY_DE_DIAERESIS_A, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 3, 13, KEY_EN_POUND, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 3, 15, KEY_EN_ANSI_ENTER, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 1, KEY_EN_LEFT_SHIFT, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 2, KEY_EN_ISO_BACK_SLASH, RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 4, 2, KEY_NORD_ANGLE_BRACKET, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 4, 3, KEY_EN_Z, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 4, 3, KEY_EN_Y, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 4, 4, KEY_EN_X, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 5, KEY_EN_C, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 6, KEY_EN_V, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 7, KEY_EN_B, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 8, KEY_EN_N, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 9, KEY_EN_M, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 10, KEY_EN_COMMA, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 11, KEY_EN_PERIOD, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 4, 12, KEY_EN_FORWARD_SLASH, RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO | RAZER_LAYOUT_TYPE_JIS },
|
||||
{ 0, 4, 12, KEY_EN_MINUS, RAZER_LAYOUT_TYPE_QWERTZ },
|
||||
{ 0, 4, 15, KEY_EN_RIGHT_SHIFT, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 1, KEY_EN_LEFT_CONTROL, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 2, KEY_EN_LEFT_FUNCTION, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 3, KEY_EN_LEFT_WINDOWS, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 5, KEY_EN_LEFT_ALT, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 7, KEY_EN_SPACE, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 9, KEY_EN_RIGHT_ALT, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 11, KEY_EN_RIGHT_CONTROL, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 12, KEY_EN_LEFT_ARROW, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 13, KEY_EN_UP_ARROW, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 14, KEY_EN_RIGHT_ARROW, RAZER_LAYOUT_TYPE_ALL },
|
||||
{ 0, 5, 15, KEY_EN_DOWN_ARROW, RAZER_LAYOUT_TYPE_ALL },
|
||||
};
|
||||
|
||||
#define BLADE_17_PRO_2021_KEYMAP_SIZE (sizeof(blade_17_pro_2021_keymap) / sizeof(blade_17_pro_2021_keymap[0]))
|
||||
|
||||
static const razer_key blade_17_pro_2021_keymap[] =
|
||||
@@ -4088,6 +4189,41 @@ static const razer_device blade_14_2021_device =
|
||||
BLADE_14_2021_KEYMAP_SIZE
|
||||
};
|
||||
|
||||
/*-------------------------------------------------------------*\
|
||||
| Razer Blade 14 (2022) 1532:028C |
|
||||
| |
|
||||
| Zone "Keyboard" |
|
||||
| Matrix |
|
||||
| 6 Rows, 16 Columns |
|
||||
\*-------------------------------------------------------------*/
|
||||
static const razer_zone blade_14_2022_zone =
|
||||
{
|
||||
ZONE_EN_KEYBOARD,
|
||||
ZONE_TYPE_MATRIX,
|
||||
6,
|
||||
16
|
||||
};
|
||||
|
||||
static const razer_device blade_14_2022_device =
|
||||
{
|
||||
"Razer Blade 14 (2022)",
|
||||
RAZER_BLADE_14_2022_PID,
|
||||
DEVICE_TYPE_KEYBOARD,
|
||||
true,
|
||||
6,
|
||||
16,
|
||||
{
|
||||
&blade_14_2022_zone,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
},
|
||||
blade_14_2022_keymap,
|
||||
BLADE_14_2022_KEYMAP_SIZE
|
||||
};
|
||||
|
||||
/*-------------------------------------------------------------*\
|
||||
| Razer Book 13 (2020) |
|
||||
| |
|
||||
@@ -8464,6 +8600,7 @@ const razer_device* razer_device_list[] =
|
||||
&blade_15_2021_base_device,
|
||||
&blade_15_2021_base_v2_device,
|
||||
&blade_14_2021_device,
|
||||
&blade_14_2022_device,
|
||||
&book_13_2020_device,
|
||||
&blade_pro_2016_device,
|
||||
&blade_pro_2017_device,
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
#define RAZER_BLADE_2021_BASE_V2_PID 0x027A
|
||||
|
||||
#define RAZER_BLADE_14_2021_PID 0x0270
|
||||
#define RAZER_BLADE_14_2022_PID 0x028C
|
||||
|
||||
#define RAZER_BLADE_PRO_2016_PID 0x0210
|
||||
#define RAZER_BLADE_PRO_2017_PID 0x0225
|
||||
|
||||
@@ -122,7 +122,7 @@ void RoccatKovaController::FetchFirmwareVersion()
|
||||
|
||||
uint8_t version = buf[ROCCAT_KOVA_FIRMWARE_VERSION_IDX];
|
||||
char version_str[5] {00};
|
||||
snprintf(version_str, 5, "%.2f", version / 100.);
|
||||
sprintf(version_str, "%.2f", version / 100.);
|
||||
firmware_version = version_str;
|
||||
}
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ void RGBController_SRGBmodsPico::SetupZones()
|
||||
for(unsigned int channel_idx = 0; channel_idx < SRGBMODS_PICO_NUM_CHANNELS; channel_idx++)
|
||||
{
|
||||
char ch_idx_string[2];
|
||||
snprintf(ch_idx_string, 2, "%d", channel_idx + 1);
|
||||
sprintf(ch_idx_string, "%d", channel_idx + 1);
|
||||
|
||||
zones[channel_idx].name = "Channel ";
|
||||
zones[channel_idx].name.append(ch_idx_string);
|
||||
@@ -94,7 +94,7 @@ void RGBController_SRGBmodsPico::SetupZones()
|
||||
for(unsigned int led_ch_idx = 0; led_ch_idx < zones[channel_idx].leds_count; led_ch_idx++)
|
||||
{
|
||||
char led_idx_string[4];
|
||||
snprintf(led_idx_string, 4, "%d", led_ch_idx + 1);
|
||||
sprintf(led_idx_string, "%d", led_ch_idx + 1);
|
||||
|
||||
led new_led;
|
||||
new_led.name = "LED ";
|
||||
@@ -149,4 +149,4 @@ void RGBController_SRGBmodsPico::UpdateSingleLED(int led)
|
||||
void RGBController_SRGBmodsPico::DeviceUpdateMode()
|
||||
{
|
||||
DeviceUpdateLEDs();
|
||||
}
|
||||
}
|
||||
@@ -147,7 +147,7 @@ void RGBController_ThermaltakeRiing::SetupZones()
|
||||
for (unsigned int channel_idx = 0; channel_idx < THERMALTAKE_NUM_CHANNELS; channel_idx++)
|
||||
{
|
||||
char ch_idx_string[2];
|
||||
snprintf(ch_idx_string, 2, "%d", channel_idx + 1);
|
||||
sprintf(ch_idx_string, "%d", channel_idx + 1);
|
||||
|
||||
zones[channel_idx].name = "Riing Channel ";
|
||||
zones[channel_idx].name.append(ch_idx_string);
|
||||
@@ -170,7 +170,7 @@ void RGBController_ThermaltakeRiing::SetupZones()
|
||||
for (unsigned int led_ch_idx = 0; led_ch_idx < zones[channel_idx].leds_count; led_ch_idx++)
|
||||
{
|
||||
char led_idx_string[3];
|
||||
snprintf(led_idx_string, 3, "%d", led_ch_idx + 1);
|
||||
sprintf(led_idx_string, "%d", led_ch_idx + 1);
|
||||
|
||||
led new_led;
|
||||
new_led.name = "Riing Channel ";
|
||||
|
||||
@@ -74,7 +74,7 @@ void RGBController_ThermaltakeRiingQuad::SetupZones()
|
||||
for (unsigned int channel_idx = 0; channel_idx < THERMALTAKE_QUAD_NUM_CHANNELS; channel_idx++)
|
||||
{
|
||||
char ch_idx_string[2];
|
||||
snprintf(ch_idx_string, 2, "%d", channel_idx + 1);
|
||||
sprintf(ch_idx_string, "%d", channel_idx + 1);
|
||||
|
||||
zones[channel_idx].name = "Riing Channel ";
|
||||
zones[channel_idx].name.append(ch_idx_string);
|
||||
@@ -97,7 +97,7 @@ void RGBController_ThermaltakeRiingQuad::SetupZones()
|
||||
for (unsigned int led_ch_idx = 0; led_ch_idx < zones[channel_idx].leds_count; led_ch_idx++)
|
||||
{
|
||||
char led_idx_string[3];
|
||||
snprintf(led_idx_string, 3, "%d", led_ch_idx + 1);
|
||||
sprintf(led_idx_string, "%d", led_ch_idx + 1);
|
||||
|
||||
led new_led;
|
||||
new_led.name = "Riing Channel ";
|
||||
|
||||
@@ -8,65 +8,75 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
/**------------------------------------------------------------------*\
|
||||
@name Viewsonic Monitor
|
||||
@category Accessory
|
||||
@type USB
|
||||
@save :x:
|
||||
@direct :x:
|
||||
@effects :white_check_mark:
|
||||
@detectors DetectViewSonic
|
||||
@comment
|
||||
\*-------------------------------------------------------------------*/
|
||||
|
||||
RGBController_XG270QG::RGBController_XG270QG(VS_XG270QG_Controller* controller_ptr)
|
||||
{
|
||||
controller = controller_ptr;
|
||||
|
||||
name = "ViewSonic Elite XG270QG";
|
||||
vendor = "ViewSonic";
|
||||
version = controller->GetVersion();
|
||||
type = DEVICE_TYPE_UNKNOWN;
|
||||
type = DEVICE_TYPE_ACCESSORY;
|
||||
description = "ViewSonic Monitor";
|
||||
location = controller->GetLocation();
|
||||
serial = controller->GetSerial();
|
||||
|
||||
mode Off;
|
||||
Off.name = "Off";
|
||||
Off.value = VS_MODE_OFF;
|
||||
Off.color_mode = MODE_COLORS_NONE;
|
||||
Off.name = "Off";
|
||||
Off.value = VS_MODE_OFF;
|
||||
Off.color_mode = MODE_COLORS_NONE;
|
||||
modes.push_back(Off);
|
||||
|
||||
mode StaticColor;
|
||||
StaticColor.name = "Static";
|
||||
StaticColor.value = VS_MODE_STATIC;
|
||||
StaticColor.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
StaticColor.colors_min = 1;
|
||||
StaticColor.colors_max = 1;
|
||||
StaticColor.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||
StaticColor.name = "Static";
|
||||
StaticColor.value = VS_MODE_STATIC;
|
||||
StaticColor.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
StaticColor.colors_min = 1;
|
||||
StaticColor.colors_max = 1;
|
||||
StaticColor.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||
StaticColor.colors.resize(1);
|
||||
modes.push_back(StaticColor);
|
||||
|
||||
mode Rainbow;
|
||||
Rainbow.name = "Rainbow Wave";
|
||||
Rainbow.value = VS_MODE_RAINBOW;
|
||||
Rainbow.flags = MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Rainbow.color_mode = MODE_COLORS_NONE;
|
||||
Rainbow.name = "Rainbow Wave";
|
||||
Rainbow.value = VS_MODE_RAINBOW;
|
||||
Rainbow.flags = MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Rainbow.color_mode = MODE_COLORS_NONE;
|
||||
modes.push_back(Rainbow);
|
||||
|
||||
mode Breath;
|
||||
Breath.name = "Breathing";
|
||||
Breath.value = VS_MODE_BREATHING;
|
||||
Breath.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Breath.colors_min = 1;
|
||||
Breath.colors_max = 1;
|
||||
Breath.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||
Breath.name = "Breathing";
|
||||
Breath.value = VS_MODE_BREATHING;
|
||||
Breath.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Breath.colors_min = 1;
|
||||
Breath.colors_max = 1;
|
||||
Breath.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||
Breath.colors.resize(1);
|
||||
modes.push_back(Breath);
|
||||
|
||||
mode Waterfall;
|
||||
Waterfall.name = "Waterfall";
|
||||
Waterfall.value = VS_MODE_WATERFALL;
|
||||
Waterfall.flags = MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Waterfall.color_mode = MODE_COLORS_NONE;
|
||||
Waterfall.name = "Waterfall";
|
||||
Waterfall.value = VS_MODE_WATERFALL;
|
||||
Waterfall.flags = MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Waterfall.color_mode = MODE_COLORS_NONE;
|
||||
modes.push_back(Waterfall);
|
||||
|
||||
mode Elite;
|
||||
Elite.name = "Elite";
|
||||
Elite.value = VS_MODE_ELITE;
|
||||
Elite.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Elite.colors_min = 1;
|
||||
Elite.colors_max = 1;
|
||||
Elite.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||
Elite.name = "Elite";
|
||||
Elite.value = VS_MODE_ELITE;
|
||||
Elite.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_AUTOMATIC_SAVE;
|
||||
Elite.colors_min = 1;
|
||||
Elite.colors_max = 1;
|
||||
Elite.color_mode = MODE_COLORS_MODE_SPECIFIC;
|
||||
Elite.colors.resize(1);
|
||||
modes.push_back(Elite);
|
||||
|
||||
@@ -94,27 +104,31 @@ RGBController_XG270QG::RGBController_XG270QG(VS_XG270QG_Controller* controller_p
|
||||
void RGBController_XG270QG::SetupZones()
|
||||
{
|
||||
zone back_circle;
|
||||
back_circle.name = "back circle";
|
||||
back_circle.type = ZONE_TYPE_SINGLE;
|
||||
back_circle.leds_min = 1;
|
||||
back_circle.leds_max = 1;
|
||||
back_circle.leds_count = 1;
|
||||
back_circle.name = "Back Circle";
|
||||
back_circle.type = ZONE_TYPE_SINGLE;
|
||||
back_circle.leds_min = 1;
|
||||
back_circle.leds_max = 1;
|
||||
back_circle.leds_count = 1;
|
||||
back_circle.matrix_map = NULL;
|
||||
zones.push_back(back_circle);
|
||||
|
||||
zone down;
|
||||
down.name = "down stuff";
|
||||
down.type = ZONE_TYPE_SINGLE;
|
||||
down.leds_min = 1;
|
||||
down.leds_max = 1;
|
||||
down.leds_count = 1;
|
||||
down.name = "Down Stuff";
|
||||
down.type = ZONE_TYPE_SINGLE;
|
||||
down.leds_min = 1;
|
||||
down.leds_max = 1;
|
||||
down.leds_count = 1;
|
||||
down.matrix_map = NULL;
|
||||
zones.push_back(down);
|
||||
|
||||
led back;
|
||||
back.name = "back";
|
||||
back.value = 0x00;
|
||||
back.name = "Back";
|
||||
back.value = 0x00;
|
||||
leds.push_back(back);
|
||||
|
||||
led d;
|
||||
d.name = "down";
|
||||
d.value = 0x01;
|
||||
d.name = "Down";
|
||||
d.value = 0x01;
|
||||
leds.push_back(d);
|
||||
|
||||
SetupColors();
|
||||
@@ -156,4 +170,4 @@ void RGBController_XG270QG::DeviceUpdateMode()
|
||||
b = RGBGetBValue(modes[active_mode].colors[0]);
|
||||
}
|
||||
controller->SetMode(modes[active_mode].value, r, g, b);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,11 +19,6 @@ VS_XG270QG_Controller::~VS_XG270QG_Controller()
|
||||
hid_close(dev);
|
||||
}
|
||||
|
||||
std::string VS_XG270QG_Controller::GetVersion()
|
||||
{
|
||||
return "?";
|
||||
}
|
||||
|
||||
std::string VS_XG270QG_Controller::GetLocation()
|
||||
{
|
||||
return location;
|
||||
|
||||
@@ -35,7 +35,6 @@ public:
|
||||
VS_XG270QG_Controller(hid_device* device, const char* path);
|
||||
~VS_XG270QG_Controller();
|
||||
|
||||
std::string GetVersion();
|
||||
std::string GetLocation();
|
||||
std::string GetSerial();
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@ void RGBController_ZalmanZSync::SetupZones()
|
||||
for (unsigned int channel_idx = 0; channel_idx < ZALMAN_Z_SYNC_NUM_CHANNELS; channel_idx++)
|
||||
{
|
||||
char ch_idx_string[2];
|
||||
snprintf(ch_idx_string, 2, "%d", channel_idx + 1);
|
||||
sprintf(ch_idx_string, "%d", channel_idx + 1);
|
||||
|
||||
zones[channel_idx].name = "Channel ";
|
||||
zones[channel_idx].name.append(ch_idx_string);
|
||||
@@ -231,7 +231,7 @@ void RGBController_ZalmanZSync::SetupZones()
|
||||
for (unsigned int led_ch_idx = 0; led_ch_idx < zones[channel_idx].leds_count; led_ch_idx++)
|
||||
{
|
||||
char led_idx_string[4];
|
||||
snprintf(led_idx_string, 4, "%d", led_ch_idx + 1);
|
||||
sprintf(led_idx_string, "%d", led_ch_idx + 1);
|
||||
|
||||
led new_led;
|
||||
new_led.name = "LED ";
|
||||
|
||||
+4
-1
@@ -34,7 +34,10 @@ greaterThan(QT_MAJOR_VERSION, 4) {
|
||||
#-----------------------------------------------------------------------------------------------#
|
||||
# Application Configuration #
|
||||
#-----------------------------------------------------------------------------------------------#
|
||||
VERSION = 0.81
|
||||
MAJOR = 0
|
||||
MINOR = 8
|
||||
REVISION = 1
|
||||
VERSION = $$MAJOR"."$$MINOR$$REVISION
|
||||
TARGET = OpenRGB
|
||||
TEMPLATE = app
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ const char* KEY_EN_F12 = "Key: F12";
|
||||
const char* KEY_EN_PRINT_SCREEN = "Key: Print Screen";
|
||||
const char* KEY_EN_SCROLL_LOCK = "Key: Scroll Lock";
|
||||
const char* KEY_EN_PAUSE_BREAK = "Key: Pause/Break";
|
||||
const char* KEY_EN_POWER = "Key: Power";
|
||||
|
||||
const char* KEY_EN_BACK_TICK = "Key: `";
|
||||
const char* KEY_EN_1 = "Key: 1";
|
||||
@@ -43,6 +44,7 @@ const char* KEY_EN_8 = "Key: 8";
|
||||
const char* KEY_EN_9 = "Key: 9";
|
||||
const char* KEY_EN_0 = "Key: 0";
|
||||
const char* KEY_EN_MINUS = "Key: -";
|
||||
const char* KEY_EN_PLUS = "Key: +";
|
||||
const char* KEY_EN_EQUALS = "Key: =";
|
||||
const char* KEY_EN_BACKSPACE = "Key: Backspace";
|
||||
const char* KEY_EN_INSERT = "Key: Insert";
|
||||
@@ -162,3 +164,8 @@ const char* KEY_NORD_BACKSLASH = "Key: \\/`/´";
|
||||
const char* KEY_NORD_CHEVRON = "Key: ^/~";
|
||||
const char* KEY_NORD_QUOTE = "Key: '/*";
|
||||
const char* KEY_NORD_ANGLE_BRACKET = "Key: </>";
|
||||
|
||||
const char* KEY_DE_ESZETT = "Key: ß";
|
||||
const char* KEY_DE_DIAERESIS_A = "Key: Ä";
|
||||
const char* KEY_DE_DIAERESIS_O = "Key: Ö";
|
||||
const char* KEY_DE_DIAERESIS_U = "Key: Ü";
|
||||
|
||||
@@ -30,6 +30,7 @@ extern const char* KEY_EN_F12;
|
||||
extern const char* KEY_EN_PRINT_SCREEN;
|
||||
extern const char* KEY_EN_SCROLL_LOCK;
|
||||
extern const char* KEY_EN_PAUSE_BREAK;
|
||||
extern const char* KEY_EN_POWER;
|
||||
|
||||
extern const char* KEY_EN_BACK_TICK;
|
||||
extern const char* KEY_EN_1;
|
||||
@@ -43,6 +44,7 @@ extern const char* KEY_EN_8;
|
||||
extern const char* KEY_EN_9;
|
||||
extern const char* KEY_EN_0;
|
||||
extern const char* KEY_EN_MINUS;
|
||||
extern const char* KEY_EN_PLUS;
|
||||
extern const char* KEY_EN_EQUALS;
|
||||
extern const char* KEY_EN_BACKSPACE;
|
||||
extern const char* KEY_EN_INSERT;
|
||||
@@ -162,3 +164,8 @@ extern const char* KEY_NORD_BACKSLASH;
|
||||
extern const char* KEY_NORD_CHEVRON;
|
||||
extern const char* KEY_NORD_QUOTE;
|
||||
extern const char* KEY_NORD_ANGLE_BRACKET;
|
||||
|
||||
extern const char* KEY_DE_ESZETT;
|
||||
extern const char* KEY_DE_DIAERESIS_A;
|
||||
extern const char* KEY_DE_DIAERESIS_O;
|
||||
extern const char* KEY_DE_DIAERESIS_U;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
openrgb (0.81.1) UNRELEASED; urgency=medium
|
||||
openrgb (__VERSION__) UNRELEASED; urgency=medium
|
||||
|
||||
* Builds from git master. See git history for more information.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
%global _name OpenRGB
|
||||
|
||||
Name: openrgb
|
||||
Version: 0.8.1
|
||||
Version: __VERSION__
|
||||
Release: 0%{?dist}
|
||||
Summary: Open source RGB lighting control that doesn't depend on manufacturer software
|
||||
|
||||
@@ -663,7 +663,7 @@ bool i2c_smbus_i801_detect()
|
||||
return(false);
|
||||
}
|
||||
|
||||
snprintf(bus->device_name, 512, "Intel(R) SMBus - %X", bus->pci_device);
|
||||
sprintf(bus->device_name, "Intel(R) SMBus - %X", bus->pci_device);
|
||||
((i2c_smbus_i801 *)bus)->i801_smba = ReadConfigPortWord(0x20) & 0xFFFE;
|
||||
ResourceManager::get()->RegisterI2CBus(bus);
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ s32 i2c_smbus_linux::i2c_xfer(u8 addr, char read_write, int* size, u8* data)
|
||||
}
|
||||
|
||||
free(msg.buf);
|
||||
|
||||
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,7 @@ bool i2c_smbus_linux_detect()
|
||||
char *ptr;
|
||||
|
||||
// Start looking for I2C adapters in /sys/bus/i2c/devices/
|
||||
strcpy(driver_path, "/sys/class/i2c-adapter/");
|
||||
strcpy(driver_path, "/sys/bus/i2c/devices/");
|
||||
dir = opendir(driver_path);
|
||||
|
||||
if(dir == NULL)
|
||||
@@ -116,7 +116,7 @@ bool i2c_smbus_linux_detect()
|
||||
if(test_fd)
|
||||
{
|
||||
memset(device_string, 0x00, sizeof(device_string));
|
||||
|
||||
|
||||
if(read(test_fd, device_string, sizeof(device_string)) < 0)
|
||||
{
|
||||
LOG_WARNING("[i2c_smbus_linux] Failed to read i2c device name");
|
||||
@@ -166,7 +166,7 @@ bool i2c_smbus_linux_detect()
|
||||
{
|
||||
LOG_WARNING("[i2c_smbus_linux] Failed to read i2c device PCI vendor ID");
|
||||
}
|
||||
|
||||
|
||||
buff[strlen(buff) - 1] = 0x00;
|
||||
pci_vendor = strtoul(buff, NULL, 16);
|
||||
close(test_fd);
|
||||
@@ -195,7 +195,7 @@ bool i2c_smbus_linux_detect()
|
||||
if (test_fd >= 0)
|
||||
{
|
||||
memset(buff, 0x00, sizeof(buff));
|
||||
|
||||
|
||||
if(read(test_fd, buff, sizeof(buff)) < 0)
|
||||
{
|
||||
LOG_WARNING("[i2c_smbus_linux] Failed to read i2c device PCI subvendor ID");
|
||||
@@ -222,7 +222,7 @@ bool i2c_smbus_linux_detect()
|
||||
pci_subsystem_device = strtoul(buff, NULL, 16);
|
||||
close(test_fd);
|
||||
}
|
||||
|
||||
|
||||
strcpy(device_string, "/dev/");
|
||||
strcat(device_string, ent->d_name);
|
||||
test_fd = open(device_string, O_RDWR);
|
||||
|
||||
@@ -115,7 +115,7 @@ s32 i2c_smbus_nct6775::nct6775_access(u16 addr, char read_write, u8 command, int
|
||||
|
||||
len = 0;
|
||||
}
|
||||
|
||||
|
||||
WriteIoPortByte(SMBHSTCMD, NCT6775_WRITE_BLOCK);
|
||||
}
|
||||
else
|
||||
@@ -271,19 +271,19 @@ bool i2c_smbus_nct6775_detect()
|
||||
switch (val & SIO_ID_MASK)
|
||||
{
|
||||
case SIO_NCT5577_ID:
|
||||
snprintf(bus->device_name, 512, "Nuvoton NCT5577D SMBus at %X", smba);
|
||||
sprintf(bus->device_name, "Nuvoton NCT5577D SMBus at %X", smba);
|
||||
break;
|
||||
case SIO_NCT6102_ID:
|
||||
snprintf(bus->device_name, 512, "Nuvoton NCT6102D/NCT6106D SMBus at %X", smba);
|
||||
sprintf(bus->device_name, "Nuvoton NCT6102D/NCT6106D SMBus at %X", smba);
|
||||
break;
|
||||
case SIO_NCT6793_ID:
|
||||
snprintf(bus->device_name, 512, "Nuvoton NCT6793D SMBus at %X", smba);
|
||||
sprintf(bus->device_name, "Nuvoton NCT6793D SMBus at %X", smba);
|
||||
break;
|
||||
case SIO_NCT6796_ID:
|
||||
snprintf(bus->device_name, 512, "Nuvoton NCT6796D SMBus at %X", smba);
|
||||
sprintf(bus->device_name, "Nuvoton NCT6796D SMBus at %X", smba);
|
||||
break;
|
||||
case SIO_NCT6798_ID:
|
||||
snprintf(bus->device_name, 512, "Nuvoton NCT6798D SMBus at %X", smba);
|
||||
sprintf(bus->device_name, "Nuvoton NCT6798D SMBus at %X", smba);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ s32 i2c_smbus_nvapi::i2c_smbus_xfer(u8 addr, char read_write, u8 command, int mo
|
||||
case I2C_SMBUS_WORD_DATA:
|
||||
data->word = (i2c_data.data[0] | (i2c_data.data[1] << 8));
|
||||
break;
|
||||
|
||||
|
||||
case I2C_SMBUS_BLOCK_DATA:
|
||||
case I2C_SMBUS_I2C_BLOCK_DATA:
|
||||
data->block[0] = i2c_data.size;
|
||||
@@ -179,7 +179,7 @@ bool i2c_smbus_nvapi_detect()
|
||||
{
|
||||
i2c_smbus_nvapi * nvapi_bus = new i2c_smbus_nvapi(gpu_handles[gpu_idx]);
|
||||
|
||||
snprintf(nvapi_bus->device_name, 512, "NVidia NvAPI I2C on GPU %d", gpu_idx);
|
||||
sprintf(nvapi_bus->device_name, "NVidia NvAPI I2C on GPU %d", gpu_idx);
|
||||
|
||||
res = NvAPI_GPU_GetPCIIdentifiers(gpu_handles[gpu_idx], &device_id, &sub_system_id, &revision_id, &ext_device_id);
|
||||
|
||||
|
||||
+11
-11
@@ -22,12 +22,12 @@ std::string i2c_detect(i2c_smbus_interface * bus, int mode)
|
||||
char line[128];
|
||||
std::string text;
|
||||
|
||||
snprintf(line, 128, " 0 1 2 3 4 5 6 7 8 9 a b c d e f\r\n");
|
||||
sprintf(line, " 0 1 2 3 4 5 6 7 8 9 a b c d e f\r\n");
|
||||
text.append(line);
|
||||
|
||||
for (i = 0; i < 128; i += 16)
|
||||
{
|
||||
snprintf(line, 128, "%02x: ", i);
|
||||
sprintf(line, "%02x: ", i);
|
||||
text.append(line);
|
||||
|
||||
for (j = 0; j < 16; j++)
|
||||
@@ -35,7 +35,7 @@ std::string i2c_detect(i2c_smbus_interface * bus, int mode)
|
||||
/* Skip unwanted addresses */
|
||||
if (i+j < first || i+j > last)
|
||||
{
|
||||
snprintf(line, 128, " ");
|
||||
sprintf(line, " ");
|
||||
text.append(line);
|
||||
continue;
|
||||
}
|
||||
@@ -63,16 +63,16 @@ std::string i2c_detect(i2c_smbus_interface * bus, int mode)
|
||||
|
||||
if (res < 0)
|
||||
{
|
||||
snprintf(line, 128, "-- ");
|
||||
sprintf(line, "-- ");
|
||||
text.append(line);
|
||||
}
|
||||
else
|
||||
{
|
||||
snprintf(line, 128, "%02x ", i + j);
|
||||
sprintf(line, "%02x ", i + j);
|
||||
text.append(line);
|
||||
}
|
||||
}
|
||||
snprintf(line, 128, "\r\n");
|
||||
sprintf(line, "\r\n");
|
||||
text.append(line);
|
||||
}
|
||||
|
||||
@@ -100,21 +100,21 @@ std::string i2c_dump(i2c_smbus_interface * bus, unsigned char address)
|
||||
char line[128];
|
||||
std::string text;
|
||||
|
||||
snprintf(line, 128, " 0 1 2 3 4 5 6 7 8 9 a b c d e f\r\n");
|
||||
sprintf(line, " 0 1 2 3 4 5 6 7 8 9 a b c d e f\r\n");
|
||||
text.append(line);
|
||||
|
||||
for (i = 0; i < 0xFF; i += 16)
|
||||
{
|
||||
snprintf(line, 128, "%04x: ", i + start);
|
||||
sprintf(line, "%04x: ", i + start);
|
||||
text.append(line);
|
||||
|
||||
for (j = 0; j < 16; j++)
|
||||
{
|
||||
snprintf(line, 128, "%02x ", (unsigned char )bus->i2c_smbus_read_byte_data(address, start + i + j));
|
||||
sprintf(line, "%02x ", (unsigned char )bus->i2c_smbus_read_byte_data(address, start + i + j));
|
||||
text.append(line);
|
||||
}
|
||||
|
||||
snprintf(line, 128, "\r\n");
|
||||
sprintf(line, "\r\n");
|
||||
text.append(line);
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ std::string i2c_read(i2c_smbus_interface * bus, unsigned char address, unsigned
|
||||
|
||||
for(i = 0; i < size; i++)
|
||||
{
|
||||
snprintf(line, 128, "%02x ", (unsigned char)bus->i2c_smbus_read_byte(address));
|
||||
sprintf(line, "%02x ", (unsigned char)bus->i2c_smbus_read_byte(address));
|
||||
text.append(line);
|
||||
}
|
||||
|
||||
|
||||
+12
-1
@@ -1,4 +1,4 @@
|
||||
/*---------------------------------------------------------*\
|
||||
/*---------------------------------------------------------*\
|
||||
| PCI Vendor IDs |
|
||||
\*---------------------------------------------------------*/
|
||||
#define AMD_VEN 0x1022
|
||||
@@ -75,6 +75,7 @@
|
||||
#define NVIDIA_RTX3050_DEV 0x2507
|
||||
#define NVIDIA_RTX3060_DEV 0x2503
|
||||
#define NVIDIA_RTX3060_GA104_DEV 0x2487
|
||||
#define NVIDIA_RTX3060_GA106_DEV 0x2503
|
||||
#define NVIDIA_RTX3060_LHR_DEV 0x2504
|
||||
#define NVIDIA_RTX3060TI_DEV 0x2486
|
||||
#define NVIDIA_RTX3060TI_LHR_DEV 0x2489
|
||||
@@ -216,6 +217,7 @@
|
||||
#define ASUS_ROG_STRIX_RTX_3080_O10G_V2_WHITE 0x8830
|
||||
#define ASUS_ROG_STRIX_RTX_3080_O10G_V2_GAMING 0x882E
|
||||
#define ASUS_TUF_RTX_3080_10G_GAMING_PD 0x87C4
|
||||
#define ASUS_TUF_RTX_3080_10G_GUNDAM_EDITION 0x87CE
|
||||
#define ASUS_TUF_RTX_3080_10G_GAMING 0x87B2
|
||||
#define ASUS_TUF_RTX_3080_O10G_OC 0x87B0
|
||||
#define ASUS_TUF_RTX_3080_O10G_V2_GAMING_8822 0x8822
|
||||
@@ -244,8 +246,10 @@
|
||||
#define ASUS_TUF_RX_6950XT_016G_GAMING 0x0504
|
||||
#define ASUS_ROG_STRIX_LC_RX_6950XT_O16G_GAMING 0x05E9
|
||||
#define ASUS_TUF_RTX_4070TI_12G_GAMING 0x88A4
|
||||
#define ASUS_TUF_RTX_4070TI_O12G_GAMING 0x88A3
|
||||
#define ASUS_TUF_RTX_4090_O24G_OC_GAMING 0x889A
|
||||
#define ASUS_TUF_RTX_4090_O24G_GAMING 0x889B
|
||||
#define ASUS_ROG_STRIX_RTX_4080_O16G_GAMING 0x88BF
|
||||
#define ASUS_ROG_STRIX_RTX_4090_O24G_GAMING 0x889C
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
@@ -454,6 +458,7 @@
|
||||
#define GIGABYTE_RTX3090_XTREME_WATERFORCE_WB_SUB_DEV 0x403A
|
||||
#define GIGABYTE_RTX4080_GAMING_OC_SUB_DEV 0x40BC
|
||||
#define GIGABYTE_AORUS_RTX4080_MASTER_16G_SUB_DEV 0x40BD
|
||||
#define GIGABYTE_RTX4090_GAMING_OC_24G_SUB_DEV 0x40BF
|
||||
#define GIGABYTE_AORUS_RTX4090_MASTER_24G_SUB_DEV 0x40C0
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
@@ -507,6 +512,7 @@
|
||||
#define MSI_RTX3090TI_SUPRIM_X_SUB_DEV 0x5090
|
||||
#define MSI_RTX3090TI_GAMING_X_TRIO_SUB_DEV 0x5091
|
||||
#define MSI_RTX4070TI_GAMING_X_TRIO_SUB_DEV 0x5132
|
||||
#define MSI_RTX4070TI_SUPRIM_X_TRIO_SUB_DEV 0x5133
|
||||
#define MSI_RTX4080_GAMING_X_TRIO_SUB_DEV 0x5111
|
||||
#define MSI_RTX4080_SUPRIM_X_SUB_DEV 0x5110
|
||||
#define MSI_RTX4090_GAMING_X_TRIO_SUB_DEV 0x5103
|
||||
@@ -581,6 +587,11 @@
|
||||
#define ZOTAC_RTX2070S_GAMING_SUB_DEV 0x7500
|
||||
#define ZOTAC_RTX2080_AMP_SUB_DEV 0x3500
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Manli Sub-Device IDs |
|
||||
\*-----------------------------------------------------*/
|
||||
#define MANLI_RTX3080TI_GALLARDO_SUB_DEV 0x2612
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| PCI ID Macros |
|
||||
\*---------------------------------------------------------*/
|
||||
|
||||
@@ -99,6 +99,7 @@ static const std::map<std::string, led_label> led_label_lookup =
|
||||
{ KEY_EN_F12, { "F12" , "F12", }},
|
||||
{ KEY_EN_BACK_TICK, { "`" , "`", }},
|
||||
{ KEY_EN_MINUS, { "-" , "-", }},
|
||||
{ KEY_EN_PLUS, { "+" , "+", }},
|
||||
{ KEY_EN_EQUALS, { "=" , "=", }},
|
||||
{ KEY_EN_LEFT_BRACKET, { "[" , "[", }},
|
||||
{ KEY_EN_RIGHT_BRACKET, { "]" , "]", }},
|
||||
@@ -165,6 +166,7 @@ static const std::map<std::string, led_label> led_label_lookup =
|
||||
{ KEY_EN_MEDIA_MUTE, { "Mte" , "\xF0\x9F\x94\x87", }}, // 🔇
|
||||
{ KEY_EN_MEDIA_VOLUME_DOWN, { "Vl-" , "\xF0\x9F\x94\x88", }}, // 🔉
|
||||
{ KEY_EN_MEDIA_VOLUME_UP, { "Vl+" , "\xF0\x9F\x94\x89", }}, // 🔊
|
||||
{ KEY_EN_POWER, { "Pwr" , "\xE2\x8F\xBB", }}, // ⏻
|
||||
{ KEY_JP_RO, { "_" , "_", }},
|
||||
{ KEY_JP_EJ, { "E/J" , "E/J", }},
|
||||
{ KEY_JP_ZENKAKU, { "Zen" , "\xE5\x8D\x8A\xE8"
|
||||
@@ -199,6 +201,10 @@ static const std::map<std::string, led_label> led_label_lookup =
|
||||
{ KEY_NORD_CHEVRON, { "^/~" , "^/~", }},
|
||||
{ KEY_NORD_QUOTE, { "'/*" , "'/*", }},
|
||||
{ KEY_NORD_ANGLE_BRACKET, { "</>" , "</>" }},
|
||||
{ KEY_DE_ESZETT, { "ß" , "\xc3\x9F", }},
|
||||
{ KEY_DE_DIAERESIS_A, { "Ä" , "\xC3\x84", }},
|
||||
{ KEY_DE_DIAERESIS_O, { "Ö" , "\xC3\x96", }},
|
||||
{ KEY_DE_DIAERESIS_U, { "Ü" , "\xC3\x9C" }},
|
||||
};
|
||||
|
||||
void DeviceView::setController(RGBController * controller_ptr)
|
||||
|
||||
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
PROJECT_FILE="OpenRGB.pro"
|
||||
VERSION_PATTERN="__VERSION__"
|
||||
INFILE_SUFFIX=".in"
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
echo "ERROR! No file give to parse."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
INFILE_PATH=${1}${INFILE_SUFFIX}
|
||||
|
||||
if [ -e ${INFILE_PATH} ]; then
|
||||
echo "ERROR! Source file ${INFILE_PATH} missing."
|
||||
fi
|
||||
|
||||
if [ -e ${1} ]; then
|
||||
echo "Warning: File ${1} exists and will be overwritten"
|
||||
fi
|
||||
|
||||
MAJOR=$(grep MAJOR\ ${PROJECT_FILE} | cut -d= -f 2 | tr -d [:space:])
|
||||
MINOR=$(grep MINOR\ ${PROJECT_FILE} | cut -d= -f 2 | tr -d [:space:])
|
||||
REVISION=$(grep REVISION\ ${PROJECT_FILE} | cut -d= -f 2 | tr -d [:space:])
|
||||
|
||||
#Convert Revision to a nummber in case it is blank in the project file
|
||||
REVISION=$(( ${REVISION} + 0 ))
|
||||
|
||||
PACKAGE_VERSION="${MAJOR}.${MINOR}.${REVISION}"
|
||||
|
||||
sed -e "s/${VERSION_PATTERN}/${PACKAGE_VERSION}/g" ${INFILE_PATH} > ${1}
|
||||
Reference in New Issue
Block a user