From 1b05e765ca7a96c5604d87e2d39a9e8e8da350a5 Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 5 Aug 2021 13:53:24 +1000 Subject: [PATCH] Initial commit for the Razer Blackwidow V3 Pro * Adding entries for the Razer Blackwidow V3 Pro in wired, bluetooth and wireless modes * Registered detectors * Added metadata to RazerDevices.h * Added capabilities to RazerController.cpp * Added UDEV rule to 60-openrgb.rules --- 60-openrgb.rules | 7 +- .../RazerController/RazerController.cpp | 9 + .../RazerController/RazerControllerDetect.cpp | 7 +- Controllers/RazerController/RazerDevices.h | 226 ++++++++++++++++++ 4 files changed, 245 insertions(+), 4 deletions(-) diff --git a/60-openrgb.rules b/60-openrgb.rules index b26d055c0..b2e32118c 100644 --- a/60-openrgb.rules +++ b/60-openrgb.rules @@ -531,6 +531,9 @@ SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0228", TAG+="uacces SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0237", TAG+="uaccess", TAG+="Blackwidow_Essential" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0235", TAG+="uaccess", TAG+="Blackwidow_Lite" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0211", TAG+="uaccess", TAG+="Blackwidow_Overwatch" +SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="025a", TAG+="uaccess", TAG+="Blackwidow_V3_Pro-Wired" +SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="025b", TAG+="uaccess", TAG+="Blackwidow_V3_Pro-Bluetooth" +SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="025c", TAG+="uaccess", TAG+="Blackwidow_V3_Pro-Wireless" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0a24", TAG+="uaccess", TAG+="Blackwidow_V3_TKL" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0216", TAG+="uaccess", TAG+="Blackwidow_X Chroma" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="021a", TAG+="uaccess", TAG+="Blackwidow_X_Chroma_TE" @@ -545,7 +548,7 @@ SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0245", TAG+="uacces SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="024d", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0253", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0255", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="026a", TAG+="uaccess", TAG+="Razer_Book_13_(2020)" +SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="026a", TAG+="uaccess", TAG+="Razer_Book_13-2020" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="026f", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0210", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0225", TAG+="uaccess" @@ -584,7 +587,7 @@ SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0062", TAG+="uacces SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0064", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0065", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0086", TAG+="uaccess", TAG+="Basilisk_Ultimate" -SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0088", TAG+="uaccess", TAG+="Basilisk_Ultimate_(Wireless)" +SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0088", TAG+="uaccess", TAG+="Basilisk_Ultimate-Wireless" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0083", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0085", TAG+="uaccess", TAG+="Basilisk_V2" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0038", TAG+="uaccess" diff --git a/Controllers/RazerController/RazerController.cpp b/Controllers/RazerController/RazerController.cpp index 0d46fe8e7..a914e5ead 100644 --- a/Controllers/RazerController/RazerController.cpp +++ b/Controllers/RazerController/RazerController.cpp @@ -116,6 +116,9 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha case RAZER_BLACKWIDOW_ESSENTIAL_PID: case RAZER_BLACKWIDOW_LITE_PID: case RAZER_BLACKWIDOW_V3_PID: + case RAZER_BLACKWIDOW_V3_PRO_WIRED_PID: + case RAZER_BLACKWIDOW_V3_PRO_BLUETOOTH_PID: + case RAZER_BLACKWIDOW_V3_PRO_WIRELESS_PID: case RAZER_BLACKWIDOW_V3_TKL_PID: case RAZER_CYNOSA_CHROMA_PID: case RAZER_CYNOSA_LITE_PID: @@ -189,6 +192,9 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha case RAZER_BLACKWIDOW_2019_PID: case RAZER_BLACKWIDOW_ELITE_PID: case RAZER_BLACKWIDOW_V3_PID: + case RAZER_BLACKWIDOW_V3_PRO_WIRED_PID: + case RAZER_BLACKWIDOW_V3_PRO_BLUETOOTH_PID: + case RAZER_BLACKWIDOW_V3_PRO_WIRELESS_PID: case RAZER_BLACKWIDOW_V3_TKL_PID: case RAZER_CHARGING_PAD_CHROMA_PID: case RAZER_CHROMA_HDK_PID: @@ -424,6 +430,9 @@ bool RazerController::SupportsWave() case RAZER_BLACKWIDOW_CHROMA_V2_PID: case RAZER_BLACKWIDOW_OVERWATCH_PID: case RAZER_BLACKWIDOW_V3_PID: + case RAZER_BLACKWIDOW_V3_PRO_WIRED_PID: + case RAZER_BLACKWIDOW_V3_PRO_BLUETOOTH_PID: + case RAZER_BLACKWIDOW_V3_PRO_WIRELESS_PID: case RAZER_BLACKWIDOW_V3_TKL_PID: case RAZER_BLACKWIDOW_X_CHROMA_PID: case RAZER_BLACKWIDOW_X_CHROMA_TE_PID: diff --git a/Controllers/RazerController/RazerControllerDetect.cpp b/Controllers/RazerController/RazerControllerDetect.cpp index 0c1a6f242..e38d78f7c 100644 --- a/Controllers/RazerController/RazerControllerDetect.cpp +++ b/Controllers/RazerController/RazerControllerDetect.cpp @@ -67,7 +67,7 @@ void DetectRazerControllers(hid_device_info* info, const std::string& name) if(openrazer_enabled) { - LOG_VERBOSE("[DetectRazer] OpenRazer controller is enabled stop this detection"); + LOG_INFO("[RazerController]: OpenRazer controller currently enabled. Can NOT add the %s", name); return; } @@ -194,7 +194,7 @@ void DetectRazerKrakenControllers(hid_device_info* info, const std::string& name if(openrazer_enabled) { - LOG_VERBOSE("[DetectRazerKraken] OpenRazer controller is enabled stop this detection"); + LOG_INFO("[RazerController]: OpenRazer controller currently enabled. Can NOT add the %s", name); return; } @@ -217,6 +217,9 @@ REGISTER_HID_DETECTOR_IPU("Razer Blackwidow Chroma V2", Det REGISTER_HID_DETECTOR_IPU("Razer Blackwidow Elite", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_ELITE_PID, 0x00, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blackwidow Overwatch", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_OVERWATCH_PID, 0x00, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V3", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V3_PID, 0x00, 0x01, 0x02); +REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V3 Pro (Wired)", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V3_PRO_WIRED_PID, 0x00, 0x01, 0x02); +REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V3 Pro (Bluetooth)", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V3_PRO_BLUETOOTH_PID, 0x00, 0x01, 0x02); +REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V3 Pro (Wireless)", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V3_PRO_WIRELESS_PID, 0x00, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blackwidow V3 TKL", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_V3_TKL_PID, 0x00, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blackwidow X Chroma", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_X_CHROMA_PID, 0x00, 0x01, 0x02); REGISTER_HID_DETECTOR_IPU("Razer Blackwidow X Chroma Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_BLACKWIDOW_X_CHROMA_TE_PID, 0x00, 0x01, 0x02); diff --git a/Controllers/RazerController/RazerDevices.h b/Controllers/RazerController/RazerDevices.h index 9ef6abd8a..a5accb3cd 100644 --- a/Controllers/RazerController/RazerDevices.h +++ b/Controllers/RazerController/RazerDevices.h @@ -22,6 +22,9 @@ #define RAZER_BLACKWIDOW_LITE_PID 0x0235 #define RAZER_BLACKWIDOW_OVERWATCH_PID 0x0211 #define RAZER_BLACKWIDOW_V3_PID 0x024E +#define RAZER_BLACKWIDOW_V3_PRO_WIRED_PID 0x025A +#define RAZER_BLACKWIDOW_V3_PRO_BLUETOOTH_PID 0x025B +#define RAZER_BLACKWIDOW_V3_PRO_WIRELESS_PID 0x025C #define RAZER_BLACKWIDOW_V3_TKL_PID 0x0A24 #define RAZER_BLACKWIDOW_X_CHROMA_PID 0x0216 #define RAZER_BLACKWIDOW_X_CHROMA_TE_PID 0x021A @@ -1754,6 +1757,121 @@ static const razer_key blackwidow_2019_keymap[] = { 0, 5, 20, "Key: Number Pad ," }, }; +#define BLACKWIDOW_V3_PRO_KEYMAP_SIZE (sizeof(blackwidow_v3_pro_keymap) / sizeof(blackwidow_v3_pro_keymap[0])) + +static const razer_key blackwidow_v3_pro_keymap[] = +{ + /*---------------------------------------------------------------------*\ + | Zone, Row, Column, Key | + \*---------------------------------------------------------------------*/ + { 0, 0, 1, "Key: Escape" }, + { 0, 0, 3, "Key: F1" }, + { 0, 0, 4, "Key: F2" }, + { 0, 0, 5, "Key: F3" }, + { 0, 0, 6, "Key: F4" }, + { 0, 0, 7, "Key: F5" }, + { 0, 0, 8, "Key: F6" }, + { 0, 0, 9, "Key: F7" }, + { 0, 0, 10, "Key: F8" }, + { 0, 0, 11, "Key: F9" }, + { 0, 0, 12, "Key: F10" }, + { 0, 0, 13, "Key: F11" }, + { 0, 0, 14, "Key: F12" }, + { 0, 0, 15, "Key: Print Screen" }, + { 0, 0, 16, "Key: Scroll Lock" }, + { 0, 0, 17, "Key: Pause/Break" }, + { 0, 1, 1, "Key: `" }, + { 0, 1, 2, "Key: 1" }, + { 0, 1, 3, "Key: 2" }, + { 0, 1, 4, "Key: 3" }, + { 0, 1, 5, "Key: 4" }, + { 0, 1, 6, "Key: 5" }, + { 0, 1, 7, "Key: 6" }, + { 0, 1, 8, "Key: 7" }, + { 0, 1, 9, "Key: 8" }, + { 0, 1, 10, "Key: 9" }, + { 0, 1, 11, "Key: 0" }, + { 0, 1, 12, "Key: -" }, + { 0, 1, 13, "Key: =" }, + { 0, 1, 14, "Key: Backspace" }, + { 0, 1, 15, "Key: Insert" }, + { 0, 1, 16, "Key: Home" }, + { 0, 1, 17, "Key: Page Up" }, + { 0, 1, 18, "Key: Num Lock" }, + { 0, 1, 19, "Key: Number Pad /" }, + { 0, 1, 20, "Key: Number Pad *" }, + { 0, 1, 21, "Key: Number Pad -" }, + { 0, 2, 1, "Key: Tab" }, + { 0, 2, 2, "Key: Q" }, + { 0, 2, 3, "Key: W" }, + { 0, 2, 4, "Key: E" }, + { 0, 2, 5, "Key: R" }, + { 0, 2, 6, "Key: T" }, + { 0, 2, 7, "Key: Y" }, + { 0, 2, 8, "Key: U" }, + { 0, 2, 9, "Key: I" }, + { 0, 2, 10, "Key: O" }, + { 0, 2, 11, "Key: P" }, + { 0, 2, 12, "Key: [" }, + { 0, 2, 13, "Key: ]" }, + { 0, 2, 14, "Key: \\ (ANSI)" }, + { 0, 2, 15, "Key: Delete" }, + { 0, 2, 16, "Key: End" }, + { 0, 2, 17, "Key: Page Down" }, + { 0, 2, 18, "Key: Number Pad 7" }, + { 0, 2, 19, "Key: Number Pad 8" }, + { 0, 2, 20, "Key: Number Pad 9" }, + { 0, 2, 21, "Key: Number Pad +" }, + { 0, 3, 1, "Key: Caps Lock" }, + { 0, 3, 2, "Key: A" }, + { 0, 3, 3, "Key: S" }, + { 0, 3, 4, "Key: D" }, + { 0, 3, 5, "Key: F" }, + { 0, 3, 6, "Key: G" }, + { 0, 3, 7, "Key: H" }, + { 0, 3, 8, "Key: J" }, + { 0, 3, 9, "Key: K" }, + { 0, 3, 10, "Key: L" }, + { 0, 3, 11, "Key: ;" }, + { 0, 3, 12, "Key: '" }, + { 0, 3, 13, "Key: #" }, + { 0, 3, 14, "Key: Enter" }, + { 0, 3, 18, "Key: Number Pad 4" }, + { 0, 3, 19, "Key: Number Pad 5" }, + { 0, 3, 20, "Key: Number Pad 6" }, + { 0, 4, 1, "Key: Left Shift" }, + { 0, 4, 2, "Key: \\ (ISO)" }, + { 0, 4, 3, "Key: Z" }, + { 0, 4, 4, "Key: X" }, + { 0, 4, 5, "Key: C" }, + { 0, 4, 6, "Key: V" }, + { 0, 4, 7, "Key: B" }, + { 0, 4, 8, "Key: N" }, + { 0, 4, 9, "Key: M" }, + { 0, 4, 10, "Key: ," }, + { 0, 4, 11, "Key: ." }, + { 0, 4, 12, "Key: /" }, + { 0, 4, 14, "Key: Right Shift" }, + { 0, 4, 16, "Key: Up Arrow" }, + { 0, 4, 18, "Key: Number Pad 1" }, + { 0, 4, 19, "Key: Number Pad 2" }, + { 0, 4, 20, "Key: Number Pad 3" }, + { 0, 4, 21, "Key: Number Pad Enter" }, + { 0, 5, 1, "Key: Left Control" }, + { 0, 5, 2, "Key: Left Windows" }, + { 0, 5, 3, "Key: Left Alt" }, + { 0, 5, 6, "Key: Space" }, + { 0, 5, 10, "Key: Right Alt" }, + { 0, 5, 11, "Key: Right Fn" }, + { 0, 5, 12, "Key: Menu" }, + { 0, 5, 13, "Key: Right Control" }, + { 0, 5, 14, "Key: Left Arrow" }, + { 0, 5, 15, "Key: Down Arrow" }, + { 0, 5, 16, "Key: Right Arrow" }, + { 0, 5, 18, "Key: Number Pad 0" }, + { 0, 5, 19, "Key: Number Pad ," }, +}; + #define ORNATA_CHROMA_KEYMAP_SIZE (sizeof(ornata_chroma_keymap) / sizeof(ornata_chroma_keymap[0])) static const razer_key ornata_chroma_keymap[] = @@ -2118,6 +2236,111 @@ static const razer_device blackwidow_chroma_v2_device = BLACKWIDOW_CHROMA_V2_KEYMAP_SIZE }; +/*-------------------------------------------------------------*\ +| Razer Blackwidow V3 Pro (Wired) 1532:025A | +| | +| Zone "Keyboard" | +| Matrix | +| 6 Rows, 22 Columns | +\*-------------------------------------------------------------*/ +static const razer_zone blackwidow_v3_pro_wired_zone = +{ + "Keyboard", + ZONE_TYPE_MATRIX, + 6, + 22 +}; + +static const razer_device blackwidow_v3_pro_wired_device = +{ + "Razer BlackWidow V3 Pro (Wired)", + RAZER_BLACKWIDOW_V3_PRO_WIRED_PID, + DEVICE_TYPE_KEYBOARD, + true, + 6, + 22, + { + &blackwidow_v3_pro_wired_zone, + NULL, + NULL, + NULL, + NULL, + NULL + }, + blackwidow_v3_pro_keymap, + BLACKWIDOW_V3_PRO_KEYMAP_SIZE +}; + +/*-------------------------------------------------------------*\ +| Razer Blackwidow V3 Pro (Bluetooth) 1532:025B | +| | +| Zone "Keyboard" | +| Matrix | +| 6 Rows, 22 Columns | +\*-------------------------------------------------------------*/ +static const razer_zone blackwidow_v3_pro_bluetooth_zone = +{ + "Keyboard", + ZONE_TYPE_MATRIX, + 6, + 22 +}; + +static const razer_device blackwidow_v3_pro_bluetooth_device = +{ + "Razer BlackWidow V3 Pro (Bluetooth)", + RAZER_BLACKWIDOW_V3_PRO_BLUETOOTH_PID, + DEVICE_TYPE_KEYBOARD, + true, + 6, + 22, + { + &blackwidow_v3_pro_bluetooth_zone, + NULL, + NULL, + NULL, + NULL, + NULL + }, + blackwidow_v3_pro_keymap, + BLACKWIDOW_V3_PRO_KEYMAP_SIZE +}; + +/*-------------------------------------------------------------*\ +| Razer Blackwidow V3 Pro (Wireless) 1532:025C | +| | +| Zone "Keyboard" | +| Matrix | +| 6 Rows, 22 Columns | +\*-------------------------------------------------------------*/ +static const razer_zone blackwidow_v3_pro_wireless_zone = +{ + "Keyboard", + ZONE_TYPE_MATRIX, + 6, + 22 +}; + +static const razer_device blackwidow_v3_pro_wireless_device = +{ + "Razer BlackWidow V3 Pro (Wireless)", + RAZER_BLACKWIDOW_V3_PRO_WIRELESS_PID, + DEVICE_TYPE_KEYBOARD, + true, + 6, + 22, + { + &blackwidow_v3_pro_wireless_zone, + NULL, + NULL, + NULL, + NULL, + NULL + }, + blackwidow_v3_pro_keymap, + BLACKWIDOW_V3_PRO_KEYMAP_SIZE +}; + /*-------------------------------------------------------------*\ | Razer Blackwidow V3 TKL 1532:0A24 | | | @@ -6502,6 +6725,9 @@ static const razer_device* device_list[] = &blackwidow_chroma_v2_device, &blackwidow_elite_device, &blackwidow_v3_device, + &blackwidow_v3_pro_wired_device, + &blackwidow_v3_pro_wireless_device, + &blackwidow_v3_pro_bluetooth_device, &blackwidow_v3_tkl_device, &blackwidow_x_chroma_device, &blackwidow_x_chroma_te_device,