From a050d8e311132a4115b80b691b233a61b2df0373 Mon Sep 17 00:00:00 2001 From: Mola19 Date: Wed, 16 Nov 2022 01:52:50 +0100 Subject: [PATCH] support for Asus TUF Gaming K1 to resolve #2242 --- .../AsusAuraTUFKeyboardController.cpp | 106 ++++++-- .../AsusAuraTUFKeyboardController.h | 13 +- .../AsusAuraTUFKeyboardLayouts.h | 71 ++++- .../AsusAuraUSBControllerDetect.cpp | 6 +- .../RGBController_AsusAuraTUFKeyboard.cpp | 255 +++++++++++------- .../RGBController_AsusAuraTUFKeyboard.h | 23 +- 6 files changed, 329 insertions(+), 145 deletions(-) diff --git a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.cpp b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.cpp index 833105b9..5b89c525 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.cpp +++ b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.cpp @@ -256,22 +256,68 @@ void AuraTUFKeyboardController::UpdateLeds usb_buf[0] = 0x00; usb_buf[1] = 0xC0; usb_buf[2] = 0x81; - usb_buf[3] = leds; + usb_buf[3] = (device_pid != AURA_TUF_K1_GAMING_PID) ? leds : 0x00; usb_buf[4] = 0x00; for(int j = 0; j < leds; j++) { - usb_buf[j * 4 + 5] = colors[i * 15 + j].value; + usb_buf[j * 4 + 5] = (device_pid != AURA_TUF_K1_GAMING_PID) ? colors[i * 15 + j].value : 0x00; usb_buf[j * 4 + 6] = RGBGetRValue(colors[i * 15 + j].color); usb_buf[j * 4 + 7] = RGBGetGValue(colors[i * 15 + j].color); usb_buf[j * 4 + 8] = RGBGetBValue(colors[i * 15 + j].color); } + ClearResponses(); hid_write(dev, usb_buf, 65); AwaitResponse(20); } } +void AuraTUFKeyboardController::UpdateK1Wave + ( + std::vector colors, + unsigned char direction, + unsigned char speed, + unsigned char brightness + ) +{ + unsigned char usb_buf[65]; + + memset(usb_buf, 0x00, sizeof(usb_buf)); + + usb_buf[0x00] = 0x00; + usb_buf[0x01] = 0x51; + usb_buf[0x02] = 0x2C; + usb_buf[0x03] = 0x03; + usb_buf[0x04] = 0x00; + usb_buf[0x05] = speed; + usb_buf[0x06] = brightness; + usb_buf[0x07] = 0x00; + usb_buf[0x08] = direction; + usb_buf[0x09] = 0x00; + + usb_buf[10] = 5; + usb_buf[11] = RGBGetRValue(colors[4]); + usb_buf[12] = RGBGetGValue(colors[4]); + usb_buf[13] = RGBGetBValue(colors[4]); + + ClearResponses(); + hid_write(dev, usb_buf, 65); + AwaitResponse(20); + + for(unsigned int i = 0; i < 4; i ++) + { + usb_buf[10 + i * 4] = i + 1; + usb_buf[11 + i * 4] = RGBGetRValue(colors[i]); + usb_buf[12 + i * 4] = RGBGetGValue(colors[i]); + usb_buf[13 + i * 4] = RGBGetBValue(colors[i]); + } + + ClearResponses(); + hid_write(dev, usb_buf, 65); + AwaitResponse(20); +} + void AuraTUFKeyboardController::UpdateDevice ( unsigned char mode, @@ -282,6 +328,11 @@ void AuraTUFKeyboardController::UpdateDevice unsigned char brightness ) { + if(device_pid == AURA_TUF_K1_GAMING_PID && mode == AURA_KEYBOARD_MODE_WAVE) + { + return UpdateK1Wave(colors, direction, speed, brightness); + } + unsigned char usb_buf[65]; memset(usb_buf, 0x00, sizeof(usb_buf)); @@ -297,25 +348,45 @@ void AuraTUFKeyboardController::UpdateDevice usb_buf[0x06] = brightness; usb_buf[0x07] = color_mode; usb_buf[0x08] = direction; - usb_buf[0x09] = 0x02; - if(mode == AURA_KEYBOARD_MODE_WAVE || mode == AURA_KEYBOARD_MODE_RIPPLE) + if(device_pid != AURA_TUF_K1_GAMING_PID) { - usb_buf[0x0A] = colors.size(); + usb_buf[0x09] = 0x02; - /*-----------------------------------------------------*\ - | Loop over every color given | - \*-----------------------------------------------------*/ - for(unsigned int i = 0; i < colors.size(); i ++) + if(mode == AURA_KEYBOARD_MODE_WAVE || mode == AURA_KEYBOARD_MODE_RIPPLE) { - if(colors[i]) + usb_buf[0x0A] = colors.size(); + + /*-----------------------------------------------------*\ + | Loop over every color given | + \*-----------------------------------------------------*/ + for(unsigned int i = 0; i < colors.size(); i ++) { - usb_buf[11 + i * 4] = 100/(double)colors.size()*(i+1); - usb_buf[12 + i * 4] = RGBGetRValue(colors[i]); - usb_buf[13 + i * 4] = RGBGetGValue(colors[i]); - usb_buf[14 + i * 4] = RGBGetBValue(colors[i]); + if(colors[i]) + { + usb_buf[11 + i * 4] = 100/(double)colors.size()*(i+1); + usb_buf[12 + i * 4] = RGBGetRValue(colors[i]); + usb_buf[13 + i * 4] = RGBGetGValue(colors[i]); + usb_buf[14 + i * 4] = RGBGetBValue(colors[i]); + } } } + else + { + /*-----------------------------------------------------*\ + | Loop over Color1, Color2 and Background if there | + \*-----------------------------------------------------*/ + for(unsigned int i = 0; i != colors.size(); i++) + { + if(colors[i]) + { + usb_buf[10 + i * 3] = RGBGetRValue(colors[i]); + usb_buf[11 + i * 3] = RGBGetGValue(colors[i]); + usb_buf[12 + i * 3] = RGBGetBValue(colors[i]); + } + } + + } } else { @@ -326,12 +397,11 @@ void AuraTUFKeyboardController::UpdateDevice { if(colors[i]) { - usb_buf[10 + i * 3] = RGBGetRValue(colors[i]); - usb_buf[11 + i * 3] = RGBGetGValue(colors[i]); - usb_buf[12 + i * 3] = RGBGetBValue(colors[i]); + usb_buf[ 9 + i * 3] = RGBGetRValue(colors[i]); + usb_buf[10 + i * 3] = RGBGetGValue(colors[i]); + usb_buf[11 + i * 3] = RGBGetBValue(colors[i]); } } - } } else diff --git a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.h b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.h index 1f251122..a5898f9b 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.h +++ b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardController.h @@ -35,8 +35,9 @@ enum { AURA_ROG_FALCHION_WIRED_PID = 0x193C, AURA_ROG_FALCHION_WIRELESS_PID = 0x193E, - AURA_TUF_K7_GAMING_PID = 0x18AA, + AURA_TUF_K1_GAMING_PID = 0x1945, AURA_TUF_K3_GAMING_PID = 0x194B, + AURA_TUF_K7_GAMING_PID = 0x18AA, AURA_ROG_CLAYMORE_PID = 0x184D, }; @@ -73,11 +74,19 @@ public: std::vector colors ); + void UpdateK1Wave + ( + std::vector colors, + unsigned char direction, + unsigned char speed, + unsigned char brightness + ); + void UpdateDevice ( unsigned char mode, std::vector colors, - unsigned char dir, + unsigned char direction, unsigned char color_mode, unsigned char speed, unsigned char brightness diff --git a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardLayouts.h b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardLayouts.h index 3a74ee94..76f5f760 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardLayouts.h +++ b/Controllers/AsusAuraUSBController/AsusAuraTUFKeyboardLayouts.h @@ -60,7 +60,8 @@ struct layout_info std::vector led_names; }; -static unsigned int ASUS_TUF_K7_LAYOUT_KEYS_US[6][24] = { +static unsigned int ASUS_TUF_K7_LAYOUT_KEYS_US[6][24] = +{ { 0, NA, 8, 14, 19, 24, NA, 34, 39, 44, 49, 55, 61, 66, 70, NA, 74, 78, 83, NA, NA, NA, NA, NA }, { 1, 6, 9, 15, 20, 25, 29, 35, 40, 45, 50, 56, 62, 67, NA, NA, 75, 79, 84, NA, 87, 92, 96, 101 }, { 2, NA, 10, 16, 21, 26, 30, 36, 41, 46, 51, 57, 63, 68, 71, NA, 76, 80, 85, NA, 88, 93, 97, 102 }, @@ -70,7 +71,8 @@ static unsigned int ASUS_TUF_K7_LAYOUT_KEYS_US[6][24] = { }; -static unsigned int ASUS_TUF_K7_LAYOUT_KEYS_UK[6][24] = { +static unsigned int ASUS_TUF_K7_LAYOUT_KEYS_UK[6][24] = +{ { 0, NA, 9, 15, 20, 25, NA, 35, 40, 45, 50, 56, 62, 67, 72, NA, 75, 79, 84, NA, NA, NA, NA, NA }, { 1, 6, 10, 16, 21, 26, 30, 36, 41, 46, 51, 57, 63, 68, NA, NA, 76, 80, 85, NA, 88, 93, 97, 102 }, { 2, NA, 11, 17, 22, 27, 31, 37, 42, 47, 52, 58, 64, 69, NA, NA, 77, 81, 86, NA, 89, 94, 98, 103 }, @@ -79,7 +81,8 @@ static unsigned int ASUS_TUF_K7_LAYOUT_KEYS_UK[6][24] = { { 5, 8, 14, NA, NA, NA, 34, NA, NA, NA, 55, 61, 66, NA, 74, NA, 78, 83, 87, NA, 92, NA, 101, NA } }; -static unsigned int ASUS_FALCHION_LAYOUT_KEYS_US[5][16] = { +static unsigned int ASUS_FALCHION_LAYOUT_KEYS_US[5][16] = +{ { 0, 5, 7, 12, 16, 20, 24, 29, 33, 37, 41, 46, 51, 56, NA, 63 }, { 1, NA, 8, 13, 17, 21, 25, 30, 34, 38, 42, 47, 52, 57, 59, 64 }, { 2, NA, 9, 14, 18, 22, 26, 31, 35, 39, 43, 48, 53, NA, 60, 65 }, @@ -87,7 +90,8 @@ static unsigned int ASUS_FALCHION_LAYOUT_KEYS_US[5][16] = { { 4, 6, 11, NA, NA, NA, 28, NA, NA, NA, 45, 50, 55, 58, 62, 67 } }; -static unsigned int ASUS_FALCHION_LAYOUT_KEYS_UK[5][16] = { +static unsigned int ASUS_FALCHION_LAYOUT_KEYS_UK[5][16] = +{ { 0, 5, 8, 13, 17, 21, 25, 30, 34, 38, 42, 47, 52, 57, NA, 64 }, { 1, NA, 9, 14, 18, 22, 26, 31, 35, 39, 43, 48, 53, 58, 61, 65 }, { 2, NA, 10, 15, 19, 23, 27, 32, 36, 40, 44, 49, 54, 59, NA, 66 }, @@ -95,7 +99,8 @@ static unsigned int ASUS_FALCHION_LAYOUT_KEYS_UK[5][16] = { { 4, 7, 12, NA, NA, NA, 29, NA, NA, NA, 46, 51, 56, 60, 63, 68 } }; -static unsigned int ASUS_CLAYMORE_NO_NUMPAD_LAYOUT_KEYS_US[7][19] = { +static unsigned int ASUS_CLAYMORE_NO_NUMPAD_LAYOUT_KEYS_US[7][19] = +{ { 0, NA, 8, 14, 19, 24, NA, 34, 39, 45, 50, 56, 62, 67, 71, NA, 75, 79, 84 }, { 1, 6, 9, 15, 20, 25, 29, 35, 40, 46, 51, 57, 63, 68, NA, NA, 76, 80, 85 }, { 2, NA, 10, 16, 21, 26, 30, 36, 41, 47, 52, 58, 64, 69, 72, NA, 77, 81, 86 }, @@ -105,7 +110,8 @@ static unsigned int ASUS_CLAYMORE_NO_NUMPAD_LAYOUT_KEYS_US[7][19] = { { NA, NA, NA, NA, NA, NA, NA, NA, 44, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA } }; -static unsigned int ASUS_CLAYMORE_NO_NUMPAD_LAYOUT_KEYS_UK[7][19] = { +static unsigned int ASUS_CLAYMORE_NO_NUMPAD_LAYOUT_KEYS_UK[7][19] = +{ { 0, NA, 9, 15, 20, 25, NA, 35, 40, 46, 51, 57, 63, 68, 73, NA, 76, 80, 85 }, { 1, 6, 10, 16, 21, 26, 30, 36, 41, 47, 52, 58, 64, 69, NA, NA, 77, 81, 86 }, { 2, NA, 11, 17, 22, 27, 31, 37, 42, 48, 53, 59, 65, 70, NA, NA, 78, 82, 87 }, @@ -115,7 +121,8 @@ static unsigned int ASUS_CLAYMORE_NO_NUMPAD_LAYOUT_KEYS_UK[7][19] = { { NA, NA, NA, NA, NA, NA, NA, NA, 45, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA } }; -static unsigned int ASUS_CLAYMORE_NUMPAD_RIGHT_LAYOUT_KEYS_US[7][24] = { +static unsigned int ASUS_CLAYMORE_NUMPAD_RIGHT_LAYOUT_KEYS_US[7][24] = +{ { 0, NA, 8, 14, 19, 24, NA, 34, 39, 45, 50, 56, 62, 67, 71, NA, 75, 79, 84, NA, NA, NA, NA, NA }, { 1, 6, 9, 15, 20, 25, 29, 35, 40, 46, 51, 57, 63, 68, NA, NA, 76, 80, 85, NA, 88, 93, 97, 102 }, { 2, NA, 10, 16, 21, 26, 30, 36, 41, 47, 52, 58, 64, 69, 72, NA, 77, 81, 86, NA, 89, 94, 98, 103 }, @@ -125,7 +132,8 @@ static unsigned int ASUS_CLAYMORE_NUMPAD_RIGHT_LAYOUT_KEYS_US[7][24] = { { NA, NA, NA, NA, NA, NA, NA, NA, 44, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA } }; -static unsigned int ASUS_CLAYMORE_NUMPAD_RIGHT_LAYOUT_KEYS_UK[7][24] = { +static unsigned int ASUS_CLAYMORE_NUMPAD_RIGHT_LAYOUT_KEYS_UK[7][24] = +{ { 0, NA, 9, 15, 20, 25, NA, 35, 40, 46, 51, 57, 63, 68, 73, NA, 76, 80, 85, NA, NA, NA, NA, NA }, { 1, 6, 10, 16, 21, 26, 30, 36, 41, 47, 52, 58, 64, 69, NA, NA, 77, 81, 86, NA, 89, 94, 98, 103 }, { 2, NA, 11, 17, 22, 27, 31, 37, 42, 48, 53, 59, 65, 70, NA, NA, 78, 82, 87, NA, 90, 95, 99, 104 }, @@ -135,7 +143,8 @@ static unsigned int ASUS_CLAYMORE_NUMPAD_RIGHT_LAYOUT_KEYS_UK[7][24] = { { NA, NA, NA, NA, NA, NA, NA, NA, 45, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA } }; -static unsigned int ASUS_CLAYMORE_NUMPAD_LEFT_LAYOUT_KEYS_US[7][24] = { +static unsigned int ASUS_CLAYMORE_NUMPAD_LEFT_LAYOUT_KEYS_US[7][24] = +{ { NA, NA, NA, NA, NA, 17, NA, 25, 31, 36, 41, NA, 51, 56, 62, 67, 73, 79, 84, 88, NA, 92, 96, 101 }, { 0, 5, 9, 14, NA, 18, 23, 26, 32, 37, 42, 46, 52, 57, 63, 68, 74, 80, 85, NA, NA, 93, 97, 102 }, { 1, 6, 10, 15, NA, 19, NA, 27, 33, 38, 43, 47, 53, 58, 64, 69, 75, 81, 86, 89, NA, 94, 98, 103 }, @@ -145,7 +154,8 @@ static unsigned int ASUS_CLAYMORE_NUMPAD_LEFT_LAYOUT_KEYS_US[7][24] = { { NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 61, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA } }; -static unsigned int ASUS_CLAYMORE_NUMPAD_LEFT_LAYOUT_KEYS_UK[7][24] = { +static unsigned int ASUS_CLAYMORE_NUMPAD_LEFT_LAYOUT_KEYS_UK[7][24] = +{ { NA, NA, NA, NA, NA, 17, NA, 26, 32, 37, 42, NA, 52, 57, 63, 68, 74, 80, 85, 90, NA, 93, 97, 102 }, { 0, 5, 9, 14, NA, 18, 23, 27, 33, 38, 43, 47, 53, 58, 64, 69, 75, 81, 86, NA, NA, 94, 98, 103 }, { 1, 6, 10, 15, NA, 19, NA, 28, 34, 39, 44, 48, 54, 59, 65, 70, 76, 82, 87, NA, NA, 95, 99, 104 }, @@ -155,6 +165,11 @@ static unsigned int ASUS_CLAYMORE_NUMPAD_LEFT_LAYOUT_KEYS_UK[7][24] = { { NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 62, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA } }; +static unsigned int ASUS_TUF_K1_LAYOUT_KEYS[1][5] = +{ + { 0, 1, 2, 3, 4 }, +}; + static std::map AsusTUFK7Layouts = { { @@ -1302,3 +1317,39 @@ static std::map AsusClaymoreNumpadLeftLayouts = } }, }; + +static std::map AsusTufK1Layouts = +{ + { + ASUS_TUF_K7_LAYOUT_UK, + { + *ASUS_TUF_K1_LAYOUT_KEYS, + 5, + 1, + 5, + { + { "Keyboard LED 1", 0x00 }, + { "Keyboard LED 2", 0x01 }, + { "Keyboard LED 3", 0x02 }, + { "Keyboard LED 4", 0x03 }, + { "Keyboard LED 5", 0x04 }, + } + } + }, + { + ASUS_TUF_K7_LAYOUT_US, + { + *ASUS_TUF_K1_LAYOUT_KEYS, + 5, + 1, + 5, + { + { "Keyboard LED 1", 0x00 }, + { "Keyboard LED 2", 0x01 }, + { "Keyboard LED 3", 0x02 }, + { "Keyboard LED 4", 0x03 }, + { "Keyboard LED 5", 0x04 }, + } + } + }, +}; diff --git a/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp b/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp index 9b36db6e..812d9c45 100644 --- a/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp +++ b/Controllers/AsusAuraUSBController/AsusAuraUSBControllerDetect.cpp @@ -50,8 +50,9 @@ #define AURA_ROG_STRIX_SCOPE_TKL_PID 0x190C #define AURA_ROG_STRIX_SCOPE_TKL_PNK_LTD_PID 0x1954 #define AURA_ROG_CLAYMORE_PID 0x184D -#define AURA_TUF_K7_GAMING_PID 0x18AA +#define AURA_TUF_K1_GAMING_PID 0x1945 #define AURA_TUF_K3_GAMING_PID 0x194B +#define AURA_TUF_K7_GAMING_PID 0x18AA /*-----------------------------------------------------------------*\ | MICE - defined in AsusAuraMouseDevices.h | @@ -314,8 +315,9 @@ REGISTER_HID_DETECTOR_IP("ASUS ROG Strix Scope TKL PNK LTD", DetectAs REGISTER_HID_DETECTOR_IP("ASUS ROG Claymore", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_CLAYMORE_PID, 1, 0xFF00); REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wired)", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_FALCHION_WIRED_PID, 1, 0xFF00); REGISTER_HID_DETECTOR_IP("ASUS ROG Falchion (Wireless)", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_ROG_FALCHION_WIRELESS_PID, 1, 0xFF00); -REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K7", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K7_GAMING_PID, 1, 0xFF00); +REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K1", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K1_GAMING_PID, 2, 0xFF00); REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K3", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K3_GAMING_PID, 1, 0xFF00); +REGISTER_HID_DETECTOR_IP("ASUS TUF Gaming K7", DetectAsusAuraTUFUSBKeyboard, AURA_USB_VID, AURA_TUF_K7_GAMING_PID, 1, 0xFF00); /*-----------------------------------------------------------------*\ | MICE | diff --git a/Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.cpp b/Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.cpp index bc1fe9ab..3e24ca12 100644 --- a/Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.cpp +++ b/Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.cpp @@ -28,8 +28,6 @@ RGBController_AuraTUFKeyboard::RGBController_AuraTUFKeyboard(AuraTUFKeyboardCont pid = controller->device_pid; - const unsigned char AURA_KEYBOARD_SPEED_MIN = (pid == AURA_ROG_FALCHION_WIRED_PID || pid == AURA_ROG_FALCHION_WIRELESS_PID) ? 255 : 15; - if(pid != AURA_ROG_CLAYMORE_PID) { name = "ASUS Aura Keyboard"; @@ -40,6 +38,30 @@ RGBController_AuraTUFKeyboard::RGBController_AuraTUFKeyboard(AuraTUFKeyboardCont location = controller->GetDeviceLocation(); serial = controller->GetSerialString(); + unsigned char AURA_KEYBOARD_SPEED_MIN = 0; + unsigned char AURA_KEYBOARD_SPEED_MAX = 0; + unsigned char AURA_KEYBOARD_SPEED_DEFAULT = 0; + + switch(pid) + { + case AURA_TUF_K1_GAMING_PID: + AURA_KEYBOARD_SPEED_MIN = 0; + AURA_KEYBOARD_SPEED_MAX = 2; + AURA_KEYBOARD_SPEED_DEFAULT = 1; + break; + case AURA_TUF_K3_GAMING_PID: + case AURA_TUF_K7_GAMING_PID: + AURA_KEYBOARD_SPEED_MIN = 15; + AURA_KEYBOARD_SPEED_MAX = 0; + AURA_KEYBOARD_SPEED_DEFAULT = 8; + break; + case AURA_ROG_FALCHION_WIRED_PID: + case AURA_ROG_FALCHION_WIRELESS_PID: + AURA_KEYBOARD_SPEED_MIN = 255; + AURA_KEYBOARD_SPEED_MAX = 0; + AURA_KEYBOARD_SPEED_DEFAULT = 8; + } + mode Direct; Direct.name = "Direct"; Direct.value = AURA_KEYBOARD_MODE_DIRECT; @@ -63,7 +85,9 @@ RGBController_AuraTUFKeyboard::RGBController_AuraTUFKeyboard(AuraTUFKeyboardCont mode Breathing; Breathing.name = "Breathing"; Breathing.value = AURA_KEYBOARD_MODE_BREATHING; - Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + Breathing.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + if(pid != AURA_TUF_K1_GAMING_PID) Breathing.flags |= MODE_FLAG_HAS_RANDOM_COLOR; + Breathing.speed_min = AURA_KEYBOARD_SPEED_MIN; Breathing.speed_max = AURA_KEYBOARD_SPEED_MAX; Breathing.speed = AURA_KEYBOARD_SPEED_DEFAULT; @@ -92,7 +116,9 @@ RGBController_AuraTUFKeyboard::RGBController_AuraTUFKeyboard(AuraTUFKeyboardCont mode Wave; Wave.name = "Rainbow Wave"; Wave.value = AURA_KEYBOARD_MODE_WAVE; - Wave.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_DIRECTION_UD | MODE_FLAG_HAS_DIRECTION_HV | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + Wave.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_LR | MODE_FLAG_HAS_DIRECTION_HV | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + if(pid != AURA_TUF_K1_GAMING_PID) Wave.flags |= MODE_FLAG_HAS_DIRECTION_UD; + Wave.speed_min = AURA_KEYBOARD_SPEED_MIN; Wave.speed_max = AURA_KEYBOARD_SPEED_MAX; Wave.speed = AURA_KEYBOARD_SPEED_DEFAULT; @@ -101,107 +127,120 @@ RGBController_AuraTUFKeyboard::RGBController_AuraTUFKeyboard(AuraTUFKeyboardCont Wave.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; Wave.direction = MODE_DIRECTION_LEFT; Wave.color_mode = MODE_COLORS_MODE_SPECIFIC; - Wave.colors_min = 1; - Wave.colors_max = 7; - Wave.colors.resize(7); + + if(pid == AURA_TUF_K1_GAMING_PID) + { + Wave.colors_min = 5; + Wave.colors_max = 5; + } + else + { + Wave.colors_min = 1; + Wave.colors_max = 7; + } + + Wave.colors.resize(Wave.colors_max); modes.push_back(Wave); - mode Ripple; - Ripple.name = "Ripple"; - Ripple.value = AURA_KEYBOARD_MODE_RIPPLE; - Ripple.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; - Ripple.speed_min = AURA_KEYBOARD_SPEED_MIN; - Ripple.speed_max = AURA_KEYBOARD_SPEED_MAX; - Ripple.speed = AURA_KEYBOARD_SPEED_DEFAULT; - Ripple.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; - Ripple.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; - Ripple.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; - Ripple.color_mode = MODE_COLORS_MODE_SPECIFIC; - Ripple.colors_min = 1; - Ripple.colors_max = 8; - Ripple.colors.resize(7); - modes.push_back(Ripple); + if(pid != AURA_TUF_K1_GAMING_PID) + { + mode Reactive; + Reactive.name = "Reactive"; + Reactive.value = AURA_KEYBOARD_MODE_REACTIVE; + Reactive.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + Reactive.speed_min = AURA_KEYBOARD_SPEED_MIN; + Reactive.speed_max = AURA_KEYBOARD_SPEED_MAX; + Reactive.speed = AURA_KEYBOARD_SPEED_DEFAULT; + Reactive.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; + Reactive.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; + Reactive.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; + Reactive.color_mode = MODE_COLORS_MODE_SPECIFIC; + Reactive.colors_min = 1; + Reactive.colors_max = 2; + Reactive.colors.resize(1); + modes.push_back(Reactive); - mode Reactive; - Reactive.name = "Reactive"; - Reactive.value = AURA_KEYBOARD_MODE_REACTIVE; - Reactive.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; - Reactive.speed_min = AURA_KEYBOARD_SPEED_MIN; - Reactive.speed_max = AURA_KEYBOARD_SPEED_MAX; - Reactive.speed = AURA_KEYBOARD_SPEED_DEFAULT; - Reactive.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; - Reactive.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; - Reactive.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; - Reactive.color_mode = MODE_COLORS_MODE_SPECIFIC; - Reactive.colors_min = 1; - Reactive.colors_max = 2; - Reactive.colors.resize(1); - modes.push_back(Reactive); + mode Ripple; + Ripple.name = "Ripple"; + Ripple.value = AURA_KEYBOARD_MODE_RIPPLE; + Ripple.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + Ripple.speed_min = AURA_KEYBOARD_SPEED_MIN; + Ripple.speed_max = AURA_KEYBOARD_SPEED_MAX; + Ripple.speed = AURA_KEYBOARD_SPEED_DEFAULT; + Ripple.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; + Ripple.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; + Ripple.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; + Ripple.color_mode = MODE_COLORS_MODE_SPECIFIC; + Ripple.colors_min = 1; + Ripple.colors_max = 8; + Ripple.colors.resize(7); + modes.push_back(Ripple); - mode Starry_Night; - Starry_Night.name = "Starry Night"; - Starry_Night.value = AURA_KEYBOARD_MODE_STARRY_NIGHT; - Starry_Night.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; - Starry_Night.speed_min = AURA_KEYBOARD_SPEED_MIN; - Starry_Night.speed_max = AURA_KEYBOARD_SPEED_MAX; - Starry_Night.speed = AURA_KEYBOARD_SPEED_DEFAULT; - Starry_Night.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; - Starry_Night.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; - Starry_Night.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; - Starry_Night.color_mode = MODE_COLORS_MODE_SPECIFIC; - Starry_Night.colors_min = 1; - Starry_Night.colors_max = 3; - Starry_Night.colors.resize(1); - modes.push_back(Starry_Night); + mode Starry_Night; + Starry_Night.name = "Starry Night"; + Starry_Night.value = AURA_KEYBOARD_MODE_STARRY_NIGHT; + Starry_Night.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + Starry_Night.speed_min = AURA_KEYBOARD_SPEED_MIN; + Starry_Night.speed_max = AURA_KEYBOARD_SPEED_MAX; + Starry_Night.speed = AURA_KEYBOARD_SPEED_DEFAULT; + Starry_Night.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; + Starry_Night.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; + Starry_Night.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; + Starry_Night.color_mode = MODE_COLORS_MODE_SPECIFIC; + Starry_Night.colors_min = 1; + Starry_Night.colors_max = 3; + Starry_Night.colors.resize(1); + modes.push_back(Starry_Night); - mode Quicksand; - Quicksand.name = "Quicksand"; - Quicksand.value = AURA_KEYBOARD_MODE_QUICKSAND; - Quicksand.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_UD | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; - Quicksand.direction = MODE_DIRECTION_DOWN; - Quicksand.speed_min = AURA_KEYBOARD_SPEED_MIN; - Quicksand.speed_max = AURA_KEYBOARD_SPEED_MAX; - Quicksand.speed = AURA_KEYBOARD_SPEED_DEFAULT; - Quicksand.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; - Quicksand.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; - Quicksand.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; - Quicksand.color_mode = MODE_COLORS_MODE_SPECIFIC; - Quicksand.colors_min = 6; - Quicksand.colors_max = 6; - Quicksand.colors.resize(6); - modes.push_back(Quicksand); + mode Quicksand; + Quicksand.name = "Quicksand"; + Quicksand.value = AURA_KEYBOARD_MODE_QUICKSAND; + Quicksand.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_HAS_DIRECTION_UD | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + Quicksand.direction = MODE_DIRECTION_DOWN; + Quicksand.speed_min = AURA_KEYBOARD_SPEED_MIN; + Quicksand.speed_max = AURA_KEYBOARD_SPEED_MAX; + Quicksand.speed = AURA_KEYBOARD_SPEED_DEFAULT; + Quicksand.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; + Quicksand.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; + Quicksand.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; + Quicksand.color_mode = MODE_COLORS_MODE_SPECIFIC; + Quicksand.colors_min = 6; + Quicksand.colors_max = 6; + Quicksand.colors.resize(6); + modes.push_back(Quicksand); - mode Current; - Current.name = "Current"; - Current.value = AURA_KEYBOARD_MODE_CURRENT; - Current.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; - Current.speed_min = AURA_KEYBOARD_SPEED_MIN; - Current.speed_max = AURA_KEYBOARD_SPEED_MAX; - Current.speed = AURA_KEYBOARD_SPEED_DEFAULT; - Current.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; - Current.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; - Current.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; - Current.color_mode = MODE_COLORS_MODE_SPECIFIC; - Current.colors_min = 1; - Current.colors_max = 3; - Current.colors.resize(1); - modes.push_back(Current); + mode Current; + Current.name = "Current"; + Current.value = AURA_KEYBOARD_MODE_CURRENT; + Current.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + Current.speed_min = AURA_KEYBOARD_SPEED_MIN; + Current.speed_max = AURA_KEYBOARD_SPEED_MAX; + Current.speed = AURA_KEYBOARD_SPEED_DEFAULT; + Current.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; + Current.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; + Current.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; + Current.color_mode = MODE_COLORS_MODE_SPECIFIC; + Current.colors_min = 1; + Current.colors_max = 3; + Current.colors.resize(1); + modes.push_back(Current); - mode Rain_Drop; - Rain_Drop.name = "Rain Drop"; - Rain_Drop.value = AURA_KEYBOARD_MODE_RAIN_DROP; - Rain_Drop.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; - Rain_Drop.speed_min = AURA_KEYBOARD_SPEED_MIN; - Rain_Drop.speed_max = AURA_KEYBOARD_SPEED_MAX; - Rain_Drop.speed = AURA_KEYBOARD_SPEED_DEFAULT; - Rain_Drop.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; - Rain_Drop.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; - Rain_Drop.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; - Rain_Drop.color_mode = MODE_COLORS_MODE_SPECIFIC; - Rain_Drop.colors_min = 1; - Rain_Drop.colors_max = 3; - Rain_Drop.colors.resize(1); - modes.push_back(Rain_Drop); + mode Rain_Drop; + Rain_Drop.name = "Rain Drop"; + Rain_Drop.value = AURA_KEYBOARD_MODE_RAIN_DROP; + Rain_Drop.flags = MODE_FLAG_HAS_MODE_SPECIFIC_COLOR | MODE_FLAG_HAS_RANDOM_COLOR | MODE_FLAG_HAS_SPEED | MODE_FLAG_MANUAL_SAVE | MODE_FLAG_HAS_BRIGHTNESS; + Rain_Drop.speed_min = AURA_KEYBOARD_SPEED_MIN; + Rain_Drop.speed_max = AURA_KEYBOARD_SPEED_MAX; + Rain_Drop.speed = AURA_KEYBOARD_SPEED_DEFAULT; + Rain_Drop.brightness_min = AURA_KEYBOARD_BRIGHTNESS_MIN; + Rain_Drop.brightness_max = AURA_KEYBOARD_BRIGHTNESS_MAX; + Rain_Drop.brightness = AURA_KEYBOARD_BRIGHTNESS_DEFAULT; + Rain_Drop.color_mode = MODE_COLORS_MODE_SPECIFIC; + Rain_Drop.colors_min = 1; + Rain_Drop.colors_max = 3; + Rain_Drop.colors.resize(1); + modes.push_back(Rain_Drop); + } } else { @@ -343,12 +382,11 @@ RGBController_AuraTUFKeyboard::~RGBController_AuraTUFKeyboard() void RGBController_AuraTUFKeyboard::SetupZones() { - unsigned char layout = controller->GetLayout(); - std::map * keyboard_ptr; switch(pid) { + case AURA_TUF_K3_GAMING_PID: case AURA_TUF_K7_GAMING_PID: keyboard_ptr = &AsusTUFK7Layouts; break; @@ -374,12 +412,17 @@ void RGBController_AuraTUFKeyboard::SetupZones() keyboard_ptr = &AsusClaymoreNoNumpadLayouts; } break; + case AURA_TUF_K1_GAMING_PID: + keyboard_ptr = &AsusTufK1Layouts; + break; default: keyboard_ptr = &AsusTUFK7Layouts; } std::map & keyboard = *keyboard_ptr; + unsigned char layout = controller->GetLayout(); + if(keyboard.find(layout % 100) == keyboard.end()) { /*---------------------------------------------------------*\ @@ -444,6 +487,11 @@ void RGBController_AuraTUFKeyboard::UpdateZoneLEDs(int /*zone*/) void RGBController_AuraTUFKeyboard::UpdateSingleLED(int led) { + if(pid == AURA_TUF_K1_GAMING_PID) + { + return DeviceUpdateLEDs(); + } + unsigned char red = RGBGetRValue(colors[led]); unsigned char green = RGBGetGValue(colors[led]); unsigned char blue = RGBGetBValue(colors[led]); @@ -485,6 +533,12 @@ void RGBController_AuraTUFKeyboard::DeviceUpdateMode() case AURA_KEYBOARD_MODE_STARRY_NIGHT: case AURA_KEYBOARD_MODE_CURRENT: case AURA_KEYBOARD_MODE_RAIN_DROP: + if(pid == AURA_TUF_K1_GAMING_PID && modes[active_mode].colors.size() > 1) + { + color_mode = 1; + break; + } + bool color_is_black = (modes[active_mode].colors.size() > 1 && modes[active_mode].colors[1] == 000); if(modes[active_mode].color_mode == MODE_COLORS_MODE_SPECIFIC && !color_is_black) @@ -524,6 +578,7 @@ void RGBController_AuraTUFKeyboard::DeviceUpdateMode() } } + controller->UpdateDevice(modes[active_mode].value, std::vector(modes[active_mode].colors), direction, color_mode, modes[active_mode].speed, brightness); if(pid == AURA_ROG_CLAYMORE_PID) diff --git a/Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.h b/Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.h index 505b1776..dc811b26 100644 --- a/Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.h +++ b/Controllers/AsusAuraUSBController/RGBController_AsusAuraTUFKeyboard.h @@ -13,8 +13,6 @@ enum { - AURA_KEYBOARD_SPEED_MAX = 0, - AURA_KEYBOARD_SPEED_DEFAULT = 8, AURA_KEYBOARD_BRIGHTNESS_MIN = 0, AURA_KEYBOARD_BRIGHTNESS_MAX = 4, AURA_KEYBOARD_BRIGHTNESS_DEFAULT = 4, @@ -22,17 +20,16 @@ enum enum { - AURA_CLAYMORE_SPEED_MIN = 254, - AURA_CLAYMORE_SPEED_MAX = 0, - AURA_CLAYMORE_SPEED_DEFAULT_STATIC = 0, - AURA_CLAYMORE_SPEED_DEFAULT_BREATHING = 107, - AURA_CLAYMORE_SPEED_DEFAULT_COLOR_CYCLE = 121, - AURA_CLAYMORE_SPEED_DEFAULT_REACTIVE = 56, - AURA_CLAYMORE_SPEED_DEFAULT_WAVE = 50, - AURA_CLAYMORE_SPEED_DEFAULT_RIPPLE = 108, - AURA_CLAYMORE_SPEED_DEFAULT_STARRY_NIGHT = 54, - AURA_CLAYMORE_SPEED_DEFAULT_QUICKSAND = 103, - + AURA_CLAYMORE_SPEED_MIN = 254, + AURA_CLAYMORE_SPEED_MAX = 0, + AURA_CLAYMORE_SPEED_DEFAULT_STATIC = 0, + AURA_CLAYMORE_SPEED_DEFAULT_BREATHING = 107, + AURA_CLAYMORE_SPEED_DEFAULT_COLOR_CYCLE = 121, + AURA_CLAYMORE_SPEED_DEFAULT_REACTIVE = 56, + AURA_CLAYMORE_SPEED_DEFAULT_WAVE = 50, + AURA_CLAYMORE_SPEED_DEFAULT_RIPPLE = 108, + AURA_CLAYMORE_SPEED_DEFAULT_STARRY_NIGHT = 54, + AURA_CLAYMORE_SPEED_DEFAULT_QUICKSAND = 103 }; class RGBController_AuraTUFKeyboard : public RGBController