Compare commits

..

47 Commits

Author SHA1 Message Date
Serge
274c773a8b Init fallbacks 2024-03-07 22:23:12 +01:00
Serge
93399288bf Save visuals in UI 2024-03-07 22:00:27 +01:00
Serge
f42b91b408 Eye-care mode 2024-03-07 21:50:52 +01:00
Serge
9bf7400f69 UI Tweaks 2024-03-07 21:31:41 +01:00
Serge
dff69d48ce Visual Modes 2024-03-07 20:56:06 +01:00
Serge
816988eb6c Added K650 to OLED list 2024-03-07 18:32:48 +01:00
Serge
312028f97c Path detection 2024-03-07 18:22:30 +01:00
Serge
211b855e8a No overdrive for OLED 2024-03-07 15:19:41 +01:00
Serge
d3d2f3189f Dimming init fallback 2024-03-07 14:46:28 +01:00
Serge
4120113cbe Merge branch 'main' of https://github.com/seerge/g-helper 2024-03-07 14:34:02 +01:00
Serge
1191208f70 Dimming init 2024-03-07 14:33:39 +01:00
IceStormNG
c7db5a403c Mouse UI Fixes (#2173)
* Support for Strix Carry (P508)

* Fixes polling rate, angle snapping and debounce for Gladius II Origin.

* The Gen2 version of the TuF M3 uses 0-100 for brightness.

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

* Strix Carry has 50 DPI minimum and increments of 50.

* Respect top-most setting of GHelper

* Fixes to the buttons to be wider to fit longer translations.
2024-03-07 14:15:01 +01:00
Serge
35ceea878f Brightness fallback 2024-03-07 14:12:20 +01:00
Serge
06378162c8 Ambient mode tweak for 2024 models 2024-03-07 13:39:34 +01:00
Serge
a688275ca2 Lower ambient mode refresh rate for single-zone models 2024-03-07 12:06:11 +01:00
Serge
4c5e05d6f8 Brightness slider UI tweaks 2024-03-07 11:39:54 +01:00
Serge
d77acfd97a Version bump 2024-03-07 11:28:21 +01:00
Serge
092ecc7ede Dimming hotkeys 2024-03-07 11:00:38 +01:00
Serge
0b3d52fc0e UI Tweaks 2024-03-07 00:27:36 +01:00
Serge
2797807d7b Improved dimming 2024-03-06 23:28:21 +01:00
Serge
6075676372 Max GPU Power param in config 2024-03-06 10:46:28 +01:00
Serge
0705edd83d Overdrive UI tweak https://github.com/seerge/g-helper/issues/2166 2024-03-05 22:19:23 +01:00
Serge
6dcfff704e Sleep hotkey for TUF devices 2024-03-05 14:49:27 +01:00
Serge
abc9acd3a8 UV Cleanup 2024-03-05 12:27:06 +01:00
Serge
53d7382417 Set GPU Clocks earlier 2024-03-05 01:17:40 +01:00
Serge
64f4572113 UI tweaks 2024-03-05 00:31:25 +01:00
Serge
8ab1f1fc81 Workaround for bugged BIOS on G14 2024 2024-03-05 00:08:46 +01:00
IceStormNG
251d32e115 Mouse fixes (#2159)
* Support for Strix Carry (P508)

* Fixes polling rate, angle snapping and debounce for Gladius II Origin.

* The Gen2 version of the TuF M3 uses 0-100 for brightness.

* Adds support for ROG Strix Impact III (P518)

* Import/Export feature for mice.

* Suppor for Strix Impact (P303)

* Support for Strix Impact II Electro Punk

* Strix Carry has 50 DPI minimum and increments of 50.
2024-03-03 17:15:40 +01:00
Serge
947e32b97c GPU Power slider fix 2024-03-03 10:24:33 +01:00
Serge
091303d90f Swapped fan curves workaround https://github.com/seerge/g-helper/issues/2155 2024-03-03 10:19:00 +01:00
Serge
c8b929310a Zenbook fn-lock https://github.com/seerge/g-helper/issues/2154 2024-03-03 10:17:25 +01:00
Serge
c32fa46991 Added 100ms delay before setting fan curves 2024-03-02 13:41:57 +01:00
Serge
b94e20a3fc Power limits cleanup 2024-03-02 12:35:47 +01:00
Serge
2d0defd484 Power limits cleanup 2024-03-02 12:00:37 +01:00
Serge
6f49af19ed Cleanup 2024-03-02 11:25:11 +01:00
Serge
097d91b5a4 Cleanup 2024-03-02 11:23:22 +01:00
Serge
f36a55f086 Reapply brightness on display config change 2024-03-01 23:19:44 +01:00
Serge
c1a6019d57 Increased Fan calibration limit https://github.com/seerge/g-helper/issues/2145 2024-03-01 19:57:10 +01:00
Serge
63b357a71b GPU Power slider limits 2024-03-01 12:38:48 +01:00
Serge
c337103806 Merge branch 'main' of https://github.com/seerge/g-helper 2024-03-01 12:32:43 +01:00
Serge
268e55d47a UI Tweaks 2024-03-01 12:32:41 +01:00
Serge
3cc4955dd7 GPU Power limit slider for 2024 models (#2142)
* GPU TGP setting for supported models

* Version bump

* GPU Power tweaks

* GPU Power UI Tweaks

* Cleanup
2024-03-01 11:09:30 +01:00
Serge
db8e4b9c5e New translations strings.resx (German) (#2139) 2024-02-29 10:00:42 +01:00
Serge
c517f340dc Merge branch 'main' of https://github.com/seerge/g-helper 2024-02-28 23:39:20 +01:00
Serge
f0da110a83 Config writing fix https://github.com/seerge/g-helper/issues/2133 2024-02-28 23:39:18 +01:00
Serge
88ab4f396e Update SECURITY.md 2024-02-27 15:41:41 +01:00
Serge
4378118951 Update README.md 2024-02-27 15:28:45 +01:00
30 changed files with 803 additions and 1220 deletions

4
.github/SECURITY.md vendored
View File

@@ -4,8 +4,8 @@
| Version | Supported |
| ------- | ------------------ |
| 0.89+ | :white_check_mark: |
| < 0.89 | :x: |
| 0.151+ | :white_check_mark: |
| < 0.151 | :x: |
## Reporting a Vulnerability

View File

@@ -67,9 +67,17 @@ public static class AppConfig
{
File.WriteAllText(backup, jsonString);
}
catch (Exception ex)
catch (Exception)
{
Logger.WriteLine(ex.ToString());
Thread.Sleep(100);
try
{
File.WriteAllText(backup, jsonString);
}
catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
return;
}
@@ -357,9 +365,9 @@ public static class AppConfig
return ContainsModel("ProArt");
}
public static bool IsVivobook()
public static bool IsVivoZenbook()
{
return ContainsModel("Vivobook");
return ContainsModel("Vivobook") || ContainsModel("Zenbook");
}
// Devices with bugged bios command to change brightness
@@ -397,7 +405,12 @@ public static class AppConfig
public static bool IsOLED()
{
return ContainsModel("OLED") || IsSlash() || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150");
return ContainsModel("OLED") || IsSlash() || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M3500") || ContainsModel("K650");
}
public static bool IsNoOverdrive()
{
return Is("no_overdrive") || IsOLED();
}
public static bool IsStrix()
@@ -423,7 +436,7 @@ public static class AppConfig
public static bool IsNoDirectRGB()
{
return ContainsModel("GA503") || ContainsModel("G533Q");
return ContainsModel("GA503") || ContainsModel("G533Q") || IsSlash();
}
public static bool IsStrixNumpad()
@@ -506,7 +519,7 @@ public static class AppConfig
try
{
var (bios, model) = GetBiosAndModel();
return (Int32.Parse(bios) == 317);
return (Int32.Parse(bios) == 317 || Int32.Parse(bios) == 316);
}
catch
{
@@ -514,9 +527,19 @@ public static class AppConfig
}
}
public static bool IsResetRequired()
{
return ContainsModel("GA403");
}
public static bool IsFanRequired()
{
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P");
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P") || ContainsModel("GU605") || ContainsModel("GA403");
}
public static bool IsAMDLight()
{
return ContainsModel("GA402X") || ContainsModel("GU605") || ContainsModel("GA403") || ContainsModel("FA507N") || ContainsModel("FA507X") || ContainsModel("FA707N") || ContainsModel("FA707X");
}
public static bool IsPowerRequired()
@@ -554,6 +577,10 @@ public static class AppConfig
return ContainsModel("G834") || ContainsModel("G614") || ContainsModel("G834") || ContainsModel("G634");
}
public static bool IsROG()
{
return ContainsModel("ROG");
}
public static bool IsASUS()
{
return ContainsModel("ROG") || ContainsModel("TUF") || ContainsModel("Vivobook") || ContainsModel("Zenbook");

View File

@@ -105,6 +105,9 @@ public class AsusACPI
public const uint CORES_CPU = 0x001200D2; // Intel E-core and P-core configuration in a format 0x0[E]0[P]
public const uint CORES_MAX = 0x001200D3; // Maximum Intel E-core and P-core availability
public const uint GPU_BASE = 0x00120099; // Base part GPU TGP
public const uint GPU_POWER = 0x00120098; // Additonal part of GPU TGP
public const int APU_MEM = 0x000600C1;
public const int TUF_KB_BRIGHTNESS = 0x00050021;
@@ -150,6 +153,9 @@ public class AsusACPI
public const int MinGPUBoost = 5;
public static int MaxGPUBoost = 25;
public static int MinGPUPower = 0;
public static int MaxGPUPower = 50;
public const int MinGPUTemp = 75;
public const int MaxGPUTemp = 87;
@@ -285,6 +291,12 @@ public class AsusACPI
if (AppConfig.IsIntelHX())
{
MaxTotal = 175;
MaxGPUPower = 70;
}
if (AppConfig.IsSlash())
{
MaxGPUPower = AppConfig.Get("max_gpu_power", 25);
}
if (AppConfig.DynamicBoost5())
@@ -296,6 +308,14 @@ public class AsusACPI
{
MaxGPUBoost = 15;
}
if (AppConfig.IsAMDLight())
{
MaxTotal = 90;
}
}
public void Control(uint dwIoControlCode, byte[] lpInBuffer, byte[] lpOutBuffer)
@@ -409,9 +429,16 @@ public class AsusACPI
{
return null;
}
}
public int SetVivoMode(int mode)
{
if (mode == 1) mode = 2;
else if (mode == 2) mode = 1;
return Program.acpi.DeviceSet(VivoBookMode, mode, "VivoMode");
}
public int SetGPUEco(int eco)
{
int ecoFlag = DeviceGet(GPUEco);
@@ -542,7 +569,7 @@ public class AsusACPI
break;
}
Logger.WriteLine($"GetFan {device} :" + BitConverter.ToString(result));
//Logger.WriteLine($"GetFan {device} :" + BitConverter.ToString(result));
return result;

View File

