diff --git a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopController.cpp b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopController.cpp index aeed424a..d69d1d31 100644 --- a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopController.cpp +++ b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopController.cpp @@ -181,6 +181,15 @@ void AsusAuraCoreLaptopController::SetMode(uint8_t mode, uint8_t speed, uint8_t } } +void AsusAuraCoreLaptopController::SendInitDirectMode() +{ + uint8_t buffer[ASUSAURACORELAPTOP_WRITE_PACKET_SIZE] = { ASUSAURACORELAPTOP_REPORT_ID, ASUSAURACORELAPTOP_CMD_DIRECT }; + memset(&buffer[2], 0, ASUSAURACORELAPTOP_WRITE_PACKET_SIZE - 2); + + LOG_DEBUG("[%s] Resetting device for direct control", aura_core_laptop_device_list[device_index]->dmi_name.c_str()); + hid_send_feature_report(dev, buffer, ASUSAURACORELAPTOP_WRITE_PACKET_SIZE); +} + void AsusAuraCoreLaptopController::SetLedsDirect(std::vector colors) { /*---------------------------------------------------------*\ @@ -376,7 +385,7 @@ void AsusAuraCoreLaptopController::SetPowerConfigFromJSON() | With thanks to AsusCtl for helping to decipher the packet captures | | https://gitlab.com/asus-linux/asusctl/-/blob/main/rog-aura/src/usb.rs#L150 | \*-----------------------------------------------------------------------------*/ - bool flag_array[] = + bool flag_array[32] = { power_config[0].state, power_config[4].state, power_config[1].state, power_config[5].state, diff --git a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopController.h b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopController.h index daab5dae..0f3a0b20 100644 --- a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopController.h +++ b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopController.h @@ -120,6 +120,7 @@ public: void SetMode(uint8_t mode, uint8_t speed, uint8_t brightness, RGBColor color1, RGBColor color2, uint8_t random, uint8_t direction); void SetLedsDirect(std::vectorcolors); + void SendInitDirectMode(); private: hid_device* dev; uint16_t device_index; diff --git a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopDevices.cpp b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopDevices.cpp index c574d79a..87df230f 100644 --- a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopDevices.cpp +++ b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/AsusAuraCoreLaptopDevices.cpp @@ -39,6 +39,22 @@ std::vector aura_core_laptop_17_values = 126, 128, 129, 131, 135, 136, 136, 137, 159, 160, 161, 144, 145, }; +std::vector aura_core_laptop_18_values = +{ + /* ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 NULL NULL PAUS */ + 21, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 35, 36, 0, 0, 39, + /* BKTK 1 2 3 4 5 6 7 8 9 0 - = BSPC NULL NULL NULL NMLK NMDV NMTM NMMI */ + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 56, 0, 0, 0, 59, 60, 61, 62, + /* TAB Q W E R T Y U I O P [ ] \ NULL NULL NULL NM7 NM8 NM9 NMPL */ + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 0, 0, 0, 80, 81, 82, 83, + /* CPLK A S D F G H J K L ; " # ENTR NM4 NM5 NM6 */ + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 98, 101, 102, 103, + /* LSFT ISO\ Z X C V B N M , . / RSFT ARWU NM1 NM2 NM3 NMER */ + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 119, 121, 122, 123, 124, 125, + /* LCTL LWIN LALT SPC RALT RFNC RMNU RCTL ARWL ARWD ARWR NM0 NMPD */ + 126, 128, 129, 131, 135, 136, 136, 137, 141, 142, 143, 144, 145, +}; + /*-------------------------------------------------------------------------*\ | KEYMAPS | \*-------------------------------------------------------------------------*/ @@ -223,6 +239,74 @@ keyboard_keymap_overlay_values g733zm_layout } }; +keyboard_keymap_overlay_values g814jv_keyboard_layout +{ + KEYBOARD_SIZE_FULL, + { + aura_core_laptop_18_values, + { + /* Add more regional layout fixes here */ + } + }, + { + /*---------------------------------------------------------------------------------------------------------*\ + | Edit Keys | + | Zone, Row, Column, Value, Key, OpCode, | + \*---------------------------------------------------------------------------------------------------------*/ + { 0, 0, 2, 2, KEY_EN_MEDIA_VOLUME_DOWN, KEYBOARD_OPCODE_INSERT_ROW, }, // Insert Row and add Volume Down + { 0, 0, 3, 3, KEY_EN_MEDIA_VOLUME_UP, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Volume Up + { 0, 0, 4, 4, KEY_EN_MEDIA_MUTE, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Mute + { 0, 0, 5, 5, "Key: Fan", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "Fan" key + { 0, 0, 6, 6, "Key: ROG", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert "ROG" key + { 0, 6, 8, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar + { 0, 6, 8, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove part of Spacebar + { 0, 6, 1, 127, KEY_EN_LEFT_FUNCTION, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Left Fuction + { 0, 6, 11, 136, KEY_EN_PRINT_SCREEN, KEYBOARD_OPCODE_SWAP_ONLY, }, // Replace Right Fuction with PrtSc + { 0, 6, 12, 136, KEY_EN_RIGHT_WINDOWS, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Remove Right Win Key + { 0, 1, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 1, 14, 38, KEY_EN_DELETE, KEYBOARD_OPCODE_SWAP_ONLY, }, // Insert a Delete key + { 0, 1, 16, 40, KEY_EN_PRINT_SCREEN, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Print Screen key + { 0, 1, 17, 41, KEY_EN_HOME, KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert a Home key + { 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 2, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, + { 0, 3, 15, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_SWAP_ONLY, }, + { 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, // Numpad gap + { 0, 3, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 4, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 5, 12, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 5, 13, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 5, 14, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + { 0, 6, 15, 0, KEY_EN_UNUSED, KEYBOARD_OPCODE_REMOVE_SHIFT_LEFT, }, + } +}; + +keyboard_keymap_overlay_values g814jv_lightbar_layout +{ + KEYBOARD_SIZE_EMPTY, + { + { /* Values not set in empty keyboard */ }, + { + /* Add more regional layout fixes here */ + } + }, + { + /*---------------------------------------------------------------------------------------------------------*\ + | Edit Keys | + | Zone, Row, Column, Value, Key, OpCode, | + \*---------------------------------------------------------------------------------------------------------*/ + { 0, 0, 0, 173, "Lightbar L1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L1 + { 0, 0, 1, 172, "Lightbar L2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar L2 + { 0, 0, 2, 170, "Lightbar R2", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2 + { 0, 0, 3, 169, "Lightbar R1", KEYBOARD_OPCODE_INSERT_SHIFT_RIGHT, }, // Insert Lightbar R2 + } +}; + + /*-------------------------------------------------------------------------*\ | AURA CORE LAPTOP DEVICES | \*-------------------------------------------------------------------------*/ @@ -290,6 +374,38 @@ static const aura_core_laptop_device g713rw_device = nullptr } }; +/*-------------------------------------------------------------*\ +| ASUS ROG Strix G18 (G814JV) | +| | +| Zone "Keyboard" | +| Matrix | +| 7 Rows, 16 Columns | +\*-------------------------------------------------------------*/ + +static const aura_core_laptop_zone g814rw_keyboard_zone = +{ + ZONE_EN_KEYBOARD, + &g814jv_keyboard_layout +}; + +static const aura_core_laptop_zone g814jv_lightbar_zone = +{ + "Lightbar", + &g814jv_lightbar_layout +}; + +static const aura_core_laptop_device g814jv_device = +{ + "G814JV", + { + &g814rw_keyboard_zone, + &g814jv_lightbar_zone, + nullptr, + nullptr, + nullptr, + nullptr + } +}; /*-------------------------------------------------------------------------*\ | DEVICE MASTER LIST | @@ -301,6 +417,7 @@ const aura_core_laptop_device* aura_core_laptop_device_list_data[] = \*-----------------------------------------------------------------*/ &g533zm_device, &g713rw_device, + &g814jv_device, }; const unsigned int AURA_CORE_LAPTOP_DEVICE_COUNT = (sizeof(aura_core_laptop_device_list_data) / sizeof(aura_core_laptop_device_list_data[ 0 ])); diff --git a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/RGBController_AsusAuraCoreLaptop.cpp b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/RGBController_AsusAuraCoreLaptop.cpp index 0ad2d67b..76f8bbfc 100644 --- a/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/RGBController_AsusAuraCoreLaptop.cpp +++ b/Controllers/AsusAuraCoreController/AsusAuraCoreLaptopController/RGBController_AsusAuraCoreLaptop.cpp @@ -27,6 +27,11 @@ * Awake (Normal Usage) * Sleeping * Shutdown / Power Off + + MatrixMaps can be found in ArmouryCrate (it needs a chance to download device data) + Default path is: + C:\ProgramData\ASUS\ROG Live Service\DeviceContent\\.csv + (Model name is the code like G814JV - can be found in the error in logs) \*-------------------------------------------------------------------*/ RGBController_AsusAuraCoreLaptop::RGBController_AsusAuraCoreLaptop(AsusAuraCoreLaptopController *controller_ptr) @@ -428,6 +433,7 @@ void RGBController_AsusAuraCoreLaptop::DeviceUpdateMode() if(set_mode.value == ASUSAURACORELAPTOP_MODE_DIRECT) { + controller->SendInitDirectMode(); return; } uint8_t random = (set_mode.color_mode == MODE_COLORS_RANDOM) ? 0xFF : 0;