mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Support for G512LU
This commit is contained in:
@@ -15,6 +15,7 @@ pub const PULSE: u8 = 0x0a;
|
|||||||
pub const COMET: u8 = 0x0b;
|
pub const COMET: u8 = 0x0b;
|
||||||
pub const FLASH: u8 = 0x0c;
|
pub const FLASH: u8 = 0x0c;
|
||||||
pub const MULTISTATIC: u8 = 0x0d;
|
pub const MULTISTATIC: u8 = 0x0d;
|
||||||
|
pub const RGB: u8 = 0xf0;
|
||||||
|
|
||||||
#[derive(Clone, Deserialize, Serialize)]
|
#[derive(Clone, Deserialize, Serialize)]
|
||||||
pub struct Colour(pub u8, pub u8, pub u8);
|
pub struct Colour(pub u8, pub u8, pub u8);
|
||||||
@@ -238,7 +239,30 @@ impl From<&AuraModes> for u8 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Exists to convert back from correct bytes
|
impl From<&AuraModes> for &str {
|
||||||
|
fn from(mode: &AuraModes) -> Self {
|
||||||
|
match mode {
|
||||||
|
AuraModes::Stable(_) => "Static",
|
||||||
|
AuraModes::Breathe(_) => "Breathing",
|
||||||
|
AuraModes::Strobe(_) => "Strobing",
|
||||||
|
AuraModes::Rainbow(_) => "Rainbow",
|
||||||
|
AuraModes::Star(_) => "Stars",
|
||||||
|
AuraModes::Rain(_) => "Rain",
|
||||||
|
AuraModes::Highlight(_) => "Keypress Highlight",
|
||||||
|
AuraModes::Laser(_) => "Keypress Laser",
|
||||||
|
AuraModes::Ripple(_) => "Keypress Ripple",
|
||||||
|
AuraModes::Pulse(_) => "Pulse",
|
||||||
|
AuraModes::Comet(_) => "Comet",
|
||||||
|
AuraModes::Flash(_) => "Flash",
|
||||||
|
AuraModes::MultiStatic(_) => "4-Zone Static Colours",
|
||||||
|
AuraModes::RGB(_) => "RGB per-key",
|
||||||
|
_ => panic!("Invalid mode"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Exists to convert back from correct bytes. RGB byte intentionally left off as it
|
||||||
|
/// does not correspond to an actual pre-set mode, nor does brightness.
|
||||||
impl From<u8> for AuraModes {
|
impl From<u8> for AuraModes {
|
||||||
fn from(byte: u8) -> Self {
|
fn from(byte: u8) -> Self {
|
||||||
match byte {
|
match byte {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use crate::{config::Config, rogcore::RogCore};
|
|||||||
use rog_client::{
|
use rog_client::{
|
||||||
aura_modes::{
|
aura_modes::{
|
||||||
AuraModes, BREATHING, COMET, FLASH, HIGHLIGHT, LASER, MULTISTATIC, PULSE, RAIN, RAINBOW,
|
AuraModes, BREATHING, COMET, FLASH, HIGHLIGHT, LASER, MULTISTATIC, PULSE, RAIN, RAINBOW,
|
||||||
RIPPLE, SINGLE, STAR, STROBE,
|
RGB, RIPPLE, SINGLE, STAR, STROBE,
|
||||||
},
|
},
|
||||||
error::AuraError,
|
error::AuraError,
|
||||||
};
|
};
|
||||||
@@ -10,6 +10,8 @@ use rog_client::{
|
|||||||
use crate::virt_device::ConsumerKeys;
|
use crate::virt_device::ConsumerKeys;
|
||||||
use log::{info, warn};
|
use log::{info, warn};
|
||||||
|
|
||||||
|
static HELP_ADDRESS: &str = "https://github.com/flukejones/rog-core";
|
||||||
|
|
||||||
pub(crate) fn match_laptop() -> LaptopBase {
|
pub(crate) fn match_laptop() -> LaptopBase {
|
||||||
for device in rusb::devices().unwrap().iter() {
|
for device in rusb::devices().unwrap().iter() {
|
||||||
let device_desc = device.device_descriptor().unwrap();
|
let device_desc = device.device_descriptor().unwrap();
|
||||||
@@ -74,20 +76,36 @@ fn choose_1866_device(prod: u16) -> LaptopBase {
|
|||||||
} else if board_name.starts_with("GX502") {
|
} else if board_name.starts_with("GX502") {
|
||||||
laptop.supported_modes = vec![
|
laptop.supported_modes = vec![
|
||||||
SINGLE, BREATHING, STROBE, RAINBOW, STAR, RAIN, HIGHLIGHT, LASER, RIPPLE, PULSE, COMET,
|
SINGLE, BREATHING, STROBE, RAINBOW, STAR, RAIN, HIGHLIGHT, LASER, RIPPLE, PULSE, COMET,
|
||||||
FLASH,
|
FLASH, RGB,
|
||||||
];
|
];
|
||||||
// GM501
|
// G512LI & G712LI has 1 RGB zone which means per-key effect might work
|
||||||
} else if board_name.starts_with("GM501") {
|
// TODO: add specific supported mode for per-key effect
|
||||||
laptop.supported_modes = vec![SINGLE, BREATHING, STROBE, RAINBOW];
|
} else if board_name.starts_with("G512LI") || board_name.starts_with("G712LI") {
|
||||||
// GX531, G531
|
|
||||||
} else if board_name.starts_with("GX531") || board_name.starts_with("G531") {
|
|
||||||
laptop.supported_modes = vec![SINGLE, BREATHING, STROBE, RAINBOW, PULSE];
|
laptop.supported_modes = vec![SINGLE, BREATHING, STROBE, RAINBOW, PULSE];
|
||||||
// G712
|
// GM501, GX531, G531, G512, G712 have 4-zone RGB
|
||||||
} else if board_name.starts_with("G712") {
|
} else if board_name.starts_with("GM501")
|
||||||
|
|| board_name.starts_with("G512")
|
||||||
|
|| board_name.starts_with("G712")
|
||||||
|
|| board_name.starts_with("GX531")
|
||||||
|
|| board_name.starts_with("G531")
|
||||||
|
{
|
||||||
laptop.supported_modes = vec![SINGLE, BREATHING, STROBE, RAINBOW, PULSE, MULTISTATIC];
|
laptop.supported_modes = vec![SINGLE, BREATHING, STROBE, RAINBOW, PULSE, MULTISTATIC];
|
||||||
} else {
|
} else {
|
||||||
panic!(
|
panic!(
|
||||||
"Unsupported laptop, please request support at\nhttps://github.com/flukejones/rog-core"
|
"Unsupported laptop, please request support at {}",
|
||||||
|
HELP_ADDRESS
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if !laptop.supported_modes.is_empty() {
|
||||||
|
info!("Supported Keyboard LED modes are:");
|
||||||
|
for mode in &laptop.supported_modes {
|
||||||
|
let mode = <&str>::from(&<AuraModes>::from(*mode));
|
||||||
|
info!("- {}", mode);
|
||||||
|
}
|
||||||
|
info!(
|
||||||
|
"If these modes are incorrect or missing please request support at {}",
|
||||||
|
HELP_ADDRESS
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user