@@ -152,7 +152,7 @@
//
panelProfiles.Controls.Add(comboProfile);
panelProfiles.Controls.Add(labelProfile);
panelProfiles.Location = new Point(212, 2);
panelProfiles.Location = new Point(220, 2);
panelProfiles.Margin = new Padding(2);
panelProfiles.MinimumSize = new Size(227, 0);
panelProfiles.Name = "panelProfiles";
@@ -197,7 +197,7 @@
panelPerformance.Margin = new Padding(2);
panelPerformance.Name = "panelPerformance";
panelPerformance.Padding = new Padding(0, 7, 0, 17);
panelPerformance.Size = new Size(420, 370);
panelPerformance.Size = new Size(437, 370);
panelPerformance.TabIndex = 1;
//
// panelPerformanceOther
@@ -215,7 +215,7 @@
panelPerformanceOther.Margin = new Padding(2);
panelPerformanceOther.Name = "panelPerformanceOther";
panelPerformanceOther.Padding = new Padding(0, 7, 0, 7);
panelPerformanceOther.Size = new Size(420, 192);
panelPerformanceOther.Size = new Size(437, 192);
panelPerformanceOther.TabIndex = 49;
//
// panelDeceleration
@@ -230,7 +230,7 @@
panelDeceleration.Margin = new Padding(2);
panelDeceleration.Name = "panelDeceleration";
panelDeceleration.Padding = new Padding(3);
panelDeceleration.Size = new Size(420, 31);
panelDeceleration.Size = new Size(437, 31);
panelDeceleration.TabIndex = 58;
//
// labelDeceleration
@@ -279,7 +279,7 @@
panelAcceleration.Margin = new Padding(2);
panelAcceleration.Name = "panelAcceleration";
panelAcceleration.Padding = new Padding(3);
panelAcceleration.Size = new Size(420, 31);
panelAcceleration.Size = new Size(437, 31);
panelAcceleration.TabIndex = 57;
//
// labelAcceleration
@@ -327,7 +327,7 @@
panelLiftOffDistance.Margin = new Padding(2);
panelLiftOffDistance.Name = "panelLiftOffDistance";
panelLiftOffDistance.Padding = new Padding(3);
panelLiftOffDistance.Size = new Size(420, 29);
panelLiftOffDistance.Size = new Size(437, 29);
panelLiftOffDistance.TabIndex = 56;
//
// labelLiftOffDistance
@@ -364,7 +364,7 @@
panelDebounce.Margin = new Padding(2);
panelDebounce.Name = "panelDebounce";
panelDebounce.Padding = new Padding(3);
panelDebounce.Size = new Size(420, 31);
panelDebounce.Size = new Size(437, 31);
panelDebounce.TabIndex = 55;
//
// labelButtonDebounce
@@ -413,7 +413,7 @@
panelAngleSnapping.Margin = new Padding(2);
panelAngleSnapping.Name = "panelAngleSnapping";
panelAngleSnapping.Padding = new Padding(3);
panelAngleSnapping.Size = new Size(420, 29);
panelAngleSnapping.Size = new Size(437, 29);
panelAngleSnapping.TabIndex = 54;
//
// sliderAngleAdjustment
@@ -464,7 +464,7 @@
panelPollingRate.Margin = new Padding(2);
panelPollingRate.Name = "panelPollingRate";
panelPollingRate.Padding = new Padding(3);
panelPollingRate.Size = new Size(420, 27);
panelPollingRate.Size = new Size(437, 27);
panelPollingRate.TabIndex = 53;
//
// labelPollingRate
@@ -500,7 +500,7 @@
panelDPISettings.Location = new Point(0, 91);
panelDPISettings.Margin = new Padding(2);
panelDPISettings.Name = "panelDPISettings";
panelDPISettings.Size = new Size(420, 70);
panelDPISettings.Size = new Size(437, 70);
panelDPISettings.TabIndex = 44;
//
// sliderDPI
@@ -512,7 +512,7 @@
sliderDPI.Max = 35000;
sliderDPI.Min = 100;
sliderDPI.Name = "sliderDPI";
sliderDPI.Size = new Size(420, 20);
sliderDPI.Size = new Size(437, 20);
sliderDPI.Step = 50;
sliderDPI.TabIndex = 43;
sliderDPI.TabStop = false;
@@ -537,7 +537,7 @@
tableLayoutPanel1.Name = "tableLayoutPanel1";
tableLayoutPanel1.RowCount = 1;
tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
tableLayoutPanel1.Size = new Size(420, 23);
tableLayoutPanel1.Size = new Size(437, 23);
tableLayoutPanel1.TabIndex = 47;
//
// labelMinDPI
@@ -547,7 +547,7 @@
labelMinDPI.Location = new Point(4, 0);
labelMinDPI.Margin = new Padding(4, 0, 4, 0);
labelMinDPI.Name = "labelMinDPI";
labelMinDPI.Size = new Size(151, 23);
labelMinDPI.Size = new Size(158, 23);
labelMinDPI.TabIndex = 45;
labelMinDPI.Text = "100";
//
@@ -555,10 +555,10 @@
//
labelMaxDPI.Dock = DockStyle.Fill;
labelMaxDPI.ForeColor = SystemColors.GrayText;
labelMaxDPI.Location = new Point(263, 0);
labelMaxDPI.Location = new Point(274, 0);
labelMaxDPI.Margin = new Padding(4, 0, 4, 0);
labelMaxDPI.Name = "labelMaxDPI";
labelMaxDPI.Size = new Size(153, 23);
labelMaxDPI.Size = new Size(159, 23);
labelMaxDPI.TabIndex = 46;
labelMaxDPI.Text = " 35000";
labelMaxDPI.TextAlign = ContentAlignment.TopRight;
@@ -568,12 +568,12 @@
numericUpDownCurrentDPI.BorderStyle = BorderStyle.None;
numericUpDownCurrentDPI.Dock = DockStyle.Fill;
numericUpDownCurrentDPI.Increment = new decimal(new int[] { 50, 0, 0, 0 });
numericUpDownCurrentDPI.Location = new Point(161, 2);
numericUpDownCurrentDPI.Location = new Point(168, 2);
numericUpDownCurrentDPI.Margin = new Padding(2);
numericUpDownCurrentDPI.Maximum = new decimal(new int[] { 35000, 0, 0, 0 });
numericUpDownCurrentDPI.Minimum = new decimal(new int[] { 100, 0, 0, 0 });
numericUpDownCurrentDPI.Name = "numericUpDownCurrentDPI";
numericUpDownCurrentDPI.Size = new Size(96, 19);
numericUpDownCurrentDPI.Size = new Size(100, 19);
numericUpDownCurrentDPI.TabIndex = 47;
numericUpDownCurrentDPI.TextAlign = HorizontalAlignment.Center;
numericUpDownCurrentDPI.Value = new decimal(new int[] { 2000, 0, 0, 0 });
@@ -588,13 +588,13 @@
panelDPITile.Margin = new Padding(2);
panelDPITile.Name = "panelDPITile";
panelDPITile.Padding = new Padding(0, 3, 0, 3);
panelDPITile.Size = new Size(420, 27);
panelDPITile.Size = new Size(437, 27);
panelDPITile.TabIndex = 48;
//
// pictureDPIColor
//
pictureDPIColor.Anchor = AnchorStyles.Top | AnchorStyles.Right;
pictureDPIColor.Location = new Point(395, 7);
pictureDPIColor.Location = new Point(412, 7);
pictureDPIColor.Margin = new Padding(4);
pictureDPIColor.Name = "pictureDPIColor";
pictureDPIColor.Size = new Size(10, 10);
@@ -612,7 +612,7 @@
buttonDPIColor.BorderRadius = 2;
buttonDPIColor.FlatStyle = FlatStyle.Flat;
buttonDPIColor.ForeColor = SystemColors.ControlText;
buttonDPIColor.Location = new Point(291, 1);
buttonDPIColor.Location = new Point(308, 1);
buttonDPIColor.Margin = new Padding(2, 4, 2, 4);
buttonDPIColor.Name = "buttonDPIColor";
buttonDPIColor.Secondary = false;
@@ -653,7 +653,7 @@
tableDPI.RowCount = 1;
tableDPI.RowStyles.Add(new RowStyle(SizeType.Absolute, 64F));
tableDPI.RowStyles.Add(new RowStyle(SizeType.Absolute, 64F));
tableDPI.Size = new Size(420, 64);
tableDPI.Size = new Size(437, 64);
tableDPI.TabIndex = 42;
//
// buttonDPI2
@@ -669,11 +669,11 @@
buttonDPI2.ForeColor = SystemColors.ControlText;
buttonDPI2.Image = Properties.Resources.lighting_dot_32;
buttonDPI2.ImageAlign = ContentAlignment.BottomCenter;
buttonDPI2.Location = new Point(107, 2);
buttonDPI2.Location = new Point(111, 2);
buttonDPI2.Margin = new Padding(2);
buttonDPI2.Name = "buttonDPI2";
buttonDPI2.Secondary = false;
buttonDPI2.Size = new Size(101, 60);
buttonDPI2.Size = new Size(105, 60);
buttonDPI2.TabIndex = 4;
buttonDPI2.Text = "DPI 2\r\n1000";
buttonDPI2.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -696,7 +696,7 @@
buttonDPI1.Margin = new Padding(2);
buttonDPI1.Name = "buttonDPI1";
buttonDPI1.Secondary = false;
buttonDPI1.Size = new Size(101, 60);
buttonDPI1.Size = new Size(105, 60);
buttonDPI1.TabIndex = 4;
buttonDPI1.Text = "DPI 1\r\n800";
buttonDPI1.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -715,11 +715,11 @@
buttonDPI3.ForeColor = SystemColors.ControlText;
buttonDPI3.Image = Properties.Resources.lighting_dot_32;
buttonDPI3.ImageAlign = ContentAlignment.BottomCenter;
buttonDPI3.Location = new Point(212, 2);
buttonDPI3.Location = new Point(220, 2);
buttonDPI3.Margin = new Padding(2);
buttonDPI3.Name = "buttonDPI3";
buttonDPI3.Secondary = false;
buttonDPI3.Size = new Size(101, 60);
buttonDPI3.Size = new Size(105, 60);
buttonDPI3.TabIndex = 5;
buttonDPI3.Text = "DPI 3\r\n1200";
buttonDPI3.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -738,11 +738,11 @@
buttonDPI4.ForeColor = SystemColors.ControlText;
buttonDPI4.Image = Properties.Resources.lighting_dot_32;
buttonDPI4.ImageAlign = ContentAlignment.BottomCenter;
buttonDPI4.Location = new Point(317, 2);
buttonDPI4.Location = new Point(329, 2);
buttonDPI4.Margin = new Padding(2);
buttonDPI4.Name = "buttonDPI4";
buttonDPI4.Secondary = false;
buttonDPI4.Size = new Size(101, 60);
buttonDPI4.Size = new Size(106, 60);
buttonDPI4.TabIndex = 6;
buttonDPI4.Text = "DPI 4\r\n1400";
buttonDPI4.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -757,7 +757,7 @@
panelPerformanceHeader.Location = new Point(0, 7);
panelPerformanceHeader.Margin = new Padding(2);
panelPerformanceHeader.Name = "panelPerformanceHeader";
panelPerformanceHeader.Size = new Size(420, 20);
panelPerformanceHeader.Size = new Size(437, 20);
panelPerformanceHeader.TabIndex = 41;
//
// pictureKeyboard
@@ -793,7 +793,7 @@
panelLighting.Margin = new Padding(2);
panelLighting.Name = "panelLighting";
panelLighting.Padding = new Padding(0, 0, 0, 17);
panelLighting.Size = new Size(420, 220);
panelLighting.Size = new Size(437, 220);
panelLighting.TabIndex = 42;
//
// panelLightingContent
@@ -814,7 +814,7 @@
panelLightingContent.Margin = new Padding(2);
panelLightingContent.Name = "panelLightingContent";
panelLightingContent.Padding = new Padding(0, 0, 0, 7);
panelLightingContent.Size = new Size(420, 183);
panelLightingContent.Size = new Size(437, 183);
panelLightingContent.TabIndex = 42;
//
// tableLayoutLightingZones
@@ -838,7 +838,7 @@
tableLayoutLightingZones.Name = "tableLayoutLightingZones";
tableLayoutLightingZones.RowCount = 1;
tableLayoutLightingZones.RowStyles.Add(new RowStyle(SizeType.Absolute, 40F));
tableLayoutLightingZones.Size = new Size(420, 40);
tableLayoutLightingZones.Size = new Size(437, 40);
tableLayoutLightingZones.TabIndex = 56;
//
// buttonLightingZoneScroll
@@ -855,11 +855,11 @@
buttonLightingZoneScroll.FlatStyle = FlatStyle.Flat;
buttonLightingZoneScroll.ForeColor = SystemColors.ControlText;
buttonLightingZoneScroll.ImageAlign = ContentAlignment.BottomCenter;
buttonLightingZoneScroll.Location = new Point(170, 2);
buttonLightingZoneScroll.Location = new Point(176, 2);
buttonLightingZoneScroll.Margin = new Padding(2);
buttonLightingZoneScroll.Name = "buttonLightingZoneScroll";
buttonLightingZoneScroll.Secondary = false;
buttonLightingZoneScroll.Size = new Size(80, 36);
buttonLightingZoneScroll.Size = new Size(83, 36);
buttonLightingZoneScroll.TabIndex = 7;
buttonLightingZoneScroll.Text = "Scrollwheel";
buttonLightingZoneScroll.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -879,11 +879,11 @@
buttonLightingZoneLogo.FlatStyle = FlatStyle.Flat;
buttonLightingZoneLogo.ForeColor = SystemColors.ControlText;
buttonLightingZoneLogo.ImageAlign = ContentAlignment.BottomCenter;
buttonLightingZoneLogo.Location = new Point(86, 2);
buttonLightingZoneLogo.Location = new Point(89, 2);
buttonLightingZoneLogo.Margin = new Padding(2);
buttonLightingZoneLogo.Name = "buttonLightingZoneLogo";
buttonLightingZoneLogo.Secondary = false;
buttonLightingZoneLogo.Size = new Size(80, 36);
buttonLightingZoneLogo.Size = new Size(83, 36);
buttonLightingZoneLogo.TabIndex = 4;
buttonLightingZoneLogo.Text = "Logo";
buttonLightingZoneLogo.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -907,7 +907,7 @@
buttonLightingZoneAll.Margin = new Padding(2);
buttonLightingZoneAll.Name = "buttonLightingZoneAll";
buttonLightingZoneAll.Secondary = false;
buttonLightingZoneAll.Size = new Size(80, 36);
buttonLightingZoneAll.Size = new Size(83, 36);
buttonLightingZoneAll.TabIndex = 4;
buttonLightingZoneAll.Text = "All";
buttonLightingZoneAll.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -927,11 +927,11 @@
buttonLightingZoneUnderglow.FlatStyle = FlatStyle.Flat;
buttonLightingZoneUnderglow.ForeColor = SystemColors.ControlText;
buttonLightingZoneUnderglow.ImageAlign = ContentAlignment.BottomCenter;
buttonLightingZoneUnderglow.Location = new Point(254, 2);
buttonLightingZoneUnderglow.Location = new Point(263, 2);
buttonLightingZoneUnderglow.Margin = new Padding(2);
buttonLightingZoneUnderglow.Name = "buttonLightingZoneUnderglow";
buttonLightingZoneUnderglow.Secondary = false;
buttonLightingZoneUnderglow.Size = new Size(80, 36);
buttonLightingZoneUnderglow.Size = new Size(83, 36);
buttonLightingZoneUnderglow.TabIndex = 5;
buttonLightingZoneUnderglow.Text = "Underglow";
buttonLightingZoneUnderglow.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -951,11 +951,11 @@
buttonLightingZoneDock.FlatStyle = FlatStyle.Flat;
buttonLightingZoneDock.ForeColor = SystemColors.ControlText;
buttonLightingZoneDock.ImageAlign = ContentAlignment.BottomCenter;
buttonLightingZoneDock.Location = new Point(338, 2);
buttonLightingZoneDock.Location = new Point(350, 2);
buttonLightingZoneDock.Margin = new Padding(2);
buttonLightingZoneDock.Name = "buttonLightingZoneDock";
buttonLightingZoneDock.Secondary = false;
buttonLightingZoneDock.Size = new Size(80, 36);
buttonLightingZoneDock.Size = new Size(85, 36);
buttonLightingZoneDock.TabIndex = 6;
buttonLightingZoneDock.Text = "Dock";
buttonLightingZoneDock.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -968,10 +968,10 @@
comboBoxAnimationDirection.DropDownStyle = ComboBoxStyle.DropDownList;
comboBoxAnimationDirection.FlatStyle = FlatStyle.Flat;
comboBoxAnimationDirection.FormattingEnabled = true;
comboBoxAnimationDirection.Location = new Point(244, 153);
comboBoxAnimationDirection.Location = new Point(245, 153);
comboBoxAnimationDirection.Margin = new Padding(11, 0, 11, 0);
comboBoxAnimationDirection.Name = "comboBoxAnimationDirection";
comboBoxAnimationDirection.Size = new Size(191, 23);
comboBoxAnimationDirection.Size = new Size(190, 23);
comboBoxAnimationDirection.TabIndex = 54;
//
// labelAnimationDirection
@@ -1000,10 +1000,10 @@
comboBoxAnimationSpeed.DropDownStyle = ComboBoxStyle.DropDownList;
comboBoxAnimationSpeed.FlatStyle = FlatStyle.Flat;
comboBoxAnimationSpeed.FormattingEnabled = true;
comboBoxAnimationSpeed.Location = new Point(244, 125);
comboBoxAnimationSpeed.Location = new Point(245, 125);
comboBoxAnimationSpeed.Margin = new Padding(11, 0, 11, 0);
comboBoxAnimationSpeed.Name = "comboBoxAnimationSpeed";
comboBoxAnimationSpeed.Size = new Size(191, 23);
comboBoxAnimationSpeed.Size = new Size(190, 23);
comboBoxAnimationSpeed.TabIndex = 51;
//
// labelAnimationSpeed
@@ -1018,7 +1018,7 @@
// pictureBoxLightingColor
//
pictureBoxLightingColor.Anchor = AnchorStyles.Top | AnchorStyles.Right;
pictureBoxLightingColor.Location = new Point(304, 80);
pictureBoxLightingColor.Location = new Point(321, 80);
pictureBoxLightingColor.Margin = new Padding(4);
pictureBoxLightingColor.Name = "pictureBoxLightingColor";
pictureBoxLightingColor.Size = new Size(13, 13);
@@ -1035,11 +1035,11 @@
buttonLightingColor.BorderRadius = 2;
buttonLightingColor.FlatStyle = FlatStyle.Flat;
buttonLightingColor.ForeColor = SystemColors.ControlText;
buttonLightingColor.Location = new Point(233, 74);
buttonLightingColor.Location = new Point(252, 74);
buttonLightingColor.Margin = new Padding(2, 4, 2, 4);
buttonLightingColor.Name = "buttonLightingColor";
buttonLightingColor.Secondary = false;
buttonLightingColor.Size = new Size(94, 25);
buttonLightingColor.Size = new Size(90, 25);
buttonLightingColor.TabIndex = 49;
buttonLightingColor.Text = Properties.Strings.Color;
buttonLightingColor.TextAlign = ContentAlignment.MiddleLeft;
@@ -1077,13 +1077,13 @@
panelLightingHeader.Location = new Point(0, 0);
panelLightingHeader.Margin = new Padding(2);
panelLightingHeader.Name = "panelLightingHeader";
panelLightingHeader.Size = new Size(420, 20);
panelLightingHeader.Size = new Size(437, 20);
panelLightingHeader.TabIndex = 41;
//
// sliderBrightness
//
sliderBrightness.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right;
sliderBrightness.Location = new Point(229, 1);
sliderBrightness.Location = new Point(246, 1);
sliderBrightness.Margin = new Padding(1);
sliderBrightness.Max = 100;
sliderBrightness.Min = 0;
@@ -1131,7 +1131,7 @@
panelEnergy.Margin = new Padding(2);
panelEnergy.Name = "panelEnergy";
panelEnergy.Padding = new Padding(0, 0, 0, 17);
panelEnergy.Size = new Size(420, 96);
panelEnergy.Size = new Size(437, 96);
panelEnergy.TabIndex = 43;
//
// labelLowBatteryWarningValue
@@ -1199,7 +1199,7 @@
panelEnergyHeader.Location = new Point(0, 0);
panelEnergyHeader.Margin = new Padding(2);
panelEnergyHeader.Name = "panelEnergyHeader";
panelEnergyHeader.Size = new Size(420, 20);
panelEnergyHeader.Size = new Size(437, 20);
panelEnergyHeader.TabIndex = 41;
//
// pictureBoxEnergy
@@ -1240,7 +1240,7 @@
tableLayoutProfiles.RowCount = 1;
tableLayoutProfiles.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
tableLayoutProfiles.RowStyles.Add(new RowStyle(SizeType.Percent, 50F));
tableLayoutProfiles.Size = new Size(420, 38);
tableLayoutProfiles.Size = new Size(437, 38);
tableLayoutProfiles.TabIndex = 44;
//
// panelBatteryState
@@ -1302,11 +1302,11 @@
buttonSync.BorderRadius = 2;
buttonSync.FlatStyle = FlatStyle.Flat;
buttonSync.ForeColor = SystemColors.ControlText;
buttonSync.Location = new Point(223, 5);
buttonSync.Location = new Point(5, 37);
buttonSync.Margin = new Padding(2, 4, 2, 4);
buttonSync.Name = "buttonSync";
buttonSync.Secondary = false;
buttonSync.Size = new Size(195, 25);
buttonSync.Size = new Size(431, 25);
buttonSync.TabIndex = 46;
buttonSync.Text = "Synchronize with Mouse";
buttonSync.UseVisualStyleBackColor = false;
@@ -1322,7 +1322,7 @@
panelBottomButtons.Location = new Point(7, 731);
panelBottomButtons.Margin = new Padding(2);
panelBottomButtons.Name = "panelBottomButtons";
panelBottomButtons.Size = new Size(420, 45);
panelBottomButtons.Size = new Size(437, 66);
panelBottomButtons.TabIndex = 47;
//
// buttonImport
@@ -1335,11 +1335,11 @@
buttonImport.BorderRadius = 2;
buttonImport.FlatStyle = FlatStyle.Flat;
buttonImport.ForeColor = SystemColors.ControlText;
buttonImport.Location = new Point(106, 6);
buttonImport.Location = new Point(222, 6);
buttonImport.Margin = new Padding(2, 4, 2, 4);
buttonImport.Name = "buttonImport";
buttonImport.Secondary = false;
buttonImport.Size = new Size(102, 25);
buttonImport.Size = new Size(214, 25);
buttonImport.TabIndex = 48;
buttonImport.Text = "Import Profile";
buttonImport.UseVisualStyleBackColor = false;
@@ -1355,11 +1355,11 @@
buttonExport.BorderRadius = 2;
buttonExport.FlatStyle = FlatStyle.Flat;
buttonExport.ForeColor = SystemColors.ControlText;
buttonExport.Location = new Point(2, 6);
buttonExport.Location = new Point(5, 6);
buttonExport.Margin = new Padding(2, 4, 2, 4);
buttonExport.Name = "buttonExport";
buttonExport.Secondary = false;
buttonExport.Size = new Size(103, 25);
buttonExport.Size = new Size(197, 25);
buttonExport.TabIndex = 47;
buttonExport.Text = "Export Profile";
buttonExport.UseVisualStyleBackColor = false;
@@ -1433,7 +1433,7 @@
AutoScroll = true;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(451, 699);
ClientSize = new Size(451, 803);
Controls.Add(panelBottomButtons);
Controls.Add(panelEnergy);
Controls.Add(panelLighting);

View File

@@ -1,15 +1,174 @@
using System.Runtime.InteropServices;
using GHelper.Helpers;
using GHelper.Mode;
using GHelper.USB;
using System.Management;
namespace GHelper.Display
{
public class ScreenControl
public enum SplendidGamut : int
{
Native = 50,
sRGB = 51,
DCIP3 = 53,
DisplayP3 = 54
}
public enum SplendidCommand: int
{
Init = 10,
DimmingAsus = 9,
DimmingVisual = 19,
GamutMode = 200,
Default = 11,
Racing = 21,
Scenery = 22,
RTS = 23,
FPS = 24,
Cinema = 25,
Vivid = 13,
Eyecare = 17,
}
public static class ScreenControl
{
public const int MAX_REFRESH = 1000;
public static DisplayGammaRamp? gammaRamp;
public void AutoScreen(bool force = false)
private static int _brightness = 100;
private static bool _init = true;
private static string? _splendidPath = null;
private static System.Timers.Timer brightnessTimer = new System.Timers.Timer(100);
static ScreenControl () {
brightnessTimer.Elapsed += BrightnessTimerTimer_Elapsed;
}
public static Dictionary<SplendidGamut, string> GetGamutModes ()
{
Dictionary<SplendidGamut, string> _modes = new Dictionary<SplendidGamut, string>();
DirectoryInfo d = new DirectoryInfo("C:\\ProgramData\\ASUS\\GameVisual");
FileInfo[] icms = d.GetFiles("*.icm");
if (icms.Length == 0) return _modes;
_modes.Add(SplendidGamut.Native, "Gamut - Native");
foreach (FileInfo icm in icms)
{
if (icm.Name.Contains("sRGB")) _modes.Add(SplendidGamut.sRGB, "Gamut - sRGB");
if (icm.Name.Contains("DCIP3")) _modes.Add(SplendidGamut.DCIP3, "Gamut - DCIP3");
if (icm.Name.Contains("DisplayP3")) _modes.Add(SplendidGamut.DisplayP3, "Gamut - DisplayP3");
}
return _modes;
}
public static Dictionary<SplendidCommand, string> GetVisualModes()
{
return new Dictionary<SplendidCommand, string>
{
{ SplendidCommand.Default, "Default"},
{ SplendidCommand.Racing, "Racing"},
{ SplendidCommand.Scenery, "Scenery"},
{ SplendidCommand.RTS, "RTS/RPG"},
{ SplendidCommand.FPS, "FPS"},
{ SplendidCommand.Cinema, "Cinema"},
{ SplendidCommand.Vivid, "Vivid" },
{ SplendidCommand.Eyecare, "Eyecare"}
};
}
public static void SetGamut(int mode = 50)
{
if (RunSplendid(SplendidCommand.GamutMode, 0, mode)) return;
if (_init)
{
_init = false;
RunSplendid(SplendidCommand.Init);
RunSplendid(SplendidCommand.GamutMode, 0, mode);
}
}
public static void SetVisual(SplendidCommand mode = SplendidCommand.Default, int whiteBalance = 50)
{
int balance = mode == SplendidCommand.Eyecare ? 2 : whiteBalance;
RunSplendid(mode, 0, balance);
if (_init)
{
_init = false;
RunSplendid(SplendidCommand.Init);
RunSplendid(mode, 0, balance);
}
}
private static string GetSplendidPath()
{
if (_splendidPath == null)
{
try
{
using (var searcher = new ManagementObjectSearcher(@"Select * from Win32_SystemDriver WHERE Name='ATKWMIACPIIO'"))
{
foreach (var driver in searcher.Get())
{
string path = driver["PathName"].ToString();
_splendidPath = Path.GetDirectoryName(path) + "\\AsusSplendid.exe";
break;
}
}
}
catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
}
return _splendidPath;
}
private static bool RunSplendid(SplendidCommand command, int? param1 = null, int? param2 = null)
{
var splendid = GetSplendidPath();
bool isGameVisual = Directory.Exists("C:\\ProgramData\\ASUS\\GameVisual");
bool isSplenddid = File.Exists(splendid);
if (isSplenddid)
{
if (command == SplendidCommand.DimmingVisual && !isGameVisual) command = SplendidCommand.DimmingAsus;
var result = ProcessHelper.RunCMD(splendid, (int)command + " " + param1 + " " + param2);
if (result.Contains("file not exist") || (result.Length == 0 && isGameVisual)) return false;
}
return true;
}
private static void BrightnessTimerTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
brightnessTimer.Stop();
if (RunSplendid(SplendidCommand.DimmingVisual, 0, (int)(40 + _brightness * 0.6))) return;
if (_init)
{
_init = false;
RunSplendid(SplendidCommand.Init);
RunSplendid(SplendidCommand.Init, 4);
if (RunSplendid(SplendidCommand.DimmingVisual, 0, (int)(40 + _brightness * 0.6))) return;
}
// GammaRamp Fallback
SetGamma(_brightness);
}
public static void AutoScreen(bool force = false)
{
if (force || AppConfig.Is("screen_auto"))
{
@@ -24,30 +183,25 @@ namespace GHelper.Display
}
}
public void SaveGamma()
public static int SetBrightness(int brightness = -1, int delta = 0)
{
var screenName = ScreenNative.FindLaptopScreen();
if (screenName is null) return;
if (!AppConfig.IsOLED()) return -1;
try
{
var handle = ScreenNative.CreateDC(screenName, screenName, null, IntPtr.Zero);
var gammaRamp = new GammaRamp();
if (ScreenNative.GetDeviceGammaRamp(handle, ref gammaRamp))
{
var gamma = new DisplayGammaRamp(gammaRamp);
Logger.WriteLine("Gamma R: " + string.Join("-", gamma.Red));
Logger.WriteLine("Gamma G: " + string.Join("-", gamma.Green));
Logger.WriteLine("Gamma B: " + string.Join("-", gamma.Blue));
}
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
if (brightness < 0) brightness = AppConfig.Get("brightness", 100);
_brightness = Math.Max(0, Math.Min(100, brightness + delta));
AppConfig.Set("brightness", _brightness);
brightnessTimer.Start();
Program.settingsForm.VisualiseBrightness();
return _brightness;
}
public void SetGamma(int brightness = 100)
public static void SetGamma(int brightness = 100)
{
var bright = Math.Round((float)brightness / 200 + 0.5, 2);
@@ -63,24 +217,25 @@ namespace GHelper.Display
if (ScreenNative.GetDeviceGammaRamp(handle, ref gammaDump))
{
gammaRamp = new DisplayGammaRamp(gammaDump);
Logger.WriteLine("Gamma R: " + string.Join("-", gammaRamp.Red));
Logger.WriteLine("Gamma G: " + string.Join("-", gammaRamp.Green));
Logger.WriteLine("Gamma B: " + string.Join("-", gammaRamp.Blue));
//Logger.WriteLine("Gamma R: " + string.Join("-", gammaRamp.Red));
//Logger.WriteLine("Gamma G: " + string.Join("-", gammaRamp.Green));
//Logger.WriteLine("Gamma B: " + string.Join("-", gammaRamp.Blue));
}
}
if (gammaRamp is null || !gammaRamp.IsOriginal())
{
Logger.WriteLine("Default Gamma");
Logger.WriteLine("Not default Gamma");
gammaRamp = new DisplayGammaRamp();
}
var ramp = gammaRamp.AsBrightnessRamp(bright);
bool result = ScreenNative.SetDeviceGammaRamp(handle, ref ramp);
Logger.WriteLine("Brightness " + bright.ToString() + ": " + result);
Logger.WriteLine("Gamma " + bright.ToString() + ": " + result);
} catch (Exception ex)
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
@@ -88,7 +243,7 @@ namespace GHelper.Display
//ScreenBrightness.Set(60 + (int)(40 * bright));
}
public void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1)
public static void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1)
{
var laptopScreen = ScreenNative.FindLaptopScreen(true);
@@ -108,8 +263,8 @@ namespace GHelper.Display
if (overdrive >= 0)
{
if (AppConfig.Get("no_overdrive") == 1) overdrive = 0;
Program.acpi.DeviceSet(AsusACPI.ScreenOverdrive, overdrive, "ScreenOverdrive");
if (AppConfig.IsNoOverdrive()) overdrive = 0;
if (!AppConfig.IsOLED()) Program.acpi.DeviceSet(AsusACPI.ScreenOverdrive, overdrive, "ScreenOverdrive");
}
@@ -125,7 +280,7 @@ namespace GHelper.Display
}
public int ToogleMiniled()
public static int ToogleMiniled()
{
int miniled1 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1);
int miniled2 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled2);
@@ -153,7 +308,7 @@ namespace GHelper.Display
return miniled;
}
public void InitScreen()
public static void InitScreen()
{
var laptopScreen = ScreenNative.FindLaptopScreen();
@@ -161,9 +316,9 @@ namespace GHelper.Display
int maxFrequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
bool screenAuto = AppConfig.Is("screen_auto");
bool overdriveSetting = !AppConfig.Is("no_overdrive");
bool overdriveSetting = !AppConfig.IsNoOverdrive();
int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
int overdrive = AppConfig.IsNoOverdrive() ? 0 : Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
int miniled1 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled1);
int miniled2 = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled2);

View File

@@ -42,6 +42,12 @@ namespace GHelper.Display
[DllImport("gdi32")]
internal static extern bool GetDeviceGammaRamp(IntPtr dcHandle, ref GammaRamp ramp);
[DllImport("gdi32", CharSet = CharSet.Unicode)]
internal static extern bool SetICMProfileW(IntPtr dcHandle, string lpFileName);
[DllImport("gdi32", CharSet = CharSet.Unicode)]
internal static extern bool SetICMMode(IntPtr dcHandle, int mode);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DEVMODE
{

View File

@@ -12,7 +12,6 @@ namespace GHelper
public partial class Extra : RForm
{
ScreenControl screenControl = new ScreenControl();
ClamshellModeControl clamshellControl = new ClamshellModeControl();
const string EMPTY = "--------------";
@@ -210,6 +209,11 @@ namespace GHelper
checkUSBC.Visible = false;
}
if (AppConfig.IsOLED())
{
checkNoOverdrive.Visible = false;
}
// Change text and hide irrelevant options on the ROG Ally,
// which is a bit of a special case piece of hardware.
if (AppConfig.IsAlly())
@@ -357,7 +361,7 @@ namespace GHelper
checkTopmost.Checked = AppConfig.Is("topmost");
checkTopmost.CheckedChanged += CheckTopmost_CheckedChanged; ;
checkNoOverdrive.Checked = AppConfig.Is("no_overdrive");
checkNoOverdrive.Checked = AppConfig.IsNoOverdrive();
checkNoOverdrive.CheckedChanged += CheckNoOverdrive_CheckedChanged;
checkUSBC.Checked = AppConfig.Is("optimized_usbc");
@@ -398,17 +402,19 @@ namespace GHelper
InitServices();
InitHibernate();
//InitACPITesting();
InitACPITesting();
}
private void InitACPITesting()
{
if (!AppConfig.Is("debug")) return;
pictureScan.Visible = true;
panelACPI.Visible = true;
textACPICommand.Text = "120075";
textACPIParam.Text = "1";
textACPICommand.Text = "120098";
textACPIParam.Text = "25";
buttonACPISend.Click += ButtonACPISend_Click;
pictureScan.Click += PictureScan_Click;
@@ -677,7 +683,7 @@ namespace GHelper
private void CheckNoOverdrive_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("no_overdrive", (checkNoOverdrive.Checked ? 1 : 0));
screenControl.AutoScreen(true);
ScreenControl.AutoScreen(true);
}

View File

@@ -9,7 +9,7 @@ namespace GHelper.Fan
public const int XGM_FAN_MAX = 72;
public const int INADEQUATE_MAX = 92;
public const int INADEQUATE_MAX = 104;
const int FAN_COUNT = 3;

73
app/Fans.Designer.cs generated
View File

@@ -119,6 +119,10 @@ namespace GHelper
picturePowerMode = new PictureBox();
labelPowerModeTitle = new Label();
panelGPU = new Panel();
panelGPUPower = new Panel();
labelGPUPower = new Label();
labelGPUPowerTitle = new Label();
trackGPUPower = new TrackBar();
panelGPUTemp = new Panel();
labelGPUTemp = new Label();
labelGPUTempTitle = new Label();
@@ -190,6 +194,8 @@ namespace GHelper
panelPowerModeTItle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)picturePowerMode).BeginInit();
panelGPU.SuspendLayout();
panelGPUPower.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).BeginInit();
panelGPUTemp.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackGPUTemp).BeginInit();
panelGPUBoost.SuspendLayout();
@@ -533,7 +539,7 @@ namespace GHelper
panelAdvanced.Controls.Add(panelTitleTemp);
panelAdvanced.Controls.Add(panelDownload);
panelAdvanced.Dock = DockStyle.Top;
panelAdvanced.Location = new Point(10, 1644);
panelAdvanced.Location = new Point(10, 1768);
panelAdvanced.Name = "panelAdvanced";
panelAdvanced.Size = new Size(520, 992);
panelAdvanced.TabIndex = 14;
@@ -864,7 +870,7 @@ namespace GHelper
panelPower.Controls.Add(panelPowerMode);
panelPower.Controls.Add(panelPowerModeTItle);
panelPower.Dock = DockStyle.Top;
panelPower.Location = new Point(10, 764);
panelPower.Location = new Point(10, 888);
panelPower.Margin = new Padding(4);
panelPower.Name = "panelPower";
panelPower.Size = new Size(520, 880);
@@ -1237,6 +1243,7 @@ namespace GHelper
panelGPU.AutoSize = true;
panelGPU.Controls.Add(panelGPUTemp);
panelGPU.Controls.Add(panelGPUBoost);
panelGPU.Controls.Add(panelGPUPower);
panelGPU.Controls.Add(panelGPUMemory);
panelGPU.Controls.Add(panelGPUCore);
panelGPU.Controls.Add(panelGPUClockLimit);
@@ -1246,10 +1253,59 @@ namespace GHelper
panelGPU.Margin = new Padding(4);
panelGPU.Name = "panelGPU";
panelGPU.Padding = new Padding(0, 0, 0, 18);
panelGPU.Size = new Size(520, 698);
panelGPU.Size = new Size(520, 822);
panelGPU.TabIndex = 44;
panelGPU.Visible = false;
//
// panelGPUPower
//
panelGPUPower.AutoSize = true;
panelGPUPower.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGPUPower.Controls.Add(labelGPUPower);
panelGPUPower.Controls.Add(labelGPUPowerTitle);
panelGPUPower.Controls.Add(trackGPUPower);
panelGPUPower.Dock = DockStyle.Top;
panelGPUPower.Location = new Point(0, 432);
panelGPUPower.Margin = new Padding(4);
panelGPUPower.MaximumSize = new Size(0, 124);
panelGPUPower.Name = "panelGPUPower";
panelGPUPower.Size = new Size(520, 124);
panelGPUPower.TabIndex = 49;
//
// labelGPUPower
//
labelGPUPower.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUPower.Location = new Point(374, 14);
labelGPUPower.Margin = new Padding(4, 0, 4, 0);
labelGPUPower.Name = "labelGPUPower";
labelGPUPower.Size = new Size(124, 32);
labelGPUPower.TabIndex = 44;
labelGPUPower.Text = "105W";
labelGPUPower.TextAlign = ContentAlignment.TopRight;
//
// labelGPUPowerTitle
//
labelGPUPowerTitle.AutoSize = true;
labelGPUPowerTitle.Location = new Point(10, 14);
labelGPUPowerTitle.Margin = new Padding(4, 0, 4, 0);
labelGPUPowerTitle.Name = "labelGPUPowerTitle";
labelGPUPowerTitle.Size = new Size(130, 32);
labelGPUPowerTitle.TabIndex = 43;
labelGPUPowerTitle.Text = "GPU Power";
//
// trackGPUPower
//
trackGPUPower.Location = new Point(6, 48);
trackGPUPower.Margin = new Padding(4, 2, 4, 2);
trackGPUPower.Maximum = 25;
trackGPUPower.Minimum = 5;
trackGPUPower.Name = "trackGPUPower";
trackGPUPower.Size = new Size(496, 90);
trackGPUPower.TabIndex = 42;
trackGPUPower.TickFrequency = 5;
trackGPUPower.TickStyle = TickStyle.TopLeft;
trackGPUPower.Value = 25;
//
// panelGPUTemp
//
panelGPUTemp.AutoSize = true;
@@ -1258,7 +1314,7 @@ namespace GHelper
panelGPUTemp.Controls.Add(labelGPUTempTitle);
panelGPUTemp.Controls.Add(trackGPUTemp);
panelGPUTemp.Dock = DockStyle.Top;
panelGPUTemp.Location = new Point(0, 556);
panelGPUTemp.Location = new Point(0, 680);
panelGPUTemp.Margin = new Padding(4);
panelGPUTemp.MaximumSize = new Size(0, 124);
panelGPUTemp.Name = "panelGPUTemp";
@@ -1307,7 +1363,7 @@ namespace GHelper
panelGPUBoost.Controls.Add(labelGPUBoostTitle);
panelGPUBoost.Controls.Add(trackGPUBoost);
panelGPUBoost.Dock = DockStyle.Top;
panelGPUBoost.Location = new Point(0, 432);
panelGPUBoost.Location = new Point(0, 556);
panelGPUBoost.Margin = new Padding(4);
panelGPUBoost.MaximumSize = new Size(0, 124);
panelGPUBoost.Name = "panelGPUBoost";
@@ -1700,6 +1756,9 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)picturePowerMode).EndInit();
panelGPU.ResumeLayout(false);
panelGPU.PerformLayout();
panelGPUPower.ResumeLayout(false);
panelGPUPower.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUPower).EndInit();
panelGPUTemp.ResumeLayout(false);
panelGPUTemp.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackGPUTemp).EndInit();
@@ -1833,5 +1892,9 @@ namespace GHelper
private TrackBar trackSlow;
private Panel panelDownload;
private RButton buttonDownload;
private Panel panelGPUPower;
private Label labelGPUPower;
private Label labelGPUPowerTitle;
private TrackBar trackGPUPower;
}
}

