Compare commits

...

30 Commits
v0.52 ... v0.55

Author SHA1 Message Date
seerge
1ebc2021f6 KB Brightness control for TUF models 2023-04-20 14:53:37 +02:00
seerge
52b165f250 Merge branch 'main' of https://github.com/seerge/g-helper 2023-04-19 17:42:01 +02:00
seerge
b2ed390bdf XGMobile support 2023-04-19 17:41:59 +02:00
Serge
1588f84c97 Update README.md 2023-04-19 16:46:28 +02:00
seerge
a3a2fdfe14 Merge branch 'main' of https://github.com/seerge/g-helper 2023-04-18 17:50:12 +02:00
seerge
2c867eb960 UI tweaks 2023-04-18 17:50:10 +02:00
Serge
6fbf4f2a49 Merge pull request #258 from lswlc33/main
Update Strings.zh-CN.resx
2023-04-16 19:01:35 +02:00
Serge
d4ecb2bcf3 Merge pull request #259 from lswlc33/patch-2
Update README.zh-CN.md
2023-04-16 19:01:26 +02:00
雪中明月
c70c6ef4d6 Update README.zh-CN.md 2023-04-16 21:30:14 +08:00
雪中明月
5d77d5c700 Update Strings.zh-CN.resx 2023-04-16 21:23:01 +08:00
seerge
89f096778d Merge branch 'main' of https://github.com/seerge/g-helper 2023-04-16 13:55:03 +02:00
seerge
2b9fc913ad TUF keyboard adjustment 2023-04-16 13:55:01 +02:00
Serge
4acbf5adf1 Merge pull request #256 from lswlc33/main
update readme.md's language switch button
2023-04-16 13:03:47 +02:00
seerge
48ea1b588f Merge branch 'main' of https://github.com/seerge/g-helper 2023-04-16 13:01:36 +02:00
seerge
cb15161fc4 Warning label when custom fan profile is not supported 2023-04-16 13:01:34 +02:00
雪中明月
d95a612788 Update README.md 2023-04-16 18:55:46 +08:00
雪中明月
0a724926ee update readme.md's language switch button 2023-04-16 10:50:20 +00:00
Serge
353ed998db Update README.md 2023-04-16 11:44:23 +02:00
seerge
0afee18f20 Merge branch 'main' of https://github.com/seerge/g-helper 2023-04-15 20:12:35 +02:00
seerge
8154883d49 It's fine 2023-04-15 20:12:33 +02:00
Serge
feb4198c0f Merge pull request #250 from marcelomijas/main
"Keyboard backlight" extra options Spanish translation fix
2023-04-15 19:48:25 +02:00
Marcelo Moreno
6edf2d9447 Add files via upload 2023-04-15 19:42:51 +02:00
seerge
25f0af1103 AdjustAllLevels fixes 2023-04-15 16:02:07 +02:00
Serge
4f9cc4a94e Merge pull request #237 from hungqbui/main
Add fan levels auto-adjust
2023-04-15 01:12:15 +02:00
Serge
e973f09f4e Update README.md 2023-04-15 01:11:40 +02:00
Serge
cd0662e11f Update README.md 2023-04-14 17:58:09 +02:00
seerge
ee43af2824 Clock fix for devices with low DPI 2023-04-14 17:50:26 +02:00
Serge
d620ca010c Update README.md 2023-04-13 21:10:57 +02:00
Hung Bui
99a490996d Fix OutOfBounds error, and correct variables name 2023-04-13 11:23:56 -05:00
Hung Bui
596c47d371 Add fan levels auto-adjust 2023-04-12 19:07:53 -05:00
21 changed files with 337 additions and 96 deletions

View File

