add support for Roccat Vulcan Pro to resolve #3856

This commit is contained in:
Mola19 2024-01-17 21:29:35 +01:00
parent a13a528117
commit 2dfde7e8cd
No known key found for this signature in database
GPG key ID: 6446B87E73001409
5 changed files with 17 additions and 3 deletions

View file

@ -112,6 +112,7 @@ void RGBController_RoccatVulcanKeyboard::SetupZones()
case ROCCAT_VULCAN_TKL_PID:
keyboard_ptr = &RoccatVulcanTKLLayouts;
break;
case ROCCAT_VULCAN_PRO_PID:
case ROCCAT_PYRO_PID:
keyboard_ptr = &RoccatPyroLayouts;
break;

View file

@ -99,6 +99,7 @@ void DetectRoccatVulcanKeyboardControllers(hid_device_info* info, const std::str
switch (info->product_id)
{
case ROCCAT_VULCAN_PRO_PID:
case ROCCAT_PYRO_PID:
case ROCCAT_MAGMA_PID:
case ROCCAT_MAGMA_MINI_PID:
@ -275,6 +276,7 @@ REGISTER_HID_DETECTOR_IP ("Roccat Pyro", DetectRoccatVulcanKe
REGISTER_HID_DETECTOR_IP ("Roccat Vulcan 100 Aimo", DetectRoccatVulcanKeyboardControllers, ROCCAT_VID, ROCCAT_VULCAN_100_AIMO_PID, 1, 11);
REGISTER_HID_DETECTOR_IP ("Roccat Vulcan 120-Series Aimo", DetectRoccatVulcanKeyboardControllers, ROCCAT_VID, ROCCAT_VULCAN_120_AIMO_PID, 1, 11);
REGISTER_HID_DETECTOR_IP ("Roccat Vulcan TKL", DetectRoccatVulcanKeyboardControllers, ROCCAT_VID, ROCCAT_VULCAN_TKL_PID, 1, 11);
REGISTER_HID_DETECTOR_IP ("Roccat Vulcan Pro", DetectRoccatVulcanKeyboardControllers, ROCCAT_VID, ROCCAT_VULCAN_PRO_PID, 1, 0xFF01);
/*-----------------------------------------------------------------*\
| MICE |

View file

@ -64,6 +64,7 @@ device_info RoccatVulcanKeyboardController::InitDeviceInfo()
case ROCCAT_PYRO_PID:
case ROCCAT_MAGMA_PID:
case ROCCAT_MAGMA_MINI_PID:
case ROCCAT_VULCAN_PRO_PID:
packet_length = 9;
report_id = 0x09;
break;
@ -116,6 +117,7 @@ void RoccatVulcanKeyboardController::EnableDirect(bool on_off_switch)
case ROCCAT_PYRO_PID:
case ROCCAT_MAGMA_PID:
case ROCCAT_MAGMA_MINI_PID:
case ROCCAT_VULCAN_PRO_PID:
buf = new uint8_t[5] { 0x0E, 0x05, on_off_switch, 0x00, 0x00 };
hid_send_feature_report(dev_ctrl, buf, 5);
break;
@ -145,6 +147,11 @@ void RoccatVulcanKeyboardController::SendColors(std::vector<led_color> colors)
column_length = 1;
protocol_version = 2;
break;
case ROCCAT_VULCAN_PRO_PID:
packet_length = 384;
column_length = 12;
protocol_version = 2;
break;
default:
packet_length = 436;
column_length = 12;
@ -246,7 +253,6 @@ void RoccatVulcanKeyboardController::SendColors(std::vector<led_color> colors)
AwaitResponse(20);
}
void RoccatVulcanKeyboardController::SendMode(unsigned int mode, unsigned int speed, unsigned int brightness, std::vector<led_color> colors)
{
if(speed == 0) speed = ROCCAT_VULCAN_SPEED_DEFAULT;
@ -269,6 +275,11 @@ void RoccatVulcanKeyboardController::SendMode(unsigned int mode, unsigned int sp
packet_length = 26;
column_length = 5;
break;
case ROCCAT_VULCAN_PRO_PID:
protocol_version = 2;
packet_length = 371;
column_length = 12;
break;
default:
protocol_version = 1;
packet_length = 443;
@ -351,6 +362,7 @@ void RoccatVulcanKeyboardController::WaitUntilReady()
case ROCCAT_PYRO_PID:
case ROCCAT_MAGMA_PID:
case ROCCAT_MAGMA_MINI_PID:
case ROCCAT_VULCAN_PRO_PID:
packet_length = 4;
break;
default:

View file

@ -20,6 +20,7 @@ enum
ROCCAT_VULCAN_100_AIMO_PID = 0x307A,
ROCCAT_VULCAN_120_AIMO_PID = 0x3098,
ROCCAT_VULCAN_TKL_PID = 0x2FEE,
ROCCAT_VULCAN_PRO_PID = 0x30F7,
ROCCAT_PYRO_PID = 0x314C,
ROCCAT_MAGMA_PID = 0x3124,
ROCCAT_MAGMA_MINI_PID = 0x69A0,

View file

@ -49,7 +49,6 @@ static unsigned int ROCCAT_VULCAN_120_AIMO_LAYOUT_KEYS_104[6][24] =
{ 5, 7, 13, NA, NA, NA, 33, NA, NA, NA, 54, 60, 65, NA, 73, NA, 77, 82, 86, NA, 91, NA, 100, NA }
};
static unsigned int ROCCAT_VULCAN_120_AIMO_LAYOUT_KEYS_105[6][24] =
{
{ 0, NA, 9, 15, 20, 25, NA, 35, 40, 45, 50, 56, 62, 67, 72, NA, 75, 79, 84, NA, NA, NA, NA, NA },
@ -70,7 +69,6 @@ static unsigned int ROCCAT_VULCAN_TKL_LAYOUT_KEYS_104[6][19] =
{ 5, 7, 13, NA, NA, NA, 33, NA, NA, NA, 54, 60, 65, NA, 73, NA, 77, 81, 84 }
};
static unsigned int ROCCAT_VULCAN_TKL_LAYOUT_KEYS_105[6][19] =
{
{ 0, NA, 9, 15, 20, 25, NA, 35, 40, 45, 50, 56, 62, 67, 72, NA, 75, NA, NA },