Initial commit for the Bloody MP 50RS to resolve #2579
This commit is contained in:
parent
c2dd179145
commit
da6e790ee6
4 changed files with 55 additions and 12 deletions
|
|
@ -16,18 +16,13 @@
|
|||
\*-----------------------------------------------------*/
|
||||
#define A4_TECH_VID 0x09DA
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Keyboard product IDs |
|
||||
\*-----------------------------------------------------*/
|
||||
#define BLOODY_W60_PRO_PID 0x37EA
|
||||
|
||||
void DetectA4TechMouseControllers(hid_device_info* info, const std::string& name)
|
||||
{
|
||||
hid_device* dev = hid_open_path(info->path);
|
||||
|
||||
if(dev)
|
||||
{
|
||||
BloodyMouseController* controller = new BloodyMouseController(dev, info->path);
|
||||
BloodyMouseController* controller = new BloodyMouseController(dev, info->path, info->product_id);
|
||||
RGBController_BloodyMouse* rgb_controller = new RGBController_BloodyMouse(controller);
|
||||
rgb_controller->name = name;
|
||||
|
||||
|
|
@ -36,3 +31,4 @@ void DetectA4TechMouseControllers(hid_device_info* info, const std::string& name
|
|||
}
|
||||
|
||||
REGISTER_HID_DETECTOR_IPU("Bloody W60 Pro", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_W60_PRO_PID, 2, 0xFF33, 0x0529);
|
||||
REGISTER_HID_DETECTOR_IPU("Bloody MP 50RS", DetectA4TechMouseControllers, A4_TECH_VID, BLOODY_MP_50RS_PID, 2, 0xFFF2, 0x6009);
|
||||
|
|
|
|||
|
|
@ -9,10 +9,11 @@
|
|||
|
||||
#include "BloodyMouseController.h"
|
||||
|
||||
BloodyMouseController::BloodyMouseController(hid_device* dev_handle, const char* path)
|
||||
BloodyMouseController::BloodyMouseController(hid_device* dev_handle, const char* path, uint16_t product_id)
|
||||
{
|
||||
dev = dev_handle;
|
||||
location = path;
|
||||
pid = product_id;
|
||||
|
||||
InitDevice();
|
||||
}
|
||||
|
|
@ -22,6 +23,11 @@ BloodyMouseController::~BloodyMouseController()
|
|||
hid_close(dev);
|
||||
}
|
||||
|
||||
uint16_t BloodyMouseController::GetPid()
|
||||
{
|
||||
return pid;
|
||||
}
|
||||
|
||||
std::string BloodyMouseController::GetSerial()
|
||||
{
|
||||
const uint8_t sz = HID_MAX_STR;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,16 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Mouse product IDs |
|
||||
\*-----------------------------------------------------*/
|
||||
#define BLOODY_W60_PRO_PID 0x37EA
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
| Mousemat product IDs |
|
||||
\*-----------------------------------------------------*/
|
||||
#define BLOODY_MP_50RS_PID 0xFA60
|
||||
|
||||
#define HID_MAX_STR 255
|
||||
#define BLOODYMOUSE_WRITE_PACKET_SIZE 64
|
||||
|
||||
|
|
@ -36,14 +46,16 @@ enum
|
|||
class BloodyMouseController
|
||||
{
|
||||
public:
|
||||
BloodyMouseController(hid_device* dev_handle, const char* path);
|
||||
BloodyMouseController(hid_device* dev_handle, const char* path, uint16_t product_id);
|
||||
~BloodyMouseController();
|
||||
|
||||
uint16_t GetPid();
|
||||
std::string GetSerial();
|
||||
std::string GetLocation();
|
||||
|
||||
void SetLedsDirect(std::vector<RGBColor> colors);
|
||||
private:
|
||||
uint16_t pid;
|
||||
std::string location;
|
||||
hid_device* dev;
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,13 @@ static const mouse_layout w60_pro
|
|||
}
|
||||
};
|
||||
|
||||
static const mouse_layout mp_50rs
|
||||
{
|
||||
{
|
||||
"Mouse Pad", { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
|
||||
}
|
||||
};
|
||||
|
||||
/**------------------------------------------------------------------*\
|
||||
@name BloodyMouse
|
||||
@category Mouse
|
||||
|
|
@ -40,10 +47,18 @@ RGBController_BloodyMouse::RGBController_BloodyMouse(BloodyMouseController *cont
|
|||
{
|
||||
controller = controller_ptr;
|
||||
|
||||
switch(controller->GetPid())
|
||||
{
|
||||
case BLOODY_MP_50RS_PID:
|
||||
type = DEVICE_TYPE_MOUSEMAT;
|
||||
break;
|
||||
default:
|
||||
type = DEVICE_TYPE_MOUSE;
|
||||
}
|
||||
|
||||
name = "BloodyMouse";
|
||||
vendor = "Bloody";
|
||||
type = DEVICE_TYPE_MOUSE;
|
||||
description = "Controller compatible with the Bloody W60 Pro";
|
||||
description = "Controller compatible with the Bloody W60 Pro and MP 50RS";
|
||||
serial = controller->GetSerial();
|
||||
location = controller->GetLocation();
|
||||
|
||||
|
|
@ -70,12 +85,26 @@ void RGBController_BloodyMouse::SetupZones()
|
|||
leds.clear();
|
||||
colors.clear();
|
||||
|
||||
/*-------------------------------------------------*\
|
||||
| Select layout from PID |
|
||||
\*-------------------------------------------------*/
|
||||
mouse_layout layout;
|
||||
switch(controller->GetPid())
|
||||
{
|
||||
case BLOODY_W60_PRO_PID:
|
||||
layout = w60_pro;
|
||||
break;
|
||||
case BLOODY_MP_50RS_PID:
|
||||
layout = mp_50rs;
|
||||
break;
|
||||
}
|
||||
|
||||
/*---------------------------------------------------------*\
|
||||
| Set up zones |
|
||||
\*---------------------------------------------------------*/
|
||||
for(uint8_t zone_idx = 0; zone_idx < w60_pro.size(); zone_idx++)
|
||||
for(uint8_t zone_idx = 0; zone_idx < layout.size(); zone_idx++)
|
||||
{
|
||||
mouse_zone mz = w60_pro[zone_idx];
|
||||
mouse_zone mz = layout[zone_idx];
|
||||
bool bool_single = mz.zone_leds.size() == 1;
|
||||
|
||||
zone new_zone;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue