mirror of
https://gitlab.com/asus-linux/asusctl.git
synced 2026-02-06 00:15:04 +01:00
Support Rog Ally LED modes (basic)
This commit is contained in:
@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
### Added
|
### Added
|
||||||
- Support for G733PZ LED modes
|
- Support for G733PZ LED modes
|
||||||
- Support for G713RC LED modes
|
- Support for G713RC LED modes
|
||||||
|
- Support Rog Ally LED modes (basic)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Fix loading of fan curves from stored settings
|
- Fix loading of fan curves from stored settings
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ notify-rust = { git = "https://github.com/flukejones/notify-rust.git", default-f
|
|||||||
[profile.release]
|
[profile.release]
|
||||||
# thin = 57s, asusd = 9.0M
|
# thin = 57s, asusd = 9.0M
|
||||||
# fat = 72s, asusd = 6.4M
|
# fat = 72s, asusd = 6.4M
|
||||||
lto = "fat"
|
#lto = "fat"
|
||||||
debug = false
|
debug = false
|
||||||
opt-level = 3
|
opt-level = 3
|
||||||
panic = "abort"
|
panic = "abort"
|
||||||
|
|||||||
2
Makefile
2
Makefile
@@ -134,6 +134,8 @@ introspect:
|
|||||||
|
|
||||||
build:
|
build:
|
||||||
ifeq ($(VENDORED),1)
|
ifeq ($(VENDORED),1)
|
||||||
|
cargo vendor-filterer --platform x86_64-unknown-linux-gnu vendor
|
||||||
|
#cargo vendor
|
||||||
@echo "version = $(VERSION)"
|
@echo "version = $(VERSION)"
|
||||||
tar pxf vendor_asusctl_$(VERSION).tar.xz
|
tar pxf vendor_asusctl_$(VERSION).tar.xz
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -131,17 +131,13 @@ fn do_parsed(
|
|||||||
if let Some(cmdlist) = CliStart::command_list() {
|
if let Some(cmdlist) = CliStart::command_list() {
|
||||||
let commands: Vec<String> = cmdlist.lines().map(|s| s.to_owned()).collect();
|
let commands: Vec<String> = cmdlist.lines().map(|s| s.to_owned()).collect();
|
||||||
for command in commands.iter().filter(|command| {
|
for command in commands.iter().filter(|command| {
|
||||||
if !matches!(
|
if !supported.keyboard_led.dev_id.is_old_style()
|
||||||
supported.keyboard_led.dev_id,
|
&& !supported.keyboard_led.dev_id.is_tuf_style()
|
||||||
AuraDevice::X1854
|
&& command.trim().starts_with("led-pow-1")
|
||||||
| AuraDevice::X1869
|
|
||||||
| AuraDevice::X1866
|
|
||||||
| AuraDevice::Tuf
|
|
||||||
) && command.trim().starts_with("led-pow-1")
|
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if supported.keyboard_led.dev_id != AuraDevice::X19b6
|
if !supported.keyboard_led.dev_id.is_new_style()
|
||||||
&& command.trim().starts_with("led-pow-2")
|
&& command.trim().starts_with("led-pow-2")
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
@@ -584,7 +580,7 @@ fn handle_led_power2(
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
if supported.dev_id != AuraDevice::X19b6 {
|
if !supported.dev_id.is_new_style() {
|
||||||
println!("This option applies only to keyboards with product ID 0x19b6");
|
println!("This option applies only to keyboards with product ID 0x19b6");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -143,9 +143,9 @@ impl StdConfigLoad for AuraConfig {}
|
|||||||
impl AuraConfig {
|
impl AuraConfig {
|
||||||
pub fn from_default_support(prod_id: AuraDevice, support_data: &LaptopLedData) -> Self {
|
pub fn from_default_support(prod_id: AuraDevice, support_data: &LaptopLedData) -> Self {
|
||||||
// create a default config here
|
// create a default config here
|
||||||
let enabled = if prod_id == AuraDevice::X19b6 {
|
let enabled = if prod_id.is_new_style() {
|
||||||
AuraPowerConfig::AuraDevRog2(AuraPower::new_all_on())
|
AuraPowerConfig::AuraDevRog2(AuraPower::new_all_on())
|
||||||
} else if prod_id == AuraDevice::Tuf {
|
} else if prod_id.is_tuf_style() {
|
||||||
AuraPowerConfig::AuraDevTuf(HashSet::from([
|
AuraPowerConfig::AuraDevTuf(HashSet::from([
|
||||||
AuraDevTuf::Awake,
|
AuraDevTuf::Awake,
|
||||||
AuraDevTuf::Boot,
|
AuraDevTuf::Boot,
|
||||||
|
|||||||
@@ -679,4 +679,12 @@
|
|||||||
advanced_type: None,
|
advanced_type: None,
|
||||||
power_zones: [Keyboard],
|
power_zones: [Keyboard],
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
board_name: "RC71L",
|
||||||
|
layout_name: "ga401q",
|
||||||
|
basic_modes: [Static, Breathe, Pulse],
|
||||||
|
basic_zones: [],
|
||||||
|
advanced_type: None,
|
||||||
|
power_zones: [Keyboard],
|
||||||
|
)
|
||||||
])
|
])
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use crate::{AdvancedAuraType, AuraModeNum, AuraZone};
|
|||||||
|
|
||||||
pub const ASUS_LED_MODE_CONF: &str = "/usr/share/asusd/aura_support.ron";
|
pub const ASUS_LED_MODE_CONF: &str = "/usr/share/asusd/aura_support.ron";
|
||||||
pub const ASUS_LED_MODE_USER_CONF: &str = "/etc/asusd/asusd_user_ledmodes.ron";
|
pub const ASUS_LED_MODE_USER_CONF: &str = "/etc/asusd/asusd_user_ledmodes.ron";
|
||||||
pub const ASUS_KEYBOARD_DEVICES: [AuraDevice; 7] = [
|
pub const ASUS_KEYBOARD_DEVICES: [AuraDevice; 8] = [
|
||||||
AuraDevice::Tuf,
|
AuraDevice::Tuf,
|
||||||
AuraDevice::X1854,
|
AuraDevice::X1854,
|
||||||
AuraDevice::X1869,
|
AuraDevice::X1869,
|
||||||
@@ -16,6 +16,7 @@ pub const ASUS_KEYBOARD_DEVICES: [AuraDevice; 7] = [
|
|||||||
AuraDevice::X18c6,
|
AuraDevice::X18c6,
|
||||||
AuraDevice::X19b6,
|
AuraDevice::X19b6,
|
||||||
AuraDevice::X1a30,
|
AuraDevice::X1a30,
|
||||||
|
AuraDevice::X1abe,
|
||||||
];
|
];
|
||||||
|
|
||||||
#[derive(Debug, Default, Clone, PartialEq, Eq, Deserialize, Serialize)]
|
#[derive(Debug, Default, Clone, PartialEq, Eq, Deserialize, Serialize)]
|
||||||
|
|||||||
@@ -37,9 +37,35 @@ pub enum AuraDevice {
|
|||||||
#[default]
|
#[default]
|
||||||
X19b6,
|
X19b6,
|
||||||
X1a30,
|
X1a30,
|
||||||
|
X1abe,
|
||||||
Unknown,
|
Unknown,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl AuraDevice {
|
||||||
|
pub fn is_tuf_style(&self) -> bool {
|
||||||
|
matches!(self, AuraDevice::Tuf)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_old_style(&self) -> bool {
|
||||||
|
!matches!(
|
||||||
|
self,
|
||||||
|
AuraDevice::Unknown
|
||||||
|
| AuraDevice::Tuf
|
||||||
|
| AuraDevice::X19b6
|
||||||
|
| AuraDevice::X18c6
|
||||||
|
| AuraDevice::X1a30
|
||||||
|
| AuraDevice::X1abe
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn is_new_style(&self) -> bool {
|
||||||
|
matches!(
|
||||||
|
self,
|
||||||
|
AuraDevice::X19b6 | AuraDevice::X18c6 | AuraDevice::X1a30 | AuraDevice::X1abe
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl From<AuraDevice> for &str {
|
impl From<AuraDevice> for &str {
|
||||||
fn from(a: AuraDevice) -> Self {
|
fn from(a: AuraDevice) -> Self {
|
||||||
match a {
|
match a {
|
||||||
@@ -50,6 +76,7 @@ impl From<AuraDevice> for &str {
|
|||||||
AuraDevice::X18c6 => "18c6",
|
AuraDevice::X18c6 => "18c6",
|
||||||
AuraDevice::X19b6 => "19b6",
|
AuraDevice::X19b6 => "19b6",
|
||||||
AuraDevice::X1a30 => "1a30",
|
AuraDevice::X1a30 => "1a30",
|
||||||
|
AuraDevice::X1abe => "1abe",
|
||||||
AuraDevice::Unknown => "unknown",
|
AuraDevice::Unknown => "unknown",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -65,6 +92,7 @@ impl From<&str> for AuraDevice {
|
|||||||
"1854" | "0x1854" => AuraDevice::X1854,
|
"1854" | "0x1854" => AuraDevice::X1854,
|
||||||
"19b6" | "0x19b6" => AuraDevice::X19b6,
|
"19b6" | "0x19b6" => AuraDevice::X19b6,
|
||||||
"1a30" | "0x1a30" => AuraDevice::X1a30,
|
"1a30" | "0x1a30" => AuraDevice::X1a30,
|
||||||
|
"1abe" | "0x1abe" => AuraDevice::X1abe,
|
||||||
_ => AuraDevice::Unknown,
|
_ => AuraDevice::Unknown,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -80,6 +108,7 @@ impl Debug for AuraDevice {
|
|||||||
Self::X18c6 => write!(f, "0x18c6"),
|
Self::X18c6 => write!(f, "0x18c6"),
|
||||||
Self::X19b6 => write!(f, "0x19B6"),
|
Self::X19b6 => write!(f, "0x19B6"),
|
||||||
Self::X1a30 => write!(f, "0x1A30"),
|
Self::X1a30 => write!(f, "0x1A30"),
|
||||||
|
Self::X1abe => write!(f, "0x1ABE"),
|
||||||
Self::Unknown => write!(f, "Unknown"),
|
Self::Unknown => write!(f, "Unknown"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ pub fn get_ipc_file() -> Result<File, crate::error::Error> {
|
|||||||
let fifo_path = tmp_dir.join("ipc.pipe");
|
let fifo_path = tmp_dir.join("ipc.pipe");
|
||||||
if let Err(e) = unistd::mkfifo(&fifo_path, stat::Mode::S_IRWXU) {
|
if let Err(e) = unistd::mkfifo(&fifo_path, stat::Mode::S_IRWXU) {
|
||||||
if !matches!(e, nix::errno::Errno::EEXIST) {
|
if !matches!(e, nix::errno::Errno::EEXIST) {
|
||||||
return Err(e)?;
|
Err(e)?
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(OpenOptions::new()
|
Ok(OpenOptions::new()
|
||||||
|
|||||||
@@ -8,15 +8,11 @@ use crate::system_state::SystemState;
|
|||||||
pub fn aura_power_group(supported: &SupportedFunctions, states: &mut SystemState, ui: &mut Ui) {
|
pub fn aura_power_group(supported: &SupportedFunctions, states: &mut SystemState, ui: &mut Ui) {
|
||||||
ui.heading("Keyboard LED power settings");
|
ui.heading("Keyboard LED power settings");
|
||||||
|
|
||||||
match supported.keyboard_led.dev_id {
|
if supported.keyboard_led.dev_id.is_old_style() || supported.keyboard_led.dev_id.is_tuf_style()
|
||||||
AuraDevice::X1854 | AuraDevice::X1869 | AuraDevice::X1866 => {
|
{
|
||||||
aura_power1(supported, states, ui);
|
aura_power1(supported, states, ui);
|
||||||
}
|
} else if supported.keyboard_led.dev_id.is_new_style() {
|
||||||
AuraDevice::X19b6 | AuraDevice::X18c6 | AuraDevice::X1a30 => {
|
aura_power2(supported, states, ui);
|
||||||
aura_power2(supported, states, ui)
|
|
||||||
}
|
|
||||||
AuraDevice::Tuf => aura_power1(supported, states, ui),
|
|
||||||
AuraDevice::Unknown => {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ pub fn read_attr_u8_array(device: &Device, attr_name: &str) -> Result<Vec<u8>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn write_attr_u8_array(device: &mut Device, attr: &str, values: &[u8]) -> Result<()> {
|
pub fn write_attr_u8_array(device: &mut Device, attr: &str, values: &[u8]) -> Result<()> {
|
||||||
|
#[allow(clippy::format_collect)]
|
||||||
let tmp: String = values.iter().map(|v| format!("{} ", v)).collect();
|
let tmp: String = values.iter().map(|v| format!("{} ", v)).collect();
|
||||||
let tmp = tmp.trim();
|
let tmp = tmp.trim();
|
||||||
device
|
device
|
||||||
@@ -102,7 +103,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn check() {
|
fn check() {
|
||||||
let data = [1, 2, 3, 4, 5];
|
let data = [1, 2, 3, 4, 5];
|
||||||
|
#[allow(clippy::format_collect)]
|
||||||
let tmp: String = data.iter().map(|v| format!("{} ", v)).collect();
|
let tmp: String = data.iter().map(|v| format!("{} ", v)).collect();
|
||||||
let tmp = tmp.trim();
|
let tmp = tmp.trim();
|
||||||
assert_eq!(tmp, "1 2 3 4 5");
|
assert_eq!(tmp, "1 2 3 4 5");
|
||||||
|
|||||||
Reference in New Issue
Block a user