Compare commits

...

29 Commits

Author SHA1 Message Date
Serge
77f8d34d13 Version bump 2023-12-20 00:34:25 +01:00
Serge
02aef7f2f3 Merge branch 'main' of https://github.com/seerge/g-helper 2023-12-20 00:23:40 +01:00
Serge
edc434a890 Imprpved ambient mode 2023-12-20 00:23:38 +01:00
Serge
b337a226da Update README.md 2023-12-19 15:30:20 +01:00
Serge
03e6e69fb4 Update README.md 2023-12-19 15:24:20 +01:00
Serge
f852fbadb6 Update README.md 2023-12-19 15:23:18 +01:00
Serge
b95d676285 Merge branch 'main' of https://github.com/seerge/g-helper 2023-12-19 12:31:25 +01:00
Serge
fafa27b2a0 Enable GPU on shutdown option for FA506 https://github.com/seerge/g-helper/issues/1755#issuecomment-1862465947 2023-12-19 12:31:23 +01:00
IceStormNG
e7ceb2feaf Support for ASUS TuF M3 Gen II (#1762)
* Added support for ROG Chakram Core (P511)

* Add support for the TUF M3 Gen II
2023-12-19 12:29:12 +01:00
Serge
62f280b0b9 Custom aura colors will be saved to config 2023-12-18 17:39:58 +01:00
Serge
d179fe6b86 UI Fix 2023-12-18 17:23:23 +01:00
Serge
291909749a Merge branch 'main' of https://github.com/seerge/g-helper 2023-12-18 16:46:58 +01:00
Serge
883ec1828b Version bump 2023-12-18 16:46:55 +01:00
Serge
55a75f79b0 New Crowdin updates (#1752)
* New translations strings.resx (French)

* New translations strings.resx (French)
2023-12-17 19:34:02 +01:00
Serge
5c6deb902c Added G15 2022 to the list of devies with enabling GPU on shutdown https://github.com/seerge/g-helper/issues/1755 2023-12-17 19:33:46 +01:00
Serge
fac634b460 Hide SPPT for unsupported models https://github.com/seerge/g-helper/issues/1753 2023-12-17 19:30:47 +01:00
Serge
41e74084ac Chart temps tooltip rounding tweak https://github.com/seerge/g-helper/discussions/1744 2023-12-17 11:18:47 +01:00
Serge
bc8084f3e0 Matrix brightness control via hotkeys https://github.com/seerge/g-helper/issues/1733 2023-12-16 11:07:56 +01:00
Serge
e8d0030444 Merge branch 'main' of https://github.com/seerge/g-helper 2023-12-16 10:40:48 +01:00
Serge
4cf4e2eb66 Hide unsupported power sliders https://github.com/seerge/g-helper/discussions/1747 2023-12-16 10:40:46 +01:00
Serge
ece5606c27 Update README.md 2023-12-15 18:45:18 +01:00
Serge
e115e0f82b Ambient mode fix https://github.com/seerge/g-helper/issues/1641#issuecomment-1855661443 2023-12-15 18:44:54 +01:00
Serge
d6fe7f41c1 Remove unsupported RGB colors from GA502IU https://github.com/seerge/g-helper/issues/1740 2023-12-13 23:06:28 +01:00
Serge
4a0e9d2e41 Separated PL1/PL2 and SPL/SPPT https://github.com/seerge/g-helper/issues/1729 2023-12-13 17:16:44 +01:00
Serge
e59142140c Ambient tweaks 2023-12-13 16:46:37 +01:00
Serge
8ca043de7d Ambient mode improvements 2023-12-13 16:42:29 +01:00
Serge
9543cd400e Ultimate mode fix for FA617N 2023-12-13 12:48:22 +01:00
Serge
b808aa7619 Issue https://github.com/seerge/g-helper/issues/1734 2023-12-13 11:20:58 +01:00
Serge
6ca63bb9c5 Removed unsupported backlight options for ARCNM https://github.com/seerge/g-helper/issues/1728 2023-12-12 12:29:26 +01:00
16 changed files with 273 additions and 82 deletions

View File

@@ -345,7 +345,7 @@ public static class AppConfig
public static bool IsSingleColor()
{
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13");
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("GA502IU");
}
public static bool IsStrix()
@@ -355,7 +355,7 @@ public static class AppConfig
public static bool IsStrixLimitedRGB()
{
return ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513RS") || ContainsModel("G513RM") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G513QM") || ContainsModel("G713RC");
return ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G513QM") || ContainsModel("G713RC");
}
public static bool IsStrixNumpad()
@@ -386,7 +386,7 @@ public static class AppConfig
public static bool NoAutoUltimate()
{
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513");
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617");
}
@@ -428,7 +428,7 @@ public static class AppConfig
public static bool IsGPUFixNeeded()
{
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("GV301") || ContainsModel("GZ301") || ContainsModel("FX506") || ContainsModel("GU603") || ContainsModel("GU604") || ContainsModel("G614J");
return ContainsModel("GA402X") || ContainsModel("GV302") || ContainsModel("GV301") || ContainsModel("GZ301") || ContainsModel("FX506") || ContainsModel("FA506") || ContainsModel("GU603") || ContainsModel("GU604") || ContainsModel("G614J") || ContainsModel("GA503");
}
public static bool IsGPUFix()

View File

@@ -536,6 +536,7 @@ public class AsusACPI
public bool IsAllAmdPPT()
{
//return false;
return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0;
}

View File

@@ -293,7 +293,7 @@ namespace GHelper
}
if ((!AppConfig.IsStrix() && !AppConfig.IsZ13()) || AppConfig.IsStrixLimitedRGB())
if ((!AppConfig.IsStrix() && !AppConfig.IsZ13()) || AppConfig.IsStrixLimitedRGB() || AppConfig.IsARCNM())
{
labelBacklightLid.Visible = false;
checkAwakeLid.Visible = false;

127
app/Fans.Designer.cs generated
View File

@@ -31,14 +31,14 @@ namespace GHelper
/// </summary>
private void InitializeComponent()
{
ChartArea chartArea1 = new ChartArea();
Title title1 = new Title();
ChartArea chartArea2 = new ChartArea();
Title title2 = new Title();
ChartArea chartArea3 = new ChartArea();
Title title3 = new Title();
ChartArea chartArea4 = new ChartArea();
Title title4 = new Title();
ChartArea chartArea17 = new ChartArea();
Title title17 = new Title();
ChartArea chartArea18 = new ChartArea();
Title title18 = new Title();
ChartArea chartArea19 = new ChartArea();
Title title19 = new Title();
ChartArea chartArea20 = new ChartArea();
Title title20 = new Title();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans));
panelFans = new Panel();
labelTip = new Label();
@@ -141,6 +141,10 @@ namespace GHelper
buttonAdvanced = new RButton();
buttonGPU = new RButton();
buttonCPU = new RButton();
panelA3 = new Panel();
labelA3 = new Label();
labelLeftA3 = new Label();
trackA3 = new TrackBar();
panelFans.SuspendLayout();
tableFanCharts.SuspendLayout();
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
@@ -195,6 +199,8 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
panelNav.SuspendLayout();
tableNav.SuspendLayout();
panelA3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackA3).BeginInit();
SuspendLayout();
//
// panelFans
@@ -251,8 +257,8 @@ namespace GHelper
//
// chartGPU
//
chartArea1.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1);
chartArea17.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea17);
chartGPU.Dock = DockStyle.Fill;
chartGPU.Location = new Point(12, 493);
chartGPU.Margin = new Padding(2, 10, 2, 10);
@@ -260,13 +266,13 @@ namespace GHelper
chartGPU.Size = new Size(782, 463);
chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU";
title1.Name = "Title1";
chartGPU.Titles.Add(title1);
title17.Name = "Title1";
chartGPU.Titles.Add(title17);
//
// chartCPU
//
chartArea2.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea2);
chartArea18.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea18);
chartCPU.Dock = DockStyle.Fill;
chartCPU.Location = new Point(12, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10);
@@ -274,13 +280,13 @@ namespace GHelper
chartCPU.Size = new Size(782, 463);
chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU";
title2.Name = "Title1";
chartCPU.Titles.Add(title2);
title18.Name = "Title1";
chartCPU.Titles.Add(title18);
//
// chartXGM
//
chartArea3.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea3);
chartArea19.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea19);
chartXGM.Dock = DockStyle.Fill;
chartXGM.Location = new Point(12, 1459);
chartXGM.Margin = new Padding(2, 10, 2, 10);
@@ -288,14 +294,14 @@ namespace GHelper
chartXGM.Size = new Size(782, 463);
chartXGM.TabIndex = 14;
chartXGM.Text = "chartXGM";
title3.Name = "Title4";
chartXGM.Titles.Add(title3);
title19.Name = "Title4";
chartXGM.Titles.Add(title19);
chartXGM.Visible = false;
//
// chartMid
//
chartArea4.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea4);
chartArea20.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea20);
chartMid.Dock = DockStyle.Fill;
chartMid.Location = new Point(12, 976);
chartMid.Margin = new Padding(2, 10, 2, 10);
@@ -303,8 +309,8 @@ namespace GHelper
chartMid.Size = new Size(782, 463);
chartMid.TabIndex = 14;
chartMid.Text = "chartMid";
title4.Name = "Title3";
chartMid.Titles.Add(title4);
title20.Name = "Title3";
chartMid.Titles.Add(title20);
chartMid.Visible = false;
//
// panelTitleFans
@@ -523,7 +529,7 @@ namespace GHelper
panelAdvanced.Controls.Add(panelTemperature);
panelAdvanced.Controls.Add(panelTitleTemp);
panelAdvanced.Dock = DockStyle.Top;
panelAdvanced.Location = new Point(10, 1520);
panelAdvanced.Location = new Point(10, 1644);
panelAdvanced.Name = "panelAdvanced";
panelAdvanced.Size = new Size(520, 888);
panelAdvanced.TabIndex = 14;
@@ -814,6 +820,7 @@ namespace GHelper
panelPower.Controls.Add(panelApplyPower);
panelPower.Controls.Add(panelB0);
panelPower.Controls.Add(panelC1);
panelPower.Controls.Add(panelA3);
panelPower.Controls.Add(panelA0);
panelPower.Controls.Add(panelTitleCPU);
panelPower.Controls.Add(panelBoost);
@@ -824,7 +831,7 @@ namespace GHelper
panelPower.Location = new Point(10, 764);
panelPower.Margin = new Padding(4);
panelPower.Name = "panelPower";
panelPower.Size = new Size(520, 756);
panelPower.Size = new Size(520, 880);
panelPower.TabIndex = 43;
//
// panelApplyPower
@@ -832,7 +839,7 @@ namespace GHelper
panelApplyPower.AutoSize = true;
panelApplyPower.Controls.Add(checkApplyPower);
panelApplyPower.Dock = DockStyle.Top;
panelApplyPower.Location = new Point(0, 680);
panelApplyPower.Location = new Point(0, 804);
panelApplyPower.Name = "panelApplyPower";
panelApplyPower.Padding = new Padding(15);
panelApplyPower.Size = new Size(520, 76);
@@ -859,7 +866,7 @@ namespace GHelper
panelB0.Controls.Add(labelLeftB0);
panelB0.Controls.Add(trackB0);
panelB0.Dock = DockStyle.Top;
panelB0.Location = new Point(0, 556);
panelB0.Location = new Point(0, 680);
panelB0.Margin = new Padding(4);
panelB0.MaximumSize = new Size(0, 124);
panelB0.Name = "panelB0";
@@ -908,7 +915,7 @@ namespace GHelper
panelC1.Controls.Add(labelLeftC1);
panelC1.Controls.Add(trackC1);
panelC1.Dock = DockStyle.Top;
panelC1.Location = new Point(0, 432);
panelC1.Location = new Point(0, 556);
panelC1.Margin = new Padding(4);
panelC1.MaximumSize = new Size(0, 124);
panelC1.Name = "panelC1";
@@ -972,7 +979,7 @@ namespace GHelper
labelA0.Name = "labelA0";
labelA0.Size = new Size(116, 32);
labelA0.TabIndex = 12;
labelA0.Text = "SPPT";
labelA0.Text = "SPL";
labelA0.TextAlign = ContentAlignment.TopRight;
//
// labelLeftA0
@@ -981,9 +988,9 @@ namespace GHelper
labelLeftA0.Location = new Point(10, 10);
labelLeftA0.Margin = new Padding(4, 0, 4, 0);
labelLeftA0.Name = "labelLeftA0";
labelLeftA0.Size = new Size(66, 32);
labelLeftA0.Size = new Size(51, 32);
labelLeftA0.TabIndex = 11;
labelLeftA0.Text = "SPPT";
labelLeftA0.Text = "SPL";
//
// trackA0
//
@@ -1527,6 +1534,55 @@ namespace GHelper
buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText;
buttonCPU.UseVisualStyleBackColor = false;
//
// panelA3
//
panelA3.AutoSize = true;
panelA3.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelA3.Controls.Add(labelA3);
panelA3.Controls.Add(labelLeftA3);
panelA3.Controls.Add(trackA3);
panelA3.Dock = DockStyle.Top;
panelA3.Location = new Point(0, 432);
panelA3.Margin = new Padding(4);
panelA3.MaximumSize = new Size(0, 124);
panelA3.Name = "panelA3";
panelA3.Size = new Size(520, 124);
panelA3.TabIndex = 51;
//
// labelA3
//
labelA3.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelA3.Location = new Point(396, 10);
labelA3.Margin = new Padding(4, 0, 4, 0);
labelA3.Name = "labelA3";
labelA3.Size = new Size(116, 32);
labelA3.TabIndex = 12;
labelA3.Text = "SPPT";
labelA3.TextAlign = ContentAlignment.TopRight;
//
// labelLeftA3
//
labelLeftA3.AutoSize = true;
labelLeftA3.Location = new Point(10, 10);
labelLeftA3.Margin = new Padding(4, 0, 4, 0);
labelLeftA3.Name = "labelLeftA3";
labelLeftA3.Size = new Size(66, 32);
labelLeftA3.TabIndex = 11;
labelLeftA3.Text = "SPPT";
//
// trackA3
//
trackA3.Location = new Point(6, 48);
trackA3.Margin = new Padding(4, 2, 4, 2);
trackA3.Maximum = 180;
trackA3.Minimum = 10;
trackA3.Name = "trackA3";
trackA3.Size = new Size(508, 90);
trackA3.TabIndex = 10;
trackA3.TickFrequency = 5;
trackA3.TickStyle = TickStyle.TopLeft;
trackA3.Value = 125;
//
// Fans
//
AutoScaleDimensions = new SizeF(192F, 192F);
@@ -1623,6 +1679,9 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
panelNav.ResumeLayout(false);
tableNav.ResumeLayout(false);
panelA3.ResumeLayout(false);
panelA3.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackA3).EndInit();
ResumeLayout(false);
PerformLayout();
}
@@ -1730,5 +1789,9 @@ namespace GHelper
private TrackBar trackGPUClockLimit;
private Label labelGPUClockLimitTitle;
private RButton buttonCalibrate;
private Panel panelA3;
private Label labelA3;
private Label labelLeftA3;
private TrackBar trackA3;
}
}

