From 03bff5185098a666ea05865b5d2e678cf105d3a2 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Fri, 16 Feb 2024 18:35:04 +0100 Subject: [PATCH 01/35] Improved 3rd (mid) fan detection https://github.com/seerge/g-helper/issues/2067 --- app/AsusACPI.cs | 15 ++++++++++++--- app/Fans.cs | 2 +- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index 763bcd99..a091e4cb 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -514,16 +514,25 @@ public class AsusACPI default: fan_mode = 0; break; } + byte[] result; + switch (device) { case AsusFan.GPU: - return DeviceGetBuffer(DevsGPUFanCurve, fan_mode); + result = DeviceGetBuffer(DevsGPUFanCurve, fan_mode); + break; case AsusFan.Mid: - return DeviceGetBuffer(DevsMidFanCurve, fan_mode); + result = DeviceGetBuffer(DevsMidFanCurve, fan_mode); + break; default: - return DeviceGetBuffer(DevsCPUFanCurve, fan_mode); + result = DeviceGetBuffer(DevsCPUFanCurve, fan_mode); + break; } + Logger.WriteLine($"GetFan {device} :" + BitConverter.ToString(result)); + + return result; + } public static bool IsInvalidCurve(byte[] curve) diff --git a/app/Fans.cs b/app/Fans.cs index cdc85c34..796a02c7 100644 --- a/app/Fans.cs +++ b/app/Fans.cs @@ -953,7 +953,7 @@ namespace GHelper int chartCount = 2; // Middle / system fan check - if (!AsusACPI.IsEmptyCurve(Program.acpi.GetFanCurve(AsusFan.Mid))) + if (!AsusACPI.IsEmptyCurve(Program.acpi.GetFanCurve(AsusFan.Mid)) || Program.acpi.GetFan(AsusFan.Mid) >= 0) { AppConfig.Set("mid_fan", 1); chartCount++; From 293b261b372b5cc0505b82351a4a171ee480504d Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 17 Feb 2024 11:34:04 +0100 Subject: [PATCH 02/35] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 7062ee0b..124984d1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,7 +4,7 @@ [![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total.svg?style=flat-square)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social)](https://GitHub.com/seerge/g-helper/stargazers/) Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat and unnecessary services. -Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, VivoBook and many more! +Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, VivoBook, Ally and many more! # [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip) From 970de2adefe26827dec249ff345c9c6818c43373 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 17 Feb 2024 16:10:24 +0100 Subject: [PATCH 03/35] New Crowdin updates (#2075) * New translations strings.resx (French) * New translations strings.resx (Chinese Traditional) --- app/Properties/Strings.fr.resx | 2 +- app/Properties/Strings.zh-TW.resx | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Properties/Strings.fr.resx b/app/Properties/Strings.fr.resx index 44970cb0..39dbe1b0 100644 --- a/app/Properties/Strings.fr.resx +++ b/app/Properties/Strings.fr.resx @@ -588,7 +588,7 @@ Voulez-vous continuer ? Overdrive - Mode Performance + Mode Périphériques diff --git a/app/Properties/Strings.zh-TW.resx b/app/Properties/Strings.zh-TW.resx index 6af81473..6584c9d1 100644 --- a/app/Properties/Strings.zh-TW.resx +++ b/app/Properties/Strings.zh-TW.resx @@ -145,7 +145,7 @@ 現在重新啟動嗎? - Ally Controller + Ally控制器 動畫速度 @@ -277,10 +277,10 @@ Binding - Primary + 主要 - Secondary + 次要 BIOS與驅動程式更新 @@ -313,7 +313,7 @@ Contrast - Controller + 控制器 CPU 加速 @@ -328,7 +328,7 @@ 預設 - Disable Controller + 停用控制器 禁用螢幕加速OD @@ -363,7 +363,7 @@ 電源設定 - Export Profile + 匯出設定檔 更多 @@ -441,7 +441,7 @@ Image Rotation - Import Profile + 匯入設定檔 按鍵綁定 @@ -531,7 +531,7 @@ 按鍵回應 - Import failed. Selected file is not a valid mouse profile or corrutpted. + 匯入失敗,所選檔案並非有效的滑鼠設定檔或該檔已毀損 響應高度(LOD) @@ -618,7 +618,7 @@ 退出 - Reset + 重設 有其他程式正在使用獨顯導致無法切換至節能模式. 是否讓G-Helper重新啟動獨顯? * 請自行評估風險 From 16e30598e9517cc0e2c5461ee68acec381d864f3 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 17 Feb 2024 18:17:32 +0100 Subject: [PATCH 04/35] New translations strings.resx (French) (#2076) --- app/Properties/Strings.fr.resx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Properties/Strings.fr.resx b/app/Properties/Strings.fr.resx index 39dbe1b0..d1663c71 100644 --- a/app/Properties/Strings.fr.resx +++ b/app/Properties/Strings.fr.resx @@ -456,10 +456,10 @@ Voulez-vous continuer ? Rétroéclairage du clavier - Clavier de l'ordinateur + Clavier - Écran de l'ordinateur + Écran Capot From c33edac4b41d708759778ad4c6a5fd362f3fac41 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 17 Feb 2024 18:29:32 +0100 Subject: [PATCH 05/35] Better error handling for missing display name https://github.com/seerge/g-helper/issues/2077 --- app/Display/ScreenInterrogatory.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/app/Display/ScreenInterrogatory.cs b/app/Display/ScreenInterrogatory.cs index 1840b27b..c285b354 100644 --- a/app/Display/ScreenInterrogatory.cs +++ b/app/Display/ScreenInterrogatory.cs @@ -339,7 +339,20 @@ namespace GHelper.Display for (var i = 0; i < modeCount; i++) if (displayModes[i].infoType == DISPLAYCONFIG_MODE_INFO_TYPE.DISPLAYCONFIG_MODE_INFO_TYPE_TARGET) - yield return DeviceName(displayModes[i].adapterId, displayModes[i].id); + { + DISPLAYCONFIG_TARGET_DEVICE_NAME? displayName = null; + try + { + displayName = DeviceName(displayModes[i].adapterId, displayModes[i].id); + + } catch (Exception e) + { + Logger.WriteLine(e.Message); + } + + if (displayName is not null) yield return (DISPLAYCONFIG_TARGET_DEVICE_NAME)displayName; + } + } From c82bc874cfe5c88a15c72642edaa5eb1c79b6e5c Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sun, 18 Feb 2024 19:19:55 +0100 Subject: [PATCH 06/35] Double WMI and hotkey fix for ancient models https://github.com/seerge/g-helper/issues/2081 --- app/AppConfig.cs | 6 ++++++ app/Input/InputDispatcher.cs | 1 + 2 files changed, 7 insertions(+) diff --git a/app/AppConfig.cs b/app/AppConfig.cs index fb9d65d1..45e5d2f9 100644 --- a/app/AppConfig.cs +++ b/app/AppConfig.cs @@ -399,11 +399,17 @@ public static class AppConfig return (ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G713RC") || ContainsModel("G513QM") || ContainsModel("G531G")) && !Is("per_key_rgb"); } + public static bool IsNoAirplaneMode() { return ContainsModel("FX506"); } + public static bool NoWMI() + { + return ContainsModel("GL704G"); + } + public static bool IsNoDirectRGB() { return ContainsModel("GA503") || ContainsModel("G533Q"); diff --git a/app/Input/InputDispatcher.cs b/app/Input/InputDispatcher.cs index eebe9e4d..8c58b2b5 100644 --- a/app/Input/InputDispatcher.cs +++ b/app/Input/InputDispatcher.cs @@ -890,6 +890,7 @@ namespace GHelper.Input if (e.NewEvent is null) return; int EventID = int.Parse(e.NewEvent["EventID"].ToString()); Logger.WriteLine("WMI event " + EventID); + if (AppConfig.NoWMI()) return; HandleEvent(EventID); } } From f10dee4e47f059a7bdae76dc8a1e2bcf47be623a Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sun, 18 Feb 2024 19:21:24 +0100 Subject: [PATCH 07/35] New translations strings.resx (French) (#2080) --- app/Properties/Strings.fr.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Properties/Strings.fr.resx b/app/Properties/Strings.fr.resx index d1663c71..fc6a13f6 100644 --- a/app/Properties/Strings.fr.resx +++ b/app/Properties/Strings.fr.resx @@ -588,7 +588,7 @@ Voulez-vous continuer ? Overdrive - Mode + Mode CPU Périphériques From 555a6f4ed738b8f76eb695928afba681b334e452 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 19 Feb 2024 20:00:15 +0100 Subject: [PATCH 08/35] New translations strings.resx (French) (#2085) --- app/Properties/Strings.fr.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Properties/Strings.fr.resx b/app/Properties/Strings.fr.resx index fc6a13f6..d1663c71 100644 --- a/app/Properties/Strings.fr.resx +++ b/app/Properties/Strings.fr.resx @@ -588,7 +588,7 @@ Voulez-vous continuer ? Overdrive - Mode CPU + Mode Périphériques From c24dac2e4f7fe531925ea06831e5bd779b66a61c Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Tue, 20 Feb 2024 19:06:14 +0100 Subject: [PATCH 09/35] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 124984d1..303d3c2e 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,7 @@ Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat and unnecessary services. Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, VivoBook, Ally and many more! -# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip) +# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/download/v0.154/GHelper.zip) - [FAQ](https://github.com/seerge/g-helper/wiki/FAQ) - [Setup and Requirements](https://github.com/seerge/g-helper/wiki/Requirements) From 4196ccf33f925d0c2c55045ed8ecc83580b70d42 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Wed, 21 Feb 2024 17:29:52 +0100 Subject: [PATCH 10/35] Minor tweaks --- app/AppConfig.cs | 14 ++++++++++---- app/Settings.cs | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/AppConfig.cs b/app/AppConfig.cs index 45e5d2f9..d1f0fac2 100644 --- a/app/AppConfig.cs +++ b/app/AppConfig.cs @@ -91,13 +91,19 @@ public static class AppConfig if (_model is null) { _model = ""; - using (var searcher = new ManagementObjectSearcher(@"Select * from Win32_ComputerSystem")) + try { - foreach (var process in searcher.Get()) + using (var searcher = new ManagementObjectSearcher(@"Select * from Win32_ComputerSystem")) { - _model = process["Model"].ToString(); - break; + foreach (var process in searcher.Get()) + { + _model = process["Model"].ToString(); + break; + } } + } catch (Exception ex) + { + Logger.WriteLine(ex.Message); } } diff --git a/app/Settings.cs b/app/Settings.cs index b5f122c1..3b14d100 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -218,7 +218,7 @@ namespace GHelper sliderBattery.ValueChanged += SliderBattery_ValueChanged; Program.trayIcon.MouseMove += TrayIcon_MouseMove; - sensorTimer = new System.Timers.Timer(1000); + sensorTimer = new System.Timers.Timer(AppConfig.Get("sensor_timer",1000)); sensorTimer.Elapsed += OnTimedEvent; sensorTimer.Enabled = true; From 4697c37cad2e1e2bd30c77063005cdb531abbd3b Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 24 Feb 2024 09:48:24 +0100 Subject: [PATCH 11/35] Ultimate mode tweaks --- app/AppConfig.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/AppConfig.cs b/app/AppConfig.cs index d1f0fac2..6835da91 100644 --- a/app/AppConfig.cs +++ b/app/AppConfig.cs @@ -463,7 +463,7 @@ public static class AppConfig public static bool NoAutoUltimate() { - return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617") || ContainsModel("G834"); + return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617") || ContainsModel("G834") || ContainsModel("GA403") || ContainsModel("GU605"); } From 034b46e557bb601b6f73fe84e46b49bccb72023a Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 24 Feb 2024 09:48:59 +0100 Subject: [PATCH 12/35] Update README.md --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 303d3c2e..124984d1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,7 @@ Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat and unnecessary services. Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, VivoBook, Ally and many more! -# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/download/v0.154/GHelper.zip) +# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip) - [FAQ](https://github.com/seerge/g-helper/wiki/FAQ) - [Setup and Requirements](https://github.com/seerge/g-helper/wiki/Requirements) From 285cd815090712bef883f806e31d324a3966fcd7 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 24 Feb 2024 11:41:41 +0100 Subject: [PATCH 13/35] Flicker-free dimming slider for OLED models (#2109) * Gamma Init * Cleanup * Show flicker-free dimming only on supported models * Gamma ramp tweaks * Gamma improvements * Stronger dimming * Added OLED model detection --- app/AppConfig.cs | 5 + app/Display/DisplayGammaRamp.cs | 112 ++++++++++++++++++++ app/Display/GammaRamp.cs | 56 ++++++++++ app/Display/ScreenControl.cs | 71 ++++++++++++- app/Display/ScreenNative.cs | 12 ++- app/Properties/Resources.Designer.cs | 10 ++ app/Properties/Resources.resx | 37 ++++--- app/Resources/icons8-brightness-32.png | Bin 0 -> 420 bytes app/Settings.Designer.cs | 137 +++++++++++++++++++++---- app/Settings.cs | 10 ++ 10 files changed, 408 insertions(+), 42 deletions(-) create mode 100644 app/Display/DisplayGammaRamp.cs create mode 100644 app/Display/GammaRamp.cs create mode 100644 app/Resources/icons8-brightness-32.png diff --git a/app/AppConfig.cs b/app/AppConfig.cs index 6835da91..509bc9e5 100644 --- a/app/AppConfig.cs +++ b/app/AppConfig.cs @@ -395,6 +395,11 @@ public static class AppConfig return ContainsModel("GA503") || IsSlash(); } + public static bool IsOLED() + { + return ContainsModel("OLED") || IsSlash() || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("K360") || ContainsModel("X150"); + } + public static bool IsStrix() { return ContainsModel("Strix") || ContainsModel("Scar") || ContainsModel("G703G"); diff --git a/app/Display/DisplayGammaRamp.cs b/app/Display/DisplayGammaRamp.cs new file mode 100644 index 00000000..ca150f6f --- /dev/null +++ b/app/Display/DisplayGammaRamp.cs @@ -0,0 +1,112 @@ +namespace GHelper.Display +{ + + public class DisplayGammaRamp + { + + public DisplayGammaRamp(ushort[] red, ushort[] green, ushort[] blue) + { + if (red?.Length != GammaRamp.DataPoints) + { + throw new ArgumentOutOfRangeException(nameof(red)); + } + + if (green?.Length != GammaRamp.DataPoints) + { + throw new ArgumentOutOfRangeException(nameof(green)); + } + + if (blue?.Length != GammaRamp.DataPoints) + { + throw new ArgumentOutOfRangeException(nameof(blue)); + } + + Red = red; + Green = green; + Blue = blue; + } + + public DisplayGammaRamp(double brightness = 1, double contrast = 1, double gamma = 1) + : this( + CalculateLUT(brightness, contrast, gamma), + CalculateLUT(brightness, contrast, gamma), + CalculateLUT(brightness, contrast, gamma) + ) + { + } + + public DisplayGammaRamp( + double redBrightness, + double redContrast, + double redGamma, + double greenBrightness, + double greenContrast, + double greenGamma, + double blueBrightness, + double blueContrast, + double blueGamma + ) + : this( + CalculateLUT(redBrightness, redContrast, redGamma), + CalculateLUT(greenBrightness, greenContrast, greenGamma), + CalculateLUT(blueBrightness, blueContrast, blueGamma) + ) + { + } + + internal DisplayGammaRamp(GammaRamp ramp) : + this(ramp.Red, ramp.Green, ramp.Blue) + { + } + public ushort[] Blue { get; } + public ushort[] Green { get; } + public ushort[] Red { get; } + private static ushort[] CalculateLUT(double brightness, double contrast, double gamma) + { + brightness = 0.5 + brightness / 2; + var result = new ushort[GammaRamp.DataPoints]; + for (var i = 0; i < result.Length; i++) + { + result[i] = (ushort)(brightness * ushort.MaxValue * i / (float)(result.Length - 1)); + } + return result; + } + + public bool IsOriginal() + { + int MaxRed = Red[Red.Length - 1]; + int MaxGreen = Green[Green.Length - 1]; + int MaxBlue = Blue[Blue.Length - 1]; + return (Math.Abs((MaxRed + MaxGreen + MaxBlue) / 3 - ushort.MaxValue) < 256); + } + + private static ushort[] Brightness(ushort[] data, double brightness) + { + var result = new ushort[GammaRamp.DataPoints]; + for (var i = 0; i < result.Length; i++) + { + if (brightness < 0.5) + result[i] = (ushort)(0.5 * ushort.MaxValue * Math.Pow((float)i/(result.Length - 1), 2 - brightness*2)); + else + result[i] = (ushort)(data[i] * brightness); + } + return result; + } + + internal GammaRamp AsBrightnessRamp(double brightness) + { + return new GammaRamp( + Brightness(Red, brightness), + Brightness(Green, brightness), + Brightness(Blue, brightness) + ); + } + + internal GammaRamp AsRamp() + { + return new GammaRamp(Red, Green, Blue); + } + + + } +} \ No newline at end of file diff --git a/app/Display/GammaRamp.cs b/app/Display/GammaRamp.cs new file mode 100644 index 00000000..0b1321db --- /dev/null +++ b/app/Display/GammaRamp.cs @@ -0,0 +1,56 @@ +using System.Runtime.InteropServices; + +namespace GHelper.Display +{ + + [StructLayout(LayoutKind.Sequential)] + internal struct GammaRamp + { + public const int DataPoints = 256; + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = DataPoints)] + public readonly ushort[] Red; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = DataPoints)] + public readonly ushort[] Green; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = DataPoints)] + public readonly ushort[] Blue; + + public GammaRamp(ushort[] red, ushort[] green, ushort[] blue) + { + if (red == null) + { + throw new ArgumentNullException(nameof(red)); + } + + if (green == null) + { + throw new ArgumentNullException(nameof(green)); + } + + if (blue == null) + { + throw new ArgumentNullException(nameof(blue)); + } + + if (red.Length != DataPoints) + { + throw new ArgumentOutOfRangeException(nameof(red)); + } + + if (green.Length != DataPoints) + { + throw new ArgumentOutOfRangeException(nameof(green)); + } + + if (blue.Length != DataPoints) + { + throw new ArgumentOutOfRangeException(nameof(blue)); + } + + Red = red; + Green = green; + Blue = blue; + } + } + +} \ No newline at end of file diff --git a/app/Display/ScreenControl.cs b/app/Display/ScreenControl.cs index 6331baaf..4220f4a4 100644 --- a/app/Display/ScreenControl.cs +++ b/app/Display/ScreenControl.cs @@ -1,4 +1,4 @@ -using System.Diagnostics; +using System.Runtime.InteropServices; namespace GHelper.Display { @@ -7,6 +7,8 @@ namespace GHelper.Display public const int MAX_REFRESH = 1000; + public static DisplayGammaRamp? gammaRamp; + public void AutoScreen(bool force = false) { if (force || AppConfig.Is("screen_auto")) @@ -22,6 +24,70 @@ namespace GHelper.Display } } + public void SaveGamma() + { + var screenName = ScreenNative.FindLaptopScreen(); + if (screenName is null) return; + + try + { + var handle = ScreenNative.CreateDC(screenName, screenName, null, IntPtr.Zero); + var gammaRamp = new GammaRamp(); + if (ScreenNative.GetDeviceGammaRamp(handle, ref gammaRamp)) + { + var gamma = new DisplayGammaRamp(gammaRamp); + Logger.WriteLine("Gamma R: " + string.Join("-", gamma.Red)); + Logger.WriteLine("Gamma G: " + string.Join("-", gamma.Green)); + Logger.WriteLine("Gamma B: " + string.Join("-", gamma.Blue)); + } + } + catch (Exception ex) + { + Logger.WriteLine(ex.ToString()); + } + } + + public void SetGamma(int brightness = 100) + { + var bright = Math.Round((float)brightness / 200 + 0.5, 2); + + var screenName = ScreenNative.FindLaptopScreen(); + if (screenName is null) return; + + try + { + var handle = ScreenNative.CreateDC(screenName, screenName, null, IntPtr.Zero); + if (gammaRamp is null) + { + var gammaDump = new GammaRamp(); + if (ScreenNative.GetDeviceGammaRamp(handle, ref gammaDump)) + { + gammaRamp = new DisplayGammaRamp(gammaDump); + Logger.WriteLine("Gamma R: " + string.Join("-", gammaRamp.Red)); + Logger.WriteLine("Gamma G: " + string.Join("-", gammaRamp.Green)); + Logger.WriteLine("Gamma B: " + string.Join("-", gammaRamp.Blue)); + } + } + + if (gammaRamp is null || !gammaRamp.IsOriginal()) + { + Logger.WriteLine("Default Gamma"); + gammaRamp = new DisplayGammaRamp(); + } + + var ramp = gammaRamp.AsBrightnessRamp(bright); + bool result = ScreenNative.SetDeviceGammaRamp(handle, ref ramp); + + Logger.WriteLine("Brightness " + bright.ToString() + ": " + result); + + } catch (Exception ex) + { + Logger.WriteLine(ex.ToString()); + } + + //ScreenBrightness.Set(60 + (int)(40 * bright)); + } + public void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1) { var laptopScreen = ScreenNative.FindLaptopScreen(true); @@ -71,7 +137,8 @@ namespace GHelper.Display if (miniled1 >= 0) { miniled = (miniled1 == 1) ? 0 : 1; - } else + } + else { switch (miniled2) { diff --git a/app/Display/ScreenNative.cs b/app/Display/ScreenNative.cs index 90cfdbf0..0b260fd3 100644 --- a/app/Display/ScreenNative.cs +++ b/app/Display/ScreenNative.cs @@ -32,6 +32,16 @@ namespace GHelper.Display } internal class ScreenNative { + + [DllImport("gdi32", CharSet = CharSet.Unicode)] + internal static extern IntPtr CreateDC(string driver, string device, string port, IntPtr deviceMode); + + [DllImport("gdi32")] + internal static extern bool SetDeviceGammaRamp(IntPtr dcHandle, ref GammaRamp ramp); + + [DllImport("gdi32")] + internal static extern bool GetDeviceGammaRamp(IntPtr dcHandle, ref GammaRamp ramp); + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] public struct DEVMODE { @@ -146,7 +156,7 @@ namespace GHelper.Display public const string defaultDevice = @"\\.\DISPLAY1"; - private static string? FindInternalName(bool log = false) + public static string? FindInternalName(bool log = false) { try { diff --git a/app/Properties/Resources.Designer.cs b/app/Properties/Resources.Designer.cs index 8ff78342..971b35c6 100644 --- a/app/Properties/Resources.Designer.cs +++ b/app/Properties/Resources.Designer.cs @@ -210,6 +210,16 @@ namespace GHelper.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icons8_brightness_32 { + get { + object obj = ResourceManager.GetObject("icons8-brightness-32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/app/Properties/Resources.resx b/app/Properties/Resources.resx index 7d0ca668..ea07c07c 100644 --- a/app/Properties/Resources.resx +++ b/app/Properties/Resources.resx @@ -136,6 +136,9 @@ ..\Resources\icons8-bicycle-48 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -163,9 +166,15 @@ ..\Resources\icons8-automation-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-settings-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\brightness-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\brightness-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\icons8-processor-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -187,15 +196,9 @@ ..\Resources\icons8-laptop-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\ally.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\icons8-remove-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-share-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\icons8-function-mac-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -229,14 +232,11 @@ ..\Resources\icons8-xbox-rt-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-controller-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\icons8-fan-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-settings-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-controller-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icons8-maus-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -250,8 +250,11 @@ ..\Resources\dot-ultimate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\brightness-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-heartbeat-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\ally.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\backlight-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -319,8 +322,8 @@ ..\Resources\icons8-software-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-share-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icons8-soonvibes-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -331,7 +334,7 @@ ..\Resources\icons8-charging-battery-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-heartbeat-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-brightness-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/app/Resources/icons8-brightness-32.png b/app/Resources/icons8-brightness-32.png new file mode 100644 index 0000000000000000000000000000000000000000..a1deb58f23c30a19b13c9d0de978aa0febe95a22 GIT binary patch literal 420 zcmV;V0bBlwP)pqYHGhrreI&v+R^?*w0u+rLxzy{bg@~^m+ zcl9?-tbAuPZ#*Z!5;(L7>)Zni>C+a=842)eA*}O7GvSS;hq&TARD38?>T94**=>k{ zO@O%K+E=_UD?8M{&ag$lQD{`Siy*F;ozkl`Doi69m^9-4(5nmvCJ_zXpE6K%kb;p# z%Fnh4>r=4Df82&KenfTO0fATq7 Date: Sat, 24 Feb 2024 11:44:35 +0100 Subject: [PATCH 14/35] Version bump --- app/GHelper.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/GHelper.csproj b/app/GHelper.csproj index 272440aa..56011b39 100644 --- a/app/GHelper.csproj +++ b/app/GHelper.csproj @@ -15,7 +15,7 @@ AnyCPU False True - 0.154 + 0.155 From 61cc54b709cb9816f940cdf95a0c040548fe77ca Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 24 Feb 2024 11:47:43 +0100 Subject: [PATCH 15/35] Update README.md --- docs/README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/README.md b/docs/README.md index 124984d1..74117d04 100644 --- a/docs/README.md +++ b/docs/README.md @@ -124,6 +124,14 @@ Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contributio - ``Ctrl + Shift + Alt + F20`` - Custom 2 (if exists) - [Custom keybindings / hotkeys](https://github.com/seerge/g-helper/wiki/Power-user-settings#custom-hotkey-actions) +### 🎮ROG Ally Bindings +- ``M + DPad Left / Right`` - Display Brightness +- ``M + DPad Up`` - Touch keyboard +- ``M + DPad Down`` - Show desktop +- ``M + Y`` - Toggle AMD overay +- ``M + X`` - Screenshot +- ``M + Right Stick Click`` - Controller Mode + ------------------ #### If you like the app you can make a Donation From 34d2273ff599188d469c8d3ed5e3e6981770f368 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 24 Feb 2024 12:02:43 +0100 Subject: [PATCH 16/35] LidClosed mode for Slash Lightning --- app/AnimeMatrix/AniMatrixControl.cs | 5 +++++ app/AnimeMatrix/SlashDevice.cs | 5 +++++ app/Settings.Designer.cs | 16 ++++++++++++++++ app/Settings.cs | 12 +++++++++++- 4 files changed, 37 insertions(+), 1 deletion(-) diff --git a/app/AnimeMatrix/AniMatrixControl.cs b/app/AnimeMatrix/AniMatrixControl.cs index b2b7033e..d5498911 100644 --- a/app/AnimeMatrix/AniMatrixControl.cs +++ b/app/AnimeMatrix/AniMatrixControl.cs @@ -56,6 +56,11 @@ namespace GHelper.AnimeMatrix if (deviceSlash is not null) SetSlash(wakeUp); } + public void SetLidMode() + { + if (deviceSlash is not null) deviceSlash.SetLidMode(AppConfig.Is("matrix_lid")); + } + public void SetSlash(bool wakeUp = false) { diff --git a/app/AnimeMatrix/SlashDevice.cs b/app/AnimeMatrix/SlashDevice.cs index 04d6eff5..bcc9216d 100644 --- a/app/AnimeMatrix/SlashDevice.cs +++ b/app/AnimeMatrix/SlashDevice.cs @@ -127,6 +127,11 @@ namespace GHelper.AnimeMatrix Set(Packet(0xD8, 0x01, 0x00, 0x01, status ? (byte)0x80 : (byte)0x00)); } + public void SetLidMode(bool status) + { + Set(Packet(0xD8, 0x00, 0x00, 0x02, 0xA5, status ? (byte)0x80 : (byte)0x00)); + } + public void Set(Packet packet) { _usbProvider?.Set(packet.Data); diff --git a/app/Settings.Designer.cs b/app/Settings.Designer.cs index 35d73cb1..f163fa43 100644 --- a/app/Settings.Designer.cs +++ b/app/Settings.Designer.cs @@ -126,6 +126,7 @@ namespace GHelper labelGamma = new Label(); pictureGamma = new PictureBox(); labelGammaTitle = new Label(); + checkMatrixLid = new CheckBox(); panelMatrix.SuspendLayout(); tableLayoutMatrix.SuspendLayout(); panelMatrixTitle.SuspendLayout(); @@ -174,6 +175,7 @@ namespace GHelper panelMatrix.AccessibleRole = AccessibleRole.Grouping; panelMatrix.AutoSize = true; panelMatrix.AutoSizeMode = AutoSizeMode.GrowAndShrink; + panelMatrix.Controls.Add(checkMatrixLid); panelMatrix.Controls.Add(tableLayoutMatrix); panelMatrix.Controls.Add(panelMatrixTitle); panelMatrix.Controls.Add(checkMatrix); @@ -1709,6 +1711,19 @@ namespace GHelper labelGammaTitle.TabIndex = 37; labelGammaTitle.Text = "Flicker-free Dimming"; // + // checkMatrixLid + // + checkMatrixLid.AutoSize = true; + checkMatrixLid.ForeColor = SystemColors.GrayText; + checkMatrixLid.Location = new Point(286, 126); + checkMatrixLid.Margin = new Padding(8, 4, 8, 4); + checkMatrixLid.Name = "checkMatrixLid"; + checkMatrixLid.Size = new Size(246, 36); + checkMatrixLid.TabIndex = 46; + checkMatrixLid.Text = "Enable on lid close"; + checkMatrixLid.UseVisualStyleBackColor = true; + checkMatrixLid.Visible = false; + // // SettingsForm // AutoScaleDimensions = new SizeF(192F, 192F); @@ -1896,5 +1911,6 @@ namespace GHelper private Label labelGamma; private PictureBox pictureGamma; private Label labelGammaTitle; + private CheckBox checkMatrixLid; } } diff --git a/app/Settings.cs b/app/Settings.cs index 3d4291ae..a7152889 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -701,6 +701,11 @@ namespace GHelper matrixControl.SetBatteryAuto(); } + private void CheckMatrixLid_CheckedChanged(object? sender, EventArgs e) + { + AppConfig.Set("matrix_lid", checkMatrixLid.Checked ? 1 : 0); + matrixControl.SetLidMode(); + } private void ButtonMatrix_Click(object? sender, EventArgs e) @@ -929,7 +934,8 @@ namespace GHelper for (int i = 1; i <= 5; i++) comboInterval.Items.Add($"Interval {i}s"); buttonMatrix.Visible = false; - } + checkMatrixLid.Visible = true; + } comboMatrix.SelectedIndex = Math.Min(AppConfig.Get("matrix_brightness", 0), comboMatrix.Items.Count - 1); comboMatrixRunning.SelectedIndex = Math.Min(AppConfig.Get("matrix_running", 0), comboMatrixRunning.Items.Count - 1); @@ -938,6 +944,10 @@ namespace GHelper checkMatrix.Checked = AppConfig.Is("matrix_auto"); checkMatrix.CheckedChanged += CheckMatrix_CheckedChanged; + checkMatrixLid.Checked = AppConfig.Is("matrix_lid"); + checkMatrixLid.CheckedChanged += CheckMatrixLid_CheckedChanged; + + } From 267662e15b540dc89764693215f0ebd8a415fc4b Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sat, 24 Feb 2024 18:56:32 +0100 Subject: [PATCH 17/35] Extended OLED models list --- app/AppConfig.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/AppConfig.cs b/app/AppConfig.cs index 509bc9e5..3a114f31 100644 --- a/app/AppConfig.cs +++ b/app/AppConfig.cs @@ -397,7 +397,7 @@ public static class AppConfig public static bool IsOLED() { - return ContainsModel("OLED") || IsSlash() || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("K360") || ContainsModel("X150"); + return ContainsModel("OLED") || IsSlash() || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150"); } public static bool IsStrix() From 4889f0277f0afd0a291f9aaaa4881175b7ec4ea8 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sun, 25 Feb 2024 11:24:02 +0100 Subject: [PATCH 18/35] Intel E/P Cores configuration --- app/AsusACPI.cs | 24 ++++- app/Extra.Designer.cs | 125 ++++++++++++++++++++++----- app/Extra.cs | 43 +++++++++ app/Properties/Resources.Designer.cs | 10 +++ app/Properties/Resources.resx | 35 ++++---- app/Resources/icons8-search-32.png | Bin 0 -> 448 bytes 6 files changed, 199 insertions(+), 38 deletions(-) create mode 100644 app/Resources/icons8-search-32.png diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index a091e4cb..1e955c7b 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -2,6 +2,7 @@ using GHelper.USB; using System.Management; using System.Runtime.InteropServices; +using static System.Runtime.InteropServices.JavaScript.JSType; public enum AsusFan { @@ -98,6 +99,9 @@ public class AsusACPI public const int PPT_APUC1 = 0x001200C1; // fPPT (fast boost limit) public const int PPT_GPUC2 = 0x001200C2; // NVIDIA GPU Temp Target (75.. 87 C) + public const uint CORES_CPU = 0x001200D2; // Intel E-core and P-core configuration in a format 0x0[E]0[P] + public const uint CORES_MAX = 0x001200D3; // Maximum Intel E-core and P-core availability + public const int APU_MEM = 0x000600C1; public const int TUF_KB_BRIGHTNESS = 0x00050021; @@ -141,7 +145,7 @@ public class AsusACPI public const int DefaultCPU = 80; public const int MinGPUBoost = 5; - public static int MaxGPUBoost = 25; + public static int MaxGPUBoost = 50; public const int MinGPUTemp = 75; public const int MaxGPUTemp = 87; @@ -674,6 +678,24 @@ public class AsusACPI } } + public (int, int) GetCores(bool max = false) + { + int value = Program.acpi.DeviceGet(max ? CORES_MAX : CORES_CPU); + //value = max ? 0x806 : 0x605; + + if (value < 0) return (-1, -1); + Logger.WriteLine("Cores" + (max ? "Max" : "") + ": 0x" + value.ToString("X4")); + + return ((value >> 8) & 0xFF, (value) & 0xFF); + } + + public void SetCores(int eCores, int pCores) + { + if (eCores < 0 || eCores > 16 || pCores < 0 || pCores > 16) return; + int value = (eCores << 8) | pCores; + Program.acpi.DeviceSet(CORES_CPU, value, "Cores (0x" + value.ToString("X4")+")"); + } + public string ScanRange() { int value; diff --git a/app/Extra.Designer.cs b/app/Extra.Designer.cs index 70a9d626..d65b07e8 100644 --- a/app/Extra.Designer.cs +++ b/app/Extra.Designer.cs @@ -99,6 +99,7 @@ namespace GHelper checkSleepLid = new CheckBox(); checkShutdownLid = new CheckBox(); panelSettingsHeader = new Panel(); + pictureScan = new PictureBox(); pictureLog = new PictureBox(); pictureSettings = new PictureBox(); labelSettings = new Label(); @@ -120,7 +121,11 @@ namespace GHelper comboAPU = new RComboBox(); pictureAPUMem = new PictureBox(); labelAPUMem = new Label(); - pictureScan = new PictureBox(); + panelCores = new Panel(); + comboCoresP = new RComboBox(); + comboCoresE = new RComboBox(); + pictureCores = new PictureBox(); + label1 = new Label(); panelServices.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureService).BeginInit(); panelBindingsHeader.SuspendLayout(); @@ -137,6 +142,7 @@ namespace GHelper panelXMG.SuspendLayout(); tableBacklight.SuspendLayout(); panelSettingsHeader.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pictureScan).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureLog).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureSettings).BeginInit(); panelSettings.SuspendLayout(); @@ -145,7 +151,8 @@ namespace GHelper ((System.ComponentModel.ISupportInitialize)pictureHibernate).BeginInit(); panelAPU.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureAPUMem).BeginInit(); - ((System.ComponentModel.ISupportInitialize)pictureScan).BeginInit(); + panelCores.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pictureCores).BeginInit(); SuspendLayout(); // // panelServices @@ -155,7 +162,7 @@ namespace GHelper panelServices.Controls.Add(labelServices); panelServices.Controls.Add(buttonServices); panelServices.Dock = DockStyle.Top; - panelServices.Location = new Point(15, 1378); + panelServices.Location = new Point(15, 1436); panelServices.Name = "panelServices"; panelServices.Size = new Size(983, 75); panelServices.TabIndex = 5; @@ -1016,6 +1023,20 @@ namespace GHelper panelSettingsHeader.Size = new Size(983, 51); panelSettingsHeader.TabIndex = 45; // + // pictureScan + // + pictureScan.Anchor = AnchorStyles.Top | AnchorStyles.Right; + pictureScan.BackgroundImage = Resources.icons8_search_32; + pictureScan.BackgroundImageLayout = ImageLayout.Zoom; + pictureScan.Cursor = Cursors.Hand; + pictureScan.Location = new Point(891, 11); + pictureScan.Margin = new Padding(4, 3, 4, 3); + pictureScan.Name = "pictureScan"; + pictureScan.Size = new Size(32, 32); + pictureScan.TabIndex = 13; + pictureScan.TabStop = false; + pictureScan.Visible = false; + // // pictureLog // pictureLog.Anchor = AnchorStyles.Top | AnchorStyles.Right; @@ -1063,7 +1084,7 @@ namespace GHelper panelSettings.Controls.Add(checkGpuApps); panelSettings.Controls.Add(checkGPUFix); panelSettings.Dock = DockStyle.Top; - panelSettings.Location = new Point(15, 978); + panelSettings.Location = new Point(15, 1036); panelSettings.Name = "panelSettings"; panelSettings.Padding = new Padding(20, 5, 11, 5); panelSettings.Size = new Size(983, 346); @@ -1178,7 +1199,7 @@ namespace GHelper panelPower.Controls.Add(labelHibernateAfter); panelPower.Controls.Add(pictureHibernate); panelPower.Dock = DockStyle.Top; - panelPower.Location = new Point(15, 1324); + panelPower.Location = new Point(15, 1382); panelPower.Name = "panelPower"; panelPower.Size = new Size(983, 54); panelPower.TabIndex = 4; @@ -1221,7 +1242,7 @@ namespace GHelper panelAPU.Controls.Add(pictureAPUMem); panelAPU.Controls.Add(labelAPUMem); panelAPU.Dock = DockStyle.Top; - panelAPU.Location = new Point(15, 921); + panelAPU.Location = new Point(15, 979); panelAPU.Name = "panelAPU"; panelAPU.Padding = new Padding(11, 5, 11, 0); panelAPU.Size = new Size(983, 57); @@ -1239,10 +1260,10 @@ namespace GHelper comboAPU.FormattingEnabled = true; comboAPU.ItemHeight = 32; comboAPU.Items.AddRange(new object[] { "Auto", "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G" }); - comboAPU.Location = new Point(663, 8); + comboAPU.Location = new Point(647, 8); comboAPU.Margin = new Padding(4, 12, 4, 9); comboAPU.Name = "comboAPU"; - comboAPU.Size = new Size(293, 40); + comboAPU.Size = new Size(309, 40); comboAPU.TabIndex = 12; comboAPU.TabStop = false; // @@ -1266,19 +1287,72 @@ namespace GHelper labelAPUMem.TabIndex = 0; labelAPUMem.Text = "Memory Assigned to GPU"; // - // pictureScan + // panelCores // - pictureScan.Anchor = AnchorStyles.Top | AnchorStyles.Right; - pictureScan.BackgroundImage = Resources.icons8_heartbeat_32; - pictureScan.BackgroundImageLayout = ImageLayout.Zoom; - pictureScan.Cursor = Cursors.Hand; - pictureScan.Location = new Point(891, 11); - pictureScan.Margin = new Padding(4, 3, 4, 3); - pictureScan.Name = "pictureScan"; - pictureScan.Size = new Size(32, 32); - pictureScan.TabIndex = 13; - pictureScan.TabStop = false; - pictureScan.Visible = false; + panelCores.AutoSize = true; + panelCores.Controls.Add(comboCoresP); + panelCores.Controls.Add(comboCoresE); + panelCores.Controls.Add(pictureCores); + panelCores.Controls.Add(label1); + panelCores.Dock = DockStyle.Top; + panelCores.Location = new Point(15, 921); + panelCores.Name = "panelCores"; + panelCores.Padding = new Padding(11, 5, 11, 0); + panelCores.Size = new Size(983, 58); + panelCores.TabIndex = 47; + panelCores.Visible = false; + // + // comboCoresP + // + comboCoresP.Anchor = AnchorStyles.Top | AnchorStyles.Right; + comboCoresP.BorderColor = Color.White; + comboCoresP.ButtonColor = SystemColors.ControlLight; + comboCoresP.FlatStyle = FlatStyle.Flat; + comboCoresP.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + comboCoresP.FormattingEnabled = true; + comboCoresP.ItemHeight = 32; + comboCoresP.Location = new Point(805, 9); + comboCoresP.Margin = new Padding(4, 12, 4, 9); + comboCoresP.Name = "comboCoresP"; + comboCoresP.Size = new Size(150, 40); + comboCoresP.TabIndex = 13; + comboCoresP.TabStop = false; + // + // comboCoresE + // + comboCoresE.Anchor = AnchorStyles.Top | AnchorStyles.Right; + comboCoresE.BorderColor = Color.White; + comboCoresE.ButtonColor = SystemColors.ControlLight; + comboCoresE.FlatStyle = FlatStyle.Flat; + comboCoresE.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + comboCoresE.FormattingEnabled = true; + comboCoresE.ItemHeight = 32; + comboCoresE.Location = new Point(647, 9); + comboCoresE.Margin = new Padding(4, 12, 4, 9); + comboCoresE.Name = "comboCoresE"; + comboCoresE.Size = new Size(150, 40); + comboCoresE.TabIndex = 12; + comboCoresE.TabStop = false; + // + // pictureCores + // + pictureCores.BackgroundImage = Resources.icons8_processor_32; + pictureCores.BackgroundImageLayout = ImageLayout.Zoom; + pictureCores.Location = new Point(20, 15); + pictureCores.Name = "pictureCores"; + pictureCores.Size = new Size(32, 32); + pictureCores.TabIndex = 1; + pictureCores.TabStop = false; + // + // label1 + // + label1.AutoSize = true; + label1.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); + label1.Location = new Point(64, 14); + label1.Name = "label1"; + label1.Size = new Size(299, 32); + label1.TabIndex = 0; + label1.Text = "CPU Cores Configuration"; // // Extra // @@ -1292,6 +1366,7 @@ namespace GHelper Controls.Add(panelPower); Controls.Add(panelSettings); Controls.Add(panelAPU); + Controls.Add(panelCores); Controls.Add(panelSettingsHeader); Controls.Add(panelBacklight); Controls.Add(panelBacklightHeader); @@ -1332,6 +1407,7 @@ namespace GHelper tableBacklight.ResumeLayout(false); panelSettingsHeader.ResumeLayout(false); panelSettingsHeader.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)pictureScan).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureLog).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureSettings).EndInit(); panelSettings.ResumeLayout(false); @@ -1343,7 +1419,9 @@ namespace GHelper panelAPU.ResumeLayout(false); panelAPU.PerformLayout(); ((System.ComponentModel.ISupportInitialize)pictureAPUMem).EndInit(); - ((System.ComponentModel.ISupportInitialize)pictureScan).EndInit(); + panelCores.ResumeLayout(false); + panelCores.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)pictureCores).EndInit(); ResumeLayout(false); PerformLayout(); } @@ -1439,5 +1517,10 @@ namespace GHelper private Label labelAPUMem; private RComboBox comboAPU; private PictureBox pictureScan; + private Panel panelCores; + private RComboBox comboCoresE; + private PictureBox pictureCores; + private Label label1; + private RComboBox comboCoresP; } } \ No newline at end of file diff --git a/app/Extra.cs b/app/Extra.cs index a5fc9bf9..e3c21d0d 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -388,17 +388,60 @@ namespace GHelper pictureLog.Click += PictureLog_Click; pictureScan.Click += PictureScan_Click; + pictureScan.Visible = true; + checkGPUFix.Visible = Program.acpi.IsNVidiaGPU(); checkGPUFix.Checked = AppConfig.IsGPUFix(); checkGPUFix.CheckedChanged += CheckGPUFix_CheckedChanged; toolTip.SetToolTip(checkAutoToggleClamshellMode, "Disable sleep on lid close when plugged in and external monitor is connected"); + InitCores(); InitVariBright(); InitServices(); InitHibernate(); } + + private void InitCores() + { + (int eCores, int pCores) = Program.acpi.GetCores(); + (int eCoresMax, int pCoresMax) = Program.acpi.GetCores(true); + + if (eCores < 0 || pCores < 0 || eCoresMax < 0 || pCoresMax < 0) + { + panelCores.Visible = false; + return; + } + + panelCores.Visible = true; + + comboCoresE.DropDownStyle = ComboBoxStyle.DropDownList; + comboCoresP.DropDownStyle = ComboBoxStyle.DropDownList; + + for (int i = 0; i <= eCoresMax; i++) comboCoresE.Items.Add(i.ToString() + "E-cores"); + for (int i = 0; i <= pCoresMax; i++) comboCoresP.Items.Add(i.ToString() + "P-cores"); + + comboCoresE.SelectedIndex = Math.Min(eCores, eCoresMax); + comboCoresP.SelectedIndex = Math.Min(pCores, pCoresMax); + + comboCoresP.SelectedIndexChanged += ComboCores_SelectedIndexChanged; + comboCoresE.SelectedIndexChanged += ComboCores_SelectedIndexChanged; + + } + + private void ComboCores_SelectedIndexChanged(object? sender, EventArgs e) + { + Program.acpi.SetCores(comboCoresE.SelectedIndex, comboCoresP.SelectedIndex); + + DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertAPUMemoryRestart, Properties.Strings.AlertAPUMemoryRestartTitle, MessageBoxButtons.YesNo); + + if (dialogResult == DialogResult.Yes) + { + Process.Start("shutdown", "/r /t 1"); + } + } + private void PictureScan_Click(object? sender, EventArgs e) { string logFile = Program.acpi.ScanRange(); diff --git a/app/Properties/Resources.Designer.cs b/app/Properties/Resources.Designer.cs index 971b35c6..3dcf312f 100644 --- a/app/Properties/Resources.Designer.cs +++ b/app/Properties/Resources.Designer.cs @@ -600,6 +600,16 @@ namespace GHelper.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icons8_search_32 { + get { + object obj = ResourceManager.GetObject("icons8-search-32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/app/Properties/Resources.resx b/app/Properties/Resources.resx index ea07c07c..c728bd5a 100644 --- a/app/Properties/Resources.resx +++ b/app/Properties/Resources.resx @@ -136,9 +136,6 @@ ..\Resources\icons8-bicycle-48 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -166,9 +163,6 @@ ..\Resources\icons8-automation-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-settings-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\brightness-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -178,8 +172,8 @@ ..\Resources\icons8-processor-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-fiat-500-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Font.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ..\Resources\icons8-touchpad-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -199,6 +193,9 @@ ..\Resources\icons8-remove-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-share-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\icons8-function-mac-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -217,6 +214,9 @@ ..\Resources\backlight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-brightness-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\icons8-refresh-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -232,11 +232,14 @@ ..\Resources\icons8-xbox-rt-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-controller-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\icons8-fan-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-controller-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-settings-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icons8-maus-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -286,8 +289,8 @@ ..\Resources\icons8-video-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Font.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\icons8-fiat-500-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\dot-eco.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -322,8 +325,8 @@ ..\Resources\icons8-software-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-share-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\icons8-soonvibes-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -334,7 +337,7 @@ ..\Resources\icons8-charging-battery-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-brightness-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-search-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/app/Resources/icons8-search-32.png b/app/Resources/icons8-search-32.png new file mode 100644 index 0000000000000000000000000000000000000000..4a37cd5bc7a509f07c16346faf01f2b8ea9d25c4 GIT binary patch literal 448 zcmV;x0YCnUP)wt=q-5@*||FGMJZQ=mzCxfp%Lyz+5~Wn4w_G=z&e@G%~# Date: Sun, 25 Feb 2024 11:39:43 +0100 Subject: [PATCH 19/35] Intel E/P Cores UI Tweaks --- app/AsusACPI.cs | 7 +++---- app/Extra.Designer.cs | 38 +++++++++++++++++++++++++++++--------- app/Extra.cs | 15 +++++++-------- 3 files changed, 39 insertions(+), 21 deletions(-) diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index 1e955c7b..1bc64a13 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -2,7 +2,6 @@ using GHelper.USB; using System.Management; using System.Runtime.InteropServices; -using static System.Runtime.InteropServices.JavaScript.JSType; public enum AsusFan { @@ -145,7 +144,7 @@ public class AsusACPI public const int DefaultCPU = 80; public const int MinGPUBoost = 5; - public static int MaxGPUBoost = 50; + public static int MaxGPUBoost = 25; public const int MinGPUTemp = 75; public const int MaxGPUTemp = 87; @@ -685,7 +684,7 @@ public class AsusACPI if (value < 0) return (-1, -1); Logger.WriteLine("Cores" + (max ? "Max" : "") + ": 0x" + value.ToString("X4")); - + return ((value >> 8) & 0xFF, (value) & 0xFF); } @@ -693,7 +692,7 @@ public class AsusACPI { if (eCores < 0 || eCores > 16 || pCores < 0 || pCores > 16) return; int value = (eCores << 8) | pCores; - Program.acpi.DeviceSet(CORES_CPU, value, "Cores (0x" + value.ToString("X4")+")"); + Program.acpi.DeviceSet(CORES_CPU, value, "Cores (0x" + value.ToString("X4") + ")"); } public string ScanRange() diff --git a/app/Extra.Designer.cs b/app/Extra.Designer.cs index d65b07e8..8dc4a06e 100644 --- a/app/Extra.Designer.cs +++ b/app/Extra.Designer.cs @@ -122,6 +122,7 @@ namespace GHelper pictureAPUMem = new PictureBox(); labelAPUMem = new Label(); panelCores = new Panel(); + buttonCores = new RButton(); comboCoresP = new RComboBox(); comboCoresE = new RComboBox(); pictureCores = new PictureBox(); @@ -162,7 +163,7 @@ namespace GHelper panelServices.Controls.Add(labelServices); panelServices.Controls.Add(buttonServices); panelServices.Dock = DockStyle.Top; - panelServices.Location = new Point(15, 1436); + panelServices.Location = new Point(15, 1439); panelServices.Name = "panelServices"; panelServices.Size = new Size(983, 75); panelServices.TabIndex = 5; @@ -1084,7 +1085,7 @@ namespace GHelper panelSettings.Controls.Add(checkGpuApps); panelSettings.Controls.Add(checkGPUFix); panelSettings.Dock = DockStyle.Top; - panelSettings.Location = new Point(15, 1036); + panelSettings.Location = new Point(15, 1039); panelSettings.Name = "panelSettings"; panelSettings.Padding = new Padding(20, 5, 11, 5); panelSettings.Size = new Size(983, 346); @@ -1199,7 +1200,7 @@ namespace GHelper panelPower.Controls.Add(labelHibernateAfter); panelPower.Controls.Add(pictureHibernate); panelPower.Dock = DockStyle.Top; - panelPower.Location = new Point(15, 1382); + panelPower.Location = new Point(15, 1385); panelPower.Name = "panelPower"; panelPower.Size = new Size(983, 54); panelPower.TabIndex = 4; @@ -1242,7 +1243,7 @@ namespace GHelper panelAPU.Controls.Add(pictureAPUMem); panelAPU.Controls.Add(labelAPUMem); panelAPU.Dock = DockStyle.Top; - panelAPU.Location = new Point(15, 979); + panelAPU.Location = new Point(15, 982); panelAPU.Name = "panelAPU"; panelAPU.Padding = new Padding(11, 5, 11, 0); panelAPU.Size = new Size(983, 57); @@ -1260,7 +1261,7 @@ namespace GHelper comboAPU.FormattingEnabled = true; comboAPU.ItemHeight = 32; comboAPU.Items.AddRange(new object[] { "Auto", "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G" }); - comboAPU.Location = new Point(647, 8); + comboAPU.Location = new Point(654, 8); comboAPU.Margin = new Padding(4, 12, 4, 9); comboAPU.Name = "comboAPU"; comboAPU.Size = new Size(309, 40); @@ -1281,7 +1282,7 @@ namespace GHelper // labelAPUMem.AutoSize = true; labelAPUMem.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); - labelAPUMem.Location = new Point(56, 11); + labelAPUMem.Location = new Point(64, 11); labelAPUMem.Name = "labelAPUMem"; labelAPUMem.Size = new Size(309, 32); labelAPUMem.TabIndex = 0; @@ -1290,6 +1291,7 @@ namespace GHelper // panelCores // panelCores.AutoSize = true; + panelCores.Controls.Add(buttonCores); panelCores.Controls.Add(comboCoresP); panelCores.Controls.Add(comboCoresE); panelCores.Controls.Add(pictureCores); @@ -1298,10 +1300,27 @@ namespace GHelper panelCores.Location = new Point(15, 921); panelCores.Name = "panelCores"; panelCores.Padding = new Padding(11, 5, 11, 0); - panelCores.Size = new Size(983, 58); + panelCores.Size = new Size(983, 61); panelCores.TabIndex = 47; panelCores.Visible = false; // + // buttonCores + // + buttonCores.Activated = false; + buttonCores.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCores.BackColor = SystemColors.ButtonHighlight; + buttonCores.BorderColor = Color.Transparent; + buttonCores.BorderRadius = 2; + buttonCores.FlatStyle = FlatStyle.Flat; + buttonCores.Location = new Point(856, 7); + buttonCores.Margin = new Padding(4, 3, 4, 3); + buttonCores.Name = "buttonCores"; + buttonCores.Secondary = false; + buttonCores.Size = new Size(106, 46); + buttonCores.TabIndex = 20; + buttonCores.Text = "Apply"; + buttonCores.UseVisualStyleBackColor = false; + // // comboCoresP // comboCoresP.Anchor = AnchorStyles.Top | AnchorStyles.Right; @@ -1311,7 +1330,7 @@ namespace GHelper comboCoresP.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); comboCoresP.FormattingEnabled = true; comboCoresP.ItemHeight = 32; - comboCoresP.Location = new Point(805, 9); + comboCoresP.Location = new Point(701, 10); comboCoresP.Margin = new Padding(4, 12, 4, 9); comboCoresP.Name = "comboCoresP"; comboCoresP.Size = new Size(150, 40); @@ -1327,7 +1346,7 @@ namespace GHelper comboCoresE.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); comboCoresE.FormattingEnabled = true; comboCoresE.ItemHeight = 32; - comboCoresE.Location = new Point(647, 9); + comboCoresE.Location = new Point(543, 10); comboCoresE.Margin = new Padding(4, 12, 4, 9); comboCoresE.Name = "comboCoresE"; comboCoresE.Size = new Size(150, 40); @@ -1522,5 +1541,6 @@ namespace GHelper private PictureBox pictureCores; private Label label1; private RComboBox comboCoresP; + private RButton buttonCores; } } \ No newline at end of file diff --git a/app/Extra.cs b/app/Extra.cs index e3c21d0d..f93c5062 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -419,29 +419,28 @@ namespace GHelper comboCoresE.DropDownStyle = ComboBoxStyle.DropDownList; comboCoresP.DropDownStyle = ComboBoxStyle.DropDownList; - for (int i = 0; i <= eCoresMax; i++) comboCoresE.Items.Add(i.ToString() + "E-cores"); - for (int i = 0; i <= pCoresMax; i++) comboCoresP.Items.Add(i.ToString() + "P-cores"); + for (int i = 0; i <= eCoresMax; i++) comboCoresE.Items.Add(i.ToString() + " Ecores"); + for (int i = 0; i <= pCoresMax; i++) comboCoresP.Items.Add(i.ToString() + " Pcores"); comboCoresE.SelectedIndex = Math.Min(eCores, eCoresMax); comboCoresP.SelectedIndex = Math.Min(pCores, pCoresMax); - comboCoresP.SelectedIndexChanged += ComboCores_SelectedIndexChanged; - comboCoresE.SelectedIndexChanged += ComboCores_SelectedIndexChanged; + buttonCores.Click += ButtonCores_Click; } - private void ComboCores_SelectedIndexChanged(object? sender, EventArgs e) + private void ButtonCores_Click(object? sender, EventArgs e) { - Program.acpi.SetCores(comboCoresE.SelectedIndex, comboCoresP.SelectedIndex); - DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertAPUMemoryRestart, Properties.Strings.AlertAPUMemoryRestartTitle, MessageBoxButtons.YesNo); - + if (dialogResult == DialogResult.Yes) { + Program.acpi.SetCores(comboCoresE.SelectedIndex, comboCoresP.SelectedIndex); Process.Start("shutdown", "/r /t 1"); } } + private void PictureScan_Click(object? sender, EventArgs e) { string logFile = Program.acpi.ScanRange(); From 0e4422f103d078c9b4ca3fb706321aec9a404a95 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sun, 25 Feb 2024 13:22:07 +0100 Subject: [PATCH 20/35] Intel Cores UI tweaks --- app/AsusACPI.cs | 8 +++++++- app/Extra.Designer.cs | 4 ++-- app/Extra.cs | 8 ++++---- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index 1bc64a13..63419eec 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -149,6 +149,12 @@ public class AsusACPI public const int MinGPUTemp = 75; public const int MaxGPUTemp = 87; + public const int PCoreMin = 4; + public const int ECoreMin = 0; + + public const int PCoreMax = 16; + public const int ECoreMax = 16; + [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)] private static extern IntPtr CreateFile( @@ -690,7 +696,7 @@ public class AsusACPI public void SetCores(int eCores, int pCores) { - if (eCores < 0 || eCores > 16 || pCores < 0 || pCores > 16) return; + if (eCores < ECoreMin || eCores > ECoreMax || pCores < PCoreMin || pCores > PCoreMax) return; int value = (eCores << 8) | pCores; Program.acpi.DeviceSet(CORES_CPU, value, "Cores (0x" + value.ToString("X4") + ")"); } diff --git a/app/Extra.Designer.cs b/app/Extra.Designer.cs index 8dc4a06e..43b9d71e 100644 --- a/app/Extra.Designer.cs +++ b/app/Extra.Designer.cs @@ -1330,7 +1330,7 @@ namespace GHelper comboCoresP.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); comboCoresP.FormattingEnabled = true; comboCoresP.ItemHeight = 32; - comboCoresP.Location = new Point(701, 10); + comboCoresP.Location = new Point(543, 10); comboCoresP.Margin = new Padding(4, 12, 4, 9); comboCoresP.Name = "comboCoresP"; comboCoresP.Size = new Size(150, 40); @@ -1346,7 +1346,7 @@ namespace GHelper comboCoresE.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); comboCoresE.FormattingEnabled = true; comboCoresE.ItemHeight = 32; - comboCoresE.Location = new Point(543, 10); + comboCoresE.Location = new Point(702, 10); comboCoresE.Margin = new Padding(4, 12, 4, 9); comboCoresE.Name = "comboCoresE"; comboCoresE.Size = new Size(150, 40); diff --git a/app/Extra.cs b/app/Extra.cs index f93c5062..77198d39 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -419,11 +419,11 @@ namespace GHelper comboCoresE.DropDownStyle = ComboBoxStyle.DropDownList; comboCoresP.DropDownStyle = ComboBoxStyle.DropDownList; - for (int i = 0; i <= eCoresMax; i++) comboCoresE.Items.Add(i.ToString() + " Ecores"); - for (int i = 0; i <= pCoresMax; i++) comboCoresP.Items.Add(i.ToString() + " Pcores"); + for (int i = AsusACPI.PCoreMin; i <= pCoresMax; i++) comboCoresP.Items.Add(i.ToString() + " Pcores"); + for (int i = AsusACPI.ECoreMin; i <= eCoresMax; i++) comboCoresE.Items.Add(i.ToString() + " Ecores"); - comboCoresE.SelectedIndex = Math.Min(eCores, eCoresMax); - comboCoresP.SelectedIndex = Math.Min(pCores, pCoresMax); + comboCoresP.SelectedIndex = Math.Max(Math.Min(pCores - AsusACPI.PCoreMin, comboCoresP.Items.Count - 1), 0); + comboCoresE.SelectedIndex = Math.Max(Math.Min(eCores - AsusACPI.ECoreMin, comboCoresE.Items.Count - 1), 0); buttonCores.Click += ButtonCores_Click; From b64440215589d62242eacb4aec41ce435f06492a Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sun, 25 Feb 2024 13:44:57 +0100 Subject: [PATCH 21/35] Better power mode logging --- app/Mode/PowerNative.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Mode/PowerNative.cs b/app/Mode/PowerNative.cs index e751fb9c..e01f3298 100644 --- a/app/Mode/PowerNative.cs +++ b/app/Mode/PowerNative.cs @@ -163,7 +163,7 @@ namespace GHelper.Mode if (status != 0 || activeScheme != guidScheme) { status = PowerSetActiveOverlayScheme(guidScheme); - Logger.WriteLine("Power Mode " + scheme + ":" + (status == 0 ? "OK" : status)); + Logger.WriteLine("Power Mode " + activeScheme + " -> " + scheme + ":" + (status == 0 ? "OK" : status)); } } From 6d696c5c776a85da95d29ae3f3a9a733fa9dd153 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sun, 25 Feb 2024 19:55:39 +0100 Subject: [PATCH 22/35] P-cores fix --- app/AsusACPI.cs | 2 +- app/Extra.cs | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index 63419eec..80902960 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -686,7 +686,7 @@ public class AsusACPI public (int, int) GetCores(bool max = false) { int value = Program.acpi.DeviceGet(max ? CORES_MAX : CORES_CPU); - //value = max ? 0x806 : 0x605; + //value = max ? 0x406 : 0x605; if (value < 0) return (-1, -1); Logger.WriteLine("Cores" + (max ? "Max" : "") + ": 0x" + value.ToString("X4")); diff --git a/app/Extra.cs b/app/Extra.cs index 77198d39..882bd106 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -414,6 +414,8 @@ namespace GHelper return; } + eCoresMax = Math.Max(8, eCoresMax); + panelCores.Visible = true; comboCoresE.DropDownStyle = ComboBoxStyle.DropDownList; @@ -431,11 +433,11 @@ namespace GHelper private void ButtonCores_Click(object? sender, EventArgs e) { + Program.acpi.SetCores(AsusACPI.ECoreMin + comboCoresE.SelectedIndex, AsusACPI.PCoreMin + comboCoresP.SelectedIndex); DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertAPUMemoryRestart, Properties.Strings.AlertAPUMemoryRestartTitle, MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { - Program.acpi.SetCores(comboCoresE.SelectedIndex, comboCoresP.SelectedIndex); Process.Start("shutdown", "/r /t 1"); } } From d156d8ace98e88eac3aa3724010d82a06f4d6db7 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sun, 25 Feb 2024 20:01:16 +0100 Subject: [PATCH 23/35] P-core tweaks --- app/AsusACPI.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index 80902960..b659f0d1 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -696,7 +696,12 @@ public class AsusACPI public void SetCores(int eCores, int pCores) { - if (eCores < ECoreMin || eCores > ECoreMax || pCores < PCoreMin || pCores > PCoreMax) return; + if (eCores < ECoreMin || eCores > ECoreMax || pCores < PCoreMin || pCores > PCoreMax) + { + Logger.WriteLine($"Incorrect Core config ({eCores}, {pCores})"); + return; + }; + int value = (eCores << 8) | pCores; Program.acpi.DeviceSet(CORES_CPU, value, "Cores (0x" + value.ToString("X4") + ")"); } From 95b9a833c189dc7bbfe350d7b339024c17bb21c7 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Sun, 25 Feb 2024 21:10:58 +0100 Subject: [PATCH 24/35] Tweaks --- app/Extra.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Extra.cs b/app/Extra.cs index 882bd106..b7a27818 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -433,11 +433,11 @@ namespace GHelper private void ButtonCores_Click(object? sender, EventArgs e) { - Program.acpi.SetCores(AsusACPI.ECoreMin + comboCoresE.SelectedIndex, AsusACPI.PCoreMin + comboCoresP.SelectedIndex); DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertAPUMemoryRestart, Properties.Strings.AlertAPUMemoryRestartTitle, MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { + Program.acpi.SetCores(AsusACPI.ECoreMin + comboCoresE.SelectedIndex, AsusACPI.PCoreMin + comboCoresP.SelectedIndex); Process.Start("shutdown", "/r /t 1"); } } From 25470ed579dcaf7f791345379d6f6e28aface914 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 26 Feb 2024 10:33:18 +0100 Subject: [PATCH 25/35] Touchpad and Mic Toggles --- app/AsusACPI.cs | 4 ++++ app/Extra.cs | 1 + 2 files changed, 5 insertions(+) diff --git a/app/AsusACPI.cs b/app/AsusACPI.cs index b659f0d1..e545062f 100644 --- a/app/AsusACPI.cs +++ b/app/AsusACPI.cs @@ -43,6 +43,10 @@ public class AsusACPI public const int Brightness_Down = 0x10; public const int Brightness_Up = 0x20; public const int KB_Sleep = 0x6c; + + public const int KB_TouchpadToggle = 0x6b; + public const int KB_MuteToggle = 0x7c; + public const int KB_DUO_PgUpDn = 0x4B; public const int KB_DUO_SecondDisplay = 0x6A; diff --git a/app/Extra.cs b/app/Extra.cs index b7a27818..17ff4f11 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -415,6 +415,7 @@ namespace GHelper } eCoresMax = Math.Max(8, eCoresMax); + pCoresMax = Math.Max(6, pCoresMax); panelCores.Visible = true; From c57a60079c58d520d9e8edb609660f969b792339 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 26 Feb 2024 12:30:43 +0100 Subject: [PATCH 26/35] Matrix / Slash Lightning - Disable on Lid Close --- app/AnimeMatrix/AniMatrixControl.cs | 16 +++-- app/Extra.Designer.cs | 103 ++++++++++++++++++++++++++-- app/Extra.cs | 30 +++++++- app/Settings.Designer.cs | 27 ++++---- app/Settings.cs | 7 +- 5 files changed, 154 insertions(+), 29 deletions(-) diff --git a/app/AnimeMatrix/AniMatrixControl.cs b/app/AnimeMatrix/AniMatrixControl.cs index d5498911..b1b54be7 100644 --- a/app/AnimeMatrix/AniMatrixControl.cs +++ b/app/AnimeMatrix/AniMatrixControl.cs @@ -18,6 +18,8 @@ namespace GHelper.AnimeMatrix public AnimeMatrixDevice? deviceMatrix; public SlashDevice? deviceSlash; + public static bool lidClose = false; + double[]? AudioValues; WasapiCapture? AudioDevice; string? AudioDeviceId; @@ -56,9 +58,13 @@ namespace GHelper.AnimeMatrix if (deviceSlash is not null) SetSlash(wakeUp); } - public void SetLidMode() + public void SetLidMode(bool force = false) { - if (deviceSlash is not null) deviceSlash.SetLidMode(AppConfig.Is("matrix_lid")); + if (AppConfig.Is("matrix_lid") || force) + { + Logger.WriteLine($"Matrix LidClosed: {lidClose}"); + SetDevice(true); + } } @@ -71,6 +77,7 @@ namespace GHelper.AnimeMatrix int inteval = AppConfig.Get("matrix_interval", 0); bool auto = AppConfig.Is("matrix_auto"); + bool lid = AppConfig.Is("matrix_lid"); Task.Run(() => { @@ -86,7 +93,7 @@ namespace GHelper.AnimeMatrix if (wakeUp) deviceSlash.WakeUp(); - if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online)) + if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) || (lid && lidClose)) { deviceSlash.Init(); deviceSlash.SetOptions(false, 0, 0); @@ -115,6 +122,7 @@ namespace GHelper.AnimeMatrix int brightness = AppConfig.Get("matrix_brightness", 0); int running = AppConfig.Get("matrix_running", 0); bool auto = AppConfig.Is("matrix_auto"); + bool lid = AppConfig.Is("matrix_lid"); StopMatrixTimer(); StopMatrixAudio(); @@ -133,7 +141,7 @@ namespace GHelper.AnimeMatrix if (wakeUp) deviceMatrix.WakeUp(); - if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online)) + if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) || (lid && lidClose)) { deviceMatrix.SetDisplayState(false); deviceMatrix.SetDisplayState(false); // some devices are dumb diff --git a/app/Extra.Designer.cs b/app/Extra.Designer.cs index 43b9d71e..fee5be60 100644 --- a/app/Extra.Designer.cs +++ b/app/Extra.Designer.cs @@ -127,6 +127,12 @@ namespace GHelper comboCoresE = new RComboBox(); pictureCores = new PictureBox(); label1 = new Label(); + panelACPI = new Panel(); + textACPIParam = new TextBox(); + textACPICommand = new TextBox(); + buttonACPISend = new RButton(); + pictureDebug = new PictureBox(); + labelACPITitle = new Label(); panelServices.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureService).BeginInit(); panelBindingsHeader.SuspendLayout(); @@ -154,6 +160,8 @@ namespace GHelper ((System.ComponentModel.ISupportInitialize)pictureAPUMem).BeginInit(); panelCores.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureCores).BeginInit(); + panelACPI.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)pictureDebug).BeginInit(); SuspendLayout(); // // panelServices @@ -163,7 +171,7 @@ namespace GHelper panelServices.Controls.Add(labelServices); panelServices.Controls.Add(buttonServices); panelServices.Dock = DockStyle.Top; - panelServices.Location = new Point(15, 1439); + panelServices.Location = new Point(15, 1508); panelServices.Name = "panelServices"; panelServices.Size = new Size(983, 75); panelServices.TabIndex = 5; @@ -1085,7 +1093,7 @@ namespace GHelper panelSettings.Controls.Add(checkGpuApps); panelSettings.Controls.Add(checkGPUFix); panelSettings.Dock = DockStyle.Top; - panelSettings.Location = new Point(15, 1039); + panelSettings.Location = new Point(15, 1108); panelSettings.Name = "panelSettings"; panelSettings.Padding = new Padding(20, 5, 11, 5); panelSettings.Size = new Size(983, 346); @@ -1200,7 +1208,7 @@ namespace GHelper panelPower.Controls.Add(labelHibernateAfter); panelPower.Controls.Add(pictureHibernate); panelPower.Dock = DockStyle.Top; - panelPower.Location = new Point(15, 1385); + panelPower.Location = new Point(15, 1454); panelPower.Name = "panelPower"; panelPower.Size = new Size(983, 54); panelPower.TabIndex = 4; @@ -1243,7 +1251,7 @@ namespace GHelper panelAPU.Controls.Add(pictureAPUMem); panelAPU.Controls.Add(labelAPUMem); panelAPU.Dock = DockStyle.Top; - panelAPU.Location = new Point(15, 982); + panelAPU.Location = new Point(15, 1051); panelAPU.Name = "panelAPU"; panelAPU.Padding = new Padding(11, 5, 11, 0); panelAPU.Size = new Size(983, 57); @@ -1297,7 +1305,7 @@ namespace GHelper panelCores.Controls.Add(pictureCores); panelCores.Controls.Add(label1); panelCores.Dock = DockStyle.Top; - panelCores.Location = new Point(15, 921); + panelCores.Location = new Point(15, 990); panelCores.Name = "panelCores"; panelCores.Padding = new Padding(11, 5, 11, 0); panelCores.Size = new Size(983, 61); @@ -1373,6 +1381,79 @@ namespace GHelper label1.TabIndex = 0; label1.Text = "CPU Cores Configuration"; // + // panelACPI + // + panelACPI.AutoSize = true; + panelACPI.Controls.Add(textACPIParam); + panelACPI.Controls.Add(textACPICommand); + panelACPI.Controls.Add(buttonACPISend); + panelACPI.Controls.Add(pictureDebug); + panelACPI.Controls.Add(labelACPITitle); + panelACPI.Dock = DockStyle.Top; + panelACPI.Location = new Point(15, 921); + panelACPI.Name = "panelACPI"; + panelACPI.Padding = new Padding(11, 5, 11, 0); + panelACPI.Size = new Size(983, 69); + panelACPI.TabIndex = 48; + panelACPI.Visible = false; + // + // textACPIParam + // + textACPIParam.Location = new Point(717, 18); + textACPIParam.Margin = new Padding(4, 3, 4, 3); + textACPIParam.Name = "textACPIParam"; + textACPIParam.PlaceholderText = "Value"; + textACPIParam.Size = new Size(127, 39); + textACPIParam.TabIndex = 22; + textACPIParam.TabStop = false; + // + // textACPICommand + // + textACPICommand.Location = new Point(467, 18); + textACPICommand.Margin = new Padding(4, 3, 4, 3); + textACPICommand.Name = "textACPICommand"; + textACPICommand.PlaceholderText = "Address"; + textACPICommand.Size = new Size(242, 39); + textACPICommand.TabIndex = 21; + textACPICommand.TabStop = false; + // + // buttonACPISend + // + buttonACPISend.Activated = false; + buttonACPISend.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonACPISend.BackColor = SystemColors.ButtonHighlight; + buttonACPISend.BorderColor = Color.Transparent; + buttonACPISend.BorderRadius = 2; + buttonACPISend.FlatStyle = FlatStyle.Flat; + buttonACPISend.Location = new Point(854, 13); + buttonACPISend.Margin = new Padding(4, 3, 4, 3); + buttonACPISend.Name = "buttonACPISend"; + buttonACPISend.Secondary = false; + buttonACPISend.Size = new Size(106, 46); + buttonACPISend.TabIndex = 20; + buttonACPISend.Text = "Send"; + buttonACPISend.UseVisualStyleBackColor = false; + // + // pictureDebug + // + pictureDebug.BackgroundImage = Resources.icons8_heartbeat_32; + pictureDebug.BackgroundImageLayout = ImageLayout.Zoom; + pictureDebug.Location = new Point(20, 20); + pictureDebug.Name = "pictureDebug"; + pictureDebug.Size = new Size(32, 32); + pictureDebug.TabIndex = 1; + pictureDebug.TabStop = false; + // + // labelACPITitle + // + labelACPITitle.AutoSize = true; + labelACPITitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); + labelACPITitle.Location = new Point(57, 20); + labelACPITitle.Name = "labelACPITitle"; + labelACPITitle.Size = new Size(188, 32); + labelACPITitle.TabIndex = 0; + labelACPITitle.Text = "ACPI DEVS Test"; + // // Extra // AutoScaleDimensions = new SizeF(192F, 192F); @@ -1380,12 +1461,13 @@ namespace GHelper AutoScroll = true; AutoSize = true; AutoSizeMode = AutoSizeMode.GrowAndShrink; - ClientSize = new Size(1013, 1515); + ClientSize = new Size(1013, 1612); Controls.Add(panelServices); Controls.Add(panelPower); Controls.Add(panelSettings); Controls.Add(panelAPU); Controls.Add(panelCores); + Controls.Add(panelACPI); Controls.Add(panelSettingsHeader); Controls.Add(panelBacklight); Controls.Add(panelBacklightHeader); @@ -1441,6 +1523,9 @@ namespace GHelper panelCores.ResumeLayout(false); panelCores.PerformLayout(); ((System.ComponentModel.ISupportInitialize)pictureCores).EndInit(); + panelACPI.ResumeLayout(false); + panelACPI.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)pictureDebug).EndInit(); ResumeLayout(false); PerformLayout(); } @@ -1542,5 +1627,11 @@ namespace GHelper private Label label1; private RComboBox comboCoresP; private RButton buttonCores; + private Panel panelACPI; + private TextBox textACPIParam; + private TextBox textACPICommand; + private RButton buttonACPISend; + private PictureBox pictureDebug; + private Label labelACPITitle; } } \ No newline at end of file diff --git a/app/Extra.cs b/app/Extra.cs index 17ff4f11..2664697f 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -386,9 +386,6 @@ namespace GHelper buttonServices.Click += ButtonServices_Click; pictureLog.Click += PictureLog_Click; - pictureScan.Click += PictureScan_Click; - - pictureScan.Visible = true; checkGPUFix.Visible = Program.acpi.IsNVidiaGPU(); checkGPUFix.Checked = AppConfig.IsGPUFix(); @@ -400,8 +397,35 @@ namespace GHelper InitVariBright(); InitServices(); InitHibernate(); + + InitACPITesting(); + } + private void InitACPITesting() + { + pictureScan.Visible = true; + panelACPI.Visible = true; + + textACPICommand.Text = "120075"; + textACPIParam.Text = "1"; + + buttonACPISend.Click += ButtonACPISend_Click; + pictureScan.Click += PictureScan_Click; + } + + private void ButtonACPISend_Click(object? sender, EventArgs e) + { + try { + int deviceID = Convert.ToInt32(textACPICommand.Text, 16); + int status = Convert.ToInt32(textACPIParam.Text, textACPIParam.Text.Contains("x") ? 16 : 10); + int result = Program.acpi.DeviceSet((uint)deviceID, status, "TestACPI " + deviceID.ToString("X8") + " " + status.ToString("X4")); + labelACPITitle.Text = "ACPI DEVS Test : " + result.ToString(); + } catch (Exception ex) + { + Logger.WriteLine(ex.Message); + } + } private void InitCores() { diff --git a/app/Settings.Designer.cs b/app/Settings.Designer.cs index f163fa43..5d61560c 100644 --- a/app/Settings.Designer.cs +++ b/app/Settings.Designer.cs @@ -31,6 +31,7 @@ namespace GHelper private void InitializeComponent() { panelMatrix = new Panel(); + checkMatrixLid = new CheckBox(); tableLayoutMatrix = new TableLayoutPanel(); comboMatrix = new RComboBox(); comboMatrixRunning = new RComboBox(); @@ -126,7 +127,6 @@ namespace GHelper labelGamma = new Label(); pictureGamma = new PictureBox(); labelGammaTitle = new Label(); - checkMatrixLid = new CheckBox(); panelMatrix.SuspendLayout(); tableLayoutMatrix.SuspendLayout(); panelMatrixTitle.SuspendLayout(); @@ -188,6 +188,18 @@ namespace GHelper panelMatrix.TabIndex = 3; panelMatrix.TabStop = true; // + // checkMatrixLid + // + checkMatrixLid.AutoSize = true; + checkMatrixLid.ForeColor = SystemColors.GrayText; + checkMatrixLid.Location = new Point(286, 126); + checkMatrixLid.Margin = new Padding(8, 4, 8, 4); + checkMatrixLid.Name = "checkMatrixLid"; + checkMatrixLid.Size = new Size(253, 36); + checkMatrixLid.TabIndex = 46; + checkMatrixLid.Text = "Disable on lid close"; + checkMatrixLid.UseVisualStyleBackColor = true; + // // tableLayoutMatrix // tableLayoutMatrix.AutoSize = true; @@ -1711,19 +1723,6 @@ namespace GHelper labelGammaTitle.TabIndex = 37; labelGammaTitle.Text = "Flicker-free Dimming"; // - // checkMatrixLid - // - checkMatrixLid.AutoSize = true; - checkMatrixLid.ForeColor = SystemColors.GrayText; - checkMatrixLid.Location = new Point(286, 126); - checkMatrixLid.Margin = new Padding(8, 4, 8, 4); - checkMatrixLid.Name = "checkMatrixLid"; - checkMatrixLid.Size = new Size(246, 36); - checkMatrixLid.TabIndex = 46; - checkMatrixLid.Text = "Enable on lid close"; - checkMatrixLid.UseVisualStyleBackColor = true; - checkMatrixLid.Visible = false; - // // SettingsForm // AutoScaleDimensions = new SizeF(192F, 192F); diff --git a/app/Settings.cs b/app/Settings.cs index a7152889..f4198670 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -455,10 +455,14 @@ namespace GHelper case 0: Logger.WriteLine("Lid Closed"); Aura.ApplyBrightness(0, "Lid"); + AniMatrixControl.lidClose = true; + matrixControl.SetLidMode(); break; case 1: Logger.WriteLine("Lid Open"); Aura.ApplyBrightness(InputDispatcher.GetBacklight(), "Lid"); + AniMatrixControl.lidClose = false; + matrixControl.SetLidMode(); break; } @@ -704,7 +708,7 @@ namespace GHelper private void CheckMatrixLid_CheckedChanged(object? sender, EventArgs e) { AppConfig.Set("matrix_lid", checkMatrixLid.Checked ? 1 : 0); - matrixControl.SetLidMode(); + matrixControl.SetLidMode(true); } @@ -934,7 +938,6 @@ namespace GHelper for (int i = 1; i <= 5; i++) comboInterval.Items.Add($"Interval {i}s"); buttonMatrix.Visible = false; - checkMatrixLid.Visible = true; } comboMatrix.SelectedIndex = Math.Min(AppConfig.Get("matrix_brightness", 0), comboMatrix.Items.Count - 1); From 76f29c593499d054d1938c0296080562f4ae0ffa Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:29:36 +0100 Subject: [PATCH 27/35] UI Tweaks --- app/Properties/Strings.Designer.cs | 23 ++++++++++++++++------- app/Properties/Strings.resx | 5 ++++- app/Settings.Designer.cs | 4 ++-- app/Settings.cs | 1 + 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/app/Properties/Strings.Designer.cs b/app/Properties/Strings.Designer.cs index ac031247..0c57f92b 100644 --- a/app/Properties/Strings.Designer.cs +++ b/app/Properties/Strings.Designer.cs @@ -699,6 +699,15 @@ namespace GHelper.Properties { } } + /// + /// Looks up a localized string similar to Disable on lid close. + /// + internal static string DisableOnLidClose { + get { + return ResourceManager.GetString("DisableOnLidClose", resourceCulture); + } + } + /// /// Looks up a localized string similar to Disable screen overdrive. /// @@ -790,9 +799,9 @@ namespace GHelper.Properties { return ResourceManager.GetString("EnergySettings", resourceCulture); } } - + /// - /// Looks up a localized string similar to Export. + /// Looks up a localized string similar to Export Profile. /// internal static string Export { get { @@ -1024,9 +1033,9 @@ namespace GHelper.Properties { return ResourceManager.GetString("ImageRotation", resourceCulture); } } - + /// - /// Looks up a localized string similar to Import. + /// Looks up a localized string similar to Import Profile. /// internal static string Import { get { @@ -1294,9 +1303,9 @@ namespace GHelper.Properties { return ResourceManager.GetString("MouseButtonResponse", resourceCulture); } } - + /// - /// Looks up a localized string similar to Import failed. Selected file is not a valid mouse profile or corrutpted. + /// Looks up a localized string similar to Import failed. Selected file is not a valid mouse profile or corrutpted.. /// internal static string MouseImportFailed { get { @@ -1800,7 +1809,7 @@ namespace GHelper.Properties { } /// - /// Looks up a localized string similar to Turn off on battery. + /// Looks up a localized string similar to Disable on battery. /// internal static string TurnOffOnBattery { get { diff --git a/app/Properties/Strings.resx b/app/Properties/Strings.resx index 64eb9e57..4855137b 100644 --- a/app/Properties/Strings.resx +++ b/app/Properties/Strings.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Disable screen overdrive @@ -699,7 +702,7 @@ Do you still want to continue? Turned off - Turn off on battery + Disable on battery Routes laptop screen to dGPU, maximizing FPS diff --git a/app/Settings.Designer.cs b/app/Settings.Designer.cs index 5d61560c..492a9956 100644 --- a/app/Settings.Designer.cs +++ b/app/Settings.Designer.cs @@ -192,7 +192,7 @@ namespace GHelper // checkMatrixLid.AutoSize = true; checkMatrixLid.ForeColor = SystemColors.GrayText; - checkMatrixLid.Location = new Point(286, 126); + checkMatrixLid.Location = new Point(275, 126); checkMatrixLid.Margin = new Padding(8, 4, 8, 4); checkMatrixLid.Name = "checkMatrixLid"; checkMatrixLid.Size = new Size(253, 36); @@ -326,7 +326,7 @@ namespace GHelper checkMatrix.Location = new Point(27, 126); checkMatrix.Margin = new Padding(8, 4, 8, 4); checkMatrix.Name = "checkMatrix"; - checkMatrix.Size = new Size(249, 36); + checkMatrix.Size = new Size(241, 36); checkMatrix.TabIndex = 19; checkMatrix.Text = Properties.Strings.TurnOffOnBattery; checkMatrix.UseVisualStyleBackColor = true; diff --git a/app/Settings.cs b/app/Settings.cs index f4198670..89c7b118 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -85,6 +85,7 @@ namespace GHelper labelPeripherals.Text = Properties.Strings.Peripherals; checkMatrix.Text = Properties.Strings.TurnOffOnBattery; + checkMatrixLid.Text = Properties.Strings.DisableOnLidClose; checkStartup.Text = Properties.Strings.RunOnStartup; buttonMatrix.Text = Properties.Strings.PictureGif; From b3e4578c02fb97534d0f356f16e8fd822d0b3baa Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:40:13 +0100 Subject: [PATCH 28/35] UI Tweaks --- app/Extra.cs | 2 +- app/Settings.Designer.cs | 1 + app/Settings.cs | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Extra.cs b/app/Extra.cs index 2664697f..7725d680 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -398,7 +398,7 @@ namespace GHelper InitServices(); InitHibernate(); - InitACPITesting(); + //InitACPITesting(); } diff --git a/app/Settings.Designer.cs b/app/Settings.Designer.cs index 492a9956..09e357f6 100644 --- a/app/Settings.Designer.cs +++ b/app/Settings.Designer.cs @@ -199,6 +199,7 @@ namespace GHelper checkMatrixLid.TabIndex = 46; checkMatrixLid.Text = "Disable on lid close"; checkMatrixLid.UseVisualStyleBackColor = true; + checkMatrixLid.Visible = false; // // tableLayoutMatrix // diff --git a/app/Settings.cs b/app/Settings.cs index 89c7b118..b5c34a81 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -939,6 +939,7 @@ namespace GHelper for (int i = 1; i <= 5; i++) comboInterval.Items.Add($"Interval {i}s"); buttonMatrix.Visible = false; + checkMatrixLid.Visible = true; } comboMatrix.SelectedIndex = Math.Min(AppConfig.Get("matrix_brightness", 0), comboMatrix.Items.Count - 1); From 48e65dea978d3443df672d0edebf0b8653ff06af Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:53:45 +0100 Subject: [PATCH 29/35] New Crowdin updates (#2120) * New translations strings.resx (Romanian) * New translations strings.resx (French) * New translations strings.resx (Spanish) * New translations strings.resx (German) * New translations strings.resx (Hungarian) * New translations strings.resx (Italian) * New translations strings.resx (Korean) * New translations strings.resx (Lithuanian) * New translations strings.resx (Polish) * New translations strings.resx (Portuguese) * New translations strings.resx (Turkish) * New translations strings.resx (Ukrainian) * New translations strings.resx (Chinese Simplified) * New translations strings.resx (Chinese Traditional) * New translations strings.resx (Vietnamese) * New translations strings.resx (Portuguese, Brazilian) * New translations strings.resx (Indonesian) * New translations strings.resx (Romanian) * New translations strings.resx (French) * New translations strings.resx (Spanish) * New translations strings.resx (German) * New translations strings.resx (Hungarian) * New translations strings.resx (Italian) * New translations strings.resx (Korean) * New translations strings.resx (Lithuanian) * New translations strings.resx (Polish) * New translations strings.resx (Portuguese) * New translations strings.resx (Turkish) * New translations strings.resx (Ukrainian) * New translations strings.resx (Chinese Simplified) * New translations strings.resx (Chinese Traditional) * New translations strings.resx (Vietnamese) * New translations strings.resx (Portuguese, Brazilian) * New translations strings.resx (Indonesian) --- app/Properties/Strings.de.resx | 3 +++ app/Properties/Strings.es.resx | 3 +++ app/Properties/Strings.fr.resx | 3 +++ app/Properties/Strings.hu.resx | 3 +++ app/Properties/Strings.id.resx | 3 +++ app/Properties/Strings.it.resx | 3 +++ app/Properties/Strings.ko.resx | 3 +++ app/Properties/Strings.lt.resx | 3 +++ app/Properties/Strings.pl.resx | 3 +++ app/Properties/Strings.pt-BR.resx | 3 +++ app/Properties/Strings.pt-PT.resx | 3 +++ app/Properties/Strings.ro.resx | 3 +++ app/Properties/Strings.tr.resx | 3 +++ app/Properties/Strings.uk.resx | 5 ++++- app/Properties/Strings.vi.resx | 3 +++ app/Properties/Strings.zh-CN.resx | 3 +++ app/Properties/Strings.zh-TW.resx | 3 +++ 17 files changed, 52 insertions(+), 1 deletion(-) diff --git a/app/Properties/Strings.de.resx b/app/Properties/Strings.de.resx index 2bd9eb8a..6c2ca1d4 100644 --- a/app/Properties/Strings.de.resx +++ b/app/Properties/Strings.de.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Bildschirm: Overdrive abschalten diff --git a/app/Properties/Strings.es.resx b/app/Properties/Strings.es.resx index 65f47496..b486af0a 100644 --- a/app/Properties/Strings.es.resx +++ b/app/Properties/Strings.es.resx @@ -330,6 +330,9 @@ Deshabilitar mando + + Disable on lid close + Desactivar Overdrive diff --git a/app/Properties/Strings.fr.resx b/app/Properties/Strings.fr.resx index d1663c71..fdcdfb47 100644 --- a/app/Properties/Strings.fr.resx +++ b/app/Properties/Strings.fr.resx @@ -330,6 +330,9 @@ Désactiver le contrôleur + + Disable on lid close + Désactiver l'overdrive de l'écran diff --git a/app/Properties/Strings.hu.resx b/app/Properties/Strings.hu.resx index 6f499b42..1e5fa166 100644 --- a/app/Properties/Strings.hu.resx +++ b/app/Properties/Strings.hu.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Képernyőtúlhajtás letiltása diff --git a/app/Properties/Strings.id.resx b/app/Properties/Strings.id.resx index 63ba02b3..35aec166 100644 --- a/app/Properties/Strings.id.resx +++ b/app/Properties/Strings.id.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Nonaktifkan screen overdrive diff --git a/app/Properties/Strings.it.resx b/app/Properties/Strings.it.resx index ce2af6e0..0963bd5f 100644 --- a/app/Properties/Strings.it.resx +++ b/app/Properties/Strings.it.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Disabilita Overdrive Schermo diff --git a/app/Properties/Strings.ko.resx b/app/Properties/Strings.ko.resx index 74a233ae..c5cde4a0 100644 --- a/app/Properties/Strings.ko.resx +++ b/app/Properties/Strings.ko.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + 화면 OD 끄기 diff --git a/app/Properties/Strings.lt.resx b/app/Properties/Strings.lt.resx index 1a950b0c..32ea18a7 100644 --- a/app/Properties/Strings.lt.resx +++ b/app/Properties/Strings.lt.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Išjungti ekrano pikselių spartinimą diff --git a/app/Properties/Strings.pl.resx b/app/Properties/Strings.pl.resx index cb9bf17e..aff4ec0a 100644 --- a/app/Properties/Strings.pl.resx +++ b/app/Properties/Strings.pl.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Wyłącz funkcję Overdrive monitora diff --git a/app/Properties/Strings.pt-BR.resx b/app/Properties/Strings.pt-BR.resx index 6480c6bb..66f25079 100644 --- a/app/Properties/Strings.pt-BR.resx +++ b/app/Properties/Strings.pt-BR.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Desativar o overdrive da tela diff --git a/app/Properties/Strings.pt-PT.resx b/app/Properties/Strings.pt-PT.resx index 4bfb8409..073a8d40 100644 --- a/app/Properties/Strings.pt-PT.resx +++ b/app/Properties/Strings.pt-PT.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Desativar o overdrive do ecrã diff --git a/app/Properties/Strings.ro.resx b/app/Properties/Strings.ro.resx index 131d72f3..a19d4348 100644 --- a/app/Properties/Strings.ro.resx +++ b/app/Properties/Strings.ro.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Dezactivează screen overdrive diff --git a/app/Properties/Strings.tr.resx b/app/Properties/Strings.tr.resx index ba2e7cca..bd5fe6a9 100644 --- a/app/Properties/Strings.tr.resx +++ b/app/Properties/Strings.tr.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Ekran overdrive özelliğini devre dışı bırak diff --git a/app/Properties/Strings.uk.resx b/app/Properties/Strings.uk.resx index 4762a675..a7e3542c 100644 --- a/app/Properties/Strings.uk.resx +++ b/app/Properties/Strings.uk.resx @@ -330,6 +330,9 @@ Вимкнути контролер + + Вимкнути при закритті + Вимкнути овердрайв дисплею @@ -699,7 +702,7 @@ Вимкнений - Вимикати на батареї + Вимкнути на батареї Підключає екран лептопу до dGPU, щоб підвищити FPS diff --git a/app/Properties/Strings.vi.resx b/app/Properties/Strings.vi.resx index 5e9386a0..122d2b3a 100644 --- a/app/Properties/Strings.vi.resx +++ b/app/Properties/Strings.vi.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + Tắt Overdrive diff --git a/app/Properties/Strings.zh-CN.resx b/app/Properties/Strings.zh-CN.resx index f1b8506c..3435eb35 100644 --- a/app/Properties/Strings.zh-CN.resx +++ b/app/Properties/Strings.zh-CN.resx @@ -330,6 +330,9 @@ Disable Controller + + Disable on lid close + 禁用屏幕快速显示(OD) diff --git a/app/Properties/Strings.zh-TW.resx b/app/Properties/Strings.zh-TW.resx index 6584c9d1..431c070c 100644 --- a/app/Properties/Strings.zh-TW.resx +++ b/app/Properties/Strings.zh-TW.resx @@ -330,6 +330,9 @@ 停用控制器 + + Disable on lid close + 禁用螢幕加速OD From aa07a39c35eafb6ebf4e758b7c192bf39c373fc6 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 26 Feb 2024 14:57:27 +0100 Subject: [PATCH 30/35] UI tweaks --- app/Settings.Designer.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/Settings.Designer.cs b/app/Settings.Designer.cs index 09e357f6..96e73930 100644 --- a/app/Settings.Designer.cs +++ b/app/Settings.Designer.cs @@ -184,7 +184,7 @@ namespace GHelper panelMatrix.Margin = new Padding(0); panelMatrix.Name = "panelMatrix"; panelMatrix.Padding = new Padding(20, 20, 20, 10); - panelMatrix.Size = new Size(827, 176); + panelMatrix.Size = new Size(827, 212); panelMatrix.TabIndex = 3; panelMatrix.TabStop = true; // @@ -192,7 +192,7 @@ namespace GHelper // checkMatrixLid.AutoSize = true; checkMatrixLid.ForeColor = SystemColors.GrayText; - checkMatrixLid.Location = new Point(275, 126); + checkMatrixLid.Location = new Point(27, 162); checkMatrixLid.Margin = new Padding(8, 4, 8, 4); checkMatrixLid.Name = "checkMatrixLid"; checkMatrixLid.Size = new Size(253, 36); @@ -340,7 +340,7 @@ namespace GHelper panelBattery.Controls.Add(sliderBattery); panelBattery.Controls.Add(panelBatteryTitle); panelBattery.Dock = DockStyle.Top; - panelBattery.Location = new Point(11, 1608); + panelBattery.Location = new Point(11, 1644); panelBattery.Margin = new Padding(0); panelBattery.Name = "panelBattery"; panelBattery.Padding = new Padding(20, 20, 20, 10); @@ -432,7 +432,7 @@ namespace GHelper panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink; panelFooter.Controls.Add(tableButtons); panelFooter.Dock = DockStyle.Top; - panelFooter.Location = new Point(11, 1783); + panelFooter.Location = new Point(11, 1819); panelFooter.Margin = new Padding(0); panelFooter.Name = "panelFooter"; panelFooter.Padding = new Padding(20); @@ -1179,7 +1179,7 @@ namespace GHelper panelKeyboard.Controls.Add(tableLayoutKeyboard); panelKeyboard.Controls.Add(panelKeyboardTitle); panelKeyboard.Dock = DockStyle.Top; - panelKeyboard.Location = new Point(11, 1266); + panelKeyboard.Location = new Point(11, 1302); panelKeyboard.Margin = new Padding(0); panelKeyboard.Name = "panelKeyboard"; panelKeyboard.Padding = new Padding(20); @@ -1355,7 +1355,7 @@ namespace GHelper panelVersion.Controls.Add(labelCharge); panelVersion.Controls.Add(checkStartup); panelVersion.Dock = DockStyle.Top; - panelVersion.Location = new Point(11, 1727); + panelVersion.Location = new Point(11, 1763); panelVersion.Margin = new Padding(4); panelVersion.Name = "panelVersion"; panelVersion.Size = new Size(827, 56); @@ -1380,7 +1380,7 @@ namespace GHelper panelPeripherals.Controls.Add(tableLayoutPeripherals); panelPeripherals.Controls.Add(panelPeripheralsTile); panelPeripherals.Dock = DockStyle.Top; - panelPeripherals.Location = new Point(11, 1410); + panelPeripherals.Location = new Point(11, 1446); panelPeripherals.Margin = new Padding(0); panelPeripherals.Name = "panelPeripherals"; panelPeripherals.Padding = new Padding(20, 20, 20, 10); @@ -1522,7 +1522,7 @@ namespace GHelper panelAlly.Controls.Add(tableLayoutAlly); panelAlly.Controls.Add(panelAllyTitle); panelAlly.Dock = DockStyle.Top; - panelAlly.Location = new Point(11, 1126); + panelAlly.Location = new Point(11, 1162); panelAlly.Margin = new Padding(0); panelAlly.Name = "panelAlly"; panelAlly.Padding = new Padding(20, 20, 20, 0); From 3b54e89d8ea3b59f57ac5fde1fc7070bd3918ecc Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 26 Feb 2024 15:08:52 +0100 Subject: [PATCH 31/35] UI Tweaks --- app/Settings.Designer.cs | 67 ++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 24 deletions(-) diff --git a/app/Settings.Designer.cs b/app/Settings.Designer.cs index 96e73930..e08037a2 100644 --- a/app/Settings.Designer.cs +++ b/app/Settings.Designer.cs @@ -31,7 +31,9 @@ namespace GHelper private void InitializeComponent() { panelMatrix = new Panel(); + panelMatrixAuto = new Panel(); checkMatrixLid = new CheckBox(); + checkMatrix = new CheckBox(); tableLayoutMatrix = new TableLayoutPanel(); comboMatrix = new RComboBox(); comboMatrixRunning = new RComboBox(); @@ -40,7 +42,6 @@ namespace GHelper panelMatrixTitle = new Panel(); pictureMatrix = new PictureBox(); labelMatrix = new Label(); - checkMatrix = new CheckBox(); panelBattery = new Panel(); buttonBatteryFull = new RButton(); sliderBattery = new Slider(); @@ -128,6 +129,7 @@ namespace GHelper pictureGamma = new PictureBox(); labelGammaTitle = new Label(); panelMatrix.SuspendLayout(); + panelMatrixAuto.SuspendLayout(); tableLayoutMatrix.SuspendLayout(); panelMatrixTitle.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureMatrix).BeginInit(); @@ -175,32 +177,58 @@ namespace GHelper panelMatrix.AccessibleRole = AccessibleRole.Grouping; panelMatrix.AutoSize = true; panelMatrix.AutoSizeMode = AutoSizeMode.GrowAndShrink; - panelMatrix.Controls.Add(checkMatrixLid); + panelMatrix.Controls.Add(panelMatrixAuto); panelMatrix.Controls.Add(tableLayoutMatrix); panelMatrix.Controls.Add(panelMatrixTitle); - panelMatrix.Controls.Add(checkMatrix); panelMatrix.Dock = DockStyle.Top; panelMatrix.Location = new Point(11, 950); panelMatrix.Margin = new Padding(0); panelMatrix.Name = "panelMatrix"; panelMatrix.Padding = new Padding(20, 20, 20, 10); - panelMatrix.Size = new Size(827, 212); + panelMatrix.Size = new Size(827, 194); panelMatrix.TabIndex = 3; panelMatrix.TabStop = true; // + // panelMatrixAuto + // + panelMatrixAuto.Controls.Add(checkMatrixLid); + panelMatrixAuto.Controls.Add(checkMatrix); + panelMatrixAuto.Dock = DockStyle.Top; + panelMatrixAuto.Location = new Point(20, 144); + panelMatrixAuto.Margin = new Padding(4); + panelMatrixAuto.Name = "panelMatrixAuto"; + panelMatrixAuto.Padding = new Padding(5, 0, 0, 0); + panelMatrixAuto.Size = new Size(787, 40); + panelMatrixAuto.TabIndex = 47; + // // checkMatrixLid // checkMatrixLid.AutoSize = true; + checkMatrixLid.Dock = DockStyle.Left; checkMatrixLid.ForeColor = SystemColors.GrayText; - checkMatrixLid.Location = new Point(27, 162); + checkMatrixLid.Location = new Point(256, 0); checkMatrixLid.Margin = new Padding(8, 4, 8, 4); checkMatrixLid.Name = "checkMatrixLid"; - checkMatrixLid.Size = new Size(253, 36); + checkMatrixLid.Size = new Size(253, 40); checkMatrixLid.TabIndex = 46; checkMatrixLid.Text = "Disable on lid close"; checkMatrixLid.UseVisualStyleBackColor = true; checkMatrixLid.Visible = false; // + // checkMatrix + // + checkMatrix.AutoSize = true; + checkMatrix.Dock = DockStyle.Left; + checkMatrix.ForeColor = SystemColors.GrayText; + checkMatrix.Location = new Point(5, 0); + checkMatrix.Margin = new Padding(8, 4, 8, 4); + checkMatrix.Name = "checkMatrix"; + checkMatrix.Padding = new Padding(0, 0, 10, 0); + checkMatrix.Size = new Size(251, 40); + checkMatrix.TabIndex = 19; + checkMatrix.Text = Properties.Strings.TurnOffOnBattery; + checkMatrix.UseVisualStyleBackColor = true; + // // tableLayoutMatrix // tableLayoutMatrix.AutoSize = true; @@ -320,18 +348,6 @@ namespace GHelper labelMatrix.TabIndex = 40; labelMatrix.Text = "Anime Matrix"; // - // checkMatrix - // - checkMatrix.AutoSize = true; - checkMatrix.ForeColor = SystemColors.GrayText; - checkMatrix.Location = new Point(27, 126); - checkMatrix.Margin = new Padding(8, 4, 8, 4); - checkMatrix.Name = "checkMatrix"; - checkMatrix.Size = new Size(241, 36); - checkMatrix.TabIndex = 19; - checkMatrix.Text = Properties.Strings.TurnOffOnBattery; - checkMatrix.UseVisualStyleBackColor = true; - // // panelBattery // panelBattery.AutoSize = true; @@ -340,7 +356,7 @@ namespace GHelper panelBattery.Controls.Add(sliderBattery); panelBattery.Controls.Add(panelBatteryTitle); panelBattery.Dock = DockStyle.Top; - panelBattery.Location = new Point(11, 1644); + panelBattery.Location = new Point(11, 1626); panelBattery.Margin = new Padding(0); panelBattery.Name = "panelBattery"; panelBattery.Padding = new Padding(20, 20, 20, 10); @@ -432,7 +448,7 @@ namespace GHelper panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink; panelFooter.Controls.Add(tableButtons); panelFooter.Dock = DockStyle.Top; - panelFooter.Location = new Point(11, 1819); + panelFooter.Location = new Point(11, 1801); panelFooter.Margin = new Padding(0); panelFooter.Name = "panelFooter"; panelFooter.Padding = new Padding(20); @@ -1179,7 +1195,7 @@ namespace GHelper panelKeyboard.Controls.Add(tableLayoutKeyboard); panelKeyboard.Controls.Add(panelKeyboardTitle); panelKeyboard.Dock = DockStyle.Top; - panelKeyboard.Location = new Point(11, 1302); + panelKeyboard.Location = new Point(11, 1284); panelKeyboard.Margin = new Padding(0); panelKeyboard.Name = "panelKeyboard"; panelKeyboard.Padding = new Padding(20); @@ -1355,7 +1371,7 @@ namespace GHelper panelVersion.Controls.Add(labelCharge); panelVersion.Controls.Add(checkStartup); panelVersion.Dock = DockStyle.Top; - panelVersion.Location = new Point(11, 1763); + panelVersion.Location = new Point(11, 1745); panelVersion.Margin = new Padding(4); panelVersion.Name = "panelVersion"; panelVersion.Size = new Size(827, 56); @@ -1380,7 +1396,7 @@ namespace GHelper panelPeripherals.Controls.Add(tableLayoutPeripherals); panelPeripherals.Controls.Add(panelPeripheralsTile); panelPeripherals.Dock = DockStyle.Top; - panelPeripherals.Location = new Point(11, 1446); + panelPeripherals.Location = new Point(11, 1428); panelPeripherals.Margin = new Padding(0); panelPeripherals.Name = "panelPeripherals"; panelPeripherals.Padding = new Padding(20, 20, 20, 10); @@ -1522,7 +1538,7 @@ namespace GHelper panelAlly.Controls.Add(tableLayoutAlly); panelAlly.Controls.Add(panelAllyTitle); panelAlly.Dock = DockStyle.Top; - panelAlly.Location = new Point(11, 1162); + panelAlly.Location = new Point(11, 1144); panelAlly.Margin = new Padding(0); panelAlly.Name = "panelAlly"; panelAlly.Padding = new Padding(20, 20, 20, 0); @@ -1754,6 +1770,8 @@ namespace GHelper Text = "G-Helper"; panelMatrix.ResumeLayout(false); panelMatrix.PerformLayout(); + panelMatrixAuto.ResumeLayout(false); + panelMatrixAuto.PerformLayout(); tableLayoutMatrix.ResumeLayout(false); panelMatrixTitle.ResumeLayout(false); panelMatrixTitle.PerformLayout(); @@ -1912,5 +1930,6 @@ namespace GHelper private PictureBox pictureGamma; private Label labelGammaTitle; private CheckBox checkMatrixLid; + private Panel panelMatrixAuto; } } From e7bb9c81d24c0e5511d5da08c132f8be322dd90c Mon Sep 17 00:00:00 2001 From: IceStormNG Date: Mon, 26 Feb 2024 15:09:08 +0100 Subject: [PATCH 32/35] Support for Strix Impact (P303) (#2121) * Support for Strix Carry (P508) * Fixes polling rate, angle snapping and debounce for Gladius II Origin. * The Gen2 version of the TuF M3 uses 0-100 for brightness. * Adds support for ROG Strix Impact III (P518) * Import/Export feature for mice. * Suppor for Strix Impact (P303) --- app/Peripherals/Mouse/Models/StrixImpact.cs | 247 ++++++++++++++++++++ app/Peripherals/PeripheralsProvider.cs | 1 + 2 files changed, 248 insertions(+) create mode 100644 app/Peripherals/Mouse/Models/StrixImpact.cs diff --git a/app/Peripherals/Mouse/Models/StrixImpact.cs b/app/Peripherals/Mouse/Models/StrixImpact.cs new file mode 100644 index 00000000..a3f66219 --- /dev/null +++ b/app/Peripherals/Mouse/Models/StrixImpact.cs @@ -0,0 +1,247 @@ +namespace GHelper.Peripherals.Mouse.Models +{ + //P303 + public class StrixImpact : AsusMouse + { + public StrixImpact() : base(0x0B05, 0x1847, "mi_02", false) + { + } + + public StrixImpact(ushort productId, string path) : base(0x0B05, productId, path, false) + { + } + + public override int DPIProfileCount() + { + return 2; + } + + public override string GetDisplayName() + { + return "Strix Impact"; + } + + + public override PollingRate[] SupportedPollingrates() + { + return new PollingRate[] { + PollingRate.PR125Hz, + PollingRate.PR250Hz, + PollingRate.PR500Hz, + PollingRate.PR1000Hz + }; + } + + public override int ProfileCount() + { + return 1; + } + public override int MaxDPI() + { + return 5_000; + } + + public override bool HasRGB() + { + return true; + } + + public override bool HasAutoPowerOff() + { + return false; + } + + public override bool HasDebounceSetting() + { + return true; + } + + public override bool HasLowBatteryWarning() + { + return false; + } + + public override bool HasBattery() + { + return false; + } + + public override bool HasDPIColors() + { + return false; + } + + public override bool IsLightingModeSupported(LightingMode lightingMode) + { + return lightingMode == LightingMode.Static + || lightingMode == LightingMode.Breathing + || lightingMode == LightingMode.ColorCycle + || lightingMode == LightingMode.React; + } + + public override LightingZone[] SupportedLightingZones() + { + return new LightingZone[] { LightingZone.Logo }; + } + + public override int DPIIncrements() + { + return 100; + } + + + public override int MinDPI() + { + return 200; + } + + public override bool CanChangeDPIProfile() + { + return true; + } + + public override int MaxBrightness() + { + return 4; + } + + protected override byte[] GetUpdateLightingModePacket(LightingSetting lightingSetting, LightingZone zone) + { + /* + * 51 28 00 00 [00] [04] [35 04 FF] 00 00 00 00 00 00 00 + */ + + return new byte[] { reportId, 0x51, 0x28, 0x00, 0x00, + IndexForLightingMode(lightingSetting.LightingMode), + (byte)lightingSetting.Brightness, + lightingSetting.RGBColor.R, lightingSetting.RGBColor.G, lightingSetting.RGBColor.B + }; + } + + protected override byte[] GetReadLightingModePacket(LightingZone zone) + { + return new byte[] { 0x00, 0x12, 0x03, 0x00 }; + } + + protected LightingSetting? ParseLightingSetting(byte[] packet, LightingZone zone) + { + if (packet[1] != 0x12 || packet[2] != 0x03) + { + return null; + } + + int offset = 5 + (((int)zone) * 5); + + LightingSetting setting = new LightingSetting(); + + setting.LightingMode = LightingModeForIndex(packet[offset + 0]); + setting.Brightness = packet[offset + 1]; + + setting.RGBColor = Color.FromArgb(packet[offset + 2], packet[offset + 3], packet[offset + 4]); + + + return setting; + } + + public override void ReadLightingSetting() + { + if (!HasRGB()) + { + return; + } + //Mouse sends all lighting zones in one response Direction, Random col, Speed + //00 12 03 00 00 [00 04 ff 00 80] [00 04 00 ff ff] [00 04 ff ff ff] 00 [00] [00] [00] 00 00 + //00 12 03 00 00 [03 04 00 00 00] [03 04 00 00 00] [03 04 00 00 00] 00 [00] [00] [07] 00 00 + byte[]? response = WriteForResponse(GetReadLightingModePacket(LightingZone.All)); + if (response is null) return; + + LightingZone[] lz = SupportedLightingZones(); + for (int i = 0; i < lz.Length; ++i) + { + LightingSetting? ls = ParseLightingSetting(response, lz[i]); + if (ls is null) + { + Logger.WriteLine(GetDisplayName() + ": Failed to read RGB Setting for Zone " + lz[i].ToString()); + continue; + } + ls.AnimationDirection = SupportsAnimationDirection(ls.LightingMode) + ? (AnimationDirection)response[21] + : AnimationDirection.Clockwise; + + ls.RandomColor = SupportsRandomColor(ls.LightingMode) && response[22] == 0x01; + + ls.AnimationSpeed = SupportsAnimationSpeed(ls.LightingMode) + ? (AnimationSpeed)response[23] + : AnimationSpeed.Medium; + + if (ls.AnimationSpeed != AnimationSpeed.Fast + && ls.AnimationSpeed != AnimationSpeed.Medium + && ls.AnimationSpeed != AnimationSpeed.Slow) + { + ls.AnimationSpeed = AnimationSpeed.Medium; + } + + Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString()); + LightingSetting[i] = ls; + } + } + + + + protected override PollingRate ParsePollingRate(byte[] packet) + { + if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00) + { + return (PollingRate)packet[9]; + } + + return PollingRate.PR125Hz; + } + + protected override byte[] GetUpdatePollingRatePacket(PollingRate pollingRate) + { + return new byte[] { reportId, 0x51, 0x31, 0x02, 0x00, (byte)pollingRate }; + } + + protected override bool ParseAngleSnapping(byte[] packet) + { + if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00) + { + return packet[13] == 0x01; + } + + return false; + } + + protected override byte[] GetUpdateAngleSnappingPacket(bool angleSnapping) + { + return new byte[] { reportId, 0x51, 0x31, 0x04, 0x00, (byte)(angleSnapping ? 0x01 : 0x00) }; + } + + protected override DebounceTime ParseDebounce(byte[] packet) + { + if (packet[1] != 0x12 || packet[2] != 0x04 || packet[3] != 0x00) + { + return DebounceTime.MS12; + } + + if (packet[11] < 0x02) + { + return DebounceTime.MS12; + } + + if (packet[11] > 0x07) + { + return DebounceTime.MS32; + } + + return (DebounceTime)packet[11]; + } + + protected override byte[] GetUpdateDebouncePacket(DebounceTime debounce) + { + return new byte[] { reportId, 0x51, 0x31, 0x03, 0x00, ((byte)debounce) }; + } + } + +} diff --git a/app/Peripherals/PeripheralsProvider.cs b/app/Peripherals/PeripheralsProvider.cs index bfef7896..9042c5b1 100644 --- a/app/Peripherals/PeripheralsProvider.cs +++ b/app/Peripherals/PeripheralsProvider.cs @@ -215,6 +215,7 @@ namespace GHelper.Peripherals DetectMouse(new SpathaX()); DetectMouse(new StrixCarry()); DetectMouse(new StrixImpactIII()); + DetectMouse(new StrixImpact()); } public static void DetectMouse(AsusMouse am) From df71595b454ea8b2c4583b70f19f77c4ca0d6380 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 26 Feb 2024 18:52:36 +0100 Subject: [PATCH 33/35] New translations strings.resx (Spanish) (#2122) --- app/Properties/Strings.es.resx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Properties/Strings.es.resx b/app/Properties/Strings.es.resx index b486af0a..0d6b0823 100644 --- a/app/Properties/Strings.es.resx +++ b/app/Properties/Strings.es.resx @@ -331,7 +331,7 @@ Deshabilitar mando - Disable on lid close + Desactivar al cerrar la tapa Desactivar Overdrive From 43781189512a56738c065427d4f8c0ce49d40b6d Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Tue, 27 Feb 2024 15:28:45 +0100 Subject: [PATCH 34/35] Update README.md --- docs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 74117d04..f6cb04f7 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,7 +1,7 @@ # G-Helper - Lightweight control tool for Asus laptops [![United24](https://raw.githubusercontent.com/seerge/g-helper/main/docs/ua.png)](https://u24.gov.ua/) -[![GitHub release](https://img.shields.io/github/release/seerge/g-helper.svg?style=flat-square)](https://GitHub.com/seerge/g-helper/releases/) -[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total.svg?style=flat-square)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social)](https://GitHub.com/seerge/g-helper/stargazers/) +[![GitHub release](https://img.shields.io/github/release/seerge/g-helper)](https://GitHub.com/seerge/g-helper/releases/) +[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social)](https://GitHub.com/seerge/g-helper/stargazers/) Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat and unnecessary services. Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, VivoBook, Ally and many more! From 88ab4f396ef776cf30c59d8a8be70a76dc3182af Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Tue, 27 Feb 2024 15:41:41 +0100 Subject: [PATCH 35/35] Update SECURITY.md --- .github/SECURITY.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/SECURITY.md b/.github/SECURITY.md index 7504e677..d24f4109 100644 --- a/.github/SECURITY.md +++ b/.github/SECURITY.md @@ -4,8 +4,8 @@ | Version | Supported | | ------- | ------------------ | -| 0.89+ | :white_check_mark: | -| < 0.89 | :x: | +| 0.151+ | :white_check_mark: | +| < 0.151 | :x: | ## Reporting a Vulnerability