View File

@@ -31,6 +31,8 @@ namespace GHelper
FanSensorControl fanSensorControl;
static int gpuPowerBase = 0;
public Fans()
{
@@ -46,7 +48,7 @@ namespace GHelper
labelPowerLimits.Text = Properties.Strings.PowerLimits;
checkApplyPower.Text = Properties.Strings.ApplyPowerLimits;
labelFans.Text = Properties.Strings.FanCurves;
labelFans.Text = "BIOS " + Properties.Strings.FanCurves;
labelBoost.Text = Properties.Strings.CPUBoost;
buttonReset.Text = Properties.Strings.FactoryDefaults;
checkApplyFans.Text = Properties.Strings.ApplyFanCurve;
@@ -144,17 +146,22 @@ namespace GHelper
trackGPUTemp.Minimum = AsusACPI.MinGPUTemp;
trackGPUTemp.Maximum = AsusACPI.MaxGPUTemp;
trackGPUPower.Minimum = AsusACPI.MinGPUPower;
trackGPUPower.Maximum = AsusACPI.MaxGPUPower;
trackGPUClockLimit.Scroll += trackGPUClockLimit_Scroll;
trackGPUCore.Scroll += trackGPU_Scroll;
trackGPUMemory.Scroll += trackGPU_Scroll;
trackGPUBoost.Scroll += trackGPUPower_Scroll;
trackGPUTemp.Scroll += trackGPUPower_Scroll;
trackGPUPower.Scroll += trackGPUPower_Scroll;
trackGPUCore.MouseUp += TrackGPU_MouseUp;
trackGPUMemory.MouseUp += TrackGPU_MouseUp;
trackGPUBoost.MouseUp += TrackGPU_MouseUp;
trackGPUTemp.MouseUp += TrackGPU_MouseUp;
trackGPUPower.MouseUp += TrackGPU_MouseUp;
trackGPUClockLimit.MouseUp += TrackGPU_MouseUp;
@@ -541,8 +548,12 @@ namespace GHelper
{
gpuVisible = buttonGPU.Visible = true;
gpuPowerBase = Program.acpi.DeviceGet(AsusACPI.GPU_BASE);
int gpuPowerVar = Program.acpi.DeviceGet(AsusACPI.GPU_POWER);
int gpu_boost = AppConfig.GetMode("gpu_boost");
int gpu_temp = AppConfig.GetMode("gpu_temp");
int gpu_power = AppConfig.GetMode("gpu_power");
int core = AppConfig.GetMode("gpu_core");
int memory = AppConfig.GetMode("gpu_memory");
@@ -550,32 +561,35 @@ namespace GHelper
if (gpu_boost < 0) gpu_boost = AsusACPI.MaxGPUBoost;
if (gpu_temp < 0) gpu_temp = AsusACPI.MaxGPUTemp;
if (gpu_power < 0) gpu_power = (gpuPowerVar >= 0) ? gpuPowerVar : AsusACPI.MaxGPUPower;
if (core == -1) core = 0;
if (memory == -1) memory = 0;
if (clock_limit == -1) clock_limit = NvidiaGpuControl.MaxClockLimit;
if (nvControl.GetClocks(out int current_core, out int current_memory))
if (nvControl is not null)
{
core = current_core;
memory = current_memory;
if (nvControl.GetClocks(out int current_core, out int current_memory))
{
core = current_core;
memory = current_memory;
}
int _clockLimit = nvControl.GetMaxGPUCLock();
if (_clockLimit == 0) clock_limit = NvidiaGpuControl.MaxClockLimit;
else if (_clockLimit > 0) clock_limit = _clockLimit;
try
{
labelGPU.Text = nvControl.FullName;
}
catch
{
}
}
int _clockLimit = nvControl.GetMaxGPUCLock();
if (_clockLimit == 0) clock_limit = NvidiaGpuControl.MaxClockLimit;
else if (_clockLimit > 0) clock_limit = _clockLimit;
try
{
labelGPU.Text = nvControl.FullName;
}
catch
{
}
//}
trackGPUClockLimit.Value = Math.Max(Math.Min(clock_limit, NvidiaGpuControl.MaxClockLimit), NvidiaGpuControl.MinClockLimit);
trackGPUCore.Value = Math.Max(Math.Min(core, NvidiaGpuControl.MaxCoreOffset), NvidiaGpuControl.MinCoreOffset);
@@ -584,9 +598,13 @@ namespace GHelper
trackGPUBoost.Value = Math.Max(Math.Min(gpu_boost, AsusACPI.MaxGPUBoost), AsusACPI.MinGPUBoost);
trackGPUTemp.Value = Math.Max(Math.Min(gpu_temp, AsusACPI.MaxGPUTemp), AsusACPI.MinGPUTemp);
trackGPUPower.Value = Math.Max(Math.Min(gpu_power, AsusACPI.MaxGPUPower), AsusACPI.MinGPUPower);
panelGPUBoost.Visible = (Program.acpi.DeviceGet(AsusACPI.PPT_GPUC0) >= 0);
panelGPUTemp.Visible = (Program.acpi.DeviceGet(AsusACPI.PPT_GPUC2) >= 0);
panelGPUPower.Visible = gpuPowerBase > 0 && gpuPowerVar >= 0;
VisualiseGPUSettings();
}
@@ -610,6 +628,9 @@ namespace GHelper
labelGPUClockLimit.Text = "Default";
else
labelGPUClockLimit.Text = $"{trackGPUClockLimit.Value} MHz";
labelGPUPower.Text = (gpuPowerBase + trackGPUPower.Value) + "W";
}
private void trackGPUClockLimit_Scroll(object? sender, EventArgs e)
@@ -640,6 +661,7 @@ namespace GHelper
{
AppConfig.SetMode("gpu_boost", trackGPUBoost.Value);
AppConfig.SetMode("gpu_temp", trackGPUTemp.Value);
AppConfig.SetMode("gpu_power", trackGPUPower.Value);
VisualiseGPUSettings();
}
@@ -740,7 +762,10 @@ namespace GHelper
private void TrackPower_MouseUp(object? sender, MouseEventArgs e)
{
modeControl.AutoPower();
Task.Run(() =>
{
modeControl.AutoPower(true);
});
}
@@ -983,7 +1008,7 @@ namespace GHelper
try
{
if (chartCount > 2)
Size = MinimumSize = new Size(Size.Width, (int)(ControlHelper.GetDpiScale(this).Value * (chartCount * 200 + 100)));
Size = MinimumSize = new Size(Size.Width, Math.Max(MinimumSize.Height, (int)(ControlHelper.GetDpiScale(this).Value * (chartCount * 200 + 100))));
}
catch (Exception ex)
{
@@ -1089,19 +1114,25 @@ namespace GHelper
if (gpuVisible)
{
int gpuPowerVar = Program.acpi.DeviceGet(AsusACPI.GPU_POWER);
Logger.WriteLine("Default GPU Power: " + gpuPowerVar);
trackGPUClockLimit.Value = NvidiaGpuControl.MaxClockLimit;
trackGPUCore.Value = 0;
trackGPUMemory.Value = 0;
trackGPUBoost.Value = AsusACPI.MaxGPUBoost;
trackGPUTemp.Value = AsusACPI.MaxGPUTemp;
AppConfig.SetMode("gpu_clock_limit", trackGPUClockLimit.Value);
trackGPUPower.Value = Math.Max(Math.Min((gpuPowerVar >= 0) ? gpuPowerVar : AsusACPI.MaxGPUPower, AsusACPI.MaxGPUPower), AsusACPI.MinGPUPower);
AppConfig.SetMode("gpu_boost", trackGPUBoost.Value);
AppConfig.SetMode("gpu_temp", trackGPUTemp.Value);
AppConfig.SetMode("gpu_core", trackGPUCore.Value);
AppConfig.SetMode("gpu_memory", trackGPUMemory.Value);
AppConfig.RemoveMode("gpu_power");
AppConfig.RemoveMode("gpu_clock_limit");
AppConfig.RemoveMode("gpu_core");
AppConfig.RemoveMode("gpu_memory");
VisualiseGPUSettings();
modeControl.SetGPUClocks(true);

View File

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

View File

@@ -9,7 +9,6 @@ namespace GHelper.Gpu
public class GPUModeControl
{
SettingsForm settings;
ScreenControl screenControl = new ScreenControl();
public static int gpuMode;
public static bool? gpuExists = null;
@@ -159,7 +158,7 @@ namespace GHelper.Gpu
settings.Invoke(delegate
{
InitGPUMode();
screenControl.AutoScreen();
ScreenControl.AutoScreen();
});
if (eco == 0)

View File

@@ -99,7 +99,7 @@ namespace GHelper.Helpers
ToggleLidAction();
if (Program.settingsForm.Visible)
Program.screenControl.InitScreen();
ScreenControl.InitScreen();
}

View File

@@ -122,7 +122,7 @@ namespace GHelper.Helpers
}
}
public static void RunCMD(string name, string args)
public static string RunCMD(string name, string args)
{
var cmd = new Process();
cmd.StartInfo.UseShellExecute = false;
@@ -133,13 +133,13 @@ namespace GHelper.Helpers
cmd.StartInfo.Arguments = args;
cmd.Start();
Logger.WriteLine(args);
Logger.WriteLine(name + " " + args);
string result = cmd.StandardOutput.ReadToEnd().Replace(Environment.NewLine, " ").Trim(' ');
Logger.WriteLine(result);
cmd.WaitForExit();
return result;
}

View File

