diff --git a/60-openrgb.rules b/60-openrgb.rules index 76414f5e7..a1c15b84b 100644 --- a/60-openrgb.rules +++ b/60-openrgb.rules @@ -582,7 +582,8 @@ SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0226", TAG+="uacces SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0227", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0257", TAG+="uaccess", TAG+="Huntsman_Mini" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0243", TAG+="uaccess" -SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="026B", TAG+="uaccess", TAG+="Huntsman_V2_TKL" +SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="026b", TAG+="uaccess", TAG+="Huntsman_V2_TKL" +SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="026c", TAG+="uaccess", TAG+="Huntsman_V2" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0207", TAG+="uaccess" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="0266", TAG+="uaccess", TAG+="Huntsman V2 Analog" SUBSYSTEMS=="usb", ATTR{idVendor}=="1532", ATTR{idProduct}=="021e", TAG+="uaccess" diff --git a/Controllers/RazerController/RazerController.cpp b/Controllers/RazerController/RazerController.cpp index 3286a9368..cb46b3c38 100644 --- a/Controllers/RazerController/RazerController.cpp +++ b/Controllers/RazerController/RazerController.cpp @@ -143,6 +143,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha case RAZER_HUNTSMAN_TE_PID: case RAZER_HUNTSMAN_V2_ANALOG_PID: case RAZER_HUNTSMAN_V2_TKL_PID: + case RAZER_HUNTSMAN_V2_PID: case RAZER_ORNATA_CHROMA_PID: case RAZER_ORNATA_CHROMA_V2_PID: case RAZER_CORE_PID: @@ -239,6 +240,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha case RAZER_HUNTSMAN_TE_PID: case RAZER_HUNTSMAN_V2_ANALOG_PID: case RAZER_HUNTSMAN_V2_TKL_PID: + case RAZER_HUNTSMAN_V2_PID: case RAZER_KRAKEN_KITTY_EDITION_PID: case RAZER_LANCEHEAD_TE_WIRED_PID: case RAZER_LANCEHEAD_2017_WIRED_PID: @@ -500,6 +502,7 @@ bool RazerController::SupportsWave() case RAZER_HUNTSMAN_TE_PID: case RAZER_HUNTSMAN_V2_ANALOG_PID: case RAZER_HUNTSMAN_V2_TKL_PID: + case RAZER_HUNTSMAN_V2_PID: case RAZER_ORBWEAVER_CHROMA_PID: case RAZER_TARTARUS_V2_PID: diff --git a/Controllers/RazerController/RazerControllerDetect.cpp b/Controllers/RazerController/RazerControllerDetect.cpp index 0cbd93d54..6f4188ac3 100644 --- a/Controllers/RazerController/RazerControllerDetect.cpp +++ b/Controllers/RazerController/RazerControllerDetect.cpp @@ -266,6 +266,7 @@ REGISTER_HID_DETECTOR_IPU("Razer Huntsman Mini", Det REGISTER_HID_DETECTOR_IPU("Razer Huntsman Tournament Edition", DetectRazerControllers, RAZER_VID, RAZER_HUNTSMAN_TE_PID, 0x02, 0x01, 0x02); 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 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); diff --git a/Controllers/RazerController/RazerDevices.h b/Controllers/RazerController/RazerDevices.h index 243f86cfa..2a8b5edba 100644 --- a/Controllers/RazerController/RazerDevices.h +++ b/Controllers/RazerController/RazerDevices.h @@ -76,6 +76,7 @@ #define RAZER_HUNTSMAN_TE_PID 0x0243 #define RAZER_HUNTSMAN_V2_ANALOG_PID 0x0266 #define RAZER_HUNTSMAN_V2_TKL_PID 0x026B +#define RAZER_HUNTSMAN_V2_PID 0x026C #define RAZER_ORBWEAVER_CHROMA_PID 0x0207 #define RAZER_ORNATA_CHROMA_PID 0x021E #define RAZER_ORNATA_CHROMA_V2_PID 0x025D @@ -1610,6 +1611,125 @@ static const razer_key huntsman_te_keymap[] = { 0, 5, 17, "Key: Right Arrow" }, }; +#define HUNTSMAN_V2_KEYMAP_SIZE (sizeof(huntsman_v2_keymap) / sizeof(huntsman_v2_keymap[0])) + +static const razer_key huntsman_v2_keymap[] = +{ + /*---------------------------------------------------------------------*\ + | Zone, Row, Column, Key | + \*---------------------------------------------------------------------*/ + { 0, 0, 0, "Key: Escape" }, + { 0, 0, 2, "Key: F1" }, + { 0, 0, 3, "Key: F2" }, + { 0, 0, 4, "Key: F3" }, + { 0, 0, 5, "Key: F4" }, + { 0, 0, 6, "Key: F5" }, + { 0, 0, 7, "Key: F6" }, + { 0, 0, 8, "Key: F7" }, + { 0, 0, 9, "Key: F8" }, + { 0, 0, 10, "Key: F9" }, + { 0, 0, 11, "Key: F10" }, + { 0, 0, 12, "Key: F11" }, + { 0, 0, 13, "Key: F12" }, + { 0, 0, 14, "Key: Print Screen" }, + { 0, 0, 15, "Key: Scroll Lock" }, + { 0, 0, 16, "Key: Pause/Break" }, + { 0, 0, 17, "Key: Media Previous" }, + { 0, 0, 18, "Key: Media Play/Pause" }, + { 0, 0, 19, "Key: Media Next" }, + { 0, 0, 20, "Key: Media Mute" }, + { 0, 1, 0, "Key: `" }, + { 0, 1, 1, "Key: 1" }, + { 0, 1, 2, "Key: 2" }, + { 0, 1, 3, "Key: 3" }, + { 0, 1, 4, "Key: 4" }, + { 0, 1, 5, "Key: 5" }, + { 0, 1, 6, "Key: 6" }, + { 0, 1, 7, "Key: 7" }, + { 0, 1, 8, "Key: 8" }, + { 0, 1, 9, "Key: 9" }, + { 0, 1, 10, "Key: 0" }, + { 0, 1, 11, "Key: -" }, + { 0, 1, 12, "Key: =" }, + { 0, 1, 13, "Key: Backspace" }, + { 0, 1, 14, "Key: Insert" }, + { 0, 1, 15, "Key: Home" }, + { 0, 1, 16, "Key: Page Up" }, + { 0, 1, 17, "Key: Num Lock" }, + { 0, 1, 18, "Key: Number Pad /" }, + { 0, 1, 19, "Key: Number Pad *" }, + { 0, 1, 20, "Key: Number Pad -" }, + { 0, 2, 0, "Key: Tab" }, + { 0, 2, 1, "Key: Q" }, + { 0, 2, 2, "Key: W" }, + { 0, 2, 3, "Key: E" }, + { 0, 2, 4, "Key: R" }, + { 0, 2, 5, "Key: T" }, + { 0, 2, 6, "Key: Y" }, + { 0, 2, 7, "Key: U" }, + { 0, 2, 8, "Key: I" }, + { 0, 2, 9, "Key: O" }, + { 0, 2, 10, "Key: P" }, + { 0, 2, 11, "Key: [" }, + { 0, 2, 12, "Key: ]" }, + { 0, 2, 13, "Key: \\ (ANSI)" }, + { 0, 2, 14, "Key: Delete" }, + { 0, 2, 15, "Key: End" }, + { 0, 2, 16, "Key: Page Down" }, + { 0, 2, 17, "Key: Number Pad 7" }, + { 0, 2, 18, "Key: Number Pad 8" }, + { 0, 2, 19, "Key: Number Pad 9" }, + { 0, 2, 20, "Key: Number Pad +" }, + { 0, 3, 0, "Key: Caps Lock" }, + { 0, 3, 1, "Key: A" }, + { 0, 3, 2, "Key: S" }, + { 0, 3, 3, "Key: D" }, + { 0, 3, 4, "Key: F" }, + { 0, 3, 5, "Key: G" }, + { 0, 3, 6, "Key: H" }, + { 0, 3, 7, "Key: J" }, + { 0, 3, 8, "Key: K" }, + { 0, 3, 9, "Key: L" }, + { 0, 3, 10, "Key: ;" }, + { 0, 3, 11, "Key: '" }, + { 0, 3, 12, "Key: #" }, + { 0, 3, 13, "Key: Enter" }, + { 0, 3, 17, "Key: Number Pad 4" }, + { 0, 3, 18, "Key: Number Pad 5" }, + { 0, 3, 19, "Key: Number Pad 6" }, + { 0, 4, 0, "Key: Left Shift" }, + { 0, 4, 1, "Key: \\ (ISO)" }, + { 0, 4, 2, "Key: Z" }, + { 0, 4, 3, "Key: X" }, + { 0, 4, 4, "Key: C" }, + { 0, 4, 5, "Key: V" }, + { 0, 4, 6, "Key: B" }, + { 0, 4, 7, "Key: N" }, + { 0, 4, 8, "Key: M" }, + { 0, 4, 9, "Key: ," }, + { 0, 4, 10, "Key: ." }, + { 0, 4, 11, "Key: /" }, + { 0, 4, 13, "Key: Right Shift" }, + { 0, 4, 15, "Key: Up Arrow" }, + { 0, 4, 17, "Key: Number Pad 1" }, + { 0, 4, 18, "Key: Number Pad 2" }, + { 0, 4, 19, "Key: Number Pad 3" }, + { 0, 4, 20, "Key: Number Pad Enter" }, + { 0, 5, 0, "Key: Left Control" }, + { 0, 5, 1, "Key: Left Windows" }, + { 0, 5, 2, "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 HUNTSMAN_V2_TKL_KEYMAP_SIZE (sizeof(huntsman_v2_tkl_keymap) / sizeof(huntsman_v2_tkl_keymap[0])) static const razer_key huntsman_v2_tkl_keymap[] = @@ -3253,6 +3373,41 @@ static const razer_device huntsman_v2_tkl_device = HUNTSMAN_V2_TKL_KEYMAP_SIZE }; +/*-------------------------------------------------------------*\ +| Razer Huntsman V2 1532:026C | +| | +| Zone "Keyboard" | +| Matrix | +| 6 Rows, 22 Columns | +\*-------------------------------------------------------------*/ +static const razer_zone huntsman_v2_keyboard_zone = +{ + "Keyboard", + ZONE_TYPE_MATRIX, + 6, + 22 +}; + +static const razer_device huntsman_v2_device = +{ + "Razer Huntsman V2", + RAZER_HUNTSMAN_V2_PID, + DEVICE_TYPE_KEYBOARD, + true, + 9, + 22, + { + &huntsman_v2_keyboard_zone, + NULL, + NULL, + NULL, + NULL, + NULL + }, + huntsman_v2_keymap, + HUNTSMAN_V2_KEYMAP_SIZE +}; + /*-------------------------------------------------------------------------*\ | LAPTOPS | \*-------------------------------------------------------------------------*/