Add support for Evision V2 based Endorfy Omnis
This commit is contained in:
parent
6e93a25930
commit
5586206f46
5 changed files with 275 additions and 13 deletions
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
static uint8_t keyvalue_map[EVISION_V2_MATRIX_WIDTH * EVISION_V2_MATRIX_HEIGHT] =
|
||||
static uint8_t evisionv2_map[EVISION_V2_MATRIX_WIDTH * EVISION_V2_MATRIX_HEIGHT] =
|
||||
{
|
||||
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 19 20 */
|
||||
0, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78, 84, 90, 96,
|
||||
|
|
@ -33,11 +33,23 @@ static uint8_t keyvalue_map[EVISION_V2_MATRIX_WIDTH * EVISION_V2_MATRIX_HEIGHT]
|
|||
5, 11, 17, 41, 65, 71, 77, 83, 89, 95, 101, 113, 119,
|
||||
};
|
||||
|
||||
EVisionV2KeyboardController::EVisionV2KeyboardController(hid_device* dev_handle, const char* path)
|
||||
static uint8_t endorfy_map[EVISION_V2_MATRIX_WIDTH * EVISION_V2_MATRIX_HEIGHT] =
|
||||
{
|
||||
/* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 19 20 */
|
||||
0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
|
||||
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
|
||||
42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
|
||||
63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 80, 81, 82,
|
||||
84, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 97, 99, 101, 102, 103, 104,
|
||||
105, 106, 107, 111, 115, 116, 117, 118, 119, 120, 121, 123, 124,
|
||||
};
|
||||
|
||||
EVisionV2KeyboardController::EVisionV2KeyboardController(hid_device* dev_handle, const char* path, EVisionV2KeyboardLayout layout_)
|
||||
{
|
||||
const uint8_t sz = HID_MAX_STR;
|
||||
wchar_t tmp[sz];
|
||||
|
||||
layout = layout_;
|
||||
dev = dev_handle;
|
||||
location = path;
|
||||
|
||||
|
|
@ -61,6 +73,18 @@ EVisionV2KeyboardController::EVisionV2KeyboardController(hid_device* dev_handle,
|
|||
|
||||
map_size = buffer[5];
|
||||
macros_size = buffer[6] * 0x80;
|
||||
|
||||
switch(layout)
|
||||
{
|
||||
case EVISION_V2_KEYBOARD_LAYOUT:
|
||||
keyvalue_map = evisionv2_map;
|
||||
led_count = 106;
|
||||
break;
|
||||
case ENDORFY_KEYBOARD_LAYOUT:
|
||||
keyvalue_map = endorfy_map;
|
||||
led_count = 104;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
EVisionV2KeyboardController::~EVisionV2KeyboardController()
|
||||
|
|
@ -234,6 +258,7 @@ int EVisionV2KeyboardController::GetMode(EVisionV2KeyboardPart part, EvisionV2Mo
|
|||
size = sizeof(buffer);
|
||||
break;
|
||||
case EVISION_V2_KEYBOARD_PART_LOGO:
|
||||
case ENDORFY_KEYBOARD_PART_EDGE:
|
||||
offset += EVISION_V2_PARAMETER_LOGO;
|
||||
size = EVISION_V2_PARAMETER_LOGO_ON_OFF - EVISION_V2_PARAMETER_LOGO + 1;
|
||||
break;
|
||||
|
|
@ -268,7 +293,7 @@ int EVisionV2KeyboardController::GetMode(EVisionV2KeyboardPart part, EvisionV2Mo
|
|||
}
|
||||
}
|
||||
}
|
||||
else if(part == EVISION_V2_KEYBOARD_PART_LOGO)
|
||||
else if(part == EVISION_V2_KEYBOARD_PART_LOGO || part == ENDORFY_KEYBOARD_PART_EDGE)
|
||||
{
|
||||
// Use ledmode for logo on/off
|
||||
config.ledmode = buffer[EVISION_V2_PARAMETER_LOGO_ON_OFF - EVISION_V2_PARAMETER_LOGO];
|
||||
|
|
@ -298,7 +323,7 @@ void EVisionV2KeyboardController::SetMode(EVisionV2KeyboardPart part, const Evis
|
|||
buffer[EVISION_V2_PARAMETER_LED_MODE_COLOR] = config.ledmode;
|
||||
}
|
||||
}
|
||||
else if(part == EVISION_V2_KEYBOARD_PART_LOGO)
|
||||
else if(part == EVISION_V2_KEYBOARD_PART_LOGO || part == ENDORFY_KEYBOARD_PART_EDGE)
|
||||
{
|
||||
// Use ledmode for logo on/off
|
||||
buffer[EVISION_V2_PARAMETER_LOGO_ON_OFF - EVISION_V2_PARAMETER_LOGO] = config.ledmode;
|
||||
|
|
@ -329,6 +354,7 @@ void EVisionV2KeyboardController::SetMode(EVisionV2KeyboardPart part, const Evis
|
|||
size = sizeof(buffer);
|
||||
break;
|
||||
case EVISION_V2_KEYBOARD_PART_LOGO:
|
||||
case ENDORFY_KEYBOARD_PART_EDGE:
|
||||
offset += EVISION_V2_PARAMETER_LOGO;
|
||||
size = EVISION_V2_PARAMETER_LOGO_ON_OFF - EVISION_V2_PARAMETER_LOGO + 1;
|
||||
break;
|
||||
|
|
@ -348,7 +374,7 @@ void EVisionV2KeyboardController::SetMode(EVisionV2KeyboardPart part, const Evis
|
|||
|
||||
void EVisionV2KeyboardController::SetLedsDirect(const std::vector<RGBColor>& colours)
|
||||
{
|
||||
const size_t colours_num = std::min(colours.size(), sizeof(keyvalue_map) / sizeof(keyvalue_map[0]));
|
||||
const size_t colours_num = std::min(colours.size(), led_count);
|
||||
|
||||
uint8_t* buffer = new uint8_t[3 * map_size];
|
||||
memset(buffer, 0, 3 * map_size);
|
||||
|
|
@ -394,7 +420,7 @@ int EVisionV2KeyboardController::GetLedsCustom(uint8_t colorset, std::vector<RGB
|
|||
return -256;
|
||||
}
|
||||
|
||||
const size_t colours_num = std::min(colours.size(), sizeof(keyvalue_map) / sizeof(keyvalue_map[0]));
|
||||
const size_t colours_num = std::min(colours.size(), led_count);
|
||||
|
||||
uint8_t* buffer = new uint8_t[3 * map_size];
|
||||
memset(buffer, 0, 3 * map_size);
|
||||
|
|
@ -422,7 +448,7 @@ void EVisionV2KeyboardController::SetLedsCustom(uint8_t colorset, const std::vec
|
|||
return;
|
||||
}
|
||||
|
||||
const size_t colours_num = std::min(colours.size(), sizeof(keyvalue_map) / sizeof(keyvalue_map[0]));
|
||||
const size_t colours_num = std::min(colours.size(), led_count);
|
||||
|
||||
uint8_t* buffer = new uint8_t[3 * map_size];
|
||||
memset(buffer, 0, 3 * map_size);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue