From 8b36e9c317cc818564b270cf39e712aa3eda87bf Mon Sep 17 00:00:00 2001 From: Hugo Chabert Date: Tue, 7 Apr 2026 12:30:59 +0000 Subject: [PATCH] Add razer blackwidow v4 tenkeyless hyperspeed --- .../RazerController/RazerController.cpp | 2 + .../RazerController/RazerControllerDetect.cpp | 2 + Controllers/RazerController/RazerDevices.cpp | 95 +++++++++++++++++++ Controllers/RazerController/RazerDevices.h | 2 + 4 files changed, 101 insertions(+) diff --git a/Controllers/RazerController/RazerController/RazerController.cpp b/Controllers/RazerController/RazerController/RazerController.cpp index 311f37b09..974e7025d 100644 --- a/Controllers/RazerController/RazerController/RazerController.cpp +++ b/Controllers/RazerController/RazerController/RazerController.cpp @@ -441,6 +441,8 @@ bool RazerController::SupportsWave() case RAZER_BLACKWIDOW_V4_PRO_75_WIRED_PID: case RAZER_BLACKWIDOW_V4_75_WIRED_PID: case RAZER_BLACKWIDOW_V4_X_PID: + case RAZER_BLACKWIDOW_V4_TKL_WIRED_PID: + case RAZER_BLACKWIDOW_V4_TKL_WIRELESS_PID: case RAZER_BLACKWIDOW_X_CHROMA_PID: case RAZER_BLACKWIDOW_X_CHROMA_TE_PID: case RAZER_BLADE_2016_PID: diff --git a/Controllers/RazerController/RazerControllerDetect.cpp b/Controllers/RazerController/RazerControllerDetect.cpp index f5836d91f..6bf621e48 100644 --- a/Controllers/RazerController/RazerControllerDetect.cpp +++ b/Controllers/RazerController/RazerControllerDetect.cpp @@ -242,6 +242,8 @@ REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V4 Pro 75% (Wired)", Det REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V4 Pro 75% (Wireless)", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V4_PRO_75_WIRELESS_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V4 75% (Wired)", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V4_75_WIRED_PID, 0x03, 0x01, 0x00); REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V4 X", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V4_X_PID, 0x02, 0x01, 0x02); +REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V4 TKL (Wired)", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V4_TKL_WIRED_PID, 0x03, 0x0C, 0x01); +REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V4 TKL (Wireless)", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V4_TKL_WIRELESS_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blackwidow X Chroma", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_X_CHROMA_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blackwidow X Chroma Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_X_CHROMA_TE_PID, 0x02, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Cynosa Chroma", DetectRazerControllers, RAZER_VID, RAZER_CYNOSA_CHROMA_PID, 0x02, 0x01, 0x02); diff --git a/Controllers/RazerController/RazerDevices.cpp b/Controllers/RazerController/RazerDevices.cpp index ac5fac1b0..7862d4bf0 100644 --- a/Controllers/RazerController/RazerDevices.cpp +++ b/Controllers/RazerController/RazerDevices.cpp @@ -415,6 +415,29 @@ keyboard_keymap_overlay_values razer_blackwidow_v4_x_layout } }; +keyboard_keymap_overlay_values razer_blackwidow_v4_tkl_layout +{ + KEYBOARD_SIZE::KEYBOARD_SIZE_TKL, + { + { /* ANSI Value set not used */ }, + { + /* Add more regional layout fixes here */ + } + }, + { + /*-------------------------------------------------------------------------------------------------------------------------------------*\ + | Edit Keys | + | Zone, Row, Column, Value, Name, Alternate Name, OpCode | + \*-------------------------------------------------------------------------------------------------------------------------------------*/ + { 0, 0, 10, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move F9 1 right (Shifts row) + { 0, 1, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Insert 1 right (Shifts row) + { 0, 2, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Del 1 right (Shifts row) + { 0, 4, 14, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Up Arrow 1 right (Shifts row) + { 0, 5, 5, 0, KEY_EN_UNUSED, KEY_EN_UNUSED, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Move Right Alt 1 right (Shifts row) + + } +}; + keyboard_keymap_overlay_values razer_blackwidow_x_chroma_te_layout { KEYBOARD_SIZE::KEYBOARD_SIZE_TKL, @@ -1963,6 +1986,76 @@ static const razer_device blackwidow_v4_x_device = &razer_blackwidow_v4_x_layout }; +/*-------------------------------------------------------------*\ +| Razer Blackwidow V4 TKL (Wired) 1532:02D7 | +| | +| Zone "Keyboard" | +| Matrix | +| 6 Rows, 18 Columns | +\*-------------------------------------------------------------*/ +static const razer_zone blackwidow_v4_tkl_wired_zone = +{ + ZONE_EN_KEYBOARD, + ZONE_TYPE_MATRIX, + 6, + 18 +}; + +static const razer_device blackwidow_v4_tkl_wired_device = +{ + "Razer Blackwidow V4 TKL (Wired)", + RAZER_BLACKWIDOW_V4_TKL_WIRED_PID, + DEVICE_TYPE_KEYBOARD, + RAZER_MATRIX_TYPE_EXTENDED, + 0x1F, + 6, + 18, + { + &blackwidow_v4_tkl_wired_zone, + NULL, + NULL, + NULL, + NULL, + NULL + }, + &razer_blackwidow_v4_tkl_layout +}; + +/*-------------------------------------------------------------*\ +| Razer Blackwidow V4 TKL (Wireless) 1532:02D5 | +| | +| Zone "Keyboard" | +| Matrix | +| 6 Rows, 18 Columns | +\*-------------------------------------------------------------*/ +static const razer_zone blackwidow_v4_tkl_wireless_zone = +{ + ZONE_EN_KEYBOARD, + ZONE_TYPE_MATRIX, + 6, + 18 +}; + +static const razer_device blackwidow_v4_tkl_wireless_device = +{ + "Razer Blackwidow V4 TKL (Wireless)", + RAZER_BLACKWIDOW_V4_TKL_WIRELESS_PID, + DEVICE_TYPE_KEYBOARD, + RAZER_MATRIX_TYPE_EXTENDED, + 0x9F, + 6, + 18, + { + &blackwidow_v4_tkl_wireless_zone, + NULL, + NULL, + NULL, + NULL, + NULL + }, + &razer_blackwidow_v4_tkl_layout +}; + /*-------------------------------------------------------------*\ | Razer Blackwidow X Chroma 1532:0216 | | | @@ -9234,6 +9327,8 @@ const razer_device* razer_device_list[] = &blackwidow_v4_pro_75_wireless_device, &blackwidow_v4_75_wired_device, &blackwidow_v4_x_device, + &blackwidow_v4_tkl_wired_device, + &blackwidow_v4_tkl_wireless_device, &blackwidow_x_chroma_device, &blackwidow_x_chroma_te_device, &cynosa_chroma_device, diff --git a/Controllers/RazerController/RazerDevices.h b/Controllers/RazerController/RazerDevices.h index 940cc4072..81e0a8472 100644 --- a/Controllers/RazerController/RazerDevices.h +++ b/Controllers/RazerController/RazerDevices.h @@ -57,6 +57,8 @@ #define RAZER_BLACKWIDOW_V4_PRO_75_WIRED_PID 0x02B3 #define RAZER_BLACKWIDOW_V4_PRO_75_WIRELESS_PID 0x02B4 #define RAZER_BLACKWIDOW_V4_75_WIRED_PID 0x02A5 +#define RAZER_BLACKWIDOW_V4_TKL_WIRED_PID 0x02D7 +#define RAZER_BLACKWIDOW_V4_TKL_WIRELESS_PID 0x02D5 #define RAZER_BLACKWIDOW_X_CHROMA_PID 0x0216 #define RAZER_BLACKWIDOW_X_CHROMA_TE_PID 0x021A #define RAZER_BLADE_2016_PID 0x020F