From 8d8199a6b37b673aab3eb0371f84622547958e7d Mon Sep 17 00:00:00 2001 From: Chris M Date: Fri, 20 Dec 2024 07:59:53 +1100 Subject: [PATCH] Initial commit for Razer Huntsman V3 Pro TKL White * Adding PID 0x02A7 for the Huntsman V3 Pro TKL White * Added metadata to RazerDevices.cpp * Registered detectors * Added capabilities to RazerController.cpp * Resolves #4418 --- .../RazerController/RazerController.cpp | 2 + .../RazerController/RazerControllerDetect.cpp | 1 + Controllers/RazerController/RazerDevices.cpp | 63 +++++++++++++++++++ Controllers/RazerController/RazerDevices.h | 1 + 4 files changed, 67 insertions(+) diff --git a/Controllers/RazerController/RazerController/RazerController.cpp b/Controllers/RazerController/RazerController/RazerController.cpp index 1eeb7261..26c96284 100644 --- a/Controllers/RazerController/RazerController/RazerController.cpp +++ b/Controllers/RazerController/RazerController/RazerController.cpp @@ -154,6 +154,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha case RAZER_HUNTSMAN_V2_ANALOG_PID: case RAZER_HUNTSMAN_V2_TKL_PID: case RAZER_HUNTSMAN_V2_PID: + case RAZER_HUNTSMAN_V3_PRO_TKL_WHITE_PID: case RAZER_ORNATA_CHROMA_PID: case RAZER_ORNATA_CHROMA_V2_PID: case RAZER_ORNATA_V3_PID: @@ -445,6 +446,7 @@ bool RazerController::SupportsWave() case RAZER_HUNTSMAN_V2_ANALOG_PID: case RAZER_HUNTSMAN_V2_TKL_PID: case RAZER_HUNTSMAN_V2_PID: + case RAZER_HUNTSMAN_V3_PRO_TKL_WHITE_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 0364a09c..65a1eb12 100644 --- a/Controllers/RazerController/RazerControllerDetect.cpp +++ b/Controllers/RazerController/RazerControllerDetect.cpp @@ -189,6 +189,7 @@ REGISTER_HID_DETECTOR_IPU("Razer Huntsman Tournament Edition", Det REGISTER_HID_DETECTOR_IPU("Razer Huntsman V2 Analog", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_V2_ANALOG_PID, 0x03, 0x0C, 0x01); REGISTER_HID_DETECTOR_IPU("Razer Huntsman V2 TKL", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_V2_TKL_PID, 0x03, 0x0C, 0x01); REGISTER_HID_DETECTOR_IPU("Razer Huntsman V2", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_V2_PID, 0x03, 0x0C, 0x01); +REGISTER_HID_DETECTOR_IPU("Razer Huntsman V3 Pro TKL White", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_V3_PRO_TKL_WHITE_PID, 0x03, 0x0C, 0x01); REGISTER_HID_DETECTOR_IPU("Razer Ornata Chroma", DetectRazerControllers, RAZER_VID, RAZER_ORNATA_CHROMA_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Ornata Chroma V2", DetectRazerControllers, RAZER_VID, RAZER_ORNATA_CHROMA_V2_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Ornata V3", DetectRazerControllers, RAZER_VID, RAZER_ORNATA_V3_PID, 0x02, 0x01, 0x02); diff --git a/Controllers/RazerController/RazerDevices.cpp b/Controllers/RazerController/RazerDevices.cpp index 94173b61..ad195947 100644 --- a/Controllers/RazerController/RazerDevices.cpp +++ b/Controllers/RazerController/RazerDevices.cpp @@ -980,6 +980,33 @@ keyboard_keymap_overlay_values razer_huntsman_v2_tkl_layout } }; +keyboard_keymap_overlay_values razer_huntsman_v3_pro_tkl_layout +{ + KEYBOARD_SIZE::KEYBOARD_SIZE_TKL, + { + { /* ANSI Value set not used */ }, + { + /* Add more regional layout fixes here */ + } + }, + { + /*---------------------------------------------------------------------------------------------------------*\ + | Edit Keys | + | Zone, Row, Column, Value, Key, OpCode, | + \*---------------------------------------------------------------------------------------------------------*/ + { 0, 0, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, + { 0, 0, 15, 0, "Xbox Game Bar", KEYBOARD_OPCODE_SWAP_ONLY, }, + { 0, 0, 16, 0, KEY_EN_MEDIA_PLAY_PAUSE, KEYBOARD_OPCODE_SWAP_ONLY, }, + { 0, 0, 17, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, + { 0, 0, 18, 0, "Media: Volume Dial", KEYBOARD_OPCODE_SWAP_ONLY, }, + { 0, 1, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, + { 0, 2, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, + { 0, 3, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, + { 0, 4, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, + { 0, 5, 0, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, + } +}; + keyboard_keymap_overlay_values razer_laptop_common_layout { KEYBOARD_SIZE::KEYBOARD_SIZE_SEVENTY_FIVE, @@ -2679,6 +2706,41 @@ static const razer_device huntsman_v2_device = &razer_huntsman_v2_layout }; +/*-------------------------------------------------------------*\ +| Razer Huntsman V3 Pro TKL White 1532:02A7 | +| | +| Zone "Keyboard" | +| Matrix | +| 6 Rows, 19 Columns | +\*-------------------------------------------------------------*/ +static const razer_zone huntsman_v3_pro_tkl_keyboard_zone = +{ + ZONE_EN_KEYBOARD, + ZONE_TYPE_MATRIX, + 6, + 19 +}; + +static const razer_device huntsman_v3_pro_tkl_device = +{ + "Razer Huntsman V3 Pro TKL White", + RAZER_HUNTSMAN_V3_PRO_TKL_WHITE_PID, + DEVICE_TYPE_KEYBOARD, + RAZER_MATRIX_TYPE_EXTENDED, + 0x3F, + 6, + 19, + { + &huntsman_v3_pro_tkl_keyboard_zone, + NULL, + NULL, + NULL, + NULL, + NULL + }, + &razer_huntsman_v3_pro_tkl_layout +}; + /*-------------------------------------------------------------------------*\ | LAPTOPS | \*-------------------------------------------------------------------------*/ @@ -8436,6 +8498,7 @@ const razer_device* razer_device_list[] = &huntsman_v2_device, &huntsman_v2_analog_device, &huntsman_v2_tkl_device, + &huntsman_v3_pro_tkl_device, &ornata_chroma_device, &ornata_chroma_v2_device, &ornata_v3_device, diff --git a/Controllers/RazerController/RazerDevices.h b/Controllers/RazerController/RazerDevices.h index c60b52aa..12be6955 100644 --- a/Controllers/RazerController/RazerDevices.h +++ b/Controllers/RazerController/RazerDevices.h @@ -114,6 +114,7 @@ #define RAZER_HUNTSMAN_V2_ANALOG_PID 0x0266 #define RAZER_HUNTSMAN_V2_TKL_PID 0x026B #define RAZER_HUNTSMAN_V2_PID 0x026C +#define RAZER_HUNTSMAN_V3_PRO_TKL_WHITE_PID 0x02A7 #define RAZER_ORBWEAVER_CHROMA_PID 0x0207 #define RAZER_ORNATA_CHROMA_PID 0x021E #define RAZER_ORNATA_CHROMA_V2_PID 0x025D