/* Generated by typeshare 1.7.0 */ /** Represents the per-key raw USB packets */ export type UsbPackets = number[][]; /** * A `UsbPackets` contains all data to change the full set of keyboard * key colours individually. * * Each row of the internal array is a full HID packet that can be sent * to the keyboard EC. One row controls one group of keys, these keys are not * necessarily all on the same row of the keyboard, with some splitting between * two rows. */ export interface LedUsbPackets { /** The packet data used to send data to the USB keyboard */ usb_packets: UsbPackets; /** * Wether or not this packet collection is zoned. The determines which * starting bytes are used and what the indexing is for lightbar RGB * colours */ zoned: boolean; } export interface Colour { r: number; g: number; b: number; } /** Enum of modes that convert to the actual number required by a USB HID packet */ export enum AuraModeNum { Static = "Static", Breathe = "Breathe", Strobe = "Strobe", Rainbow = "Rainbow", Star = "Star", Rain = "Rain", Highlight = "Highlight", Laser = "Laser", Ripple = "Ripple", Pulse = "Pulse", Comet = "Comet", Flash = "Flash", } /** Base effects have no zoning, while multizone is 1-4 */ export enum AuraZone { /** Used if keyboard has no zones, or if setting all */ None = "None", /** Leftmost zone */ Key1 = "Key1", /** Zone after leftmost */ Key2 = "Key2", /** Zone second from right */ Key3 = "Key3", /** Rightmost zone */ Key4 = "Key4", /** Logo on the lid (or elsewhere?) */ Logo = "Logo", /** The left part of a lightbar (typically on the front of laptop) */ BarLeft = "BarLeft", /** The right part of a lightbar */ BarRight = "BarRight", } export enum Speed { Low = "Low", Med = "Med", High = "High", } /** * Used for Rainbow mode. * * Enum corresponds to the required integer value */ export enum Direction { Right = "Right", Left = "Left", Up = "Up", Down = "Down", } /** * Default factory modes structure. This easily converts to an USB HID packet * with: * ```rust * // let bytes: [u8; LED_MSG_LEN] = mode.into(); * ``` */ export interface AuraEffect { /** The effect type */ mode: AuraModeNum; /** `AuraZone::None` for no zone or zoneless keyboards */ zone: AuraZone; /** Primary colour for all modes */ colour1: Colour; /** Secondary colour in some modes like Breathing or Stars */ colour2: Colour; /** One of three speeds for modes that support speed (most that animate) */ speed: Speed; /** Up, down, left, right. Only Rainbow mode seems to use this */ direction: Direction; } /** The powerr zones this laptop supports */ export enum PowerZones { /** The logo on some laptop lids */ Logo = "Logo", /** The full keyboard (not zones) */ Keyboard = "Keyboard", /** The lightbar, typically on the front of the laptop */ Lightbar = "Lightbar", /** The leds that may be placed around the edge of the laptop lid */ Lid = "Lid", /** The led strip on the rear of some laptops */ RearGlow = "RearGlow", } export interface KbAuraPowerState { zone: PowerZones; boot: boolean; awake: boolean; sleep: boolean; shutdown: boolean; } /** * Track and control the Aura keyboard power state * * # Bits for newer 0x18c6, 0x19B6, 0x1a30, keyboard models * * | Byte 1 | Byte 2 | Byte 3 | Byte 4 | Label | * |--------|---------|---------|---------|----------| * |00000001| 00000000| 00000000| 00000000|boot_logo_| * |00000010| 00000000| 00000000| 00000000|boot_keyb_| * |00000100| 00000000| 00000000| 00000000|awake_logo| * |00001000| 00000000| 00000000| 00000000|awake_keyb| * |00010000| 00000000| 00000000| 00000000|sleep_logo| * |00100000| 00000000| 00000000| 00000000|sleep_keyb| * |01000000| 00000000| 00000000| 00000000|shut_logo_| * |10000000| 00000000| 00000000| 00000000|shut_keyb_| * |00000000| 00000010| 00000000| 00000000|boot_bar__| * |00000000| 00000100| 00000000| 00000000|awake_bar_| * |00000000| 00001000| 00000000| 00000000|sleep_bar_| * |00000000| 00010000| 00000000| 00000000|shut_bar__| * |00000000| 00000000| 00000001| 00000000|boot_lid__| * |00000000| 00000000| 00000010| 00000000|awkae_lid_| * |00000000| 00000000| 00000100| 00000000|sleep_lid_| * |00000000| 00000000| 00001000| 00000000|shut_lid__| * |00000000| 00000000| 00000000| 00000001|boot_rear_| * |00000000| 00000000| 00000000| 00000010|awake_rear| * |00000000| 00000000| 00000000| 00000100|sleep_rear| * |00000000| 00000000| 00000000| 00001000|shut_rear_| */ export interface AuraPower { keyboard: KbAuraPowerState; logo: KbAuraPowerState; lightbar: KbAuraPowerState; lid: KbAuraPowerState; rear_glow: KbAuraPowerState; } export enum AuraDevTuf { Boot = "Boot", Awake = "Awake", Sleep = "Sleep", Keyboard = "Keyboard", } /** * # Bits for older 0x1866 keyboard model * * Keybord and Lightbar require Awake, Boot and Sleep apply to both * Keybord and Lightbar regardless of if either are enabled (or Awake is * enabled) * * | Byte 1 | Byte 2 | Byte 3 | function | hex | * |------------|------------|------------|----------|----------| * | 0000, 0000 | 0000, 0000 | 0000, 0010 | Awake | 00,00,02 | * | 0000, 1000 | 0000, 0000 | 0000, 0000 | Keyboard | 08,00,00 | * | 0000, 0100 | 0000, 0101 | 0000, 0000 | Lightbar | 04,05,00 | * | 1100, 0011 | 0001, 0010 | 0000, 1001 | Boot/Sht | c3,12,09 | * | 0011, 0000 | 0000, 1000 | 0000, 0100 | Sleep | 30,08,04 | * | 1111, 1111 | 0001, 1111 | 0000, 1111 | all on | | */ export enum AuraDevRog1 { Awake = "Awake", Keyboard = "Keyboard", Lightbar = "Lightbar", Boot = "Boot", Sleep = "Sleep", } /** This struct is intended as a helper to pass args to generic dbus interface */ export interface AuraPowerDev { /** * TUF laptops use a similar style of control to the older ROG devices but * through WMI */ tuf: AuraDevTuf[]; /** * Pre-0x19b6 devices use a different smaller scheme to the newer ROG * devices */ old_rog: AuraDevRog1[]; /** ASUS standardised control scheme from 2020 onwards */ rog: AuraPower; } export enum LedBrightness { Off = "Off", Low = "Low", Med = "Med", High = "High", } export enum AuraDevice { Tuf = "Tuf", X1854 = "X1854", X1869 = "X1869", X1866 = "X1866", X18c6 = "X18c6", X19b6 = "X19b6", X1a30 = "X1a30", X1abe = "X1abe", Unknown = "Unknown", }