View File

@@ -106,6 +106,9 @@ namespace GHelper
trackA0.Maximum = AsusACPI.MaxTotal;
trackA0.Minimum = AsusACPI.MinTotal;
trackA3.Maximum = AsusACPI.MaxTotal;
trackA3.Minimum = AsusACPI.MinTotal;
trackB0.Maximum = AsusACPI.MaxCPU;
trackB0.Minimum = AsusACPI.MinCPU;
@@ -115,10 +118,12 @@ namespace GHelper
trackC1.Scroll += TrackPower_Scroll;
trackB0.Scroll += TrackPower_Scroll;
trackA0.Scroll += TrackPower_Scroll;
trackA3.Scroll += TrackPower_Scroll;
trackC1.MouseUp += TrackPower_MouseUp;
trackB0.MouseUp += TrackPower_MouseUp;
trackA0.MouseUp += TrackPower_MouseUp;
trackA3.MouseUp += TrackPower_MouseUp;
checkApplyFans.Click += CheckApplyFans_Click;
checkApplyPower.Click += CheckApplyPower_Click;
@@ -594,7 +599,7 @@ namespace GHelper
int Max = FanSensorControl.GetFanMax(device);
if (fanRpm)
return (200 * Math.Round((float)(Min * 100 + (Max - Min) * percentage) / 200)).ToString() + unit;
return (200 * Math.Floor((float)(Min * 100 + (Max - Min) * percentage) / 200)).ToString() + unit;
else
return percentage + "%";
}
@@ -785,6 +790,7 @@ namespace GHelper
{
bool modeA0 = (Program.acpi.DeviceGet(AsusACPI.PPT_TotalA0) >= 0 || RyzenControl.IsAMD());
bool modeA3 = Program.acpi.DeviceGet(AsusACPI.PPT_APUA3) >= 0;
bool modeB0 = Program.acpi.IsAllAmdPPT();
bool modeC1 = Program.acpi.DeviceGet(AsusACPI.PPT_APUC1) >= 0;
@@ -800,19 +806,31 @@ namespace GHelper
labelLeftA0.Text = "Platform (CPU + GPU)";
labelLeftB0.Text = "CPU";
panelC1.Visible = false;
panelA3.Visible = false;
}
else
{
if (RyzenControl.IsAMD())
labelLeftA0.Text = "CPU Slow (SPL + sPPT)";
else
labelLeftA0.Text = "CPU (PL1 + PL2)";
panelA3.Visible = modeA3;
if (RyzenControl.IsAMD())
{
labelLeftA0.Text = "CPU Sustained (SPL)";
labelLeftA3.Text = "CPU Slow (sPPT)";
labelLeftC1.Text = "CPU Fast (fPPT)";
panelC1.Visible = modeC1;
}
else
{
labelLeftA0.Text = "CPU Slow (PL1)";
labelLeftA3.Text = "CPU Fast (PL2)";
panelC1.Visible = false;
}
labelLeftC1.Text = "CPU Fast (fPPT)";
panelC1.Visible = modeC1;
}
int limit_total;
int limit_slow;
int limit_cpu;
int limit_fast;
@@ -821,12 +839,14 @@ namespace GHelper
if (changed)
{
limit_total = trackA0.Value;
limit_slow = trackA3.Value;
limit_cpu = trackB0.Value;
limit_fast = trackC1.Value;
}
else
{
limit_total = AppConfig.GetMode("limit_total");
limit_slow = AppConfig.GetMode("limit_slow");
limit_cpu = AppConfig.GetMode("limit_cpu");
limit_fast = AppConfig.GetMode("limit_fast");
}
@@ -840,21 +860,28 @@ namespace GHelper
if (limit_cpu < AsusACPI.MinCPU) limit_cpu = AsusACPI.MinCPU;
if (limit_cpu > limit_total) limit_cpu = limit_total;
if (limit_slow < 0) limit_slow = limit_total;
if (limit_slow > AsusACPI.MaxTotal) limit_slow = AsusACPI.MaxTotal;
if (limit_slow < AsusACPI.MinTotal) limit_slow = AsusACPI.MinTotal;
if (limit_fast < 0) limit_fast = AsusACPI.DefaultTotal;
if (limit_fast > AsusACPI.MaxTotal) limit_fast = AsusACPI.MaxTotal;
if (limit_fast < AsusACPI.MinTotal) limit_fast = AsusACPI.MinTotal;
trackA0.Value = limit_total;
trackA3.Value = limit_slow;
trackB0.Value = limit_cpu;
trackC1.Value = limit_fast;
checkApplyPower.Checked = apply;
labelA0.Text = trackA0.Value.ToString() + "W";
labelA3.Text = trackA3.Value.ToString() + "W";
labelB0.Text = trackB0.Value.ToString() + "W";
labelC1.Text = trackC1.Value.ToString() + "W";
AppConfig.SetMode("limit_total", limit_total);
AppConfig.SetMode("limit_slow", limit_slow);
AppConfig.SetMode("limit_cpu", limit_cpu);
AppConfig.SetMode("limit_fast", limit_fast);
@@ -1123,7 +1150,7 @@ namespace GHelper
tip = true;
}
labelTip.Text = Math.Round(curPoint.XValue) + "C, " + ChartYLabel((int)curPoint.YValues[0], device, " " + Properties.Strings.RPM);
labelTip.Text = Math.Floor(curPoint.XValue) + "C, " + ChartYLabel((int)curPoint.YValues[0], device, " " + Properties.Strings.RPM);
labelTip.Top = e.Y + ((Control)sender).Top;
labelTip.Left = e.X - 50;

View File

@@ -15,7 +15,7 @@
<PlatformTarget>AnyCPU</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.137</AssemblyVersion>
<AssemblyVersion>0.140</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -26,6 +26,38 @@ namespace GHelper.Helpers
(color1.B + color2.B) / 2);
}
public static Color GetDominantColor(Bitmap bmp)
{
//Used for tally
int r = 0;
int g = 0;
int b = 0;
int total = 0;
for (int x = 0; x < bmp.Width; x++)
{
for (int y = 0; y < bmp.Height; y++)
{
Color clr = bmp.GetPixel(x, y);
r += clr.R;
g += clr.G;
b += clr.B;
total++;
}
}
//Calculate average
r /= total;
g /= total;
b /= total;
return Color.FromArgb(r, g, b);
}
public class HSV
{
public double Hue { get; set; }

View File

@@ -634,13 +634,19 @@ namespace GHelper.Input
{
case 16: // FN+F7
if (Control.ModifierKeys == Keys.Shift)
SetScreenpad(-10);
{
if (AppConfig.IsDUO()) SetScreenpad(-10);
else Program.settingsForm.BeginInvoke(Program.settingsForm.CycleMatrix, -1);
}
else
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Down, "Brightness");
break;
case 32: // FN+F8
if (Control.ModifierKeys == Keys.Shift)
SetScreenpad(10);
{
if (AppConfig.IsDUO()) SetScreenpad(10);
else Program.settingsForm.BeginInvoke(Program.settingsForm.CycleMatrix, 1);
}
else
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
break;

View File

@@ -239,10 +239,15 @@ namespace GHelper.Mode
public void SetPower(bool launchAsAdmin = false)
{
bool allAMD = Program.acpi.IsAllAmdPPT();
int limit_total = AppConfig.GetMode("limit_total");
int limit_cpu = AppConfig.GetMode("limit_cpu");
int limit_slow = AppConfig.GetMode("limit_slow");
int limit_fast = AppConfig.GetMode("limit_fast");
if (limit_slow < 0 || allAMD) limit_slow = limit_total;
if (limit_total > AsusACPI.MaxTotal) return;
if (limit_total < AsusACPI.MinTotal) return;
@@ -252,11 +257,14 @@ namespace GHelper.Mode
if (limit_fast > AsusACPI.MaxTotal) return;
if (limit_fast < AsusACPI.MinTotal) return;
// SPL + SPPT togeher in one slider
if (limit_slow > AsusACPI.MaxTotal) return;
if (limit_slow < AsusACPI.MinTotal) return;
// SPL and SPPT
if (Program.acpi.DeviceGet(AsusACPI.PPT_TotalA0) >= 0)
{
Program.acpi.DeviceSet(AsusACPI.PPT_TotalA0, limit_total, "PowerLimit A0");
Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, limit_total, "PowerLimit A3");
Program.acpi.DeviceSet(AsusACPI.PPT_APUA3, limit_slow, "PowerLimit A3");
customPower = limit_total;
}
else if (RyzenControl.IsAMD())

View File

@@ -39,9 +39,9 @@
"mode_base",
"mode_name",
"limit_total",
"limit_slow",
"limit_fast",
"limit_cpu",
"limit_total",
"fan_profile_cpu",
"fan_profile_gpu",
"fan_profile_mid",

View File

@@ -7,6 +7,10 @@
{
}
public TUFM3(ushort productId, string path) : base(0x0B05, productId, path, false)
{
}
public override int DPIProfileCount()
{
return 4;
@@ -109,4 +113,16 @@
|| lightingMode == LightingMode.React;
}
}
public class TUFM3GenII : TUFM3
{
public TUFM3GenII() : base(0x1A9B, "mi_02")
{
}
public override string GetDisplayName()
{
return "TUF GAMING M3 (Gen II)";
}
}
}

