Cleanup RazerController matrix type by adding matrix type to device table...

This commit is contained in:
Adam Honse 2023-07-03 01:23:11 +00:00
parent 8578f4b72f
commit 6c7f0dfdb8
4 changed files with 243 additions and 397 deletions

View file

@ -215,184 +215,7 @@ RazerController::RazerController(hid_device* dev_handle, hid_device* dev_argb_ha
/*-----------------------------------------------------------------*\
| Determine matrix type for device |
\*-----------------------------------------------------------------*/
switch(dev_pid)
{
/*-------------------------------------------------*\
| These devices use a standard matrix report |
\*-------------------------------------------------*/
case RAZER_BLACKWIDOW_CHROMA_PID:
case RAZER_BLACKWIDOW_CHROMA_TE_PID:
case RAZER_BLACKWIDOW_CHROMA_V2_PID:
case RAZER_BLACKWIDOW_X_CHROMA_TE_PID:
case RAZER_BLADE_2016_PID:
case RAZER_BLADE_LATE_2016_PID:
case RAZER_BLADE_2018_ADVANCED_PID:
case RAZER_BLADE_2018_BASE_PID:
case RAZER_BLADE_2018_MERCURY_PID:
case RAZER_BLADE_2019_ADVANCED_PID:
case RAZER_BLADE_2019_BASE_PID:
case RAZER_BLADE_2019_MERCURY_PID:
case RAZER_BLADE_2019_STUDIO_PID:
case RAZER_BLADE_2020_ADVANCED_PID:
case RAZER_BLADE_2020_BASE_PID:
case RAZER_BLADE_LATE_2020_PID:
case RAZER_BLADE_2021_ADVANCED_PID:
case RAZER_BLADE_2021_BASE_PID:
case RAZER_BLADE_2021_BASE_V2_PID:
case RAZER_BLADE_LATE_2021_ADVANCED_PID:
case RAZER_BLADE_14_2021_PID:
case RAZER_BLADE_14_2022_PID:
case RAZER_BLADE_15_2022_PID:
case RAZER_BLADE_PRO_2016_PID:
case RAZER_BLADE_PRO_2017_PID:
case RAZER_BLADE_PRO_2017_FULLHD_PID:
case RAZER_BLADE_PRO_2019_PID:
case RAZER_BLADE_PRO_LATE_2019_PID:
case RAZER_BLADE_PRO_17_2020_PID:
case RAZER_BLADE_PRO_17_2021_PID:
case RAZER_BLADE_STEALTH_2016_PID:
case RAZER_BLADE_STEALTH_LATE_2016_PID:
case RAZER_BLADE_STEALTH_2017_PID:
case RAZER_BLADE_STEALTH_LATE_2017_PID:
case RAZER_BLADE_STEALTH_2019_PID:
case RAZER_BLADE_STEALTH_LATE_2019_PID:
case RAZER_BLADE_STEALTH_2020_PID:
case RAZER_BLADE_STEALTH_LATE_2020_PID:
case RAZER_BOOK_13_2020_PID:
case RAZER_NAGA_HEX_V2_PID:
case RAZER_CORE_PID:
matrix_type = RAZER_MATRIX_TYPE_STANDARD;
break;
/*-------------------------------------------------*\
| These devices use an extended matrix report |
\*-------------------------------------------------*/
case RAZER_BASE_STATION_CHROMA_PID:
case RAZER_BASE_STATION_V2_CHROMA_PID:
case RAZER_BASILISK_PID:
case RAZER_BASILISK_ESSENTIAL_PID:
case RAZER_BASILISK_ULTIMATE_WIRED_PID:
case RAZER_BASILISK_ULTIMATE_WIRELESS_PID:
case RAZER_BASILISK_V2_PID:
case RAZER_BASILISK_V3_PID:
case RAZER_BASILISK_V3_PRO_WIRED_PID:
case RAZER_BASILISK_V3_PRO_WIRELESS_PID:
case RAZER_BASILISK_V3_PRO_BLUETOOTH_PID:
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_BLACKWIDOW_V3_MINI_WIRED_PID:
case RAZER_BLACKWIDOW_V3_MINI_WIRELESS_PID:
case RAZER_CHARGING_PAD_CHROMA_PID:
case RAZER_CHROMA_HDK_PID:
case RAZER_CHROMA_PC_CASE_LIGHTING_KIT_PID:
case RAZER_CORE_X_PID:
case RAZER_CYNOSA_CHROMA_PID:
case RAZER_CYNOSA_LITE_PID:
case RAZER_CYNOSA_V2_PID:
case RAZER_DEATHADDER_ELITE_PID:
case RAZER_DEATHADDER_ESSENTIAL_PID:
case RAZER_DEATHADDER_ESSENTIAL_V2_PID:
case RAZER_DEATHADDER_ESSENTIAL_WHITE_EDITION_PID:
case RAZER_DEATHADDER_V2_MINI_PID:
case RAZER_DEATHADDER_V2_PID:
case RAZER_DEATHADDER_V2_PRO_WIRED_PID:
case RAZER_DEATHADDER_V2_PRO_WIRELESS_PID:
case RAZER_DEATHSTALKER_V2_PID:
case RAZER_DEATHSTALKER_V2_PRO_WIRED_PID:
case RAZER_DEATHSTALKER_V2_PRO_WIRELESS_PID:
case RAZER_FIREFLY_HYPERFLUX_PID:
case RAZER_FIREFLY_V2_PID:
case RAZER_GOLIATHUS_CHROMA_EXTENDED_PID:
case RAZER_GOLIATHUS_CHROMA_PID:
case RAZER_HUNTSMAN_ELITE_PID:
case RAZER_HUNTSMAN_PID:
case RAZER_HUNTSMAN_MINI_PID:
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:
case RAZER_LANCEHEAD_2017_WIRELESS_PID:
case RAZER_LANCEHEAD_2019_WIRED_PID:
case RAZER_LANCEHEAD_2019_WIRELESS_PID:
case RAZER_LAPTOP_STAND_CHROMA_PID:
case RAZER_LAPTOP_STAND_CHROMA_V2_PID:
case RAZER_LEVIATHAN_V2X_PID:
case RAZER_MAMBA_2018_WIRED_PID:
case RAZER_MAMBA_2018_WIRELESS_PID:
case RAZER_MAMBA_ELITE_PID:
case RAZER_MOUSE_BUNGEE_V3_CHROMA_PID:
case RAZER_MOUSE_DOCK_CHROMA_PID:
case RAZER_MOUSE_DOCK_PRO_PID:
case RAZER_NAGA_CLASSIC_PID:
case RAZER_NAGA_LEFT_HANDED_PID:
case RAZER_NAGA_TRINITY_PID:
case RAZER_NAGA_PRO_WIRED_PID:
case RAZER_NAGA_PRO_WIRELESS_PID:
case RAZER_NOMMO_CHROMA_PID:
case RAZER_NOMMO_PRO_PID:
case RAZER_O11_DYNAMIC_PID:
case RAZER_ORNATA_CHROMA_PID:
case RAZER_ORNATA_CHROMA_V2_PID:
case RAZER_ORNATA_V3_PID:
case RAZER_ORNATA_V3_REV2_PID:
case RAZER_ORNATA_V3_X_PID:
case RAZER_SEIREN_EMOTE_PID:
case RAZER_STRIDER_CHROMA_PID:
case RAZER_TARTARUS_PRO_PID:
case RAZER_TARTARUS_V2_PID:
case RAZER_TIAMAT_71_V2_PID:
case RAZER_THUNDERBOLT_4_DOCK_CHROMA_PID:
case RAZER_VIPER_8KHZ_PID:
case RAZER_VIPER_MINI_PID:
case RAZER_VIPER_PID:
case RAZER_VIPER_ULTIMATE_WIRED_PID:
case RAZER_VIPER_ULTIMATE_WIRELESS_PID:
matrix_type = RAZER_MATRIX_TYPE_EXTENDED;
break;
/*-------------------------------------------------*\
| These devices use a linear report |
\*-------------------------------------------------*/
case RAZER_CHROMA_MUG_PID:
case RAZER_DEATHSTALKER_CHROMA_PID:
case RAZER_DIAMONDBACK_CHROMA_PID:
case RAZER_FIREFLY_PID:
case RAZER_MAMBA_TE_PID:
case RAZER_MAMBA_2015_WIRED_PID:
case RAZER_MAMBA_2015_WIRELESS_PID:
case RAZER_NAGA_CHROMA_PID:
matrix_type = RAZER_MATRIX_TYPE_LINEAR;
break;
/*-------------------------------------------------*\
| These devices use an extended ARGB matrix report |
\*-------------------------------------------------*/
case RAZER_CHROMA_ADDRESSABLE_RGB_CONTROLLER_PID:
matrix_type = RAZER_MATRIX_TYPE_EXTENDED_ARGB;
break;
/*-------------------------------------------------*\
| These devices have a non-standard report and are |
| handled on a per-device basis |
\*-------------------------------------------------*/
case RAZER_TARTARUS_CHROMA_PID:
case RAZER_DEATHADDER_CHROMA_PID:
case RAZER_NAGA_EPIC_CHROMA_PID:
case RAZER_ORBWEAVER_CHROMA_PID:
matrix_type = RAZER_MATRIX_TYPE_CUSTOM;
break;
default:
LOG_WARNING("[%s] Report matrix type was not selected, device may not repsond to mode updates.", name.c_str());
}
matrix_type = device_list[device_index]->matrix_type;
}
RazerController::~RazerController()
@ -1780,6 +1603,14 @@ void RazerController::razer_set_mode_none()
razer_usb_send(&report);
break;
case RAZER_MAMBA_2012_WIRED_PID:
case RAZER_MAMBA_2012_WIRELESS_PID:
report = razer_create_set_led_rgb_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_SCROLL_WHEEL, rgb_data);
razer_usb_send(&report);
report = razer_create_set_led_effect_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_SCROLL_WHEEL, 0);
razer_usb_send(&report);
break;
/*-------------------------------------------------*\
| These devices use standard matrix reports |
\*-------------------------------------------------*/
@ -1839,6 +1670,12 @@ void RazerController::razer_set_mode_spectrum_cycle()
razer_usb_send(&report);
break;
case RAZER_MAMBA_2012_WIRED_PID:
case RAZER_MAMBA_2012_WIRELESS_PID:
report = razer_create_set_led_effect_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_SCROLL_WHEEL, 4);
razer_usb_send(&report);
break;
/*-------------------------------------------------*\
| These devices use standard matrix reports |
\*-------------------------------------------------*/
@ -1922,6 +1759,14 @@ void RazerController::razer_set_mode_static(unsigned char red, unsigned char grn
razer_usb_send(&report);
break;
case RAZER_MAMBA_2012_WIRED_PID:
case RAZER_MAMBA_2012_WIRELESS_PID:
report = razer_create_set_led_rgb_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_SCROLL_WHEEL, rgb_data);
razer_usb_send(&report);
report = razer_create_set_led_effect_report(RAZER_STORAGE_NO_SAVE, RAZER_LED_ID_SCROLL_WHEEL, 0);
razer_usb_send(&report);
break;
/*-------------------------------------------------*\
| These devices use standard matrix reports |
\*-------------------------------------------------*/