@@ -36,18 +36,19 @@ public class ASUSWmi
public const int Temp_CPU = 0x00120094; public const int Temp_CPU = 0x00120094;
public const int Temp_GPU = 0x00120097; public const int Temp_GPU = 0x00120097;
public const int PPT_TotalA0 = 0x001200A0; // Total PPT on 2022 (PPT_LIMIT_SLOW ) and CPU PPT on 2021
public const int PPT_TotalA0 = 0x001200A0; // Total PPT on 2022 and CPU PPT on 2021
public const int PPT_EDCA1 = 0x001200A1; // CPU EDC public const int PPT_EDCA1 = 0x001200A1; // CPU EDC
public const int PPT_TDCA2 = 0x001200A2; // CPU TDC public const int PPT_TDCA2 = 0x001200A2; // CPU TDC
public const int PPT_APUA3 = 0x001200A3; // APU PPT ON 2021, doesn't work on 2022 public const int PPT_APUA3 = 0x001200A3; // APU PPT ON 2021, doesn't work on 2022
public const int PPT_CPUB0 = 0x001200B0; // CPU PPT on 2022 public const int PPT_CPUB0 = 0x001200B0; // CPU PPT on 2022 (PPT_LIMIT_APU)
public const int PPT_CPUB1 = 0x001200B1; // APU PPT on 2022 public const int PPT_CPUB1 = 0x001200B1; // Total PPT on 2022 (PPT_LIMIT_SLOW)
public const int PPT_APUC1 = 0x001200C1; public const int PPT_APUC0 = 0x001200C0; // does nothing on G14 2022
public const int PPT_APUC2 = 0x001200C2; public const int PPT_APUC1 = 0x001200C1; // Actual Power Limit (PPT_LIMIT_FAST) AND Sustained Power Limit (STAPM_LIMIT)
public const int PPT_APUC2 = 0x001200C2; // does nothing on G14 2022
public const int TUF_KB_BRIGHTNESS = 0x00050021;
public const int TUF_KB = 0x00100056; public const int TUF_KB = 0x00100056;
public const int TUF_KB_STATE = 0x00100057; public const int TUF_KB_STATE = 0x00100057;
@@ -260,11 +261,17 @@ public class ASUSWmi
} }
public void TUFKeyboardBrightness(int brightness)
{
int param = 0x80 | (brightness & 0x7F);
DeviceSet(TUF_KB_BRIGHTNESS, param, "TUF Brightness");
}
public void TUFKeyboardRGB(int mode, Color color, int speed) public void TUFKeyboardRGB(int mode, Color color, int speed)
{ {
byte[] setting = new byte[12]; byte[] setting = new byte[12];
setting[0] = (byte)1; setting[0] = (byte)0xB4;
setting[1] = (byte)mode; setting[1] = (byte)mode;
setting[2] = color.R; setting[2] = color.R;
setting[3] = color.G; setting[3] = color.G;

View File

@@ -380,14 +380,14 @@ namespace Starlight.AnimeMatrix
g.CompositingQuality = CompositingQuality.HighQuality; g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.AntiAlias; g.SmoothingMode = SmoothingMode.AntiAlias;
using (Font font = new Font("Arial", 12F)) using (Font font = new Font("Arial", 24F, GraphicsUnit.Pixel))
{ {
SizeF textSize = g.MeasureString(text1, font); SizeF textSize = g.MeasureString(text1, font);
g.DrawString(text1, font, Brushes.White, (MaxColumns*3 - textSize.Width)+3, -5); g.DrawString(text1, font, Brushes.White, (MaxColumns*3 - textSize.Width)+3, -3);
} }
if (text2.Length > 0) if (text2.Length > 0)
using (Font font = new Font("Arial", 9F)) using (Font font = new Font("Arial", 18F, GraphicsUnit.Pixel))
{ {
SizeF textSize = g.MeasureString(text2, font); SizeF textSize = g.MeasureString(text2, font);
g.DrawString(text2, font, Brushes.White, (MaxColumns * 3 - textSize.Width)+1, 25); g.DrawString(text2, font, Brushes.White, (MaxColumns * 3 - textSize.Width)+1, 25);

View File

@@ -1,5 +1,6 @@
using HidLibrary; using HidLibrary;
using System.Diagnostics; using System.Diagnostics;
using static Starlight.AnimeMatrix.BuiltInAnimation;
namespace GHelper namespace GHelper
{ {
@@ -195,6 +196,9 @@ namespace GHelper
} }
Logger.WriteLine("USB-KB = " + BitConverter.ToString(msg)); Logger.WriteLine("USB-KB = " + BitConverter.ToString(msg));
if (Program.config.ContainsModel("TUF"))
Program.wmi.TUFKeyboardBrightness(brightness);
} }
@@ -209,6 +213,17 @@ namespace GHelper
if (sleep) flags.Add(AuraDev19b6.SleepKeyb); if (sleep) flags.Add(AuraDev19b6.SleepKeyb);
if (shutdown) flags.Add(AuraDev19b6.ShutdownKeyb); if (shutdown) flags.Add(AuraDev19b6.ShutdownKeyb);
flags.Add(AuraDev19b6.AwakeBar);
flags.Add(AuraDev19b6.BootBar);
flags.Add(AuraDev19b6.SleepBar);
flags.Add(AuraDev19b6.ShutdownBar);
flags.Add(AuraDev19b6.AwakeLid);
flags.Add(AuraDev19b6.BootLid);
flags.Add(AuraDev19b6.SleepLid);
flags.Add(AuraDev19b6.ShutdownLid);
byte[] msg = AuraDev19b6Extensions.ToBytes(flags.ToArray()); byte[] msg = AuraDev19b6Extensions.ToBytes(flags.ToArray());
Debug.WriteLine(BitConverter.ToString(msg)); Debug.WriteLine(BitConverter.ToString(msg));

24
app/Fans.Designer.cs generated
View File

@@ -63,6 +63,7 @@ namespace GHelper
trackTotal = new TrackBar(); trackTotal = new TrackBar();
pictureFine = new PictureBox(); pictureFine = new PictureBox();
labelInfo = new Label(); labelInfo = new Label();
labelFansResult = new Label();
panelFans.SuspendLayout(); panelFans.SuspendLayout();
((System.ComponentModel.ISupportInitialize)picturePerf).BeginInit(); ((System.ComponentModel.ISupportInitialize)picturePerf).BeginInit();
tableFanCharts.SuspendLayout(); tableFanCharts.SuspendLayout();
@@ -80,6 +81,7 @@ namespace GHelper
// //
// panelFans // panelFans
// //
panelFans.Controls.Add(labelFansResult);
panelFans.Controls.Add(labelTip); panelFans.Controls.Add(labelTip);
panelFans.Controls.Add(labelBoost); panelFans.Controls.Add(labelBoost);
panelFans.Controls.Add(comboBoost); panelFans.Controls.Add(comboBoost);
@@ -117,7 +119,6 @@ namespace GHelper
labelBoost.TabIndex = 39; labelBoost.TabIndex = 39;
labelBoost.Text = Properties.Strings.CPUBoost; labelBoost.Text = Properties.Strings.CPUBoost;
labelBoost.TextAlign = ContentAlignment.MiddleRight; labelBoost.TextAlign = ContentAlignment.MiddleRight;
// //
// comboBoost // comboBoost
// //
@@ -221,11 +222,11 @@ namespace GHelper
checkApplyFans.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; checkApplyFans.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
checkApplyFans.AutoSize = true; checkApplyFans.AutoSize = true;
checkApplyFans.BackColor = SystemColors.ControlLight; checkApplyFans.BackColor = SystemColors.ControlLight;
checkApplyFans.Location = new Point(449, 1084); checkApplyFans.Location = new Point(449, 1088);
checkApplyFans.Margin = new Padding(4, 2, 4, 2); checkApplyFans.Margin = new Padding(4, 2, 4, 2);
checkApplyFans.Name = "checkApplyFans"; checkApplyFans.Name = "checkApplyFans";
checkApplyFans.Padding = new Padding(15, 5, 15, 5); checkApplyFans.Padding = new Padding(15, 5, 15, 5);
checkApplyFans.Size = new Size(339, 50); checkApplyFans.Size = new Size(339, 46);
checkApplyFans.TabIndex = 17; checkApplyFans.TabIndex = 17;
checkApplyFans.Text = Properties.Strings.ApplyFanCurve; checkApplyFans.Text = Properties.Strings.ApplyFanCurve;
checkApplyFans.UseVisualStyleBackColor = false; checkApplyFans.UseVisualStyleBackColor = false;
@@ -292,11 +293,11 @@ namespace GHelper
checkApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; checkApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
checkApplyPower.AutoSize = true; checkApplyPower.AutoSize = true;
checkApplyPower.BackColor = SystemColors.ControlLight; checkApplyPower.BackColor = SystemColors.ControlLight;
checkApplyPower.Location = new Point(20, 1084); checkApplyPower.Location = new Point(20, 1088);
checkApplyPower.Margin = new Padding(4, 2, 4, 2); checkApplyPower.Margin = new Padding(4, 2, 4, 2);
checkApplyPower.Name = "checkApplyPower"; checkApplyPower.Name = "checkApplyPower";
checkApplyPower.Padding = new Padding(15, 5, 15, 5); checkApplyPower.Padding = new Padding(15, 5, 15, 5);
checkApplyPower.Size = new Size(277, 50); checkApplyPower.Size = new Size(277, 46);
checkApplyPower.TabIndex = 25; checkApplyPower.TabIndex = 25;
checkApplyPower.Text = Properties.Strings.ApplyPowerLimits; checkApplyPower.Text = Properties.Strings.ApplyPowerLimits;
checkApplyPower.UseVisualStyleBackColor = false; checkApplyPower.UseVisualStyleBackColor = false;
@@ -417,6 +418,16 @@ namespace GHelper
labelInfo.TabIndex = 19; labelInfo.TabIndex = 19;
labelInfo.Text = "label"; labelInfo.Text = "label";
// //
// labelFansResult
//
labelFansResult.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelFansResult.ForeColor = Color.Red;
labelFansResult.Location = new Point(30, 1070);
labelFansResult.Name = "labelFansResult";
labelFansResult.Size = new Size(760, 32);
labelFansResult.TabIndex = 41;
labelFansResult.TextAlign = ContentAlignment.TopRight;
//
// Fans // Fans
// //
AutoScaleDimensions = new SizeF(192F, 192F); AutoScaleDimensions = new SizeF(192F, 192F);
@@ -430,7 +441,7 @@ namespace GHelper
MaximizeBox = false; MaximizeBox = false;
MdiChildrenMinimizedAnchorBottom = false; MdiChildrenMinimizedAnchorBottom = false;
MinimizeBox = false; MinimizeBox = false;
MinimumSize = new Size(26, 1230); MinimumSize = new Size(26, 1260);
Name = "Fans"; Name = "Fans";
ShowIcon = false; ShowIcon = false;
ShowInTaskbar = false; ShowInTaskbar = false;
@@ -483,5 +494,6 @@ namespace GHelper
private RComboBox comboBoost; private RComboBox comboBoost;
private Label labelBoost; private Label labelBoost;
private Label labelTip; private Label labelTip;
private Label labelFansResult;
} }
} }

View File