View File

@@ -200,6 +200,7 @@ namespace GHelper.Peripherals
DetectMouse(new HarpeAceAimLabEditionWired());
DetectMouse(new HarpeAceAimLabEditionOmni());
DetectMouse(new TUFM3());
DetectMouse(new TUFM3GenII());
DetectMouse(new TUFM5());
DetectMouse(new KerisWirelssAimpoint());
DetectMouse(new KerisWirelssAimpointWired());

View File

@@ -124,10 +124,10 @@
<value>Connexion impossible avec ASUS ACPI. L'application ne peut fonctionner sans. Veuillez installer Asus System Control Interface</value>
</data>
<data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Restart your device to apply changes</value>
<value>Redémarrez votre appareil pour appliquer les modifications</value>
</data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value>
<value>Redémarrer maintenant ?</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Le GPU semble être surchargé, voulez vous le désactiver ?</value>
@@ -169,7 +169,7 @@
<value>Ajustement auto des modes de gestion alim. Windows</value>
</data>
<data name="APUMemory" xml:space="preserve">
<value>Memory Assigned to GPU</value>
<value>Mémoire attribuée au GPU</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Services Asus actifs</value>
@@ -247,7 +247,7 @@
<value>Allumé</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Délai d'activation de la batterie (0 - ON)</value>
<value>Délai branché / sur batterie (0 - ON)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>Équilibré</value>
@@ -354,7 +354,7 @@ Voulez-vous continuer ?</value>
<value>Profil du ventilateur central</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>Profil</value>
<value>Profil des ventilateurs</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>Ventilateurs + Puissance</value>
@@ -399,7 +399,7 @@ Voulez-vous continuer ?</value>
<value>Température cible</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes jusqu'à la mise en veille prolongée sur la batterie (0 - OFF)</value>
<value>Minutes avant mise en veille prolongée sur batterie (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>Élevé</value>

View File

@@ -604,16 +604,7 @@ namespace GHelper
private void PictureColor2_Click(object? sender, EventArgs e)
{
ColorDialog colorDlg = new ColorDialog();
colorDlg.AllowFullOpen = true;
colorDlg.Color = pictureColor2.BackColor;
if (colorDlg.ShowDialog() == DialogResult.OK)
{
AppConfig.Set("aura_color2", colorDlg.Color.ToArgb());
SetAura();
}
SetColorPicker("aura_color2");
}
private void PictureColor_Click(object? sender, EventArgs e)
@@ -681,20 +672,31 @@ namespace GHelper
FansToggle();
}
private void ButtonKeyboardColor_Click(object? sender, EventArgs e)
private void SetColorPicker(string colorField = "aura_color")
{
ColorDialog colorDlg = new ColorDialog();
colorDlg.AllowFullOpen = true;
colorDlg.Color = pictureColor.BackColor;
try
{
colorDlg.CustomColors = AppConfig.GetString("aura_color_custom", "").Split('-').Select(int.Parse).ToArray();
}
catch (Exception ex) { }
if (colorDlg.ShowDialog() == DialogResult.OK)
{
AppConfig.Set("aura_color", colorDlg.Color.ToArgb());
AppConfig.Set("aura_color_custom", string.Join("-", colorDlg.CustomColors));
AppConfig.Set(colorField, colorDlg.Color.ToArgb());
SetAura();
}
}
private void ButtonKeyboardColor_Click(object? sender, EventArgs e)
{
SetColorPicker("aura_color");
}
public void InitAura()
{
Aura.Mode = (AuraMode)AppConfig.Get("aura_mode");
@@ -761,6 +763,15 @@ namespace GHelper
}
public void CycleMatrix(int delta)
{
comboMatrix.SelectedIndex = Math.Min(Math.Max(0, comboMatrix.SelectedIndex + delta), comboMatrix.Items.Count - 1);
AppConfig.Set("matrix_brightness", comboMatrix.SelectedIndex);
matrixControl.SetMatrix();
Program.toast.RunToast(comboMatrix.GetItemText(comboMatrix.SelectedItem), delta > 0 ? ToastIcon.BacklightUp : ToastIcon.BacklightDown);
}
public void CycleAuraMode()
{
if (comboKeyboard.SelectedIndex < comboKeyboard.Items.Count - 1)

View File

@@ -130,14 +130,13 @@ namespace GHelper.USB
timer.Elapsed += Timer_Elapsed;
isSingleColor = AppConfig.IsSingleColor(); // Mono Color
if (AppConfig.ContainsModel("GA402X") || AppConfig.ContainsModel("GA402N") || AppConfig.ContainsModel("GA503R"))
if (AppConfig.ContainsModel("GA402X") || AppConfig.ContainsModel("GA402N"))
{
var device = AsusHid.FindDevices(AsusHid.AURA_ID).FirstOrDefault();
if (device is null) return;
Logger.WriteLine($"USB Version: {device.ReleaseNumberBcd} {device.ReleaseNumber}");
if (device.ReleaseNumberBcd >= 22 && device.ReleaseNumberBcd <= 25) isSingleColor = true;
if (AppConfig.ContainsModel("GA503R") && device.ReleaseNumberBcd == 3) isSingleColor = true;
}
}
@@ -533,7 +532,7 @@ namespace GHelper.USB
return;
}
if (isStrix && !isOldHeatmap)
if (isStrix)
{
ApplyDirect(Enumerable.Repeat(color, AURA_ZONES).ToArray(), init);
return;
@@ -541,8 +540,18 @@ namespace GHelper.USB
else
{
AsusHid.WriteAura(AuraMessage(0, color, color, 0));
AsusHid.WriteAura(MESSAGE_SET);
if (init) AsusHid.WriteAura(new byte[] { AsusHid.AURA_ID, 0xbc });
byte[] buffer = new byte[64];
buffer[0] = AsusHid.AURA_ID;
buffer[1] = 0xbc;
buffer[2] = 1;
buffer[3] = 1;
buffer[9] = color.R;
buffer[10] = color.G;
buffer[11] = color.B;
AsusHid.WriteAura(buffer);
}
}
@@ -634,14 +643,13 @@ namespace GHelper.USB
bound.Y += bound.Height / 3;
bound.Height -= (int)Math.Round(bound.Height * (0.33f + 0.022f)); // cut 1/3 of the top screen + windows panel
Bitmap screen_low = screen_low = AmbientData.CamptureScreen(bound, 512, 288); //quality decreases greatly if it is less 512 ;
Bitmap screeb_pxl;
Bitmap screen_low = AmbientData.CamptureScreen(bound, 512, 288); //quality decreases greatly if it is less 512 ;
Bitmap screeb_pxl = AmbientData.ResizeImage(screen_low, 4, 2); // 4x2 zone. top for keyboard and bot for lightbar;
int zones = AURA_ZONES;
if (isStrix) // laptop with lightbar
{
screeb_pxl = AmbientData.ResizeImage(screen_low, 4, 2); // 4x2 zone. top for keyboard and bot for lightbar
var mid_left = ColorUtils.GetMidColor(screeb_pxl.GetPixel(0, 1), screeb_pxl.GetPixel(1, 1));
var mid_right = ColorUtils.GetMidColor(screeb_pxl.GetPixel(2, 1), screeb_pxl.GetPixel(3, 1));
@@ -656,12 +664,12 @@ namespace GHelper.USB
else
{
zones = 1;
screeb_pxl = AmbientData.ResizeImage(screen_low, 1, 1);
AmbientData.Colors[0].RGB = ColorUtils.HSV.UpSaturation(screeb_pxl.GetPixel(0, 0), (float)0.3);
AmbientData.Colors[0].RGB = ColorUtils.HSV.UpSaturation(ColorUtils.GetDominantColor(screeb_pxl), (float)0.3);
}
//screen_low.Save("big.jpg", ImageFormat.Jpeg);
//screeb_pxl.Save("small.jpg", ImageFormat.Jpeg);
//screeb_pxl.Save("test.jpg", ImageFormat.Jpeg);
screen_low.Dispose();
screeb_pxl.Dispose();

View File

@@ -9,6 +9,7 @@ Small and lightweight Armoury Crate alternative for Asus laptops offering almost
- Don't forget to [**Check Requirements**](#requirements-mandatory) and [**Read FAQ**](#question-faq)
- If you like this app, please give it a star :star: and spread the word about it!
- If you have general problems, you may check [**Troubleshooting section**](https://github.com/seerge/g-helper?tab=readme-ov-file#wrench-troubleshooting)
#### Support project in [:euro: EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY)
@@ -97,7 +98,7 @@ Stop ``ArmouryCrateControlInterface`` service under windows Services app or you
#### Battery charge limiter is not working
It could be that Asus services are overwriting this limit after. You may want to stop them by clicking "Stop" in the Asus Services section (under Extra).
Please note: For some devices not every charge limit % may be working. Try to set standard **80%** to be sure.
Please note: For some devices not every charge limit % may be working. Some models support only 80% limit, so try to set standard **80%** to be sure.
#### I don't see GPU modes section
Some older models (for example G14 2020) don't support disabling GPU on hardware level, therefore GPU section makes no sense for them and will be hidden
@@ -180,6 +181,23 @@ Turn OFF laptop. Press and hold the "power" button for 30-40 seconds. Then boot
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat and unnecessary services. Works on ROG G14, G15, G16, M16, X13, Z13, X16, TUF, Scar, Vivobook, ProArt and all other popular models.
-----------------------------
## :wrench: Troubleshooting
_NOTE: This section is not related to G-Helper anyhow, but since people often come to this repository asking about general problems with their laptops I have listed the most frequent troubleshooting advice that I can give._
### Hardware reset / CMOS reset
All Asus laptops have an option to do a hardware reset that can be handy sometimes. It doesn't touch your data, but resets all main hardware-related things (enables your dGPU, wakes up wifi/bt adapter if it hangs for some reason, etc.).
Turn OFF laptop. Press and hold the "power" button for 30-40 seconds. Then boot normally (it will take a bit longer to boot)
### Resetting windows power plan to defaults
Copy and paste the command below into Windows Terminal, and press Enter.
```
powercfg -restoredefaultschemes
```
### Reinstalling GPU drivers
- For AMD devices (including ones who use integrated graphics) you can use [AMD official cleanup utility](https://www.amd.com/en/support/kb/faq/gpu-601) to completely uninstall existing drivers from safe mode. After that you can download and install latest official drivers from [AMD website](https://www.amd.com/en/support)
- For NVidia / Intel devices you can use the [Display Driver Uninstaller](https://www.guru3d.com/download/display-driver-uninstaller-download/) app to completely uninstall existing drivers. After that you can download and install latest official drivers from [Nvidia website](https://www.nvidia.com/download/index.aspx)
## :euro: [Support Project](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA)
#### If you like the app you can make a Donation