View file

@ -29,8 +29,8 @@
\*---------------------------------------------------------*/
enum
{
RAZER_DEVICE_MODE_HARDWARE = 0x00,
RAZER_DEVICE_MODE_SOFTWARE = 0x03,
RAZER_DEVICE_MODE_HARDWARE = 0x00,
RAZER_DEVICE_MODE_SOFTWARE = 0x03,
};
/*---------------------------------------------------------*\
@ -41,17 +41,17 @@ enum
/*-----------------------------------------------------*\
| Set Commands |
\*-----------------------------------------------------*/
RAZER_COMMAND_ID_SET_LED_STATE = 0x00,
RAZER_COMMAND_ID_SET_DEVICE_MODE = 0x04,
RAZER_COMMAND_ID_SET_LED_STATE = 0x00,
RAZER_COMMAND_ID_SET_DEVICE_MODE = 0x04,
/*-----------------------------------------------------*\
| Get Commands |
\*-----------------------------------------------------*/
RAZER_COMMAND_ID_GET_LED_STATE = 0x80,
RAZER_COMMAND_ID_GET_FIRMWARE_VERSION = 0x81,
RAZER_COMMAND_ID_GET_SERIAL_STRING = 0x82,
RAZER_COMMAND_ID_GET_DEVICE_MODE = 0x84,
RAZER_COMMAND_ID_GET_KEYBOARD_INFO = 0x86,
RAZER_COMMAND_ID_GET_LED_STATE = 0x80,
RAZER_COMMAND_ID_GET_FIRMWARE_VERSION = 0x81,
RAZER_COMMAND_ID_GET_SERIAL_STRING = 0x82,
RAZER_COMMAND_ID_GET_DEVICE_MODE = 0x84,
RAZER_COMMAND_ID_GET_KEYBOARD_INFO = 0x86,
};
/*---------------------------------------------------------*\
@ -59,8 +59,8 @@ enum
\*---------------------------------------------------------*/
enum
{
RAZER_STORAGE_NO_SAVE = 0x00,
RAZER_STORAGE_SAVE = 0x01,
RAZER_STORAGE_NO_SAVE = 0x00,
RAZER_STORAGE_SAVE = 0x01,
};
/*---------------------------------------------------------*\
@ -68,24 +68,24 @@ enum
\*---------------------------------------------------------*/
enum
{
RAZER_LED_ID_ZERO = 0x00,
RAZER_LED_ID_SCROLL_WHEEL = 0x01,
RAZER_LED_ID_BATTERY = 0x03,
RAZER_LED_ID_LOGO = 0x04,
RAZER_LED_ID_BACKLIGHT = 0x05,
RAZER_LED_ID_MACRO = 0x07,
RAZER_LED_ID_GAME = 0x08,
RAZER_LED_ID_PROFILE_RED = 0x0C,
RAZER_LED_ID_PROFILE_GREEN = 0x0D,
RAZER_LED_ID_PROFILE_BLUE = 0x0E,
RAZER_LED_ID_RIGHT_SIDE = 0x10,
RAZER_LED_ID_LEFT_SIDE = 0x11,
RAZER_LED_ID_ARGB_CH_1 = 0x1A,
RAZER_LED_ID_ARGB_CH_2 = 0x1B,
RAZER_LED_ID_ARGB_CH_3 = 0x1C,
RAZER_LED_ID_ARGB_CH_4 = 0x1D,
RAZER_LED_ID_ARGB_CH_5 = 0x1E,
RAZER_LED_ID_ARGB_CH_6 = 0x1F,
RAZER_LED_ID_ZERO = 0x00,
RAZER_LED_ID_SCROLL_WHEEL = 0x01,
RAZER_LED_ID_BATTERY = 0x03,
RAZER_LED_ID_LOGO = 0x04,
RAZER_LED_ID_BACKLIGHT = 0x05,
RAZER_LED_ID_MACRO = 0x07,
RAZER_LED_ID_GAME = 0x08,
RAZER_LED_ID_PROFILE_RED = 0x0C,
RAZER_LED_ID_PROFILE_GREEN = 0x0D,
RAZER_LED_ID_PROFILE_BLUE = 0x0E,
RAZER_LED_ID_RIGHT_SIDE = 0x10,
RAZER_LED_ID_LEFT_SIDE = 0x11,
RAZER_LED_ID_ARGB_CH_1 = 0x1A,
RAZER_LED_ID_ARGB_CH_2 = 0x1B,
RAZER_LED_ID_ARGB_CH_3 = 0x1C,
RAZER_LED_ID_ARGB_CH_4 = 0x1D,
RAZER_LED_ID_ARGB_CH_5 = 0x1E,
RAZER_LED_ID_ARGB_CH_6 = 0x1F,
};
/*---------------------------------------------------------*\
@ -93,11 +93,12 @@ enum
\*---------------------------------------------------------*/
enum
{
RAZER_MATRIX_TYPE_STANDARD = 0,
RAZER_MATRIX_TYPE_EXTENDED = 1,
RAZER_MATRIX_TYPE_LINEAR = 2,
RAZER_MATRIX_TYPE_EXTENDED_ARGB = 3,
RAZER_MATRIX_TYPE_CUSTOM = 4,
RAZER_MATRIX_TYPE_NONE = 0,
RAZER_MATRIX_TYPE_STANDARD = 1,
RAZER_MATRIX_TYPE_EXTENDED = 2,
RAZER_MATRIX_TYPE_LINEAR = 3,
RAZER_MATRIX_TYPE_EXTENDED_ARGB = 4,
RAZER_MATRIX_TYPE_CUSTOM = 5,
};
/*---------------------------------------------------------*\
@ -105,27 +106,27 @@ enum
\*---------------------------------------------------------*/
enum
{
RAZER_KEYBOARD_LAYOUT_NONE = 0,
RAZER_KEYBOARD_LAYOUT_US = 1,
RAZER_KEYBOARD_LAYOUT_GREEK = 2,
RAZER_KEYBOARD_LAYOUT_GERMAN = 3,
RAZER_KEYBOARD_LAYOUT_FRENCH = 4,
RAZER_KEYBOARD_LAYOUT_RUSSIAN = 5,
RAZER_KEYBOARD_LAYOUT_UK = 6,
RAZER_KEYBOARD_LAYOUT_NORDIC = 7,
RAZER_KEYBOARD_LAYOUT_CHT = 8,
RAZER_KEYBOARD_LAYOUT_KOREAN = 9,
RAZER_KEYBOARD_LAYOUT_TURKISH = 10,
RAZER_KEYBOARD_LAYOUT_THAILAND = 11,
RAZER_KEYBOARD_LAYOUT_JAPAN = 12,
RAZER_KEYBOARD_LAYOUT_PORTUGESE_BRAZIL = 13,
RAZER_KEYBOARD_LAYOUT_SPANISH_LATIN_AMERICAN = 14,
RAZER_KEYBOARD_LAYOUT_SWISS = 15,
RAZER_KEYBOARD_LAYOUT_SPANISH_EUR = 16,
RAZER_KEYBOARD_LAYOUT_ITALIAN = 17,
RAZER_KEYBOARD_LAYOUT_PORTUGESE_PORTUGA = 18,
RAZER_KEYBOARD_LAYOUT_HEBREW = 19,
RAZER_KEYBOARD_LAYOUT_ARABIC = 20,
RAZER_KEYBOARD_LAYOUT_NONE = 0,
RAZER_KEYBOARD_LAYOUT_US = 1,
RAZER_KEYBOARD_LAYOUT_GREEK = 2,
RAZER_KEYBOARD_LAYOUT_GERMAN = 3,
RAZER_KEYBOARD_LAYOUT_FRENCH = 4,
RAZER_KEYBOARD_LAYOUT_RUSSIAN = 5,
RAZER_KEYBOARD_LAYOUT_UK = 6,
RAZER_KEYBOARD_LAYOUT_NORDIC = 7,
RAZER_KEYBOARD_LAYOUT_CHT = 8,
RAZER_KEYBOARD_LAYOUT_KOREAN = 9,
RAZER_KEYBOARD_LAYOUT_TURKISH = 10,
RAZER_KEYBOARD_LAYOUT_THAILAND = 11,
RAZER_KEYBOARD_LAYOUT_JAPAN = 12,
RAZER_KEYBOARD_LAYOUT_PORTUGESE_BRAZIL = 13,
RAZER_KEYBOARD_LAYOUT_SPANISH_LATIN_AMERICAN = 14,
RAZER_KEYBOARD_LAYOUT_SWISS = 15,
RAZER_KEYBOARD_LAYOUT_SPANISH_EUR = 16,
RAZER_KEYBOARD_LAYOUT_ITALIAN = 17,
RAZER_KEYBOARD_LAYOUT_PORTUGESE_PORTUGA = 18,
RAZER_KEYBOARD_LAYOUT_HEBREW = 19,
RAZER_KEYBOARD_LAYOUT_ARABIC = 20,
};
/*---------------------------------------------------------*\
@ -133,15 +134,15 @@ enum
\*---------------------------------------------------------*/
enum
{
RAZER_LAYOUT_TYPE_NONE = 0x00,
RAZER_LAYOUT_TYPE_ANSI = 0x01,
RAZER_LAYOUT_TYPE_ISO = 0x02,
RAZER_LAYOUT_TYPE_JIS = 0x04,
RAZER_LAYOUT_TYPE_QWERTZ = 0x08,
RAZER_LAYOUT_TYPE_AZERTY = 0x10,
RAZER_LAYOUT_TYPE_NONE = 0x00,
RAZER_LAYOUT_TYPE_ANSI = 0x01,
RAZER_LAYOUT_TYPE_ISO = 0x02,
RAZER_LAYOUT_TYPE_JIS = 0x04,
RAZER_LAYOUT_TYPE_QWERTZ = 0x08,
RAZER_LAYOUT_TYPE_AZERTY = 0x10,
RAZER_LAYOUT_TYPE_ALL = RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO
| RAZER_LAYOUT_TYPE_JIS | RAZER_LAYOUT_TYPE_QWERTZ
RAZER_LAYOUT_TYPE_ALL = RAZER_LAYOUT_TYPE_ANSI | RAZER_LAYOUT_TYPE_ISO
| RAZER_LAYOUT_TYPE_JIS | RAZER_LAYOUT_TYPE_QWERTZ
};
/*---------------------------------------------------------*\
@ -149,8 +150,8 @@ enum
\*---------------------------------------------------------*/
enum
{
RAZER_KEYBOARD_VARIANT_BLACK = 0x00,
RAZER_KEYBOARD_VARIANT_MERCURY = 0x82,
RAZER_KEYBOARD_VARIANT_BLACK = 0x00,
RAZER_KEYBOARD_VARIANT_MERCURY = 0x82,
};
/*---------------------------------------------------------*\

File diff suppressed because it is too large Load diff

View file

@ -250,7 +250,7 @@ typedef struct
std::string name;
unsigned short pid;
device_type type;
bool matrix_type;
unsigned char matrix_type;
unsigned int rows;
unsigned int cols;
const razer_zone* zones[RAZER_MAX_ZONES];