@@ -19,8 +19,7 @@ namespace GHelper.Input
public static Keys keyApp = Keys.F12;
static ModeControl modeControl = Program.modeControl;
static ScreenControl screenControl = new ScreenControl();
static bool isTUF = AppConfig.IsTUF();
KeyboardListener listener;
@@ -85,7 +84,7 @@ namespace GHelper.Input
InitBacklightTimer();
if (AppConfig.ContainsModel("VivoBook")) Program.acpi.DeviceSet(AsusACPI.FnLock, AppConfig.Is("fn_lock") ? 1 : 0, "FnLock");
if (AppConfig.IsVivoZenbook()) Program.acpi.DeviceSet(AsusACPI.FnLock, AppConfig.Is("fn_lock") ? 1 : 0, "FnLock");
}
@@ -151,7 +150,7 @@ namespace GHelper.Input
// FN-Lock group
if (AppConfig.Is("fn_lock") && !AppConfig.ContainsModel("VivoBook"))
if (AppConfig.Is("fn_lock") && !AppConfig.IsVivoZenbook())
for (Keys i = Keys.F1; i <= Keys.F11; i++) hook.RegisterHotKey(ModifierKeys.None, i);
// Arrow-lock group
@@ -244,6 +243,13 @@ namespace GHelper.Input
}
static void SetBrightnessDimming(int delta)
{
int brightness = ScreenControl.SetBrightness(delta: delta);
if (brightness >= 0)
Program.toast.RunToast(brightness + "%", (delta < 0) ? ToastIcon.BrightnessDown : ToastIcon.BrightnessUp);
}
public void KeyPressed(object sender, KeyPressedEventArgs e)
{
@@ -472,7 +478,7 @@ namespace GHelper.Input
break;
case "miniled":
if (ScreenCCD.GetHDRStatus()) return;
int miniled = screenControl.ToogleMiniled();
int miniled = ScreenControl.ToogleMiniled();
Program.toast.RunToast(miniled == 1 ? "Multi-Zone" : "Single-Zone", miniled == 1 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
break;
case "aura":
@@ -500,7 +506,7 @@ namespace GHelper.Input
case "micmute":
bool muteStatus = Audio.ToggleMute();
Program.toast.RunToast(muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
if (AppConfig.IsVivobook()) Program.acpi.DeviceSet(AsusACPI.MicMuteLed, muteStatus ? 1 : 0, "MicmuteLed");
if (AppConfig.IsVivoZenbook()) Program.acpi.DeviceSet(AsusACPI.MicMuteLed, muteStatus ? 1 : 0, "MicmuteLed");
break;
case "brightness_up":
SetBrightness(+10);
@@ -568,7 +574,7 @@ namespace GHelper.Input
int fnLock = AppConfig.Is("fn_lock") ? 0 : 1;
AppConfig.Set("fn_lock", fnLock);
if (AppConfig.ContainsModel("VivoBook"))
if (AppConfig.IsVivoZenbook())
Program.acpi.DeviceSet(AsusACPI.FnLock, fnLock == 1 ? 1 : 0, "FnLock");
else
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
@@ -676,7 +682,8 @@ namespace GHelper.Input
return;
case 51: // Fn+F6 on old TUFs
case 53: // Fn+F6 on GA-502DU model
NativeMethods.TurnOffScreen();
SleepEvent();
//NativeMethods.TurnOffScreen();
return;
}
}
@@ -697,8 +704,14 @@ namespace GHelper.Input
if (AppConfig.IsDUO()) SetScreenpad(-10);
else Program.settingsForm.BeginInvoke(Program.settingsForm.CycleMatrix, -1);
}
else if (Control.ModifierKeys == Keys.Control && AppConfig.IsOLED())
{
SetBrightnessDimming(-10);
}
else
{
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Down, "Brightness");
}
break;
case 32: // FN+F8
if (Control.ModifierKeys == Keys.Shift)
@@ -706,8 +719,14 @@ namespace GHelper.Input
if (AppConfig.IsDUO()) SetScreenpad(10);
else Program.settingsForm.BeginInvoke(Program.settingsForm.CycleMatrix, 1);
}
else if (Control.ModifierKeys == Keys.Control && AppConfig.IsOLED())
{
SetBrightnessDimming(10);
}
else
{
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
}
break;
case 133: // Camera Toggle
ToggleCamera();

View File

@@ -62,33 +62,46 @@ namespace GHelper.Mode
if (!Modes.Exists(mode)) mode = 0;
customFans = false;
customPower = 0;
settings.ShowMode(mode);
SetModeLabel();
Modes.SetCurrent(mode);
int status = Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.IsManualModeRequired() ? AsusACPI.PerformanceManual : Modes.GetBase(mode), "Mode");
// Vivobook fallback
if (status != 1)
Task.Run(async () =>
{
int vivoMode = Modes.GetBase(mode);
if (vivoMode == 1) vivoMode = 2;
else if (vivoMode == 2) vivoMode = 1;
Program.acpi.DeviceSet(AsusACPI.VivoBookMode, vivoMode, "VivoMode");
}
bool reset = AppConfig.IsResetRequired() && (Modes.GetBase(oldMode) == Modes.GetBase(mode)) && customPower > 0;
customFans = false;
customPower = 0;
SetModeLabel();
// Workaround for not properly resetting limits on G14 2024
if (reset)
{
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, (Modes.GetBase(oldMode) != 1) ? AsusACPI.PerformanceTurbo : AsusACPI.PerformanceBalanced, "Reset");
await Task.Delay(TimeSpan.FromMilliseconds(1500));
}
int status = Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.IsManualModeRequired() ? AsusACPI.PerformanceManual : Modes.GetBase(mode), "Mode");
// Vivobook fallback
if (status != 1) Program.acpi.SetVivoMode(Modes.GetBase(mode));
SetGPUClocks();
AutoFans();
await Task.Delay(TimeSpan.FromMilliseconds(1000));
AutoPower();
});
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected()) XGM.Reset();
if (notify)
Program.toast.RunToast(Modes.GetCurrentName(), SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online ? ToastIcon.Charger : ToastIcon.Battery);
SetGPUClocks();
AutoFans();
AutoPower(1000);
// Power plan from config or defaulting to balanced
if (AppConfig.GetModeString("scheme") is not null)
@@ -145,18 +158,17 @@ namespace GHelper.Mode
Program.acpi.SetFanCurve(AsusFan.Mid, AppConfig.GetFanConfig(AsusFan.Mid));
// something went wrong, resetting to default profile
// Alternative way to set fan curve
if (cpuResult != 1 || gpuResult != 1)
{
cpuResult = Program.acpi.SetFanRange(AsusFan.CPU, AppConfig.GetFanConfig(AsusFan.CPU));
gpuResult = Program.acpi.SetFanRange(AsusFan.GPU, AppConfig.GetFanConfig(AsusFan.GPU));
// Something went wrong, resetting to default profile
if (cpuResult != 1 || gpuResult != 1)
{
int mode = Modes.GetCurrentBase();
Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "Reset Mode");
settings.LabelFansResult("ASUS BIOS rejected fan curve");
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, Modes.GetCurrentBase(), "Reset Mode");
settings.LabelFansResult("Model doesn't support custom fan curves");
}
}
else
@@ -182,52 +194,25 @@ namespace GHelper.Mode
}
public void AutoPower(int delay = 0)
public void AutoPower(bool launchAsAdmin = false)
{
customPower = 0;
bool applyPower = AppConfig.IsMode("auto_apply_power");
bool applyFans = AppConfig.IsMode("auto_apply");
//bool applyGPU = true;
if (applyPower && !applyFans)
if (applyPower && !applyFans && (AppConfig.IsFanRequired() || AppConfig.IsManualModeRequired()))
{
// force fan curve for misbehaving bios PPTs on some models
if (AppConfig.IsFanRequired())
{
delay = 500;
AutoFans(true);
}
// Fix for models that don't support PPT settings in all modes, setting a "manual" mode for them
if (AppConfig.IsManualModeRequired())
{
AutoFans(true);
}
AutoFans(true);
Thread.Sleep(500);
}
if (delay > 0)
{
var timer = new System.Timers.Timer(delay);
timer.Elapsed += delegate
{
timer.Stop();
timer.Dispose();
if (applyPower) SetPower(launchAsAdmin);
if (applyPower) SetPower();
Thread.Sleep(500);
SetGPUPower();
AutoRyzen();
};
timer.Start();
}
else
{
if (applyPower) SetPower(true);
SetGPUPower();
AutoRyzen();
}
Thread.Sleep(500);
SetGPUPower();
AutoRyzen();
}
@@ -346,18 +331,20 @@ namespace GHelper.Mode
int gpu_boost = AppConfig.GetMode("gpu_boost");
int gpu_temp = AppConfig.GetMode("gpu_temp");
int gpu_power = AppConfig.GetMode("gpu_power");
int boostResult = -1;
if (gpu_boost < AsusACPI.MinGPUBoost || gpu_boost > AsusACPI.MaxGPUBoost) return;
if (gpu_temp < AsusACPI.MinGPUTemp || gpu_temp > AsusACPI.MaxGPUTemp) return;
if (gpu_power >= AsusACPI.MinGPUPower && gpu_power <= AsusACPI.MaxGPUPower && Program.acpi.DeviceGet(AsusACPI.GPU_POWER) >= 0)
Program.acpi.DeviceSet(AsusACPI.GPU_POWER, gpu_power, "PowerLimit TGP (GPU VAR)");
if (Program.acpi.DeviceGet(AsusACPI.PPT_GPUC0) >= 0)
boostResult = Program.acpi.DeviceSet(AsusACPI.PPT_GPUC0, gpu_boost, "PowerLimit C0");
if (gpu_boost >= AsusACPI.MinGPUBoost && gpu_boost <= AsusACPI.MaxGPUBoost && Program.acpi.DeviceGet(AsusACPI.PPT_GPUC0) >= 0)
boostResult = Program.acpi.DeviceSet(AsusACPI.PPT_GPUC0, gpu_boost, "PowerLimit C0 (GPU BOOST)");
if (Program.acpi.DeviceGet(AsusACPI.PPT_GPUC2) >= 0)
Program.acpi.DeviceSet(AsusACPI.PPT_GPUC2, gpu_temp, "PowerLimit C2");
if (gpu_temp >= AsusACPI.MinGPUTemp && gpu_temp <= AsusACPI.MaxGPUTemp && Program.acpi.DeviceGet(AsusACPI.PPT_GPUC2) >= 0)
Program.acpi.DeviceSet(AsusACPI.PPT_GPUC2, gpu_temp, "PowerLimit C2 (GPU TEMP)");
// Fallback
if (boostResult == 0)
Program.acpi.DeviceSet(AsusACPI.PPT_GPUC0, gpu_boost, "PowerLimit C0");

View File

@@ -37,7 +37,12 @@
}
public override int DPIIncrements()
{
return 100;
return 50;
}
public override int MinDPI()
{
return 50;
}
public override bool HasDebounceSetting()

View File

@@ -7,6 +7,10 @@
{
}
public StrixImpactII(ushort pid) : base(0x0B05, pid, "mi_00", false)
{
}
public override int DPIProfileCount()
{
return 4;
@@ -174,4 +178,19 @@
}
}
}
public class StrixImpactIIElectroPunk : StrixImpactII
{
public StrixImpactIIElectroPunk() : base(0x1956)
{
}
public override string GetDisplayName()
{
return "ROG Strix Impact II Electro Punk";
}
}
}

View File

@@ -209,6 +209,7 @@ namespace GHelper.Peripherals
DetectMouse(new PugioII());
DetectMouse(new PugioIIWired());
DetectMouse(new StrixImpactII());
DetectMouse(new StrixImpactIIElectroPunk());
DetectMouse(new Chakram());
DetectMouse(new ChakramWired());
DetectMouse(new ChakramCore());

View File

@@ -32,7 +32,6 @@ namespace GHelper
public static ModeControl modeControl = new ModeControl();
public static GPUModeControl gpuControl = new GPUModeControl(settingsForm);
public static AllyControl allyControl = new AllyControl(settingsForm);
public static ScreenControl screenControl = new ScreenControl();
public static ClamshellModeControl clamshellControl = new ClamshellModeControl();
public static ToastForm toast = new ToastForm();
@@ -166,7 +165,7 @@ namespace GHelper
if (e.Reason == SessionSwitchReason.SessionLogon || e.Reason == SessionSwitchReason.SessionUnlock)
{
Logger.WriteLine("Session:" + e.Reason.ToString());
screenControl.AutoScreen();
ScreenControl.AutoScreen();
}
}
@@ -224,7 +223,7 @@ namespace GHelper
if (!switched)
{
gpuControl.InitGPUMode();
screenControl.AutoScreen();
ScreenControl.AutoScreen();
}
BatteryControl.AutoBattery(init);

View File

