diff --git a/Controllers/RazerController/RazerController.cpp b/Controllers/RazerController/RazerController.cpp
index 2212c561..5e69d3c3 100644
--- a/Controllers/RazerController/RazerController.cpp
+++ b/Controllers/RazerController/RazerController.cpp
@@ -55,6 +55,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
case RAZER_CYNOSA_V2_PID:
case RAZER_ORNATA_CHROMA_V2_PID:
case RAZER_TARTARUS_CHROMA_PID:
+ case RAZER_TARTARUS_PRO_PID:
case RAZER_TARTARUS_V2_PID:
case RAZER_DEATHADDER_CHROMA_PID:
case RAZER_DEATHADDER_ESSENTIAL_V2_PID:
@@ -137,6 +138,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
case RAZER_NAGA_LEFT_HANDED_PID:
case RAZER_O11_DYNAMIC_PID:
case RAZER_STRIDER_CHROMA_PID:
+ case RAZER_TARTARUS_PRO_PID:
case RAZER_TARTARUS_V2_PID:
dev_led_id = RAZER_LED_ID_ZERO;
break;
@@ -287,6 +289,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
case RAZER_ORNATA_CHROMA_V2_PID:
case RAZER_SEIREN_EMOTE_PID:
case RAZER_STRIDER_CHROMA_PID:
+ case RAZER_TARTARUS_PRO_PID:
case RAZER_TARTARUS_V2_PID:
case RAZER_TIAMAT_71_V2_PID:
case RAZER_VIPER_8KHZ_PID:
@@ -580,6 +583,7 @@ bool RazerController::SupportsWave()
case RAZER_HUNTSMAN_V2_TKL_PID:
case RAZER_HUNTSMAN_V2_PID:
case RAZER_ORBWEAVER_CHROMA_PID:
+ case RAZER_TARTARUS_PRO_PID:
case RAZER_TARTARUS_V2_PID:
/*-----------------------------------------------------*\
diff --git a/Controllers/RazerController/RazerControllerDetect.cpp b/Controllers/RazerController/RazerControllerDetect.cpp
index 12b732c1..afcd1fcb 100644
--- a/Controllers/RazerController/RazerControllerDetect.cpp
+++ b/Controllers/RazerController/RazerControllerDetect.cpp
@@ -359,6 +359,7 @@ REGISTER_HID_DETECTOR_IPU("Razer Viper Ultimate (Wireless)", Det
\*-----------------------------------------------------------------------------------------------------*/
REGISTER_HID_DETECTOR_IPU("Razer Orbweaver Chroma", DetectRazerControllers, RAZER_VID, RAZER_ORBWEAVER_CHROMA_PID, 0x02, 0x01, 0x02);
REGISTER_HID_DETECTOR_IPU("Razer Tartarus Chroma", DetectRazerControllers, RAZER_VID, RAZER_TARTARUS_CHROMA_PID, 0x02, 0x01, 0x02);
+REGISTER_HID_DETECTOR_IPU("Razer Tartarus Pro", DetectRazerControllers, RAZER_VID, RAZER_TARTARUS_PRO_PID, 0x02, 0x01, 0x02);
REGISTER_HID_DETECTOR_IPU("Razer Tartarus V2", DetectRazerControllers, RAZER_VID, RAZER_TARTARUS_V2_PID, 0x02, 0x01, 0x02);
/*-----------------------------------------------------------------------------------------------------*\
diff --git a/Controllers/RazerController/RazerDevices.cpp b/Controllers/RazerController/RazerDevices.cpp
index be44fe36..7a22896a 100644
--- a/Controllers/RazerController/RazerDevices.cpp
+++ b/Controllers/RazerController/RazerDevices.cpp
@@ -2449,6 +2449,36 @@ static const razer_key tartarus_v2_keymap[] =
{ 0, 3, 5, "Key: 20" },
};
+#define TARTARUS_PRO_KEYMAP_SIZE (sizeof(tartarus_pro_keymap) / sizeof(tartarus_pro_keymap[0]))
+
+static const razer_key tartarus_pro_keymap[] =
+{
+ /*---------------------------------------------------------------------*\
+ | Zone, Row, Column, Key |
+ \*---------------------------------------------------------------------*/
+ { 0, 0, 0, "Keypad 01" },
+ { 0, 0, 1, "Keypad 02" },
+ { 0, 0, 2, "Keypad 03" },
+ { 0, 0, 3, "Keypad 04" },
+ { 0, 0, 4, "Keypad 05" },
+ { 0, 1, 0, "Keypad 06" },
+ { 0, 1, 1, "Keypad 07" },
+ { 0, 1, 2, "Keypad 08" },
+ { 0, 1, 3, "Keypad 09" },
+ { 0, 1, 4, "Keypad 10" },
+ { 0, 2, 0, "Keypad 11" },
+ { 0, 2, 1, "Keypad 12" },
+ { 0, 2, 2, "Keypad 13" },
+ { 0, 2, 3, "Keypad 14" },
+ { 0, 2, 4, "Keypad 15" },
+ { 0, 3, 0, "Keypad 16" },
+ { 0, 3, 1, "Keypad 17" },
+ { 0, 3, 2, "Keypad 18" },
+ { 0, 3, 3, "Keypad 19" },
+ { 0, 3, 4, "Key Scroll Wheel" },
+ { 1, 0, 0, "Keypad 20" },
+};
+
/*-------------------------------------------------------------------------*\
| KEYBOARDS |
\*-------------------------------------------------------------------------*/
@@ -6739,7 +6769,7 @@ static const razer_device orbweaver_chroma_device =
{
"Razer Orbweaver Chroma",
RAZER_ORBWEAVER_CHROMA_PID,
- DEVICE_TYPE_KEYBOARD,
+ DEVICE_TYPE_KEYPAD,
true,
4,
5,
@@ -6774,7 +6804,7 @@ static const razer_device tartarus_chroma_device =
{
"Razer Tartarus Chroma",
RAZER_TARTARUS_CHROMA_PID,
- DEVICE_TYPE_KEYBOARD,
+ DEVICE_TYPE_KEYPAD,
true,
1,
1,
@@ -6790,6 +6820,54 @@ static const razer_device tartarus_chroma_device =
0
};
+/*-------------------------------------------------------------*\
+| Razer Tartarus Pro 1532:0244 |
+| |
+| Zone "Keypad" |
+| Matrix |
+| 4 Rows, 5 Columns |
+\*-------------------------------------------------------------*/
+static const razer_zone tartarus_pro_zone =
+{
+ "Keypad",
+ ZONE_TYPE_MATRIX,
+ 4,
+ 5
+};
+
+static const razer_zone tartarus_pro_K20 =
+{
+ "Keypad LED 20",
+ ZONE_TYPE_SINGLE,
+ 1,
+ 1
+};
+
+static const razer_device tartarus_pro_device =
+{
+ "Razer Tartarus Pro",
+ RAZER_TARTARUS_PRO_PID,
+ DEVICE_TYPE_KEYPAD,
+ true,
+ 1,
+ 21,
+ {
+ &tartarus_pro_zone,
+ &tartarus_pro_K20,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ /*-------------------------------------------------------------*\
+ Need to be Implemented to read upper defined keymap(Not working now)
+ tartarus_pro_keymap,
+ TARTARUS_PRO_KEYMAP_SIZE
+ \*-------------------------------------------------------------*/
+ NULL,
+ 0
+};
+
/*-------------------------------------------------------------*\
| Razer Tartarus V2 1532:0208 |
| |
@@ -6809,7 +6887,7 @@ static const razer_device tartarus_v2_device =
{
"Razer Tartarus V2",
RAZER_TARTARUS_V2_PID,
- DEVICE_TYPE_KEYBOARD,
+ DEVICE_TYPE_KEYPAD,
true,
4,
6,
@@ -8126,6 +8204,7 @@ const razer_device* razer_device_list[] =
\*-----------------------------------------------------------------*/
&orbweaver_chroma_device,
&tartarus_chroma_device,
+ &tartarus_pro_device,
&tartarus_v2_device,
/*-----------------------------------------------------------------*\
| MOUSEMATS |
diff --git a/Controllers/RazerController/RazerDevices.h b/Controllers/RazerController/RazerDevices.h
index dcf721b1..c19c7c07 100644
--- a/Controllers/RazerController/RazerDevices.h
+++ b/Controllers/RazerController/RazerDevices.h
@@ -97,6 +97,7 @@
#define RAZER_ORNATA_CHROMA_PID 0x021E
#define RAZER_ORNATA_CHROMA_V2_PID 0x025D
#define RAZER_TARTARUS_CHROMA_PID 0x0208
+#define RAZER_TARTARUS_PRO_PID 0x0244
#define RAZER_TARTARUS_V2_PID 0x022B
/*-----------------------------------------------------*\
diff --git a/RGBController/RGBController.cpp b/RGBController/RGBController.cpp
index 97080b78..90049efb 100644
--- a/RGBController/RGBController.cpp
+++ b/RGBController/RGBController.cpp
@@ -1644,6 +1644,10 @@ std::string device_type_to_str(device_type type)
return "Virtual";
case DEVICE_TYPE_CASE:
return "Case";
+ case DEVICE_TYPE_ACCESSORY:
+ return "Accessory";
+ case DEVICE_TYPE_KEYPAD:
+ return "Keypad";
default:
return "Unknown";
}
diff --git a/RGBController/RGBController.h b/RGBController/RGBController.h
index fcddfa44..f4c2f853 100644
--- a/RGBController/RGBController.h
+++ b/RGBController/RGBController.h
@@ -179,6 +179,7 @@ enum
DEVICE_TYPE_CASE,
DEVICE_TYPE_MICROPHONE,
DEVICE_TYPE_ACCESSORY,
+ DEVICE_TYPE_KEYPAD,
DEVICE_TYPE_UNKNOWN,
};
diff --git a/qt/OpenRGBDialog2.cpp b/qt/OpenRGBDialog2.cpp
index 835ea9a5..551ab874 100644
--- a/qt/OpenRGBDialog2.cpp
+++ b/qt/OpenRGBDialog2.cpp
@@ -87,6 +87,9 @@ static QString GetIconString(device_type type, bool dark)
case DEVICE_TYPE_CASE:
filename = "case";
break;
+ case DEVICE_TYPE_KEYPAD:
+ filename = "keypad";
+ break;
default:
filename = "unknown";
break;
diff --git a/qt/keypad.png b/qt/keypad.png
new file mode 100644
index 00000000..e8048293
Binary files /dev/null and b/qt/keypad.png differ
diff --git a/qt/keypad_dark.png b/qt/keypad_dark.png
new file mode 100644
index 00000000..0becdd39
Binary files /dev/null and b/qt/keypad_dark.png differ
diff --git a/qt/resources.qrc b/qt/resources.qrc
index cee5b9bb..5b1ec874 100644
--- a/qt/resources.qrc
+++ b/qt/resources.qrc
@@ -54,6 +54,8 @@
microphone_dark.png
accessory.png
accessory_dark.png
+ keypad.png
+ keypad_dark.png
unknown.png
unknown_dark.png