@@ -200,18 +200,23 @@ namespace GHelper
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, Program.config.getConfig("performance_mode"), "PerfMode"); Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, Program.config.getConfig("performance_mode"), "PerfMode");
Program.settingsForm.AutoPower(); Program.settingsForm.AutoPower();
} }
}
public void LabelFansResult(string text)
{
labelFansResult.Text = text;
} }
private void Fans_FormClosing(object? sender, FormClosingEventArgs e) private void Fans_FormClosing(object? sender, FormClosingEventArgs e)
{ {
/*
if (e.CloseReason == CloseReason.UserClosing) if (e.CloseReason == CloseReason.UserClosing)
{ {
e.Cancel = true; e.Cancel = true;
Hide(); Hide();
} }*/
} }
@@ -405,7 +410,7 @@ namespace GHelper
{ {
curPoint = hit.Series.Points[hit.PointIndex]; curPoint = hit.Series.Points[hit.PointIndex];
tip = true; tip = true;
} }
if (curPoint != null) if (curPoint != null)
@@ -432,13 +437,17 @@ namespace GHelper
{ {
curPoint.XValue = dx; curPoint.XValue = dx;
curPoint.YValues[0] = dy; curPoint.YValues[0] = dy;
if (hit.Series is not null)
AdjustAllLevels(hit.PointIndex, dx, dy, hit.Series);
tip = true; tip = true;
} }
labelTip.Text = Math.Round(curPoint.XValue) + "C, " + ChartPercToRPM((int)curPoint.YValues[0], " " + Properties.Strings.RPM); labelTip.Text = Math.Round(curPoint.XValue) + "C, " + ChartPercToRPM((int)curPoint.YValues[0], " " + Properties.Strings.RPM);
labelTip.Top = e.Y + ((Control)sender).Top; labelTip.Top = e.Y + ((Control)sender).Top;
labelTip.Left = e.X - 50; labelTip.Left = e.X - 50;
} }
catch catch
{ {
@@ -446,12 +455,82 @@ namespace GHelper
tip = false; tip = false;
} }
} }
labelTip.Visible = tip; labelTip.Visible = tip;
} }
private void AdjustAllLevels(int index, double curXVal, double curYVal, Series series)
{
// Get the neighboring DataPoints of the hit point
DataPoint upperPoint = null;
DataPoint lowerPoint = null;
if (index > 0)
{
lowerPoint = series.Points[index - 1];
}
if (index < series.Points.Count - 1)
{
upperPoint = series.Points[index + 1];
}
// Adjust the values according to the comparison between the value and its neighbors
if (upperPoint != null)
{
if (curYVal > upperPoint.YValues[0])
{
for (int i = index + 1; i < series.Points.Count; i++)
{
DataPoint curUpper = series.Points[i];
if (curUpper.YValues[0] >= curYVal) break;
curUpper.YValues[0] = curYVal;
}
}
if (curXVal > upperPoint.XValue)
{
for (int i = index + 1; i < series.Points.Count; i++)
{
DataPoint curUpper = series.Points[i];
if (curUpper.XValue >= curXVal) break;
curUpper.XValue = curXVal;
}
}
}
if (lowerPoint != null)
{
//Debug.WriteLine(curYVal + " <? " + Math.Floor(lowerPoint.YValues[0]));
if (curYVal <= Math.Floor(lowerPoint.YValues[0]))
{
for (int i = index - 1; i >= 0; i--)
{
DataPoint curLower = series.Points[i];
if (curLower.YValues[0] < curYVal) break;
curLower.YValues[0] = Math.Floor(curYVal);
}
}
if (curXVal < lowerPoint.XValue)
{
for (int i = index - 1; i >= 0; i--)
{
DataPoint curLower = series.Points[i];
if (curLower.XValue <= curXVal) break;
curLower.XValue = curXVal;
}
}
}
}
} }
} }

View File

