diff --git a/app/ASUSWmi.cs b/app/ASUSWmi.cs
index 58c7a25c..68995f8f 100644
--- a/app/ASUSWmi.cs
+++ b/app/ASUSWmi.cs
@@ -14,6 +14,11 @@ public class ASUSWmi
public const int KB_Light_Up = 0xc4;
public const int KB_Light_Down = 0xc5;
+ public const int ChargerMode = 0x0012006C;
+
+ public const int ChargerUSB = 2;
+ public const int ChargerBarrel = 1;
+
public const uint CPU_Fan = 0x00110013;
public const uint GPU_Fan = 0x00110014;
public const uint Mid_Fan = 0x00110031;
diff --git a/app/AnimeMatrix/AnimeMatrixDevice.cs b/app/AnimeMatrix/AnimeMatrixDevice.cs
index 026091e0..4b7f4a87 100644
--- a/app/AnimeMatrix/AnimeMatrixDevice.cs
+++ b/app/AnimeMatrix/AnimeMatrixDevice.cs
@@ -6,6 +6,9 @@ using System.Drawing.Drawing2D;
using System.Text;
using System.Globalization;
using System;
+using System.Drawing;
+using OSD;
+using System.Diagnostics;
namespace Starlight.AnimeMatrix
{
@@ -107,9 +110,6 @@ namespace Starlight.AnimeMatrix
MaxColumns = 33;
dx = 1;
- //FullRows = 7;
- //FullEvenRows = 3;
-
MaxRows = 55;
LedCount = 1245;
@@ -177,17 +177,8 @@ namespace Starlight.AnimeMatrix
{
return (y + 1) / 2 - 3;
}
- case AnimeType.GA402:
- if (y < 11)
- {
- return 0;
- }
- else
- {
- return (y) / 2 - 5;
- }
default:
- throw new ArgumentException("Invalid anime type", nameof(_model));
+ return (int)Math.Ceiling(Math.Max(0, y - 11) / 2F);
}
}
@@ -197,10 +188,8 @@ namespace Starlight.AnimeMatrix
{
case AnimeType.GA401:
return 33;
- case AnimeType.GA402:
- return 34;
default:
- throw new ArgumentException("Invalid anime type", nameof(_model));
+ return 34;
}
}
@@ -221,36 +210,15 @@ namespace Starlight.AnimeMatrix
default:
return 36 - y / 2;
}
- case AnimeType.GA402:
- return Width(y) - FirstX(y);
default:
- throw new ArgumentException("Invalid anime type", nameof(_model));
+ return Width(y) - FirstX(y);
}
}
- /*
- public int XStart(int row)
- {
- return (int)Math.Ceiling(Math.Max(0, row - FullRows) / 2.0);
- }
-
- public int XEnd(int row)
- {
- if (row <= FullEvenRows)
- {
- if (row % 2 == 1) return MaxColumns + 2;
- else return MaxColumns;
- }
- return MaxColumns;
- }
- */
public int RowToLinearAddress(int y)
{
- EnsureRowInRange(y);
-
int ret = 0;
-
for (var i = 0; i < y; i++)
ret += Pitch(i);
@@ -259,13 +227,10 @@ namespace Starlight.AnimeMatrix
public void SetLedPlanar(int x, int y, byte value)
{
- EnsureRowInRange(y);
+ if (!IsRowInRange(y)) return;
if (x >= FirstX(y) && x < Width(y))
- {
SetLedLinear(RowToLinearAddress(y) - FirstX(y) + x + dx, value);
- //Debug.Write((RowToLinearAddress(y) - FirstX(y) + x + dx).ToString() + " ");
- }
}
public void WakeUp()
@@ -366,9 +331,9 @@ namespace Starlight.AnimeMatrix
int second = DateTime.Now.Second;
if (CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern.Contains("H"))
- PresentText(DateTime.Now.ToString("H" + ((second % 2 == 0)?":":" ") + "mm"));
+ PresentTextDiagonal(DateTime.Now.ToString("H" + ((second % 2 == 0)?":":" ") + "mm"));
else
- PresentText(DateTime.Now.ToString("h" + ((second % 2 == 0) ? ":" : " ") + "mm"), DateTime.Now.ToString("tt"));
+ PresentTextDiagonal(DateTime.Now.ToString("h" + ((second % 2 == 0) ? ":" : " ") + "mmtt"));
}
public void PresentText(string text1, string text2 = "")
@@ -442,12 +407,52 @@ namespace Starlight.AnimeMatrix
}
}
- private void EnsureRowInRange(int row)
+
+ public void SetLedDiagonal(int x, int y, byte color, int delta = 10)
{
- if (row < 0 || row >= MaxRows)
+ //x+=delta;
+ y-=delta;
+
+ int dx = (x - y)/2;
+ int dy = x + y;
+ SetLedPlanar(dx, dy, color);
+ }
+
+ public void PresentTextDiagonal(string text)
+ {
+ int maxX = (int)Math.Sqrt(MaxRows * MaxRows + MaxColumns * MaxColumns);
+
+ using (Bitmap bmp = new Bitmap(maxX, MaxRows))
{
- throw new IndexOutOfRangeException($"Y-coordinate should fall in range of [0, {MaxRows - 1}].");
+ using (Graphics g = Graphics.FromImage(bmp))
+ {
+ g.CompositingQuality = CompositingQuality.HighQuality;
+ g.SmoothingMode = SmoothingMode.AntiAlias;
+
+ using (Font font = new Font("Calibri", 16F, GraphicsUnit.Pixel))
+ {
+ SizeF textSize = g.MeasureString(text, font);
+ g.DrawString(text, font, Brushes.White, 4, 0);
+ }
+ }
+
+ for (int y = 0; y < bmp.Height; y++)
+ {
+ for (int x = 0; x < bmp.Width; x++)
+ {
+ var pixel = bmp.GetPixel(x, y);
+ var color = (pixel.R + pixel.G + pixel.B) / 3;
+ SetLedDiagonal(x, y, (byte)color);
+ }
+ }
}
+
+ Present();
+ }
+
+ private bool IsRowInRange(int row)
+ {
+ return (row >= 0 && row < MaxRows);
}
private bool IsAddressableLed(int address)
diff --git a/app/Keyboard.Designer.cs b/app/Extra.Designer.cs
similarity index 81%
rename from app/Keyboard.Designer.cs
rename to app/Extra.Designer.cs
index 66da7efe..eb4caf0c 100644
--- a/app/Keyboard.Designer.cs
+++ b/app/Extra.Designer.cs
@@ -3,7 +3,7 @@ using GHelper.Properties;
namespace GHelper
{
- partial class Keyboard
+ partial class Extra
{
///
/// Required designer variable.
@@ -31,7 +31,7 @@ namespace GHelper
///
private void InitializeComponent()
{
- groupBox1 = new GroupBox();
+ groupBindings = new GroupBox();
pictureHelp = new PictureBox();
textFNF4 = new TextBox();
comboFNF4 = new RComboBox();
@@ -52,39 +52,40 @@ namespace GHelper
checkBoot = new CheckBox();
checkAwake = new CheckBox();
groupOther = new GroupBox();
+ checkUSBC = new CheckBox();
checkNoOverdrive = new CheckBox();
checkKeyboardAuto = new CheckBox();
checkTopmost = new CheckBox();
- groupBox1.SuspendLayout();
+ groupBindings.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
groupLight.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackBrightness).BeginInit();
groupOther.SuspendLayout();
SuspendLayout();
//
- // groupBox1
+ // groupBindings
//
- groupBox1.Controls.Add(pictureHelp);
- groupBox1.Controls.Add(textFNF4);
- groupBox1.Controls.Add(comboFNF4);
- groupBox1.Controls.Add(labelFNF4);
- groupBox1.Controls.Add(textM4);
- groupBox1.Controls.Add(textM3);
- groupBox1.Controls.Add(comboM4);
- groupBox1.Controls.Add(labelM4);
- groupBox1.Controls.Add(comboM3);
- groupBox1.Controls.Add(labelM3);
- groupBox1.Dock = DockStyle.Top;
- groupBox1.Location = new Point(10, 10);
- groupBox1.Name = "groupBox1";
- groupBox1.Size = new Size(840, 242);
- groupBox1.TabIndex = 0;
- groupBox1.TabStop = false;
- groupBox1.Text = Properties.Strings.KeyBindings;
+ groupBindings.Controls.Add(pictureHelp);
+ groupBindings.Controls.Add(textFNF4);
+ groupBindings.Controls.Add(comboFNF4);
+ groupBindings.Controls.Add(labelFNF4);
+ groupBindings.Controls.Add(textM4);
+ groupBindings.Controls.Add(textM3);
+ groupBindings.Controls.Add(comboM4);
+ groupBindings.Controls.Add(labelM4);
+ groupBindings.Controls.Add(comboM3);
+ groupBindings.Controls.Add(labelM3);
+ groupBindings.Dock = DockStyle.Top;
+ groupBindings.Location = new Point(10, 10);
+ groupBindings.Name = "groupBindings";
+ groupBindings.Size = new Size(844, 242);
+ groupBindings.TabIndex = 0;
+ groupBindings.TabStop = false;
+ groupBindings.Text = "Key Bindings";
//
// pictureHelp
//
- pictureHelp.BackgroundImage = Properties.Resources.icons8_help_64;
+ pictureHelp.BackgroundImage = Resources.icons8_help_64;
pictureHelp.BackgroundImageLayout = ImageLayout.Zoom;
pictureHelp.Cursor = Cursors.Hand;
pictureHelp.Location = new Point(744, 57);
@@ -141,7 +142,7 @@ namespace GHelper
comboM4.BorderColor = Color.White;
comboM4.ButtonColor = Color.FromArgb(255, 255, 255);
comboM4.FormattingEnabled = true;
- comboM4.Items.AddRange(new object[] { Properties.Strings.PerformanceMode, Properties.Strings.OpenGHelper, Properties.Strings.Custom });
+ comboM4.Items.AddRange(new object[] { Strings.PerformanceMode, Strings.OpenGHelper, Strings.Custom });
comboM4.Location = new Point(93, 112);
comboM4.Name = "comboM4";
comboM4.Size = new Size(312, 40);
@@ -161,7 +162,7 @@ namespace GHelper
comboM3.BorderColor = Color.White;
comboM3.ButtonColor = Color.FromArgb(255, 255, 255);
comboM3.FormattingEnabled = true;
- comboM3.Items.AddRange(new object[] { Properties.Strings.Default, Properties.Strings.VolumeMute, Properties.Strings.PlayPause, Properties.Strings.PrintScreen, Properties.Strings.ToggleAura, Properties.Strings.Custom });
+ comboM3.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
comboM3.Location = new Point(93, 54);
comboM3.Name = "comboM3";
comboM3.Size = new Size(312, 40);
@@ -189,11 +190,10 @@ namespace GHelper
groupLight.Dock = DockStyle.Top;
groupLight.Location = new Point(10, 252);
groupLight.Name = "groupLight";
- groupLight.Size = new Size(840, 395);
+ groupLight.Size = new Size(844, 395);
groupLight.TabIndex = 1;
groupLight.TabStop = false;
- groupLight.Text = Properties.Strings.KeyboardBacklight;
- //groupLight.AutoSize = true;
+ groupLight.Text = "Keyboard Backlight";
//
// labelBrightness
//
@@ -201,16 +201,16 @@ namespace GHelper
labelBrightness.Name = "labelBrightness";
labelBrightness.Size = new Size(197, 49);
labelBrightness.TabIndex = 0;
- labelBrightness.Text = Properties.Strings.Brightness;
+ labelBrightness.Text = "Brightness";
//
// trackBrightness
//
trackBrightness.Location = new Point(228, 294);
- trackBrightness.Name = "trackBrightness";
- trackBrightness.Size = new Size(600, 30);
- trackBrightness.TabIndex = 1;
- trackBrightness.Minimum = 0;
trackBrightness.Maximum = 3;
+ trackBrightness.Name = "trackBrightness";
+ trackBrightness.Size = new Size(600, 90);
+ trackBrightness.TabIndex = 1;
+ trackBrightness.TickStyle = TickStyle.TopLeft;
//
// labelSpeed
//
@@ -220,7 +220,7 @@ namespace GHelper
labelSpeed.Name = "labelSpeed";
labelSpeed.Size = new Size(198, 32);
labelSpeed.TabIndex = 40;
- labelSpeed.Text = Properties.Strings.AnimationSpeed;
+ labelSpeed.Text = "Animation Speed";
//
// comboKeyboardSpeed
//
@@ -245,7 +245,7 @@ namespace GHelper
checkShutdown.Name = "checkShutdown";
checkShutdown.Size = new Size(154, 36);
checkShutdown.TabIndex = 3;
- checkShutdown.Text = Properties.Strings.Shutdown;
+ checkShutdown.Text = Strings.Shutdown;
checkShutdown.UseVisualStyleBackColor = true;
//
// checkSleep
@@ -255,7 +255,7 @@ namespace GHelper
checkSleep.Name = "checkSleep";
checkSleep.Size = new Size(105, 36);
checkSleep.TabIndex = 2;
- checkSleep.Text = Properties.Strings.Sleep;
+ checkSleep.Text = Strings.Sleep;
checkSleep.UseVisualStyleBackColor = true;
//
// checkBoot
@@ -265,7 +265,7 @@ namespace GHelper
checkBoot.Name = "checkBoot";
checkBoot.Size = new Size(96, 36);
checkBoot.TabIndex = 1;
- checkBoot.Text = Properties.Strings.Boot;
+ checkBoot.Text = Strings.Boot;
checkBoot.UseVisualStyleBackColor = true;
//
// checkAwake
@@ -275,21 +275,32 @@ namespace GHelper
checkAwake.Name = "checkAwake";
checkAwake.Size = new Size(115, 36);
checkAwake.TabIndex = 0;
- checkAwake.Text = Properties.Strings.Awake;
+ checkAwake.Text = Strings.Awake;
checkAwake.UseVisualStyleBackColor = true;
//
// groupOther
//
+ groupOther.Controls.Add(checkUSBC);
groupOther.Controls.Add(checkNoOverdrive);
groupOther.Controls.Add(checkKeyboardAuto);
groupOther.Controls.Add(checkTopmost);
groupOther.Dock = DockStyle.Top;
- groupOther.Location = new Point(10, 626);
+ groupOther.Location = new Point(10, 647);
groupOther.Name = "groupOther";
- groupOther.Size = new Size(840, 225);
+ groupOther.Size = new Size(844, 293);
groupOther.TabIndex = 2;
groupOther.TabStop = false;
- groupOther.Text = Properties.Strings.Other;
+ groupOther.Text = "Other";
+ //
+ // checkUSBC
+ //
+ checkUSBC.AutoSize = true;
+ checkUSBC.Location = new Point(25, 210);
+ checkUSBC.Name = "checkUSBC";
+ checkUSBC.Size = new Size(659, 36);
+ checkUSBC.TabIndex = 4;
+ checkUSBC.Text = "Keep GPU disabled on USB-C charger in Optimized mode";
+ checkUSBC.UseVisualStyleBackColor = true;
//
// checkNoOverdrive
//
@@ -298,7 +309,7 @@ namespace GHelper
checkNoOverdrive.Name = "checkNoOverdrive";
checkNoOverdrive.Size = new Size(307, 36);
checkNoOverdrive.TabIndex = 3;
- checkNoOverdrive.Text = Properties.Strings.DisableOverdrive;
+ checkNoOverdrive.Text = Strings.DisableOverdrive;
checkNoOverdrive.UseVisualStyleBackColor = true;
//
// checkKeyboardAuto
@@ -309,7 +320,7 @@ namespace GHelper
checkKeyboardAuto.Name = "checkKeyboardAuto";
checkKeyboardAuto.Size = new Size(712, 36);
checkKeyboardAuto.TabIndex = 2;
- checkKeyboardAuto.Text = Properties.Strings.KeyboardAuto;
+ checkKeyboardAuto.Text = Strings.KeyboardAuto;
checkKeyboardAuto.UseVisualStyleBackColor = true;
//
// checkTopmost
@@ -319,28 +330,28 @@ namespace GHelper
checkTopmost.Name = "checkTopmost";
checkTopmost.Size = new Size(390, 36);
checkTopmost.TabIndex = 1;
- checkTopmost.Text = Properties.Strings.WindowTop;
+ checkTopmost.Text = Strings.WindowTop;
checkTopmost.UseVisualStyleBackColor = true;
//
- // Keyboard
+ // Extra
//
AutoScaleDimensions = new SizeF(13F, 32F);
AutoScaleMode = AutoScaleMode.Font;
- ClientSize = new Size(860, 890);
+ ClientSize = new Size(864, 953);
Controls.Add(groupOther);
Controls.Add(groupLight);
- Controls.Add(groupBox1);
+ Controls.Add(groupBindings);
FormBorderStyle = FormBorderStyle.FixedSingle;
MaximizeBox = false;
MdiChildrenMinimizedAnchorBottom = false;
MinimizeBox = false;
- Name = "Keyboard";
+ Name = "Extra";
Padding = new Padding(10);
ShowIcon = false;
ShowInTaskbar = false;
- Text = Properties.Strings.ExtraSettings;
- groupBox1.ResumeLayout(false);
- groupBox1.PerformLayout();
+ Text = "Extra Settings";
+ groupBindings.ResumeLayout(false);
+ groupBindings.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).EndInit();
groupLight.ResumeLayout(false);
groupLight.PerformLayout();
@@ -352,7 +363,7 @@ namespace GHelper
#endregion
- private GroupBox groupBox1;
+ private GroupBox groupBindings;
private Label labelM3;
private RComboBox comboM3;
private RComboBox comboM4;
@@ -376,5 +387,6 @@ namespace GHelper
private PictureBox pictureHelp;
private TrackBar trackBrightness;
private Label labelBrightness;
+ private CheckBox checkUSBC;
}
}
\ No newline at end of file
diff --git a/app/Keyboard.cs b/app/Extra.cs
similarity index 82%
rename from app/Keyboard.cs
rename to app/Extra.cs
index f7e8258b..cc929eca 100644
--- a/app/Keyboard.cs
+++ b/app/Extra.cs
@@ -3,7 +3,7 @@ using System.Diagnostics;
namespace GHelper
{
- public partial class Keyboard : RForm
+ public partial class Extra : RForm
{
Dictionary customActions = new Dictionary
@@ -15,6 +15,7 @@ namespace GHelper
{"aura", Properties.Strings.ToggleAura},
{"ghelper", Properties.Strings.OpenGHelper},
{"screen", Properties.Strings.ToggleScreen},
+ {"miniled", Properties.Strings.ToggleMiniled},
{"custom", Properties.Strings.Custom}
};
@@ -52,9 +53,29 @@ namespace GHelper
};
}
- public Keyboard()
+ public Extra()
{
InitializeComponent();
+
+ groupBindings.Text = Properties.Strings.KeyBindings;
+ groupLight.Text = Properties.Strings.KeyboardBacklight;
+ groupOther.Text = Properties.Strings.Other;
+
+ checkAwake.Text = Properties.Strings.Awake;
+ checkSleep.Text = Properties.Strings.Sleep;
+ checkBoot.Text = Properties.Strings.Boot;
+ checkShutdown.Text = Properties.Strings.Shutdown;
+
+ labelSpeed.Text = Properties.Strings.AnimationSpeed;
+ labelBrightness.Text = Properties.Strings.Brightness;
+
+ checkKeyboardAuto.Text = Properties.Strings.KeyboardAuto;
+ checkNoOverdrive.Text = Properties.Strings.DisableOverdrive;
+ checkTopmost.Text = Properties.Strings.WindowTop;
+ checkUSBC.Text = Properties.Strings.OptimizedUSBC;
+
+ Text = Properties.Strings.ExtraSettings;
+
InitTheme();
SetKeyCombo(comboM3, textM3, "m3");
@@ -89,6 +110,9 @@ namespace GHelper
checkNoOverdrive.Checked = (Program.config.getConfig("no_overdrive") == 1);
checkNoOverdrive.CheckedChanged += CheckNoOverdrive_CheckedChanged;
+ checkUSBC.Checked = (Program.config.getConfig("optimized_usbc") == 1);
+ checkUSBC.CheckedChanged += CheckUSBC_CheckedChanged;
+
int kb_brightness = Program.config.getConfig("keyboard_brightness");
trackBrightness.Value = (kb_brightness >= 0 && kb_brightness <= 3) ? kb_brightness : 3;
@@ -97,6 +121,11 @@ namespace GHelper
}
+ private void CheckUSBC_CheckedChanged(object? sender, EventArgs e)
+ {
+ Program.config.setConfig("optimized_usbc", (checkUSBC.Checked ? 1 : 0));
+ }
+
private void TrackBrightness_Scroll(object? sender, EventArgs e)
{
Program.config.setConfig("keyboard_brightness", trackBrightness.Value);
diff --git a/app/Keyboard.resx b/app/Extra.resx
similarity index 100%
rename from app/Keyboard.resx
rename to app/Extra.resx
diff --git a/app/Fans.cs b/app/Fans.cs
index 4b50649e..aa75a51f 100644
--- a/app/Fans.cs
+++ b/app/Fans.cs
@@ -86,13 +86,21 @@ namespace GHelper
private void InitGPUClocks()
{
+ try
+ {
+ using (var _gpuControl = new NvidiaGpuControl())
+ {
+ panelGPU.Visible = _gpuControl.IsValid;
- panelGPU.Visible = HardwareMonitor.GpuControl.IsNvidia;
+ trackGPUCore.Value = Math.Min(Program.config.getConfig("GPUCore"), 300);
+ trackGPUMemory.Value = Math.Min(Program.config.getConfig("GPUMemory"), 300);
+ VisualiseGPUClocks();
+ }
+ } catch (Exception ex)
+ {
+ panelGPU.Visible=false;
+ }
- trackGPUCore.Value = Math.Min(Program.config.getConfig("GPUCore"), 300);
- trackGPUMemory.Value = Math.Min(Program.config.getConfig("GPUMemory"), 300);
-
- VisualiseGPUClocks();
}
private void ButtonResetGPU_Click(object? sender, EventArgs e)
diff --git a/app/Gpu/NvidiaGpuControl.cs b/app/Gpu/NvidiaGpuControl.cs
index 0360591d..c1ecbf05 100644
--- a/app/Gpu/NvidiaGpuControl.cs
+++ b/app/Gpu/NvidiaGpuControl.cs
@@ -56,14 +56,9 @@ public class NvidiaGpuControl : IGpuControl
return null;
PhysicalGPU internalGpu = _internalGpu!;
-
IUtilizationDomainInfo? gpuUsage = GPUApi.GetUsages(internalGpu.Handle).GPU;
- if (gpuUsage == null)
- return null;
-
- return
- (int)gpuUsage?.Percentage;
+ return (int?)gpuUsage?.Percentage;
}
diff --git a/app/HardwareMonitor.cs b/app/HardwareMonitor.cs
index f5a5bf53..08d7f50d 100644
--- a/app/HardwareMonitor.cs
+++ b/app/HardwareMonitor.cs
@@ -124,22 +124,22 @@ public static class HardwareMonitor
return false;
}
- public static void RecreateGpuTemperatureProviderWithDelay()
+ public static void RecreateGpuControlWithDelay(int delay = 5)
{
// Re-enabling the discrete GPU takes a bit of time,
// so a simple workaround is to refresh again after that happens
Task.Run(async () =>
{
- await Task.Delay(TimeSpan.FromSeconds(5));
- RecreateGpuTemperatureProvider();
+ await Task.Delay(TimeSpan.FromSeconds(delay));
+ RecreateGpuControl();
});
}
- public static void RecreateGpuTemperatureProvider()
+ public static void RecreateGpuControl()
{
try
{
diff --git a/app/Program.cs b/app/Program.cs
index e867d14f..80e8a0bc 100644
--- a/app/Program.cs
+++ b/app/Program.cs
@@ -120,7 +120,7 @@ namespace GHelper
SetAutoModes();
- HardwareMonitor.RecreateGpuTemperatureProvider();
+ HardwareMonitor.RecreateGpuControl();
// Subscribing for system power change events
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
@@ -172,10 +172,10 @@ namespace GHelper
- public static void SetAutoModes()
+ public static void SetAutoModes(bool monitor = true)
{
- if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 2000) return;
+ if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 3000) return;
lastAuto = DateTimeOffset.Now.ToUnixTimeMilliseconds();
isPlugged = SystemInformation.PowerStatus.PowerLineStatus;
@@ -184,7 +184,8 @@ namespace GHelper
settingsForm.SetBatteryChargeLimit(config.getConfig("charge_limit"));
settingsForm.AutoPerformance();
- bool switched = settingsForm.AutoGPUMode();
+ bool switched = false;
+ if (monitor) switched = settingsForm.AutoGPUMode();
if (!switched)
{
@@ -270,6 +271,9 @@ namespace GHelper
case "screen":
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
break;
+ case "miniled":
+ settingsForm.BeginInvoke(settingsForm.ToogleMiniled);
+ break;
case "aura":
settingsForm.BeginInvoke(settingsForm.CycleAuraMode);
break;
diff --git a/app/Properties/Strings.Designer.cs b/app/Properties/Strings.Designer.cs
index 7fbf076d..f8ab3328 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 Keep GPU disabled on USB-C charger in Optimized mode.
+ ///
+ internal static string OptimizedUSBC {
+ get {
+ return ResourceManager.GetString("OptimizedUSBC", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Other.
///
@@ -861,6 +870,15 @@ namespace GHelper.Properties {
}
}
+ ///
+ /// Looks up a localized string similar to Toggle Miniled (if supported).
+ ///
+ internal static string ToggleMiniled {
+ get {
+ return ResourceManager.GetString("ToggleMiniled", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to Toggle Screen.
///
diff --git a/app/Properties/Strings.resx b/app/Properties/Strings.resx
index e5913e81..64b2d1e9 100644
--- a/app/Properties/Strings.resx
+++ b/app/Properties/Strings.resx
@@ -330,6 +330,9 @@
Switch to Eco on battery and to Standard when plugged
+
+ Keep GPU disabled on USB-C charger in Optimized mode
+
Other
@@ -384,6 +387,9 @@
Toggle Aura
+
+ Toggle Miniled (if supported)
+
Toggle Screen
diff --git a/app/Properties/Strings.zh-TW.resx b/app/Properties/Strings.zh-TW.resx
index 8497a41f..ed21cbdb 100644
--- a/app/Properties/Strings.zh-TW.resx
+++ b/app/Properties/Strings.zh-TW.resx
@@ -367,7 +367,7 @@
關機時
- 安静模式
+ 安靜模式
睡眠時
diff --git a/app/Settings.cs b/app/Settings.cs
index ec80cfd7..a72d331d 100644
--- a/app/Settings.cs
+++ b/app/Settings.cs
@@ -25,7 +25,7 @@ namespace GHelper
public string perfName = "Balanced";
public Fans fans;
- public Keyboard keyb;
+ public Extra keyb;
static AnimeMatrixDevice mat;
static long lastRefresh;
@@ -186,10 +186,7 @@ namespace GHelper
if (gitVersion.CompareTo(appVersion) > 0)
{
- BeginInvoke(delegate
- {
- SetVersionLabel(Properties.Strings.DownloadUpdate + ": " + tag, url);
- });
+ SetVersionLabel(Properties.Strings.DownloadUpdate + ": " + tag, url);
}
else
{
@@ -294,7 +291,7 @@ namespace GHelper
break;
case 1:
Logger.WriteLine("Monitor Power On");
- Program.SetAutoModes();
+ Program.SetAutoModes(false);
break;
case 2:
Logger.WriteLine("Monitor Dimmed");
@@ -561,7 +558,7 @@ namespace GHelper
{
if (keyb == null || keyb.Text == "")
{
- keyb = new Keyboard();
+ keyb = new Extra();
keyb.Show();
}
else
@@ -692,13 +689,18 @@ namespace GHelper
SetScreen(60, 0);
}
- private void ButtonMiniled_Click(object? sender, EventArgs e)
+ public void ToogleMiniled()
{
int miniled = (Program.config.getConfig("miniled") == 1) ? 0 : 1;
Program.config.setConfig("miniled", miniled);
SetScreen(-1, -1, miniled);
}
+ private void ButtonMiniled_Click(object? sender, EventArgs e)
+ {
+ ToogleMiniled();
+ }
+
public void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1)
{
@@ -853,6 +855,7 @@ namespace GHelper
gpuTemp = $": {HardwareMonitor.gpuTemp}°C ";
}
+
Program.settingsForm.BeginInvoke(delegate
{
labelCPUFan.Text = "CPU" + cpuTemp + HardwareMonitor.cpuFan;
@@ -921,10 +924,12 @@ namespace GHelper
customPower = limit_cpu;
}
+ /*
if (Program.wmi.DeviceGet(ASUSWmi.PPT_APUC2) >= 0)
{
Program.wmi.DeviceSet(ASUSWmi.PPT_APUC2, 87, "PowerLimit C2");
}
+ */
Program.settingsForm.BeginInvoke(SetPerformanceLabel);
@@ -1137,11 +1142,18 @@ namespace GHelper
}
+ public static bool IsPlugged()
+ {
+ bool optimizedUSBC = Program.config.getConfig("optimized_usbc") != 1;
+
+ return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online &&
+ (optimizedUSBC || Program.wmi.DeviceGet(ASUSWmi.ChargerMode) != ASUSWmi.ChargerUSB);
+
+ }
+
public bool AutoGPUMode()
{
- var Plugged = SystemInformation.PowerStatus.PowerLineStatus;
-
bool GpuAuto = Program.config.getConfig("gpu_auto") == 1;
bool ForceGPU = Program.config.ContainsModel("503");
@@ -1156,14 +1168,17 @@ namespace GHelper
return false;
else
{
+
+ if (ReEnableGPU()) return true;
+
if (eco == 1)
- if ((GpuAuto && Plugged == PowerLineStatus.Online) || (ForceGPU && GpuMode == ASUSWmi.GPUModeStandard))
+ if ((GpuAuto && IsPlugged()) || (ForceGPU && GpuMode == ASUSWmi.GPUModeStandard))
{
SetEcoGPU(0);
return true;
}
if (eco == 0)
- if ((GpuAuto && Plugged != PowerLineStatus.Online) || (ForceGPU && GpuMode == ASUSWmi.GPUModeEco))
+ if ((GpuAuto && !IsPlugged()) || (ForceGPU && GpuMode == ASUSWmi.GPUModeEco))
{
if (HardwareMonitor.IsUsedGPU())
@@ -1181,6 +1196,20 @@ namespace GHelper
}
+ public bool ReEnableGPU()
+ {
+ if (Screen.AllScreens.Length <= 1) return false;
+ if (Program.config.getConfig("gpu_reenable") != 1) return false;
+
+ Logger.WriteLine("Re-enabling gpu for 503 model");
+
+ Thread.Sleep(1000);
+ SetEcoGPU(1);
+ Thread.Sleep(1000);
+ SetEcoGPU(0);
+ return true;
+ }
+
private void UltimateUI(bool ultimate)
{
if (!ultimate)
@@ -1269,7 +1298,7 @@ namespace GHelper
Program.wmi.DeviceSet(ASUSWmi.GPUEco, eco, "GPUEco");
if (eco == 0)
- HardwareMonitor.RecreateGpuTemperatureProviderWithDelay();
+ HardwareMonitor.RecreateGpuControlWithDelay();
Program.settingsForm.BeginInvoke(delegate
{
diff --git a/app/old-ps1-script/ghelper.zip b/app/old-ps1-script/ghelper.zip
deleted file mode 100644
index 770c2e12..00000000
Binary files a/app/old-ps1-script/ghelper.zip and /dev/null differ