@@ -124,10 +124,10 @@
<value>Verbindung zu ASUS ACPI fehlgeschlagen. G-Helper kann nicht ausgeführt werden. Bitte installiere ASUS System Control Interface.</value>
</data>
<data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Restart your device to apply changes</value>
<value>Gerät neu starten, um Änderungen anzuwenden</value>
</data>
<data name="AlertAPUMemoryRestartTitle" xml:space="preserve">
<value>Restart now?</value>
<value>Jetzt neu starten?</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Die GPU wird gerade verwendet. Trotzdem deaktivieren?</value>
@@ -250,7 +250,7 @@
<value>Im Betrieb</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Timeout angeschlossen / bei Akku (0 - AN)</value>
<value>Timeout angeschlossen / bei Akku (0 = An)</value>
</data>
<data name="BacklightTimeoutBattery" xml:space="preserve">
<value>Backlight Timeout when on battery</value>
@@ -289,7 +289,7 @@
<value>Hochfahren</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Boot Sound</value>
<value>Boot-Sound</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Helligkeit</value>
@@ -310,7 +310,7 @@
<value>Farbe</value>
</data>
<data name="Contrast" xml:space="preserve">
<value>Contrast</value>
<value>Kontrast</value>
</data>
<data name="Controller" xml:space="preserve">
<value>Controller</value>
@@ -328,7 +328,7 @@
<value>Standard</value>
</data>
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
<value>Controller deaktivieren</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
@@ -352,7 +352,7 @@
<value>Eco</value>
</data>
<data name="EnableGPUOnShutdown" xml:space="preserve">
<value>Enable GPU on shutdown (prevents issue with Eco mode)</value>
<value>Aktiviere GPU beim Herunterfahren (verhindert Problem im Eco-Modus)</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>Die dGPU zu deaktivieren, indem Sie in den Eco-Modus wechseln während der Anzeigemodus nicht auf Optimus eingestellt ist, kann zu Problemen mit der Helligkeitseinstellung führen.
@@ -366,7 +366,7 @@ Trotzdem fortfahren?</value>
<value>Energieeinstellungen</value>
</data>
<data name="Export" xml:space="preserve">
<value>Export Profile</value>
<value>Profil exportieren</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Extra</value>
@@ -441,10 +441,10 @@ Trotzdem fortfahren?</value>
<value>Hoch</value>
</data>
<data name="ImageRotation" xml:space="preserve">
<value>Image Rotation</value>
<value>Bilddrehung</value>
</data>
<data name="Import" xml:space="preserve">
<value>Import Profile</value>
<value>Profil importieren</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Tastenbelegung</value>
@@ -534,7 +534,7 @@ Trotzdem fortfahren?</value>
<value>Tastenreaktionsgeschwindigkeit</value>
</data>
<data name="MouseImportFailed" xml:space="preserve">
<value>Import failed. Selected file is not a valid mouse profile or corrutpted.</value>
<value>Import fehlgeschlagen. Die ausgewählte Datei ist kein gültiges Mausprofil oder beschädigt.</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>Lift Off Distance</value>
@@ -621,7 +621,7 @@ Trotzdem fortfahren?</value>
<value>Schließen</value>
</data>
<data name="Reset" xml:space="preserve">
<value>Reset</value>
<value>Zurücksetzen</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Ein Prozess verhindert den Wechsel in den Eco-Modus. dGPU neu starten? Fortfahren auf eigene Gefahr.</value>
@@ -639,7 +639,7 @@ Trotzdem fortfahren?</value>
<value>Beim Start ausführen</value>
</data>
<data name="ScalingQuality" xml:space="preserve">
<value>Scaling Quality</value>
<value>Skalierungsqualität</value>
</data>
<data name="ScreenPadDown" xml:space="preserve">
<value>Screenpad Helligkeit verringern</value>
@@ -720,7 +720,7 @@ Trotzdem fortfahren?</value>
<value>Version</value>
</data>
<data name="VibrationStrength" xml:space="preserve">
<value>Vibration Strength</value>
<value>Vibrationsstärke</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Lautstärke verringern</value>

View File

@@ -13,7 +13,7 @@ namespace Ryzen
internal class RyzenControl
{
public static int MinCPUUV => AppConfig.Get("min_uv", -30);
public static int MinCPUUV => AppConfig.Get("min_uv", -40);
public const int MaxCPUUV = 0;
public const int MinIGPUUV = -20;

File diff suppressed because it is too large Load Diff

View File

@@ -123,6 +123,9 @@ namespace GHelper
pictureAlly = new PictureBox();
labelAlly = new Label();
panelGamma = new Panel();
tableVisual = new TableLayoutPanel();
comboVisual = new RComboBox();
comboGamut = new RComboBox();
sliderGamma = new Slider();
panelGammaTitle = new Panel();
labelGamma = new Label();
@@ -168,6 +171,7 @@ namespace GHelper
panelAllyTitle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureAlly).BeginInit();
panelGamma.SuspendLayout();
tableVisual.SuspendLayout();
panelGammaTitle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureGamma).BeginInit();
SuspendLayout();
@@ -181,7 +185,7 @@ namespace GHelper
panelMatrix.Controls.Add(tableLayoutMatrix);
panelMatrix.Controls.Add(panelMatrixTitle);
panelMatrix.Dock = DockStyle.Top;
panelMatrix.Location = new Point(11, 950);
panelMatrix.Location = new Point(11, 1000);
panelMatrix.Margin = new Padding(0);
panelMatrix.Name = "panelMatrix";
panelMatrix.Padding = new Padding(20, 20, 20, 10);
@@ -356,7 +360,7 @@ namespace GHelper
panelBattery.Controls.Add(sliderBattery);
panelBattery.Controls.Add(panelBatteryTitle);
panelBattery.Dock = DockStyle.Top;
panelBattery.Location = new Point(11, 1626);
panelBattery.Location = new Point(11, 1676);
panelBattery.Margin = new Padding(0);
panelBattery.Name = "panelBattery";
panelBattery.Padding = new Padding(20, 20, 20, 10);
@@ -448,7 +452,7 @@ namespace GHelper
panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelFooter.Controls.Add(tableButtons);
panelFooter.Dock = DockStyle.Top;
panelFooter.Location = new Point(11, 1801);
panelFooter.Location = new Point(11, 1851);
panelFooter.Margin = new Padding(0);
panelFooter.Name = "panelFooter";
panelFooter.Padding = new Padding(20);
@@ -1195,7 +1199,7 @@ namespace GHelper
panelKeyboard.Controls.Add(tableLayoutKeyboard);
panelKeyboard.Controls.Add(panelKeyboardTitle);
panelKeyboard.Dock = DockStyle.Top;
panelKeyboard.Location = new Point(11, 1284);
panelKeyboard.Location = new Point(11, 1334);
panelKeyboard.Margin = new Padding(0);
panelKeyboard.Name = "panelKeyboard";
panelKeyboard.Padding = new Padding(20);
@@ -1371,7 +1375,7 @@ namespace GHelper
panelVersion.Controls.Add(labelCharge);
panelVersion.Controls.Add(checkStartup);
panelVersion.Dock = DockStyle.Top;
panelVersion.Location = new Point(11, 1745);
panelVersion.Location = new Point(11, 1795);
panelVersion.Margin = new Padding(4);
panelVersion.Name = "panelVersion";
panelVersion.Size = new Size(827, 56);
@@ -1396,7 +1400,7 @@ namespace GHelper
panelPeripherals.Controls.Add(tableLayoutPeripherals);
panelPeripherals.Controls.Add(panelPeripheralsTile);
panelPeripherals.Dock = DockStyle.Top;
panelPeripherals.Location = new Point(11, 1428);
panelPeripherals.Location = new Point(11, 1478);
panelPeripherals.Margin = new Padding(0);
panelPeripherals.Name = "panelPeripherals";
panelPeripherals.Padding = new Padding(20, 20, 20, 10);
@@ -1538,7 +1542,7 @@ namespace GHelper
panelAlly.Controls.Add(tableLayoutAlly);
panelAlly.Controls.Add(panelAllyTitle);
panelAlly.Dock = DockStyle.Top;
panelAlly.Location = new Point(11, 1144);
panelAlly.Location = new Point(11, 1194);
panelAlly.Margin = new Padding(0);
panelAlly.Name = "panelAlly";
panelAlly.Padding = new Padding(20, 20, 20, 0);
@@ -1670,6 +1674,7 @@ namespace GHelper
//
panelGamma.AutoSize = true;
panelGamma.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGamma.Controls.Add(tableVisual);
panelGamma.Controls.Add(sliderGamma);
panelGamma.Controls.Add(panelGammaTitle);
panelGamma.Dock = DockStyle.Top;
@@ -1677,23 +1682,78 @@ namespace GHelper
panelGamma.Margin = new Padding(0);
panelGamma.Name = "panelGamma";
panelGamma.Padding = new Padding(20, 20, 20, 10);
panelGamma.Size = new Size(827, 123);
panelGamma.Size = new Size(827, 173);
panelGamma.TabIndex = 9;
panelGamma.Visible = false;
//
// tableVisual
//
tableVisual.AutoSize = true;
tableVisual.AutoSizeMode = AutoSizeMode.GrowAndShrink;
tableVisual.ColumnCount = 3;
tableVisual.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
tableVisual.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
tableVisual.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33F));
tableVisual.Controls.Add(comboVisual, 0, 0);
tableVisual.Controls.Add(comboGamut, 0, 0);
tableVisual.Dock = DockStyle.Top;
tableVisual.Location = new Point(20, 104);
tableVisual.Margin = new Padding(8);
tableVisual.Name = "tableVisual";
tableVisual.RowCount = 1;
tableVisual.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
tableVisual.Size = new Size(787, 59);
tableVisual.TabIndex = 41;
tableVisual.Visible = false;
//
// comboVisual
//
comboVisual.BorderColor = Color.White;
comboVisual.ButtonColor = Color.FromArgb(255, 255, 255);
comboVisual.Dock = DockStyle.Top;
comboVisual.FlatStyle = FlatStyle.Flat;
comboVisual.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
comboVisual.FormattingEnabled = true;
comboVisual.ItemHeight = 32;
comboVisual.Items.AddRange(new object[] { "Static", "Breathe", "Rainbow", "Strobe" });
comboVisual.Location = new Point(266, 11);
comboVisual.Margin = new Padding(4, 11, 4, 8);
comboVisual.Name = "comboVisual";
comboVisual.Size = new Size(254, 40);
comboVisual.TabIndex = 14;
comboVisual.Visible = false;
//
// comboGamut
//
comboGamut.BorderColor = Color.White;
comboGamut.ButtonColor = Color.FromArgb(255, 255, 255);
comboGamut.Dock = DockStyle.Top;
comboGamut.FlatStyle = FlatStyle.Flat;
comboGamut.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
comboGamut.FormattingEnabled = true;
comboGamut.ItemHeight = 32;
comboGamut.Items.AddRange(new object[] { "Static", "Breathe", "Rainbow", "Strobe" });
comboGamut.Location = new Point(4, 11);
comboGamut.Margin = new Padding(4, 11, 4, 8);
comboGamut.Name = "comboGamut";
comboGamut.Size = new Size(254, 40);
comboGamut.TabIndex = 13;
comboGamut.Visible = false;
//
// sliderGamma
//
sliderGamma.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
sliderGamma.Location = new Point(40, 69);
sliderGamma.Dock = DockStyle.Top;
sliderGamma.Location = new Point(20, 64);
sliderGamma.Margin = new Padding(4);
sliderGamma.Max = 100;
sliderGamma.Min = 0;
sliderGamma.Name = "sliderGamma";
sliderGamma.Size = new Size(752, 40);
sliderGamma.Size = new Size(787, 40);
sliderGamma.Step = 10;
sliderGamma.TabIndex = 20;
sliderGamma.Text = "sliderGamma";
sliderGamma.Value = 100;
sliderGamma.Visible = false;
//
// panelGammaTitle
//
@@ -1736,7 +1796,7 @@ namespace GHelper
labelGammaTitle.Location = new Point(43, 0);
labelGammaTitle.Margin = new Padding(8, 0, 8, 0);
labelGammaTitle.Name = "labelGammaTitle";
labelGammaTitle.Size = new Size(307, 32);
labelGammaTitle.Size = new Size(506, 32);
labelGammaTitle.TabIndex = 37;
labelGammaTitle.Text = "Flicker-free Dimming";
//
@@ -1746,7 +1806,7 @@ namespace GHelper
AutoScaleMode = AutoScaleMode.Dpi;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(849, 2119);
ClientSize = new Size(849, 1759);
Controls.Add(panelFooter);
Controls.Add(panelVersion);
Controls.Add(panelBattery);
@@ -1826,6 +1886,8 @@ namespace GHelper
panelAllyTitle.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureAlly).EndInit();
panelGamma.ResumeLayout(false);
panelGamma.PerformLayout();
tableVisual.ResumeLayout(false);
panelGammaTitle.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)pictureGamma).EndInit();
ResumeLayout(false);
@@ -1931,5 +1993,8 @@ namespace GHelper
private Label labelGammaTitle;
private CheckBox checkMatrixLid;
private Panel panelMatrixAuto;
private TableLayoutPanel tableVisual;
private RComboBox comboVisual;
private RComboBox comboGamut;
}
}

View File