@@ -16,7 +16,7 @@
<PlatformTarget>x64</PlatformTarget> <PlatformTarget>x64</PlatformTarget>
<ProduceReferenceAssembly>False</ProduceReferenceAssembly> <ProduceReferenceAssembly>False</ProduceReferenceAssembly>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks> <AllowUnsafeBlocks>True</AllowUnsafeBlocks>
<AssemblyVersion>0.52</AssemblyVersion> <AssemblyVersion>0.55</AssemblyVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -15,7 +15,6 @@ public static class HardwareMonitor
public static string? gpuFan; public static string? gpuFan;
public static string? midFan; public static string? midFan;
//public static List<int> gpuUsage = new List<int>();
public static int? gpuUse; public static int? gpuUse;
public static int GetFanMax() public static int GetFanMax()
@@ -78,9 +77,10 @@ public static class HardwareMonitor
if (cpuTemp < 0) try if (cpuTemp < 0) try
{ {
var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true); using (var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true))
cpuTemp = ct.NextValue() - 273; {
ct.Dispose(); cpuTemp = ct.NextValue() - 273;
}
} }
catch catch
{ {
@@ -102,17 +102,12 @@ public static class HardwareMonitor
if (gpuTemp is null || gpuTemp < 0) if (gpuTemp is null || gpuTemp < 0)
gpuTemp = Program.wmi.DeviceGet(ASUSWmi.Temp_GPU); gpuTemp = Program.wmi.DeviceGet(ASUSWmi.Temp_GPU);
/*
gpuUsage.Add(GetGpuUse());
if (gpuUsage.Count > 3) gpuUsage.RemoveAt(0);
*/
try try
{ {
var cb = new PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true); using (var cb = new PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true))
batteryDischarge = cb.NextValue() / 1000; {
cb.Dispose(); batteryDischarge = cb.NextValue() / 1000;
}
} }
catch catch
{ {

View File

@@ -31,6 +31,7 @@ namespace GHelper
private void InitializeComponent() private void InitializeComponent()
{ {
groupBox1 = new GroupBox(); groupBox1 = new GroupBox();
pictureHelp = new PictureBox();
textFNF4 = new TextBox(); textFNF4 = new TextBox();
comboFNF4 = new RComboBox(); comboFNF4 = new RComboBox();
labelFNF4 = new Label(); labelFNF4 = new Label();
@@ -41,6 +42,8 @@ namespace GHelper
comboM3 = new RComboBox(); comboM3 = new RComboBox();
labelM3 = new Label(); labelM3 = new Label();
groupLight = new GroupBox(); groupLight = new GroupBox();
labelBrightness = new Label();
trackBrightness = new TrackBar();
labelSpeed = new Label(); labelSpeed = new Label();
comboKeyboardSpeed = new RComboBox(); comboKeyboardSpeed = new RComboBox();
checkShutdown = new CheckBox(); checkShutdown = new CheckBox();
@@ -51,11 +54,11 @@ namespace GHelper
checkNoOverdrive = new CheckBox(); checkNoOverdrive = new CheckBox();
checkKeyboardAuto = new CheckBox(); checkKeyboardAuto = new CheckBox();
checkTopmost = new CheckBox(); checkTopmost = new CheckBox();
pictureHelp = new PictureBox();
groupBox1.SuspendLayout(); groupBox1.SuspendLayout();
groupLight.SuspendLayout();
groupOther.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
groupLight.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackBrightness).BeginInit();
groupOther.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// groupBox1 // groupBox1
@@ -73,11 +76,22 @@ namespace GHelper
groupBox1.Dock = DockStyle.Top; groupBox1.Dock = DockStyle.Top;
groupBox1.Location = new Point(10, 10); groupBox1.Location = new Point(10, 10);
groupBox1.Name = "groupBox1"; groupBox1.Name = "groupBox1";
groupBox1.Size = new Size(810, 242); groupBox1.Size = new Size(840, 242);
groupBox1.TabIndex = 0; groupBox1.TabIndex = 0;
groupBox1.TabStop = false; groupBox1.TabStop = false;
groupBox1.Text = Properties.Strings.KeyBindings; groupBox1.Text = Properties.Strings.KeyBindings;
// //
// pictureHelp
//
pictureHelp.BackgroundImage = Properties.Resources.icons8_help_64;
pictureHelp.BackgroundImageLayout = ImageLayout.Zoom;
pictureHelp.Cursor = Cursors.Hand;
pictureHelp.Location = new Point(744, 57);
pictureHelp.Name = "pictureHelp";
pictureHelp.Size = new Size(32, 32);
pictureHelp.TabIndex = 9;
pictureHelp.TabStop = false;
//
// textFNF4 // textFNF4
// //
textFNF4.Location = new Point(415, 176); textFNF4.Location = new Point(415, 176);
@@ -88,12 +102,13 @@ namespace GHelper
// //
// comboFNF4 // comboFNF4
// //
comboFNF4.BorderColor = Color.White;
comboFNF4.ButtonColor = Color.FromArgb(255, 255, 255);
comboFNF4.FormattingEnabled = true; comboFNF4.FormattingEnabled = true;
comboFNF4.Location = new Point(93, 175); comboFNF4.Location = new Point(93, 175);
comboFNF4.Name = "comboFNF4"; comboFNF4.Name = "comboFNF4";
comboFNF4.Size = new Size(312, 40); comboFNF4.Size = new Size(312, 40);
comboFNF4.TabIndex = 7; comboFNF4.TabIndex = 7;
comboFNF4.BorderColor = Color.White;
// //
// labelFNF4 // labelFNF4
// //
@@ -122,14 +137,14 @@ namespace GHelper
// //
// comboM4 // comboM4
// //
comboM4.BorderColor = Color.White;
comboM4.ButtonColor = Color.FromArgb(255, 255, 255);
comboM4.FormattingEnabled = true; comboM4.FormattingEnabled = true;
comboM4.Items.AddRange(new object[] { Properties.Strings.PerformanceMode, Properties.Strings.OpenGHelper, Properties.Strings.Custom }); comboM4.Items.AddRange(new object[] { Properties.Strings.PerformanceMode, Properties.Strings.OpenGHelper, Properties.Strings.Custom });
comboM4.Location = new Point(93, 112); comboM4.Location = new Point(93, 112);
comboM4.Name = "comboM4"; comboM4.Name = "comboM4";
comboM4.Size = new Size(312, 40); comboM4.Size = new Size(312, 40);
comboM4.TabIndex = 3; comboM4.TabIndex = 3;
comboM4.BorderColor = Color.White;
// //
// labelM4 // labelM4
// //
@@ -142,14 +157,14 @@ namespace GHelper
// //
// comboM3 // comboM3
// //
comboM3.BorderColor = Color.White;
comboM3.ButtonColor = Color.FromArgb(255, 255, 255);
comboM3.FormattingEnabled = true; 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[] { Properties.Strings.Default, Properties.Strings.VolumeMute, Properties.Strings.PlayPause, Properties.Strings.PrintScreen, Properties.Strings.ToggleAura, Properties.Strings.Custom });
comboM3.Location = new Point(93, 54); comboM3.Location = new Point(93, 54);
comboM3.Name = "comboM3"; comboM3.Name = "comboM3";
comboM3.Size = new Size(312, 40); comboM3.Size = new Size(312, 40);
comboM3.TabIndex = 1; comboM3.TabIndex = 1;
comboM3.BorderColor = Color.White;
// //
// labelM3 // labelM3
// //
@@ -162,6 +177,8 @@ namespace GHelper
// //
// groupLight // groupLight
// //
groupLight.Controls.Add(labelBrightness);
groupLight.Controls.Add(trackBrightness);
groupLight.Controls.Add(labelSpeed); groupLight.Controls.Add(labelSpeed);
groupLight.Controls.Add(comboKeyboardSpeed); groupLight.Controls.Add(comboKeyboardSpeed);
groupLight.Controls.Add(checkShutdown); groupLight.Controls.Add(checkShutdown);
@@ -171,15 +188,30 @@ namespace GHelper
groupLight.Dock = DockStyle.Top; groupLight.Dock = DockStyle.Top;
groupLight.Location = new Point(10, 252); groupLight.Location = new Point(10, 252);
groupLight.Name = "groupLight"; groupLight.Name = "groupLight";
groupLight.Size = new Size(810, 320); groupLight.Size = new Size(840, 374);
groupLight.TabIndex = 1; groupLight.TabIndex = 1;
groupLight.TabStop = false; groupLight.TabStop = false;
groupLight.Text = Properties.Strings.KeyboardBacklight; groupLight.Text = Properties.Strings.KeyboardBacklight;
// //
// labelBrightness
//
labelBrightness.Location = new Point(25, 284);
labelBrightness.Name = "labelBrightness";
labelBrightness.Size = new Size(197, 49);
labelBrightness.TabIndex = 0;
labelBrightness.Text = "Brightness";
//
// trackBrightness
//
trackBrightness.Location = new Point(228, 284);
trackBrightness.Name = "trackBrightness";
trackBrightness.Size = new Size(612, 90);
trackBrightness.TabIndex = 1;
//
// labelSpeed // labelSpeed
// //
labelSpeed.AutoSize = true; labelSpeed.AutoSize = true;
labelSpeed.Location = new Point(25, 237); labelSpeed.Location = new Point(25, 235);
labelSpeed.MaximumSize = new Size(200, 0); labelSpeed.MaximumSize = new Size(200, 0);
labelSpeed.Name = "labelSpeed"; labelSpeed.Name = "labelSpeed";
labelSpeed.Size = new Size(198, 32); labelSpeed.Size = new Size(198, 32);
@@ -195,7 +227,7 @@ namespace GHelper
comboKeyboardSpeed.FormattingEnabled = true; comboKeyboardSpeed.FormattingEnabled = true;
comboKeyboardSpeed.ItemHeight = 32; comboKeyboardSpeed.ItemHeight = 32;
comboKeyboardSpeed.Items.AddRange(new object[] { "Slow", "Normal", "Fast" }); comboKeyboardSpeed.Items.AddRange(new object[] { "Slow", "Normal", "Fast" });
comboKeyboardSpeed.Location = new Point(230, 234); comboKeyboardSpeed.Location = new Point(230, 232);
comboKeyboardSpeed.Margin = new Padding(4, 10, 4, 8); comboKeyboardSpeed.Margin = new Padding(4, 10, 4, 8);
comboKeyboardSpeed.Name = "comboKeyboardSpeed"; comboKeyboardSpeed.Name = "comboKeyboardSpeed";
comboKeyboardSpeed.Size = new Size(291, 40); comboKeyboardSpeed.Size = new Size(291, 40);
@@ -248,9 +280,9 @@ namespace GHelper
groupOther.Controls.Add(checkKeyboardAuto); groupOther.Controls.Add(checkKeyboardAuto);
groupOther.Controls.Add(checkTopmost); groupOther.Controls.Add(checkTopmost);
groupOther.Dock = DockStyle.Top; groupOther.Dock = DockStyle.Top;
groupOther.Location = new Point(10, 572); groupOther.Location = new Point(10, 626);
groupOther.Name = "groupOther"; groupOther.Name = "groupOther";
groupOther.Size = new Size(810, 225); groupOther.Size = new Size(840, 225);
groupOther.TabIndex = 2; groupOther.TabIndex = 2;
groupOther.TabStop = false; groupOther.TabStop = false;
groupOther.Text = Properties.Strings.Other; groupOther.Text = Properties.Strings.Other;
@@ -267,7 +299,6 @@ namespace GHelper
// //
// checkKeyboardAuto // checkKeyboardAuto
// //
checkKeyboardAuto.AutoEllipsis = true;
checkKeyboardAuto.AutoSize = true; checkKeyboardAuto.AutoSize = true;
checkKeyboardAuto.Location = new Point(25, 51); checkKeyboardAuto.Location = new Point(25, 51);
checkKeyboardAuto.MaximumSize = new Size(780, 0); checkKeyboardAuto.MaximumSize = new Size(780, 0);
@@ -287,22 +318,11 @@ namespace GHelper
checkTopmost.Text = Properties.Strings.WindowTop; checkTopmost.Text = Properties.Strings.WindowTop;
checkTopmost.UseVisualStyleBackColor = true; checkTopmost.UseVisualStyleBackColor = true;
// //
// pictureHelp
//
pictureHelp.BackgroundImageLayout = ImageLayout.Zoom;
pictureHelp.Cursor = Cursors.Hand;
pictureHelp.BackgroundImage = Properties.Resources.icons8_help_64;
pictureHelp.Location = new Point(744, 57);
pictureHelp.Name = "pictureHelp";
pictureHelp.Size = new Size(32, 32);
pictureHelp.TabIndex = 9;
pictureHelp.TabStop = false;
//
// Keyboard // Keyboard
// //
AutoScaleDimensions = new SizeF(13F, 32F); AutoScaleDimensions = new SizeF(13F, 32F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(830, 858); ClientSize = new Size(860, 890);
Controls.Add(groupOther); Controls.Add(groupOther);
Controls.Add(groupLight); Controls.Add(groupLight);
Controls.Add(groupBox1); Controls.Add(groupBox1);
@@ -317,11 +337,12 @@ namespace GHelper
Text = Properties.Strings.ExtraSettings; Text = Properties.Strings.ExtraSettings;
groupBox1.ResumeLayout(false); groupBox1.ResumeLayout(false);
groupBox1.PerformLayout(); groupBox1.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).EndInit();
groupLight.ResumeLayout(false); groupLight.ResumeLayout(false);
groupLight.PerformLayout(); groupLight.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackBrightness).EndInit();
groupOther.ResumeLayout(false); groupOther.ResumeLayout(false);
groupOther.PerformLayout(); groupOther.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).EndInit();
ResumeLayout(false); ResumeLayout(false);
} }
@@ -349,5 +370,7 @@ namespace GHelper
private CheckBox checkKeyboardAuto; private CheckBox checkKeyboardAuto;
private CheckBox checkNoOverdrive; private CheckBox checkNoOverdrive;
private PictureBox pictureHelp; private PictureBox pictureHelp;
private TrackBar trackBrightness;
private Label labelBrightness;
} }
} }

