/*---------------------------------------------------------*\ | AsusAuraTUFKeyboardController.h | | | | Driver for ASUS Aura TUF keyboard | | | | Mola19 03 Mar 2021 | | | | This file is part of the OpenRGB project | | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ #pragma once #include #include #include #include "RGBController.h" #include "AsusAuraTUFKeyboardLayouts.h" enum { AURA_KEYBOARD_MODE_STATIC = 0, AURA_KEYBOARD_MODE_BREATHING = 1, AURA_KEYBOARD_MODE_COLOR_CYCLE = 2, AURA_KEYBOARD_MODE_REACTIVE = 3, AURA_KEYBOARD_MODE_WAVE = 4, AURA_KEYBOARD_MODE_RIPPLE = 5, AURA_KEYBOARD_MODE_STARRY_NIGHT = 6, AURA_KEYBOARD_MODE_QUICKSAND = 7, AURA_KEYBOARD_MODE_CURRENT = 8, AURA_KEYBOARD_MODE_RAIN_DROP = 9, AURA_KEYBOARD_MODE_DIRECT = 15, }; enum { AURA_ROG_AZOTH_USB_PID = 0x1A83, AURA_ROG_AZOTH_2_4_PID = 0x1A85, AURA_ROG_CLAYMORE_PID = 0x184D, AURA_ROG_FALCHION_WIRED_PID = 0x193C, AURA_ROG_FALCHION_WIRELESS_PID = 0x193E, AURA_ROG_STRIX_FLARE_PID = 0x1875, AURA_ROG_STRIX_FLARE_PNK_LTD_PID = 0x18CF, AURA_ROG_STRIX_FLARE_COD_BO4_PID = 0x18AF, AURA_ROG_STRIX_FLARE_II_PID = 0x19FE, AURA_ROG_STRIX_FLARE_II_ANIMATE_PID = 0x19FC, AURA_ROG_STRIX_SCOPE_PID = 0x18F8, AURA_ROG_STRIX_SCOPE_RX_PID = 0x1951, AURA_ROG_STRIX_SCOPE_RX_EVA_02_PID = 0x1B12, AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_USB_PID = 0x19F6, AURA_ROG_STRIX_SCOPE_NX_WIRELESS_DELUXE_2_4_PID = 0x19F8, AURA_ROG_STRIX_SCOPE_II_PID = 0x1AB3, AURA_ROG_STRIX_SCOPE_II_RX_PID = 0x1AB5, AURA_ROG_STRIX_SCOPE_II_96_WIRELESS_USB_PID = 0x1AAE, AURA_ROG_STRIX_SCOPE_II_96_RX_WIRELESS_USB_PID = 0x1B78, AURA_TUF_K1_GAMING_PID = 0x1945, AURA_TUF_K3_GAMING_PID = 0x194B, AURA_TUF_K3_GAMING_GEN_II_PID = 0x1B30, AURA_TUF_K5_GAMING_PID = 0x1899, AURA_TUF_K7_GAMING_PID = 0x18AA, AURA_TUF_K3_GENII_MIKU_EDITION_PID = 0x1C5E, }; struct led_color { unsigned int value; RGBColor color; }; class AuraTUFKeyboardController { public: AuraTUFKeyboardController(hid_device* dev_handle, const char* path, uint16_t pid, unsigned short version, std::string dev_name); ~AuraTUFKeyboardController(); std::string GetDeviceLocation(); std::string GetName(); std::string GetSerialString(); std::string GetVersion(); int GetLayout(); int GetNumpadLocation(); void SaveMode(); void AllowRemoteControl(unsigned char type); void UpdateSingleLed ( int led, unsigned char red, unsigned char green, unsigned char blue ); void UpdateLeds ( std::vector colors ); void UpdateK1Wave ( std::vector colors, unsigned char direction, unsigned char speed, unsigned char brightness ); void UpdateScopeIIRainbowRipple ( unsigned char mode, std::vector colors, unsigned char direction, unsigned char color_mode, unsigned char speed, unsigned char brightness ); void UpdateScopeIIQuicksand ( std::vector colors, unsigned char direction, unsigned char color_mode, unsigned char speed, unsigned char brightness ); void UpdateDevice ( unsigned char mode, std::vector colors, unsigned char direction, unsigned char color_mode, unsigned char speed, unsigned char brightness ); void UpdateQuicksandColors(std::vector colors); void UpdateMode(unsigned char mode); void AwaitResponse(int ms); void ClearResponses(); uint16_t device_pid; bool is_per_led_keyboard; private: hid_device* dev; std::string location; std::string name; unsigned short rev_version; };