@@ -24,7 +24,6 @@ namespace GHelper
public GPUModeControl gpuControl;
public AllyControl allyControl;
ScreenControl screenControl = new ScreenControl();
AutoUpdateControl updateControl;
AsusMouseSettings? mouseSettings;
@@ -48,6 +47,8 @@ namespace GHelper
bool batteryMouseOver = false;
bool batteryFullMouseOver = false;
bool sliderGammaIgnore = false;
public SettingsForm()
{
@@ -116,7 +117,7 @@ namespace GHelper
buttonScreenAuto.AccessibleName = Properties.Strings.AutoMode;
//button60Hz.AccessibleName = "60Hz Refresh Rate";
//button120Hz.AccessibleName = "Maximum Refresh Rate";
panelKeyboard.AccessibleName = Properties.Strings.LaptopKeyboard;
buttonKeyboard.AccessibleName = Properties.Strings.ExtraSettings;
buttonKeyboardColor.AccessibleName = Properties.Strings.LaptopKeyboard + " " + Properties.Strings.Color;
@@ -219,7 +220,7 @@ namespace GHelper
sliderBattery.ValueChanged += SliderBattery_ValueChanged;
Program.trayIcon.MouseMove += TrayIcon_MouseMove;
sensorTimer = new System.Timers.Timer(AppConfig.Get("sensor_timer",1000));
sensorTimer = new System.Timers.Timer(AppConfig.Get("sensor_timer", 1000));
sensorTimer.Elapsed += OnTimedEvent;
sensorTimer.Enabled = true;
@@ -254,17 +255,84 @@ namespace GHelper
VisualiseFnLock();
buttonFnLock.Click += ButtonFnLock_Click;
panelGamma.Visible = AppConfig.IsOLED();
sliderGamma.ValueChanged += SliderGamma_ValueChanged;
labelGamma.Text = "100%";
panelPerformance.Focus();
InitVisual();
}
public void InitVisual()
{
bool dimming = false;
if (AppConfig.IsOLED())
{
dimming = true;
labelGammaTitle.Text = "Flicker-free Dimming";
panelGamma.Visible = true;
sliderGamma.Visible = true;
VisualiseBrightness();
sliderGamma.ValueChanged += SliderGamma_ValueChanged;
}
var gamuts = ScreenControl.GetGamutModes();
if (gamuts.Count < 1) return;
if (!dimming) labelGammaTitle.Text = "Visual Mode";
else labelGammaTitle.Text += " / Visual";
panelGamma.Visible = true;
tableVisual.Visible = true;
comboVisual.DropDownStyle = ComboBoxStyle.DropDownList;
comboVisual.DataSource = new BindingSource(ScreenControl.GetVisualModes(), null);
comboVisual.DisplayMember = "Value";
comboVisual.ValueMember = "Key";
comboVisual.SelectedValue = (SplendidCommand)AppConfig.Get("visual", (int)SplendidCommand.Default);
comboVisual.SelectedValueChanged += ComboVisual_SelectedValueChanged;
comboVisual.Visible = true;
if (gamuts.Count <= 1) return;
comboGamut.DropDownStyle = ComboBoxStyle.DropDownList;
comboGamut.DataSource = new BindingSource(gamuts, null);
comboGamut.DisplayMember = "Value";
comboGamut.ValueMember = "Key";
comboGamut.SelectedValue = (SplendidGamut)AppConfig.Get("gamut", (int)SplendidGamut.Native);
comboGamut.SelectedValueChanged += ComboGamut_SelectedValueChanged;
comboGamut.Visible = true;
}
private void ComboGamut_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.Set("gamut", (int)comboGamut.SelectedValue);
ScreenControl.SetGamut((int)comboGamut.SelectedValue);
}
private void ComboVisual_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.Set("visual", (int)comboVisual.SelectedValue);
ScreenControl.SetVisual((SplendidCommand)comboVisual.SelectedValue);
}
public void VisualiseBrightness()
{
Invoke(delegate
{
sliderGammaIgnore = true;
sliderGamma.Value = AppConfig.Get("brightness", 100);
labelGamma.Text = sliderGamma.Value + "%";
sliderGammaIgnore = false;
});
}
private void SliderGamma_ValueChanged(object? sender, EventArgs e)
{
screenControl.SetGamma(sliderGamma.Value);
labelGamma.Text = sliderGamma.Value + "%";
if (sliderGammaIgnore) return;
ScreenControl.SetBrightness(sliderGamma.Value);
}
private void ButtonOverlay_Click(object? sender, EventArgs e)
@@ -338,7 +406,7 @@ namespace GHelper
public void VisualiseBacklight(int backlight)
{
buttonBacklight.Text = Math.Round((double)backlight*33.33).ToString() + "%";
buttonBacklight.Text = Math.Round((double)backlight * 33.33).ToString() + "%";
}
public void VisualiseFPSLimit(int limit)
@@ -406,7 +474,7 @@ namespace GHelper
sensorTimer.Enabled = this.Visible;
if (this.Visible)
{
screenControl.InitScreen();
ScreenControl.InitScreen();
VisualizeXGM();
Task.Run((Action)RefreshPeripheralsBattery);
@@ -685,7 +753,7 @@ namespace GHelper
private void ButtonScreenAuto_Click(object? sender, EventArgs e)
{
AppConfig.Set("screen_auto", 1);
screenControl.AutoScreen();
ScreenControl.AutoScreen();
}
@@ -835,7 +903,7 @@ namespace GHelper
FansToggle();
}
private void SetColorPicker(string colorField = "aura_color")
private void SetColorPicker(string colorField = "aura_color")
{
ColorDialog colorDlg = new ColorDialog();
colorDlg.AllowFullOpen = true;
@@ -940,7 +1008,7 @@ namespace GHelper
buttonMatrix.Visible = false;
checkMatrixLid.Visible = true;
}
}
comboMatrix.SelectedIndex = Math.Min(AppConfig.Get("matrix_brightness", 0), comboMatrix.Items.Count - 1);
comboMatrixRunning.SelectedIndex = Math.Min(AppConfig.Get("matrix_running", 0), comboMatrixRunning.Items.Count - 1);
@@ -985,19 +1053,19 @@ namespace GHelper
private void Button120Hz_Click(object? sender, EventArgs e)
{
AppConfig.Set("screen_auto", 0);
screenControl.SetScreen(ScreenControl.MAX_REFRESH, 1);
ScreenControl.SetScreen(ScreenControl.MAX_REFRESH, 1);
}
private void Button60Hz_Click(object? sender, EventArgs e)
{
AppConfig.Set("screen_auto", 0);
screenControl.SetScreen(60, 0);
ScreenControl.SetScreen(60, 0);
}
private void ButtonMiniled_Click(object? sender, EventArgs e)
{
screenControl.ToogleMiniled();
ScreenControl.ToogleMiniled();
}
@@ -1273,11 +1341,13 @@ namespace GHelper
{
if (InvokeRequired)
{
Invoke(delegate {
Invoke(delegate
{
labelPerf.Text = modeText;
panelPerformance.AccessibleName = labelPerf.Text;
});
} else
}
else
{
labelPerf.Text = modeText;
panelPerformance.AccessibleName = labelPerf.Text;
@@ -1452,7 +1522,7 @@ namespace GHelper
break;
}
VisualizeXGM(GPUMode);
@@ -1626,7 +1696,7 @@ namespace GHelper
return;
}
mouseSettings = new AsusMouseSettings(am);
mouseSettings.TopMost = true;
mouseSettings.TopMost = AppConfig.Is("topmost");
mouseSettings.FormClosed += MouseSettings_FormClosed;
mouseSettings.Disposed += MouseSettings_Disposed;
if (!mouseSettings.IsDisposed)

View File

@@ -97,16 +97,16 @@ public static class AsusHid
try
{
stream.Write(data);
Logger.WriteLine($"{log} {device.ProductID.ToString("X")}: {BitConverter.ToString(data)}");
if (log is not null) Logger.WriteLine($"{log} {device.ProductID.ToString("X")}: {BitConverter.ToString(data)}");
}
catch (Exception ex)
{
Logger.WriteLine($"Error writing {log} {device.ProductID.ToString("X")}: {ex.Message} {BitConverter.ToString(data)} ");
if (log is not null) Logger.WriteLine($"Error writing {log} {device.ProductID.ToString("X")}: {ex.Message} {BitConverter.ToString(data)} ");
}
}
catch (Exception ex)
{
Logger.WriteLine($"Error opening {log} {device.ProductID.ToString("X")}: {ex.Message}");
if (log is not null) Logger.WriteLine($"Error opening {log} {device.ProductID.ToString("X")}: {ex.Message}");
}
}

View File

@@ -79,7 +79,7 @@ namespace GHelper.USB
public static Color Color1 = Color.White;
public static Color Color2 = Color.Black;
static bool isACPI = AppConfig.IsTUF() || AppConfig.IsVivobook() || AppConfig.IsProArt();
static bool isACPI = AppConfig.IsTUF() || AppConfig.IsVivoZenbook() || AppConfig.IsProArt();
static bool isStrix = AppConfig.IsStrix() && !AppConfig.IsNoDirectRGB();
static bool isStrix4Zone = AppConfig.IsStrixLimitedRGB();
@@ -598,7 +598,7 @@ namespace GHelper.USB
if (AppConfig.IsNoDirectRGB())
{
AsusHid.Write(new List<byte[]> { AuraMessage(AuraMode.AuraStatic, color, color, 0xeb, isSingleColor), MESSAGE_SET });
AsusHid.Write(new List<byte[]> { AuraMessage(AuraMode.AuraStatic, color, color, 0xeb, isSingleColor), MESSAGE_SET }, null);
return;
}
@@ -670,7 +670,7 @@ namespace GHelper.USB
{
CustomRGB.ApplyAmbient(true);
timer.Enabled = true;
timer.Interval = AppConfig.Get("aura_refresh", AppConfig.ContainsModel("GU604") ? 400 : 120);
timer.Interval = AppConfig.Get("aura_refresh", AppConfig.IsStrix() ? 100 : 300);
return;
}

View File

@@ -36,7 +36,7 @@ namespace GHelper
(bios, model) = AppConfig.GetBiosAndModel();
buttonRefresh.TabStop = false;
updatesCount = 0;
labelUpdates.ForeColor = colorEco;
labelUpdates.Text = Properties.Strings.NoNewUpdates;
@@ -83,13 +83,12 @@ namespace GHelper
InitializeComponent();
InitTheme(true);
LoadUpdates(true);
//buttonRefresh.Visible = false;
buttonRefresh.Click += ButtonRefresh_Click;
Shown += Updates_Shown;
}
private void ButtonRefresh_Click(object? sender, EventArgs e)
{
LoadUpdates();
@@ -100,7 +99,9 @@ namespace GHelper
Height = Program.settingsForm.Height;
Top = Program.settingsForm.Top;
Left = Program.settingsForm.Left - Width - 5;
LoadUpdates(true);
}
private Dictionary<string, string> GetDeviceVersions()
{
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * from Win32_PnPSignedDriver"))
@@ -160,24 +161,36 @@ namespace GHelper
});
}
public void VisualiseNewDriver(int position, int newer, TableLayoutPanel table)
private void _VisualiseNewDriver(int position, int newer, TableLayoutPanel table)
{
var label = table.GetControlFromPosition(3, position) as LinkLabel;
if (label != null)
{
if (newer == DRIVER_NEWER)
{
label.AccessibleName = label.AccessibleName + Properties.Strings.NewUpdates;
label.Font = new Font(label.Font, FontStyle.Underline | FontStyle.Bold);
label.LinkColor = colorTurbo;
}
if (newer == DRIVER_NOT_FOUND) label.LinkColor = Color.Gray;
}
}
public void VisualiseNewDriver(int position, int newer, TableLayoutPanel table)
{
if (InvokeRequired)
{
Invoke(delegate
{
if (newer == DRIVER_NEWER)
{
label.AccessibleName = label.AccessibleName + Properties.Strings.NewUpdates;
label.Font = new Font(label.Font, FontStyle.Underline | FontStyle.Bold);
label.LinkColor = colorTurbo;
}
if (newer == DRIVER_NOT_FOUND) label.LinkColor = Color.Gray;
_VisualiseNewDriver(position, newer, table);
});
} else
{
_VisualiseNewDriver(position, newer, table);
}
}
public void VisualiseNewCount(int updatesCount, TableLayoutPanel table)
@@ -193,7 +206,7 @@ namespace GHelper
});
}
public async void DriversAsync(string url, int type, TableLayoutPanel table)
public async void DriversAsync(string url, int type, TableLayoutPanel table)
{
try
@@ -266,7 +279,7 @@ namespace GHelper
foreach (var localVersion in localVersions)
{
newer = Math.Min(newer, new Version(driver.version).CompareTo(new Version(localVersion)));
Logger.WriteLine(driver.title + " " + deviceID + " "+ driver.version + " vs " + localVersion + " = " + newer);
Logger.WriteLine(driver.title + " " + deviceID + " " + driver.version + " vs " + localVersion + " = " + newer);
}
}

View File

@@ -1,5 +1,5 @@
{
"sdk": {
"version": "7.0.400"
"version": "7.0.406"
}
}

View File

@@ -1,7 +1,7 @@
# G-Helper - Lightweight control tool for Asus laptops
[![United24](https://raw.githubusercontent.com/seerge/g-helper/main/docs/ua.png)](https://u24.gov.ua/)
[![GitHub release](https://img.shields.io/github/release/seerge/g-helper.svg?style=flat-square)](https://GitHub.com/seerge/g-helper/releases/)
[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total.svg?style=flat-square)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social)](https://GitHub.com/seerge/g-helper/stargazers/)
[![GitHub release](https://img.shields.io/github/release/seerge/g-helper)](https://GitHub.com/seerge/g-helper/releases/)
[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social)](https://GitHub.com/seerge/g-helper/stargazers/)
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat and unnecessary services.
Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, VivoBook, Ally and many more!