View File

@@ -88,8 +88,18 @@ namespace GHelper
checkNoOverdrive.Checked = (Program.config.getConfig("no_overdrive") == 1); checkNoOverdrive.Checked = (Program.config.getConfig("no_overdrive") == 1);
checkNoOverdrive.CheckedChanged += CheckNoOverdrive_CheckedChanged; checkNoOverdrive.CheckedChanged += CheckNoOverdrive_CheckedChanged;
pictureHelp.Click += PictureHelp_Click; int kb_brightness = Program.config.getConfig("keyboard_brightness");
trackBrightness.Value = (kb_brightness >= 0 && kb_brightness <= 3) ? kb_brightness : 3;
pictureHelp.Click += PictureHelp_Click;
trackBrightness.Scroll += TrackBrightness_Scroll;
}
private void TrackBrightness_Scroll(object? sender, EventArgs e)
{
Program.config.setConfig("keyboard_brightness", trackBrightness.Value);
Aura.ApplyBrightness(trackBrightness.Value);
} }
private void PictureHelp_Click(object? sender, EventArgs e) private void PictureHelp_Click(object? sender, EventArgs e)

View File

@@ -718,7 +718,6 @@ public class NativeMethods
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid); PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
/*
var hrDC = PowerWriteDCValueIndex( var hrDC = PowerWriteDCValueIndex(
IntPtr.Zero, IntPtr.Zero,
activeSchemeGuid, activeSchemeGuid,
@@ -727,7 +726,6 @@ public class NativeMethods
boost); boost);
PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid); PowerSetActiveScheme(IntPtr.Zero, activeSchemeGuid);
*/
Logger.WriteLine("Boost " + boost); Logger.WriteLine("Boost " + boost);
} }

View File

@@ -330,6 +330,16 @@ namespace GHelper.Properties {
} }
} }
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_video_48 {
get {
object obj = ResourceManager.GetObject("icons8_video_48", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary> /// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap. /// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary> /// </summary>

View File

@@ -206,9 +206,12 @@
<value>..\Resources\icons8-speed-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\icons8-speed-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="everything-is-fine-itsfine" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="everything-is-fine-itsfine" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\everything-is-fine-itsfine.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\itsfine.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="icons8-help-64" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="icons8-help-64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-help-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\icons8-help-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="icons8_video_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-video-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root> </root>

View File

@@ -184,7 +184,7 @@
<value>Establece 60Hz con batería y vuelve cuando está enchufado</value> <value>Establece 60Hz con batería y vuelve cuando está enchufado</value>
</data> </data>
<data name="Awake" xml:space="preserve"> <data name="Awake" xml:space="preserve">
<value>Despierto</value> <value>Encendida</value>
</data> </data>
<data name="Balanced" xml:space="preserve"> <data name="Balanced" xml:space="preserve">
<value>Equilibrado</value> <value>Equilibrado</value>
@@ -193,7 +193,7 @@
<value>Límite de carga</value> <value>Límite de carga</value>
</data> </data>
<data name="Boot" xml:space="preserve"> <data name="Boot" xml:space="preserve">
<value>Inicio</value> <value>Al arrancar</value>
</data> </data>
<data name="Color" xml:space="preserve"> <data name="Color" xml:space="preserve">
<value>Color</value> <value>Color</value>
@@ -361,13 +361,13 @@
<value>Ejecutar al inicio</value> <value>Ejecutar al inicio</value>
</data> </data>
<data name="Shutdown" xml:space="preserve"> <data name="Shutdown" xml:space="preserve">
<value>Apagar</value> <value>Al apagar</value>
</data> </data>
<data name="Silent" xml:space="preserve"> <data name="Silent" xml:space="preserve">
<value>Silencio</value> <value>Silencio</value>
</data> </data>
<data name="Sleep" xml:space="preserve"> <data name="Sleep" xml:space="preserve">
<value>Suspender</value> <value>En suspensión</value>
</data> </data>
<data name="StandardGPUTooltip" xml:space="preserve"> <data name="StandardGPUTooltip" xml:space="preserve">
<value>Habilita la dGPU para uso estándar</value> <value>Habilita la dGPU para uso estándar</value>

View File

@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="ACPIError" xml:space="preserve"> <data name="ACPIError" xml:space="preserve">
<value>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value> <value>无法连接到ASUS ACPI。 没有它应用程序将无法运行。 请尝试安装Asus System Control Interface驱动。</value>
</data> </data>
<data name="AlertDGPU" xml:space="preserve"> <data name="AlertDGPU" xml:space="preserve">
<value>看起来 GPU 正在大量耗电,是否禁用?</value> <value>看起来 GPU 正在大量耗电,是否禁用?</value>
@@ -142,7 +142,7 @@
<value>Anime Matrix 光显矩阵屏</value> <value>Anime Matrix 光显矩阵屏</value>
</data> </data>
<data name="AppAlreadyRunning" xml:space="preserve"> <data name="AppAlreadyRunning" xml:space="preserve">
<value>应用已经运行</value> <value>应用已经运行</value>
</data> </data>
<data name="AppAlreadyRunningText" xml:space="preserve"> <data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper已经在运行。 请查看系统托盘中的图标。</value> <value>G-Helper已经在运行。 请查看系统托盘中的图标。</value>
@@ -187,7 +187,7 @@
<value>唤醒时</value> <value>唤醒时</value>
</data> </data>
<data name="Balanced" xml:space="preserve"> <data name="Balanced" xml:space="preserve">
<value>平衡</value> <value>平衡模式</value>
</data> </data>
<data name="BatteryChargeLimit" xml:space="preserve"> <data name="BatteryChargeLimit" xml:space="preserve">
<value>电池充电限制</value> <value>电池充电限制</value>
@@ -256,7 +256,7 @@
<value>切换中...</value> <value>切换中...</value>
</data> </data>
<data name="GPUMode" xml:space="preserve"> <data name="GPUMode" xml:space="preserve">
<value>显模式</value> <value>显模式</value>
</data> </data>
<data name="GPUModeEco" xml:space="preserve"> <data name="GPUModeEco" xml:space="preserve">
<value>仅限核显</value> <value>仅限核显</value>
@@ -265,7 +265,7 @@
<value>核显 + 独显</value> <value>核显 + 独显</value>
</data> </data>
<data name="GPUModeUltimate" xml:space="preserve"> <data name="GPUModeUltimate" xml:space="preserve">
<value>独显优先</value> <value>独显直连</value>
</data> </data>
<data name="KeyBindings" xml:space="preserve"> <data name="KeyBindings" xml:space="preserve">
<value>按键绑定</value> <value>按键绑定</value>
@@ -280,10 +280,10 @@
<value>键盘背光</value> <value>键盘背光</value>
</data> </data>
<data name="LaptopKeyboard" xml:space="preserve"> <data name="LaptopKeyboard" xml:space="preserve">
<value>键盘</value> <value>笔记本键盘</value>
</data> </data>
<data name="LaptopScreen" xml:space="preserve"> <data name="LaptopScreen" xml:space="preserve">
<value>屏幕显示</value> <value>笔记本屏幕</value>
</data> </data>
<data name="MatrixBanner" xml:space="preserve"> <data name="MatrixBanner" xml:space="preserve">
<value>Anime Matrix 标识</value> <value>Anime Matrix 标识</value>
@@ -382,7 +382,7 @@
<value>切换 Aura 模式</value> <value>切换 Aura 模式</value>
</data> </data>
<data name="Turbo" xml:space="preserve"> <data name="Turbo" xml:space="preserve">
<value>增强</value> <value>增强模式</value>
</data> </data>
<data name="TurnedOff" xml:space="preserve"> <data name="TurnedOff" xml:space="preserve">
<value>已关闭</value> <value>已关闭</value>
@@ -394,7 +394,7 @@
<value>开启独显直连获得最佳帧率</value> <value>开启独显直连获得最佳帧率</value>
</data> </data>
<data name="UltimateMode" xml:space="preserve"> <data name="UltimateMode" xml:space="preserve">
<value>独显输出</value> <value>独显直连</value>
</data> </data>
<data name="VersionLabel" xml:space="preserve"> <data name="VersionLabel" xml:space="preserve">
<value>版本</value> <value>版本</value>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 220 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

BIN
app/Resources/itsfine.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -68,6 +68,7 @@ namespace GHelper
buttonStandard = new RButton(); buttonStandard = new RButton();
buttonOptimized = new RButton(); buttonOptimized = new RButton();
buttonUltimate = new RButton(); buttonUltimate = new RButton();
buttonXGM = new RButton();
panelScreen = new Panel(); panelScreen = new Panel();
labelMidFan = new Label(); labelMidFan = new Label();
labelTipScreen = new Label(); labelTipScreen = new Label();
@@ -534,19 +535,21 @@ namespace GHelper
panelGPU.Location = new Point(10, 210); panelGPU.Location = new Point(10, 210);
panelGPU.Margin = new Padding(8); panelGPU.Margin = new Padding(8);
panelGPU.Name = "panelGPU"; panelGPU.Name = "panelGPU";
panelGPU.Padding = new Padding(0, 0, 0, 10); panelGPU.Padding = new Padding(0, 0, 0, 45);
panelGPU.Size = new Size(810, 237); panelGPU.Size = new Size(810, 237);
panelGPU.TabIndex = 37; panelGPU.TabIndex = 37;
// //
// labelTipGPU // labelTipGPU
// //
labelTipGPU.ForeColor = SystemColors.GrayText; labelTipGPU.ForeColor = SystemColors.GrayText;
labelTipGPU.Location = new Point(24, 191); labelTipGPU.Location = new Point(44, 191);
labelTipGPU.Margin = new Padding(4, 0, 4, 0); labelTipGPU.Margin = new Padding(4, 0, 4, 0);
labelTipGPU.Name = "labelTipGPU"; labelTipGPU.Name = "labelTipGPU";
labelTipGPU.Size = new Size(760, 36); labelTipGPU.Size = new Size(760, 36);
labelTipGPU.TabIndex = 20; labelTipGPU.TabIndex = 20;
labelTipGPU.Text = " "; labelTipGPU.Text = "";
labelTipGPU.Anchor = AnchorStyles.Right | AnchorStyles.Bottom;
// //
// pictureGPU // pictureGPU
// //
@@ -593,6 +596,7 @@ namespace GHelper
tableGPU.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F)); tableGPU.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 25F));
tableGPU.Controls.Add(buttonEco, 0, 0); tableGPU.Controls.Add(buttonEco, 0, 0);
tableGPU.Controls.Add(buttonStandard, 1, 0); tableGPU.Controls.Add(buttonStandard, 1, 0);
tableGPU.Controls.Add(buttonXGM, 2, 0);
tableGPU.Controls.Add(buttonOptimized, 2, 0); tableGPU.Controls.Add(buttonOptimized, 2, 0);
tableGPU.Controls.Add(buttonUltimate, 2, 0); tableGPU.Controls.Add(buttonUltimate, 2, 0);
tableGPU.Location = new Point(16, 60); tableGPU.Location = new Point(16, 60);
@@ -691,6 +695,30 @@ namespace GHelper
buttonUltimate.Text = Properties.Strings.UltimateMode; buttonUltimate.Text = Properties.Strings.UltimateMode;
buttonUltimate.TextImageRelation = TextImageRelation.ImageAboveText; buttonUltimate.TextImageRelation = TextImageRelation.ImageAboveText;
buttonUltimate.UseVisualStyleBackColor = false; buttonUltimate.UseVisualStyleBackColor = false;
//
// buttonXGM
//
buttonXGM.Activated = false;
buttonXGM.BackColor = SystemColors.ControlLightLight;
buttonXGM.BorderColor = Color.Transparent;
buttonXGM.BorderRadius = 5;
buttonXGM.Dock = DockStyle.Top;
buttonXGM.FlatAppearance.BorderSize = 0;
buttonXGM.FlatStyle = FlatStyle.Flat;
buttonXGM.ForeColor = SystemColors.ControlText;
buttonXGM.Image = Properties.Resources.icons8_video_48;
buttonXGM.ImageAlign = ContentAlignment.BottomCenter;
buttonXGM.Location = new Point(390, 4);
buttonXGM.Margin = new Padding(4);
buttonXGM.Name = "buttonXGM";
buttonXGM.Secondary = false;
buttonXGM.Size = new Size(185, 120);
buttonXGM.TabIndex = 2;
buttonXGM.Text = "XG Mobile";
buttonXGM.TextImageRelation = TextImageRelation.ImageAboveText;
buttonXGM.UseVisualStyleBackColor = false;
buttonXGM.Visible = false;
// //
// panelScreen // panelScreen
// //
@@ -1078,6 +1106,7 @@ namespace GHelper
private Label labelGPU; private Label labelGPU;
private Label labelGPUFan; private Label labelGPUFan;
private TableLayoutPanel tableGPU; private TableLayoutPanel tableGPU;
private RButton buttonXGM;
private RButton buttonUltimate; private RButton buttonUltimate;
private RButton buttonStandard; private RButton buttonStandard;
private RButton buttonEco; private RButton buttonEco;

