From f8624c895431aa63f903f9cb6350fdaf4b32de16 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 20 Jan 2024 15:55:04 +0100 Subject: [PATCH] Miniled / Multizone Toggle for 2024 models https://github.com/seerge/g-helper/issues/1957 --- app/AsusACPI.cs | 4 +++- app/Display/ScreenControl.cs | 35 +++++++++++++++++++++++++++++++---- app/Settings.cs | 12 +++++++++++- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index b1b638b4..2b95bec0 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -72,8 +72,10 @@ public class AsusACPI public const uint GPUMuxVivo = 0x00090026; public const uint BatteryLimit = 0x00120057; + public const uint ScreenOverdrive = 0x00050019; - public const uint ScreenMiniled = 0x0005001E; + public const uint ScreenMiniled1 = 0x0005001E; + public const uint ScreenMiniled2 = 0x0005002E; public const uint DevsCPUFan = 0x00110022; public const uint DevsGPUFan = 0x00110023; diff --git a/app/Display/ScreenControl.cs b/app/Display/ScreenControl.cs index d0ff4ad9..da5a40a0 100644 --- a/app/Display/ScreenControl.cs +++ b/app/Display/ScreenControl.cs @@ -49,8 +49,10 @@ namespace GHelper.Display if (miniled >= 0) { - Program.acpi.DeviceSet(AsusACPI.ScreenMiniled, miniled, "Miniled"); - Debug.WriteLine("Miniled " + miniled); + if (Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1) >= 0) + Program.acpi.DeviceSet(AsusACPI.ScreenMiniled1, miniled, "Miniled1"); + else + Program.acpi.DeviceSet(AsusACPI.ScreenMiniled2, miniled, "Miniled2"); } InitScreen(); @@ -59,7 +61,26 @@ namespace GHelper.Display public int ToogleMiniled() { - int miniled = (Program.acpi.DeviceGet(AsusACPI.ScreenMiniled) == 1) ? 0 : 1; + int miniled1 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1); + int miniled2 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled2); + + Logger.WriteLine($"MiniledToggle: {miniled1} {miniled2}"); + + int miniled; + + if (miniled1 >= 0) + { + miniled = (miniled1 == 1) ? 0 : 1; + } else + { + switch (miniled2) + { + case 1: miniled = 2; break; + case 2: miniled = 0; break; + default: miniled = 1; break; + } + } + AppConfig.Set("miniled", miniled); SetScreen(-1, -1, miniled); return miniled; @@ -76,7 +97,13 @@ namespace GHelper.Display bool overdriveSetting = !AppConfig.Is("no_overdrive"); int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive); - int miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled); + + int miniled1 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1); + int miniled2 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled2); + + Logger.WriteLine($"Miniled: {miniled1} {miniled2}"); + + int miniled = (miniled1 >= 0) ? miniled1 : miniled2; bool hdr = false; diff --git a/app/Settings.cs b/app/Settings.cs index c5645950..1e2ce33a 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -970,7 +970,17 @@ namespace GHelper if (miniled >= 0) { - buttonMiniled.Activated = (miniled == 1) || hdr; + if (miniled == 2) + { + buttonMiniled.Text = Properties.Strings.Multizone + " Strong"; + buttonMiniled.BorderColor = colorStandard; + } else + { + buttonMiniled.Text = Properties.Strings.Multizone; + buttonMiniled.BorderColor = colorTurbo; + } + + buttonMiniled.Activated = (miniled > 0) || hdr; buttonMiniled.Enabled = !hdr; } else