View File

@@ -50,6 +50,7 @@ namespace GHelper
buttonStandard.BorderColor = colorStandard; buttonStandard.BorderColor = colorStandard;
buttonUltimate.BorderColor = colorTurbo; buttonUltimate.BorderColor = colorTurbo;
buttonOptimized.BorderColor = colorEco; buttonOptimized.BorderColor = colorEco;
buttonXGM.BorderColor = colorTurbo;
button60Hz.BorderColor = SystemColors.ActiveBorder; button60Hz.BorderColor = SystemColors.ActiveBorder;
button120Hz.BorderColor = SystemColors.ActiveBorder; button120Hz.BorderColor = SystemColors.ActiveBorder;
@@ -112,6 +113,8 @@ namespace GHelper
buttonUltimate.MouseMove += ButtonUltimate_MouseHover; buttonUltimate.MouseMove += ButtonUltimate_MouseHover;
buttonUltimate.MouseLeave += ButtonGPU_MouseLeave; buttonUltimate.MouseLeave += ButtonGPU_MouseLeave;
buttonXGM.Click += ButtonXGM_Click;
buttonScreenAuto.MouseMove += ButtonScreenAuto_MouseHover; buttonScreenAuto.MouseMove += ButtonScreenAuto_MouseHover;
buttonScreenAuto.MouseLeave += ButtonScreen_MouseLeave; buttonScreenAuto.MouseLeave += ButtonScreen_MouseLeave;
@@ -146,6 +149,18 @@ namespace GHelper
} }
private void ButtonXGM_Click(object? sender, EventArgs e)
{
if (Program.wmi.DeviceGet(ASUSWmi.GPUXG) == 1)
{
Program.wmi.DeviceSet(ASUSWmi.GPUXG, 0, "GPU XGM");
} else
{
Program.wmi.DeviceSet(ASUSWmi.GPUXG, 1, "GPU XGM");
}
InitXGM();
}
private void SliderBattery_ValueChanged(object? sender, EventArgs e) private void SliderBattery_ValueChanged(object? sender, EventArgs e)
{ {
SetBatteryChargeLimit(sliderBattery.Value); SetBatteryChargeLimit(sliderBattery.Value);
@@ -560,7 +575,7 @@ namespace GHelper
if (fans.Visible) if (fans.Visible)
{ {
fans.Hide(); fans.Close();
} }
else else
{ {
@@ -758,6 +773,10 @@ namespace GHelper
if (maxFrequency > 60) if (maxFrequency > 60)
{ {
button120Hz.Text = maxFrequency.ToString() + "Hz" + (overdriveSetting ? " + OD" : ""); button120Hz.Text = maxFrequency.ToString() + "Hz" + (overdriveSetting ? " + OD" : "");
panelScreen.Visible = true;
} else if (maxFrequency > 0)
{
panelScreen.Visible = false;
} }
if (miniled >= 0) if (miniled >= 0)
@@ -852,6 +871,7 @@ namespace GHelper
if (this.Visible) if (this.Visible)
{ {
InitScreen(); InitScreen();
InitXGM();
this.Left = Screen.FromControl(this).WorkingArea.Width - 10 - this.Width; this.Left = Screen.FromControl(this).WorkingArea.Width - 10 - this.Width;
this.Top = Screen.FromControl(this).WorkingArea.Height - 10 - this.Height; this.Top = Screen.FromControl(this).WorkingArea.Height - 10 - this.Height;
@@ -901,6 +921,13 @@ namespace GHelper
} }
protected void LabelFansResult(string text)
{
if (fans != null && fans.Text != "")
fans.LabelFansResult(text);
}
public void AutoFans(bool force = false) public void AutoFans(bool force = false)
{ {
customFans = false; customFans = false;
@@ -914,13 +941,18 @@ namespace GHelper
Program.wmi.SetFanCurve(2, Program.config.getFanConfig(2)); Program.wmi.SetFanCurve(2, Program.config.getFanConfig(2));
// something went wrong, resetting to default profile // something went wrong, resetting to default profile
if (cpuResult != 1 || gpuResult != 1) if (cpuResult != 1 || gpuResult != 1)
{ {
int mode = Program.config.getConfig("performance_mode"); int mode = Program.config.getConfig("performance_mode");
Logger.WriteLine("Driver rejected fan curve, resetting mode to " + mode); Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, mode, "PerformanceMode"); Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, mode, "PerformanceMode");
LabelFansResult("ASUS BIOS rejected fan curve");
}
else
{
LabelFansResult("");
customFans = true;
} }
else customFans = true;
// fix for misbehaving bios on intell based TUF 2022 // fix for misbehaving bios on intell based TUF 2022
if ((Program.config.ContainsModel("FX507") || Program.config.ContainsModel("FX517")) && Program.config.getConfigPerf("auto_apply_power") != 1) if ((Program.config.ContainsModel("FX507") || Program.config.ContainsModel("FX517")) && Program.config.getConfigPerf("auto_apply_power") != 1)
@@ -1149,12 +1181,20 @@ namespace GHelper
tableScreen.ColumnCount = 0; tableScreen.ColumnCount = 0;
} }
//tableLayoutMatrix.ColumnCount = 0; //tableLayoutMatrix.ColumnCount = 0;
}
public void InitXGM()
{
int connected = Program.wmi.DeviceGet(ASUSWmi.GPUXGConnected);
int enabled = Program.wmi.DeviceGet(ASUSWmi.GPUXG);
buttonXGM.Visible = (connected == 1);
buttonXGM.Activated = (enabled == 1);
} }
public int InitGPUMode() public int InitGPUMode()
{ {
@@ -1186,6 +1226,8 @@ namespace GHelper
ButtonEnabled(buttonStandard, true); ButtonEnabled(buttonStandard, true);
ButtonEnabled(buttonUltimate, true); ButtonEnabled(buttonUltimate, true);
InitXGM();
VisualiseGPUMode(GpuMode); VisualiseGPUMode(GpuMode);
return GpuMode; return GpuMode;
@@ -1216,6 +1258,9 @@ namespace GHelper
Program.wmi.DeviceSet(ASUSWmi.GPUEco, eco, "GPUEco"); Program.wmi.DeviceSet(ASUSWmi.GPUEco, eco, "GPUEco");
if (eco == 0)
HardwareMonitor.RecreateGpuTemperatureProviderWithDelay();
Program.settingsForm.BeginInvoke(delegate Program.settingsForm.BeginInvoke(delegate
{ {
Thread.Sleep(500); Thread.Sleep(500);

View File

@@ -2,12 +2,12 @@
[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total.svg)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub release](https://img.shields.io/github/release/seerge/g-helper.svg)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social&label=Star)](https://GitHub.com/seerge/g-helper/stargazers/) [![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total.svg)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub release](https://img.shields.io/github/release/seerge/g-helper.svg)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social&label=Star)](https://GitHub.com/seerge/g-helper/stargazers/)
Language: English | [中文](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)
## Lightweight Armoury Crate alternative for Asus laptops ## Lightweight Armoury Crate alternative for Asus laptops
### Control tool for ROG Zephyrus G14, G15, Flow X13, Flow X16, TUF, Strix, Scar and other models
A small utility that allows you to do almost everything you could do with Armoury Crate but without extra bloat and unnecessary services. Control tool for ROG Zephyrus G14, G15, Flow X13, Flow X16, TUF, Strix, Scar and other models. A small utility that allows you to do almost everything you could do with Armoury Crate but without extra bloat and unnecessary services.
[这个自述文件](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)
## :gift: Main advantages ## :gift: Main advantages
@@ -23,7 +23,7 @@ If you like this app, please [star :star: it on Github](https://github.com/seerg
_If you post about the app - please include a link. Thanks._ _If you post about the app - please include a link. Thanks._
![Screenshot 2023-03-30 115149](https://user-images.githubusercontent.com/5920850/228799078-bc93148f-6580-4319-b9e6-fbde4d246cd2.png) ![Screenshot 2023-04-13 190951](https://user-images.githubusercontent.com/5920850/231859391-c4963af4-491c-4523-95d4-0bdcfd7cfd6f.png)
### :zap: Main features ### :zap: Main features
@@ -55,7 +55,7 @@ Modes are **same** as in Armoury Crate as they are stored in bios including defa
_PPTs are shown for G14 2022, for other models PPTs will be different as they are set in bios._ _PPTs are shown for G14 2022, for other models PPTs will be different as they are set in bios._
![Screenshot 2023-04-06 142234](https://user-images.githubusercontent.com/5920850/230377635-7032a480-3a94-4e35-9468-d8911e3e55ec.png) ![Screenshot 2023-04-13 191030](https://user-images.githubusercontent.com/5920850/231859519-3cfa40f1-b06e-4cdb-b3e8-5187521ce208.png)
### :video_game: GPU Modes ### :video_game: GPU Modes
@@ -101,9 +101,20 @@ Sure, you can! The only problem is that MyASUS may override the battery charge l
#### How do I set Mute Microphone to M3? #### How do I set Mute Microphone to M3?
This function is handled by Asus Optimization Service (therefore G-helper doesn't interfere and doesn't touch this function). Make sure that this service is up and running This function is handled by Asus Optimization Service (therefore G-helper doesn't interfere and doesn't touch this function). Make sure that this service is up and running
#### How do I set different "Visual styles"?
Personally, i'm not a big fan of them, as they make colors very inaccurate. But if you want so - you can adjust display colors using either Nvidia Control panel or AMD Adrenaline (appropriate display sections). If you really want you can also use [own ASUS utility from MS Store](https://apps.microsoft.com/store/detail/gamevisual/9P4K1LFTXSH8?hl=nl-nl&gl=nl&rtc=1)
#### Can I overclock Nvidia GPU core / memory?
I don't own nvidia GPU at the moment, so can't safely add overclocking to the app. But you can use "msi afterburner" to do that and much more with your GPU, as it's much more specialized on this aspect :)
#### How do I uninstall G-helper? #### How do I uninstall G-helper?
G-helper is a single exe, and it doesn't install anything in the system. To remove it - you can simply delete exe :) If you have applied any custom fan profiles or PPTs - before removing I would recommend selecting your favorite performance mode (for example balanced) and clicking "Factory defaults" under Fans + Power. G-helper is a single exe, and it doesn't install anything in the system. To remove it - you can simply delete exe :) If you have applied any custom fan profiles or PPTs - before removing I would recommend selecting your favorite performance mode (for example balanced) and clicking "Factory defaults" under Fans + Power.
#### What is G-helper ?
It's a lightweight Armoury Crate alternative for Asus laptops. A small utility that allows you to do almost everything you could do with Armoury Crate but without extra bloat and unnecessary services.
---------------------------- ----------------------------
### How to install ### How to install
@@ -112,16 +123,18 @@ G-helper is a single exe, and it doesn't install anything in the system. To remo
2. Unzip to a folder of your choice 2. Unzip to a folder of your choice
3. Run **GHelper.exe** 3. Run **GHelper.exe**
### Dependencies & Requirements ### Requirements (mandatory)
- Microsoft [.NET7](https://dotnet.microsoft.com/en-us/download). Most probably you already have it. Otherwise you can [download it](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-7.0.202-windows-x64-installer) from the official website. - Microsoft [.NET7](https://dotnet.microsoft.com/en-us/download). Most probably you already have it. Otherwise you can [download it](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-7.0.202-windows-x64-installer) from the official website.
- [Asus System Control Interface](https://dlcdnets.asus.com/pub/ASUS/nb/Image/CustomComponent/ASUSSystemControlInterfaceV3/ASUSSystemControlInterfaceV3.exe). If you have or had MyASUS app installed this "driver" probably still in place (even after MyASUS uninstalls). Alternatively - you can download and install it - [Asus System Control Interface](https://dlcdnets.asus.com/pub/ASUS/nb/Image/CustomComponent/ASUSSystemControlInterfaceV3/ASUSSystemControlInterfaceV3.exe). If you have or had MyASUS app installed this "driver" probably still in place (even after MyASUS uninstalls). Alternatively - you can download and install it
- Optionally(!) you can disable / remove unnecessary services by running [this debloat bat file](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat) as admin. To restore services - run [this bloat bat file](https://raw.githubusercontent.com/seerge/g-helper/main/bloat.bat) instead. ### Recommendations (optional)
- I recommend keeping "Asus Optimization Service" running, as it keeps basic laptop hotkeys such as screen or keyboard brightness adjustment working. - I recommend keeping "Asus Optimization Service" running, as it keeps basic laptop hotkeys such as screen or keyboard brightness adjustment working.
- Optionally(!) you can disable / remove unnecessary services by running [this debloat bat file](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat) as admin. To restore services - run [this bloat bat file](https://raw.githubusercontent.com/seerge/g-helper/main/bloat.bat) instead.
- It's not recommended to use an app in combination with Armoury Crate services, because they adjust the same settings. You can [uninstall it using it's own uninstall tool](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate). Just in case, you can always install it back later. - It's not recommended to use an app in combination with Armoury Crate services, because they adjust the same settings. You can [uninstall it using it's own uninstall tool](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate). Just in case, you can always install it back later.
------------------------------- -------------------------------

View File

@@ -2,6 +2,8 @@
[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total.svg)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub release](https://img.shields.io/github/release/seerge/g-helper.svg)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social&label=Star)](https://GitHub.com/seerge/g-helper/stargazers/) [![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total.svg)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub release](https://img.shields.io/github/release/seerge/g-helper.svg)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social&label=Star)](https://GitHub.com/seerge/g-helper/stargazers/)
语言: [English](https://github.com/seerge/g-helper#readme) | 中文
## 为ASUS笔记本打造的、Armoury Crate(奥创控制中心)的轻量化替代品 ## 为ASUS笔记本打造的、Armoury Crate(奥创控制中心)的轻量化替代品
### 可作为ROG 幻14、幻15幻13、幻16飞行堡垒/天选系列ROG 枪神/魔霸系列或其他ASUS笔记本的控制工具 ### 可作为ROG 幻14、幻15幻13、幻16飞行堡垒/天选系列ROG 枪神/魔霸系列或其他ASUS笔记本的控制工具
@@ -17,7 +19,7 @@
## [:floppy_disk: 下载应用](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip) ## [:floppy_disk: 下载应用](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
如果你喜欢这个应用,请给这个项目 [:star: 在Github上Star](https://github.com/seerge/g-helper) 或者向别人推荐它! 如果你喜欢这个应用,请[给这个项目:star:](https://github.com/seerge/g-helper) 或者向别人推荐它!
_如果你在别的地方提到这个软件-请记得加上这个项目的网址。十分感谢。_ _如果你在别的地方提到这个软件-请记得加上这个项目的网址。十分感谢。_