Compare commits

..

72 Commits

Author SHA1 Message Date
Serge
3075e22e1e Power Mode control 2023-08-12 16:04:39 +02:00
Serge
b15109d13e Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-11 22:37:17 +02:00
Serge
c491087a29 Set Balanced plan by default 2023-08-11 22:37:14 +02:00
Serge
cf08ae0789 Update README.md 2023-08-11 22:20:25 +02:00
Serge
624f15be65 Merge pull request #1053 from seerge/l10n_main
New Crowdin updates
2023-08-11 21:58:50 +02:00
Serge
4789d0d782 New translations Strings.resx (Spanish) 2023-08-11 17:36:43 +02:00
Serge
f8fd8a9695 New translations Strings.resx (Italian) 2023-08-11 17:36:42 +02:00
Serge
91cfb8d38c New translations Strings.resx (Lithuanian) 2023-08-11 17:36:41 +02:00
Serge
130d9b73fb Cleanup 2023-08-11 16:01:30 +02:00
Serge
604d24ebbe Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-11 14:27:40 +02:00
Serge
8c3a74a991 FN-Lock Toggle 2023-08-11 14:27:38 +02:00
Serge
ed143a7bba Merge pull request #1048 from seerge/l10n_main
New Crowdin updates
2023-08-11 14:24:29 +02:00
Serge
ac5f1ec1b5 New translations Strings.resx (Vietnamese) 2023-08-11 13:04:07 +02:00
Serge
403db3057c New translations Strings.resx (Ukrainian) 2023-08-11 13:04:06 +02:00
Serge
4dac7b8e9d New translations Strings.resx (Turkish) 2023-08-11 13:04:06 +02:00
Serge
a856f87146 New translations Strings.resx (Portuguese) 2023-08-11 13:04:05 +02:00
Serge
d733101a26 New translations Strings.resx (Polish) 2023-08-11 13:04:04 +02:00
Serge
89741a5e8a New translations Strings.resx (Korean) 2023-08-11 13:04:03 +02:00
Serge
f00026b53a New translations Strings.resx (Hungarian) 2023-08-11 13:04:02 +02:00
Serge
5004358fe2 New translations Strings.resx (German) 2023-08-11 13:04:01 +02:00
Serge
97f6565024 New translations Strings.resx (Spanish) 2023-08-11 13:04:00 +02:00
Serge
f1a69ebad3 New translations Strings.resx (French) 2023-08-11 13:03:59 +02:00
Serge
bf6c3e636e New translations Strings.resx (Romanian) 2023-08-11 13:03:58 +02:00
Serge
a4e98a9fb1 New translations Strings.resx (Italian) 2023-08-11 13:03:57 +02:00
Serge
8b717f856a New translations Strings.resx (Lithuanian) 2023-08-11 13:03:56 +02:00
Serge
4d8f093a4b New translations Strings.resx (Chinese Traditional) 2023-08-11 13:03:55 +02:00
Serge
c699c82bbe New translations Strings.resx (Chinese Simplified) 2023-08-11 13:03:54 +02:00
Serge
5634d75672 Single Color 2023-08-11 12:58:20 +02:00
Serge
cf33b0cc52 Single Color detection 2023-08-11 12:51:03 +02:00
Serge
ddbaeb623b New translations Strings.resx (Lithuanian) 2023-08-11 07:47:01 +02:00
Serge
3efb2e0db9 Version Bump 2023-08-11 00:02:40 +02:00
Serge
8159aec53b New translations Strings.resx (Vietnamese) 2023-08-10 23:57:14 +02:00
Serge
564efb2f32 New translations Strings.resx (Ukrainian) 2023-08-10 23:57:14 +02:00
Serge
4dfcd6a5f9 New translations Strings.resx (Turkish) 2023-08-10 23:57:13 +02:00
Serge
0aa4d873d0 New translations Strings.resx (Portuguese) 2023-08-10 23:57:12 +02:00
Serge
911c01b6b2 New translations Strings.resx (Polish) 2023-08-10 23:57:11 +02:00
Serge
3a5e5fa227 New translations Strings.resx (Korean) 2023-08-10 23:57:10 +02:00
Serge
bf5786aca6 New translations Strings.resx (Hungarian) 2023-08-10 23:57:10 +02:00
Serge
ed065d00dc New translations Strings.resx (German) 2023-08-10 23:57:09 +02:00
Serge
6aa899d989 New translations Strings.resx (Spanish) 2023-08-10 23:57:08 +02:00
Serge
417d156300 New translations Strings.resx (French) 2023-08-10 23:57:07 +02:00
Serge
2471edd82f New translations Strings.resx (Romanian) 2023-08-10 23:57:06 +02:00
Serge
196eda7463 New translations Strings.resx (Italian) 2023-08-10 23:57:05 +02:00
Serge
1d63376c99 New translations Strings.resx (Lithuanian) 2023-08-10 23:57:05 +02:00
Serge
846b05b89e New translations Strings.resx (Chinese Traditional) 2023-08-10 23:57:04 +02:00
Serge
0f3b660824 New translations Strings.resx (Chinese Simplified) 2023-08-10 23:57:03 +02:00
Serge
14565cf8fa Merge branch 'main' of https://github.com/seerge/g-helper 2023-08-10 23:39:48 +02:00
Serge
3d5c0d5ade GPU tweaks 2023-08-10 23:39:45 +02:00
Serge
14e0adaca8 Merge pull request #1044 from seerge/l10n_main
New Crowdin updates
2023-08-10 22:46:36 +02:00
Serge
4365d3b4cb New translations Strings.resx (Italian) 2023-08-10 17:21:13 +02:00
Serge
62ca72e684 New translations Strings.resx (Italian) 2023-08-10 15:32:06 +02:00
Serge
71c0c10f29 New translations Strings.resx (Lithuanian) 2023-08-10 09:44:15 +02:00
Serge
8733ef34d3 New translations Strings.resx (Chinese Traditional) 2023-08-10 05:07:14 +02:00
Serge
ff0a12d104 New translations Strings.resx (Chinese Simplified) 2023-08-10 04:10:42 +02:00
Serge
fe628319b7 Update README.md 2023-08-09 23:37:52 +02:00
Serge
86c11beee6 Update README.md 2023-08-09 23:30:23 +02:00
Serge
e45a72f6c6 Update README.md 2023-08-09 23:28:51 +02:00
Serge
88af725a08 Merge pull request #1039 from seerge/l10n_main
New Crowdin updates
2023-08-09 19:19:31 +02:00
Serge
b59db1432a New translations Strings.resx (Vietnamese) 2023-08-09 15:43:05 +02:00
Serge
4f85cd32aa New translations Strings.resx (Chinese Traditional) 2023-08-09 15:43:04 +02:00
Serge
f0d6d25e93 New translations Strings.resx (Chinese Simplified) 2023-08-09 15:43:03 +02:00
Serge
2d6d4093e9 New translations Strings.resx (Ukrainian) 2023-08-09 15:43:03 +02:00
Serge
8fc167fd57 New translations Strings.resx (Turkish) 2023-08-09 15:43:02 +02:00
Serge
475110af09 New translations Strings.resx (Portuguese) 2023-08-09 15:43:01 +02:00
Serge
3fc4621dc9 New translations Strings.resx (Polish) 2023-08-09 15:43:00 +02:00
Serge
43ddf6585c New translations Strings.resx (Lithuanian) 2023-08-09 15:42:59 +02:00
Serge
61d155d936 New translations Strings.resx (Korean) 2023-08-09 15:42:58 +02:00
Serge
d133162579 New translations Strings.resx (Italian) 2023-08-09 15:42:57 +02:00
Serge
fff4612a8d New translations Strings.resx (Hungarian) 2023-08-09 15:42:55 +02:00
Serge
d6f410c6e6 New translations Strings.resx (German) 2023-08-09 15:42:54 +02:00
Serge
ab11965d50 New translations Strings.resx (Spanish) 2023-08-09 15:42:53 +02:00
Serge
6071f41c33 New translations Strings.resx (French) 2023-08-09 15:42:52 +02:00
35 changed files with 511 additions and 289 deletions

View File

@@ -154,6 +154,11 @@ public static class AppConfig
Write();
}
public static void RemoveMode(string name)
{
Remove(name + "_" + Modes.GetCurrent());
}
public static string GgetParamName(AsusFan device, string paramName = "fan_profile")
{
int mode = Modes.GetCurrent();
@@ -298,9 +303,9 @@ public static class AppConfig
return ContainsModel("GA401I") && !ContainsModel("GA401IHR");
}
public static bool NoAuraColor()
public static bool IsSingleColor()
{
return ContainsModel("GA401") || ContainsModel("X13");
return ContainsModel("GA401");
}
public static bool IsStrix()
@@ -356,9 +361,14 @@ public static class AppConfig
return ContainsModel("FX507") || ContainsModel("FX517") || ContainsModel("FX707");
}
public static bool IsGPUFixNeeded()
{
return ContainsModel("GA402X") || ContainsModel("GV302");
}
public static bool IsGPUFix()
{
return ContainsModel("GA402X") && (Get("gpu_fix") != 0);
return Is("gpu_fix") || (ContainsModel("GA402X") && IsNotFalse("gpu_fix"));
}
}

View File

@@ -1,6 +1,5 @@
using GHelper.Helpers;
using HidLibrary;
using System.Diagnostics;
using System.Text;
namespace GHelper
@@ -63,13 +62,14 @@ namespace GHelper
static bool isTuf = AppConfig.IsTUF();
static bool isStrix = AppConfig.IsStrix();
static public bool isSingleColor = false;
static bool isOldHeatmap = AppConfig.Is("old_heatmap");
static System.Timers.Timer timer = new System.Timers.Timer(2000);
static HidDevice? auraDevice = null;
static bool Manual = false;
static byte[] AuraPowerMessage(AuraPower flags)
{
@@ -115,6 +115,11 @@ namespace GHelper
static AsusUSB()
{
timer.Elapsed += Timer_Elapsed;
isSingleColor = AppConfig.ContainsModel("GA401") || AppConfig.ContainsModel("X13"); // Mono Color
var device = GetDevice(AURA_HID_ID);
if (device is not null && device.Attributes.Version == 22 && AppConfig.ContainsModel("GA402X")) isSingleColor = true;
}
private static void Timer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
@@ -184,10 +189,11 @@ namespace GHelper
_modes.Remove(3);
}
if (AppConfig.NoAuraColor())
if (isSingleColor)
{
_modes.Remove(2);
_modes.Remove(3);
_modes.Remove(HEATMAP);
}
if (AppConfig.IsAdvantageEdition())
@@ -278,7 +284,7 @@ namespace GHelper
}
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed)
public static byte[] AuraMessage(int mode, Color color, Color color2, int speed, bool mono = false)
{
byte[] msg = new byte[17];
@@ -286,15 +292,15 @@ namespace GHelper
msg[1] = 0xb3;
msg[2] = 0x00; // Zone
msg[3] = (byte)mode; // Aura Mode
msg[4] = (byte)(color.R); // R
msg[5] = (byte)(color.G); // G
msg[6] = (byte)(color.B); // B
msg[4] = color.R; // R
msg[5] = mono ? (byte)0 : color.G; // G
msg[6] = mono ? (byte)0 : color.B; // B
msg[7] = (byte)speed; // aura.speed as u8;
msg[8] = 0; // aura.direction as u8;
msg[9] = (mode == 1) ? (byte)1 : (byte)0;
msg[10] = (byte)(color2.R); // R
msg[11] = (byte)(color2.G); // G
msg[12] = (byte)(color2.B); // B
msg[10] = color2.R; // R
msg[11] = mono ? (byte)0 : color2.G; // G
msg[12] = mono ? (byte)0 : color2.B; // B
return msg;
}
@@ -469,7 +475,7 @@ namespace GHelper
if (isStrix && !isOldHeatmap)
{
byte[] msg = new byte[0x40];
byte start = 9;
byte maxLeds = 0x93;
@@ -497,7 +503,7 @@ namespace GHelper
auraDevice.Write(LED_INIT3);
auraDevice.Write(LED_INIT4);
auraDevice.Write(LED_INIT5);
auraDevice.Write(new byte[] { AURA_HID_ID, 0xbc});
auraDevice.Write(new byte[] { AURA_HID_ID, 0xbc });
}
for (byte b = 0; b < maxLeds; b += 0x10)
@@ -563,7 +569,7 @@ namespace GHelper
break;
}
byte[] msg = AuraMessage(Mode, Color1, Color2, _speed);
byte[] msg;
var devices = GetHidDevices(deviceIds);
foreach (HidDevice device in devices)
@@ -571,10 +577,11 @@ namespace GHelper
device.OpenDevice();
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
{
msg = AuraMessage(Mode, Color1, Color2, _speed, isSingleColor);
device.WriteFeatureData(msg);
device.WriteFeatureData(MESSAGE_APPLY);
device.WriteFeatureData(MESSAGE_SET);
Logger.WriteLine("USB-KB " + device.Capabilities.FeatureReportByteLength + "|" + device.Capabilities.InputReportByteLength + device.Description + device.DevicePath + ":" + BitConverter.ToString(msg));
Logger.WriteLine("USB-KB " + device.Attributes.Version + device.Description + device.DevicePath + ":" + BitConverter.ToString(msg));
}
device.CloseDevice();
}

61
app/Extra.Designer.cs generated
View File

@@ -103,14 +103,12 @@ namespace GHelper
labelSettings = new Label();
panelSettings = new Panel();
checkAutoToggleClamshellMode = new CheckBox();
checkAutoApplyWindowsPowerMode = new CheckBox();
checkTopmost = new CheckBox();
checkNoOverdrive = new CheckBox();
checkUSBC = new CheckBox();
checkVariBright = new CheckBox();
checkGpuApps = new CheckBox();
checkGPUFix = new CheckBox();
checkFnLock = new CheckBox();
panelPower = new Panel();
numericHibernateAfter = new NumericUpDown();
labelHibernateAfter = new Label();
@@ -147,7 +145,7 @@ namespace GHelper
panelServices.Controls.Add(labelServices);
panelServices.Controls.Add(buttonServices);
panelServices.Dock = DockStyle.Top;
panelServices.Location = new Point(15, 1383);
panelServices.Location = new Point(15, 1279);
panelServices.Name = "panelServices";
panelServices.Size = new Size(983, 75);
panelServices.TabIndex = 5;
@@ -1063,26 +1061,24 @@ namespace GHelper
panelSettings.AutoSize = true;
panelSettings.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelSettings.Controls.Add(checkAutoToggleClamshellMode);
panelSettings.Controls.Add(checkAutoApplyWindowsPowerMode);
panelSettings.Controls.Add(checkTopmost);
panelSettings.Controls.Add(checkNoOverdrive);
panelSettings.Controls.Add(checkUSBC);
panelSettings.Controls.Add(checkVariBright);
panelSettings.Controls.Add(checkGpuApps);
panelSettings.Controls.Add(checkGPUFix);
panelSettings.Controls.Add(checkFnLock);
panelSettings.Dock = DockStyle.Top;
panelSettings.Location = new Point(15, 921);
panelSettings.Name = "panelSettings";
panelSettings.Padding = new Padding(20, 5, 11, 5);
panelSettings.Size = new Size(983, 388);
panelSettings.Size = new Size(983, 304);
panelSettings.TabIndex = 3;
//
// checkAutoToggleClamshellMode
//
checkAutoToggleClamshellMode.AutoSize = true;
checkAutoToggleClamshellMode.Dock = DockStyle.Top;
checkAutoToggleClamshellMode.Location = new Point(20, 341);
checkAutoToggleClamshellMode.Location = new Point(20, 257);
checkAutoToggleClamshellMode.Name = "checkAutoToggleClamshellMode";
checkAutoToggleClamshellMode.Padding = new Padding(3);
checkAutoToggleClamshellMode.Size = new Size(952, 42);
@@ -1090,24 +1086,11 @@ namespace GHelper
checkAutoToggleClamshellMode.Text = "Auto Toggle Clamshell Mode";
checkAutoToggleClamshellMode.UseVisualStyleBackColor = true;
//
// checkAutoApplyWindowsPowerMode
//
checkAutoApplyWindowsPowerMode.AutoSize = true;
checkAutoApplyWindowsPowerMode.Dock = DockStyle.Top;
checkAutoApplyWindowsPowerMode.Location = new Point(20, 299);
checkAutoApplyWindowsPowerMode.Margin = new Padding(4, 3, 4, 3);
checkAutoApplyWindowsPowerMode.Name = "checkAutoApplyWindowsPowerMode";
checkAutoApplyWindowsPowerMode.Padding = new Padding(3);
checkAutoApplyWindowsPowerMode.Size = new Size(952, 42);
checkAutoApplyWindowsPowerMode.TabIndex = 7;
checkAutoApplyWindowsPowerMode.Text = "Auto Adjust Windows Power Mode";
checkAutoApplyWindowsPowerMode.UseVisualStyleBackColor = true;
//
// checkTopmost
//
checkTopmost.AutoSize = true;
checkTopmost.Dock = DockStyle.Top;
checkTopmost.Location = new Point(20, 257);
checkTopmost.Location = new Point(20, 215);
checkTopmost.Margin = new Padding(4, 3, 4, 3);
checkTopmost.Name = "checkTopmost";
checkTopmost.Padding = new Padding(3);
@@ -1120,7 +1103,7 @@ namespace GHelper
//
checkNoOverdrive.AutoSize = true;
checkNoOverdrive.Dock = DockStyle.Top;
checkNoOverdrive.Location = new Point(20, 215);
checkNoOverdrive.Location = new Point(20, 173);
checkNoOverdrive.Margin = new Padding(4, 3, 4, 3);
checkNoOverdrive.Name = "checkNoOverdrive";
checkNoOverdrive.Padding = new Padding(3);
@@ -1133,7 +1116,7 @@ namespace GHelper
//
checkUSBC.AutoSize = true;
checkUSBC.Dock = DockStyle.Top;
checkUSBC.Location = new Point(20, 173);
checkUSBC.Location = new Point(20, 131);
checkUSBC.Margin = new Padding(4, 3, 4, 3);
checkUSBC.Name = "checkUSBC";
checkUSBC.Padding = new Padding(3);
@@ -1146,7 +1129,7 @@ namespace GHelper
//
checkVariBright.AutoSize = true;
checkVariBright.Dock = DockStyle.Top;
checkVariBright.Location = new Point(20, 131);
checkVariBright.Location = new Point(20, 89);
checkVariBright.Margin = new Padding(4, 3, 4, 3);
checkVariBright.Name = "checkVariBright";
checkVariBright.Padding = new Padding(3);
@@ -1159,7 +1142,7 @@ namespace GHelper
//
checkGpuApps.AutoSize = true;
checkGpuApps.Dock = DockStyle.Top;
checkGpuApps.Location = new Point(20, 89);
checkGpuApps.Location = new Point(20, 47);
checkGpuApps.Margin = new Padding(4, 3, 4, 3);
checkGpuApps.Name = "checkGpuApps";
checkGpuApps.Padding = new Padding(3);
@@ -1172,7 +1155,7 @@ namespace GHelper
//
checkGPUFix.AutoSize = true;
checkGPUFix.Dock = DockStyle.Top;
checkGPUFix.Location = new Point(20, 47);
checkGPUFix.Location = new Point(20, 5);
checkGPUFix.Margin = new Padding(4, 3, 4, 3);
checkGPUFix.Name = "checkGPUFix";
checkGPUFix.Padding = new Padding(3);
@@ -1181,29 +1164,15 @@ namespace GHelper
checkGPUFix.Text = "Enable GPU on shutdown (prevents issue with Eco mode)";
checkGPUFix.UseVisualStyleBackColor = true;
//
// checkFnLock
//
checkFnLock.AutoSize = true;
checkFnLock.Dock = DockStyle.Top;
checkFnLock.Location = new Point(20, 5);
checkFnLock.Margin = new Padding(4, 3, 4, 3);
checkFnLock.MaximumSize = new Size(800, 0);
checkFnLock.Name = "checkFnLock";
checkFnLock.Padding = new Padding(3);
checkFnLock.Size = new Size(800, 42);
checkFnLock.TabIndex = 1;
checkFnLock.Text = "Process Fn+F hotkeys without Fn";
checkFnLock.UseVisualStyleBackColor = true;
//
// panelPower
//
panelPower.Controls.Add(numericHibernateAfter);
panelPower.Controls.Add(labelHibernateAfter);
panelPower.Controls.Add(pictureHibernate);
panelPower.Dock = DockStyle.Top;
panelPower.Location = new Point(15, 1309);
panelPower.Location = new Point(15, 1225);
panelPower.Name = "panelPower";
panelPower.Size = new Size(983, 74);
panelPower.Size = new Size(983, 54);
panelPower.TabIndex = 4;
//
// numericHibernateAfter
@@ -1211,7 +1180,7 @@ namespace GHelper
numericHibernateAfter.AccessibleName = "Minutes till Hibernation in sleep";
numericHibernateAfter.Anchor = AnchorStyles.Top | AnchorStyles.Right;
numericHibernateAfter.Increment = new decimal(new int[] { 10, 0, 0, 0 });
numericHibernateAfter.Location = new Point(810, 21);
numericHibernateAfter.Location = new Point(810, 7);
numericHibernateAfter.Margin = new Padding(4, 3, 4, 3);
numericHibernateAfter.Maximum = new decimal(new int[] { 3000000, 0, 0, 0 });
numericHibernateAfter.Name = "numericHibernateAfter";
@@ -1221,7 +1190,7 @@ namespace GHelper
// labelHibernateAfter
//
labelHibernateAfter.AutoSize = true;
labelHibernateAfter.Location = new Point(59, 21);
labelHibernateAfter.Location = new Point(59, 10);
labelHibernateAfter.Margin = new Padding(4, 0, 4, 0);
labelHibernateAfter.Name = "labelHibernateAfter";
labelHibernateAfter.Size = new Size(457, 32);
@@ -1232,7 +1201,7 @@ namespace GHelper
//
pictureHibernate.BackgroundImage = Resources.icons8_hibernate_32;
pictureHibernate.BackgroundImageLayout = ImageLayout.Zoom;
pictureHibernate.Location = new Point(20, 21);
pictureHibernate.Location = new Point(20, 10);
pictureHibernate.Name = "pictureHibernate";
pictureHibernate.Size = new Size(32, 32);
pictureHibernate.TabIndex = 22;
@@ -1364,13 +1333,11 @@ namespace GHelper
private PictureBox pictureSettings;
private Label labelSettings;
private Panel panelSettings;
private CheckBox checkAutoApplyWindowsPowerMode;
private CheckBox checkTopmost;
private CheckBox checkNoOverdrive;
private CheckBox checkUSBC;
private CheckBox checkVariBright;
private CheckBox checkGpuApps;
private CheckBox checkFnLock;
private PictureBox pictureBacklight;
private Label labelBacklightTitle;
private PictureBox pictureService;

View File

@@ -118,8 +118,6 @@ namespace GHelper
checkNoOverdrive.Text = Properties.Strings.DisableOverdrive;
checkTopmost.Text = Properties.Strings.WindowTop;
checkUSBC.Text = Properties.Strings.OptimizedUSBC;
checkAutoApplyWindowsPowerMode.Text = Properties.Strings.ApplyWindowsPowerPlan;
checkFnLock.Text = Properties.Strings.FnLock;
checkAutoToggleClamshellMode.Text = Properties.Strings.ToggleClamshellMode;
labelBacklightKeyboard.Text = Properties.Strings.Keyboard;
@@ -294,9 +292,6 @@ namespace GHelper
checkUSBC.Checked = AppConfig.Is("optimized_usbc");
checkUSBC.CheckedChanged += CheckUSBC_CheckedChanged;
checkAutoApplyWindowsPowerMode.Checked = (AppConfig.Get("auto_apply_power_plan") != 0);
checkAutoApplyWindowsPowerMode.CheckedChanged += checkAutoApplyWindowsPowerMode_CheckedChanged;
sliderBrightness.Value = InputDispatcher.GetBacklight();
sliderBrightness.ValueChanged += SliderBrightness_ValueChanged;
@@ -313,17 +308,13 @@ namespace GHelper
checkGpuApps.Checked = AppConfig.Is("kill_gpu_apps");
checkGpuApps.CheckedChanged += CheckGpuApps_CheckedChanged;
checkFnLock.Checked = AppConfig.Is("fn_lock");
checkFnLock.CheckedChanged += CheckFnLock_CheckedChanged; ;
pictureHelp.Click += PictureHelp_Click;
buttonServices.Click += ButtonServices_Click;
pictureLog.Click += PictureLog_Click;
checkGPUFix.Visible = AppConfig.ContainsModel("GA402X");
checkGPUFix.Checked = AppConfig.Get("gpu_fix") != 0;
checkGPUFix.Visible = AppConfig.IsGPUFixNeeded();
checkGPUFix.Checked = AppConfig.IsGPUFix();
checkGPUFix.CheckedChanged += CheckGPUFix_CheckedChanged;
InitVariBright();
@@ -480,15 +471,6 @@ namespace GHelper
}
}
private void CheckFnLock_CheckedChanged(object? sender, EventArgs e)
{
int fnLock = checkFnLock.Checked ? 1 : 0;
AppConfig.Set("fn_lock", fnLock);
Program.acpi.DeviceSet(AsusACPI.FnLock, (fnLock == 1) ? 0 : 1, "FnLock");
Program.inputDispatcher.RegisterKeys();
}
private void CheckGpuApps_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("kill_gpu_apps", (checkGpuApps.Checked ? 1 : 0));
@@ -577,10 +559,6 @@ namespace GHelper
Left = Program.settingsForm.Left - Width - 5;
}
private void checkAutoApplyWindowsPowerMode_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("auto_apply_power_plan", checkAutoApplyWindowsPowerMode.Checked ? 1 : 0);
}
private void checkAutoToggleClamshellMode_CheckedChanged(object? sender, EventArgs e)
{

145
app/Fans.Designer.cs generated
View File

@@ -31,14 +31,14 @@ namespace GHelper
/// </summary>
private void InitializeComponent()
{
ChartArea chartArea1 = new ChartArea();
Title title1 = new Title();
ChartArea chartArea2 = new ChartArea();
Title title2 = new Title();
ChartArea chartArea3 = new ChartArea();
Title title3 = new Title();
ChartArea chartArea4 = new ChartArea();
Title title4 = new Title();
ChartArea chartArea9 = new ChartArea();
Title title9 = new Title();
ChartArea chartArea10 = new ChartArea();
Title title10 = new Title();
ChartArea chartArea11 = new ChartArea();
Title title11 = new Title();
ChartArea chartArea12 = new ChartArea();
Title title12 = new Title();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Fans));
panelFans = new Panel();
labelTip = new Label();
@@ -103,6 +103,8 @@ namespace GHelper
pictureBoxCPU = new PictureBox();
labelPowerLimits = new Label();
panelBoost = new Panel();
panelPowerMode = new Panel();
comboPowerMode = new RComboBox();
panelBoostTitle = new Panel();
pictureBoost = new PictureBox();
labelBoost = new Label();
@@ -131,6 +133,9 @@ namespace GHelper
buttonAdvanced = new RButton();
buttonGPU = new RButton();
buttonCPU = new RButton();
panelPowerModeTItle = new Panel();
picturePowerMode = new PictureBox();
labelPowerModeTitle = new Label();
panelFans.SuspendLayout();
tableFanCharts.SuspendLayout();
((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit();
@@ -165,6 +170,7 @@ namespace GHelper
panelTitleCPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBoxCPU).BeginInit();
panelBoost.SuspendLayout();
panelPowerMode.SuspendLayout();
panelBoostTitle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBoost).BeginInit();
panelGPU.SuspendLayout();
@@ -180,6 +186,8 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).BeginInit();
panelNav.SuspendLayout();
tableNav.SuspendLayout();
panelPowerModeTItle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)picturePowerMode).BeginInit();
SuspendLayout();
//
// panelFans
@@ -236,8 +244,8 @@ namespace GHelper
//
// chartGPU
//
chartArea1.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1);
chartArea9.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea9);
chartGPU.Dock = DockStyle.Fill;
chartGPU.Location = new Point(12, 491);
chartGPU.Margin = new Padding(2, 10, 2, 10);
@@ -245,13 +253,13 @@ namespace GHelper
chartGPU.Size = new Size(782, 461);
chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU";
title1.Name = "Title1";
chartGPU.Titles.Add(title1);
title9.Name = "Title1";
chartGPU.Titles.Add(title9);
//
// chartCPU
//
chartArea2.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea2);
chartArea10.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea10);
chartCPU.Dock = DockStyle.Fill;
chartCPU.Location = new Point(12, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10);
@@ -259,13 +267,13 @@ namespace GHelper
chartCPU.Size = new Size(782, 461);
chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU";
title2.Name = "Title1";
chartCPU.Titles.Add(title2);
title10.Name = "Title1";
chartCPU.Titles.Add(title10);
//
// chartXGM
//
chartArea3.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea3);
chartArea11.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea11);
chartXGM.Dock = DockStyle.Fill;
chartXGM.Location = new Point(12, 1453);
chartXGM.Margin = new Padding(2, 10, 2, 10);
@@ -273,14 +281,14 @@ namespace GHelper
chartXGM.Size = new Size(782, 464);
chartXGM.TabIndex = 14;
chartXGM.Text = "chartXGM";
title3.Name = "Title4";
chartXGM.Titles.Add(title3);
title11.Name = "Title4";
chartXGM.Titles.Add(title11);
chartXGM.Visible = false;
//
// chartMid
//
chartArea4.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea4);
chartArea12.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea12);
chartMid.Dock = DockStyle.Fill;
chartMid.Location = new Point(12, 972);
chartMid.Margin = new Padding(2, 10, 2, 10);
@@ -288,8 +296,8 @@ namespace GHelper
chartMid.Size = new Size(782, 461);
chartMid.TabIndex = 14;
chartMid.Text = "chartMid";
title4.Name = "Title3";
chartMid.Titles.Add(title4);
title12.Name = "Title3";
chartMid.Titles.Add(title12);
chartMid.Visible = false;
//
// panelTitleFans
@@ -491,7 +499,7 @@ namespace GHelper
panelAdvanced.Controls.Add(panelTemperature);
panelAdvanced.Controls.Add(panelTitleTemp);
panelAdvanced.Dock = DockStyle.Top;
panelAdvanced.Location = new Point(10, 1272);
panelAdvanced.Location = new Point(10, 1396);
panelAdvanced.Name = "panelAdvanced";
panelAdvanced.Size = new Size(520, 888);
panelAdvanced.TabIndex = 14;
@@ -786,11 +794,13 @@ namespace GHelper
panelPower.Controls.Add(panelTitleCPU);
panelPower.Controls.Add(panelBoost);
panelPower.Controls.Add(panelBoostTitle);
panelPower.Controls.Add(panelPowerMode);
panelPower.Controls.Add(panelPowerModeTItle);
panelPower.Dock = DockStyle.Top;
panelPower.Location = new Point(10, 640);
panelPower.Margin = new Padding(4);
panelPower.Name = "panelPower";
panelPower.Size = new Size(520, 632);
panelPower.Size = new Size(520, 756);
panelPower.TabIndex = 43;
//
// panelApplyPower
@@ -798,7 +808,7 @@ namespace GHelper
panelApplyPower.AutoSize = true;
panelApplyPower.Controls.Add(checkApplyPower);
panelApplyPower.Dock = DockStyle.Top;
panelApplyPower.Location = new Point(0, 556);
panelApplyPower.Location = new Point(0, 680);
panelApplyPower.Name = "panelApplyPower";
panelApplyPower.Padding = new Padding(15);
panelApplyPower.Size = new Size(520, 76);
@@ -825,7 +835,7 @@ namespace GHelper
panelB0.Controls.Add(labelLeftB0);
panelB0.Controls.Add(trackB0);
panelB0.Dock = DockStyle.Top;
panelB0.Location = new Point(0, 432);
panelB0.Location = new Point(0, 556);
panelB0.Margin = new Padding(4);
panelB0.MaximumSize = new Size(0, 124);
panelB0.Name = "panelB0";
@@ -874,7 +884,7 @@ namespace GHelper
panelC1.Controls.Add(labelLeftC1);
panelC1.Controls.Add(trackC1);
panelC1.Dock = DockStyle.Top;
panelC1.Location = new Point(0, 308);
panelC1.Location = new Point(0, 432);
panelC1.Margin = new Padding(4);
panelC1.MaximumSize = new Size(0, 124);
panelC1.Name = "panelC1";
@@ -923,7 +933,7 @@ namespace GHelper
panelA0.Controls.Add(labelLeftA0);
panelA0.Controls.Add(trackA0);
panelA0.Dock = DockStyle.Top;
panelA0.Location = new Point(0, 184);
panelA0.Location = new Point(0, 308);
panelA0.Margin = new Padding(4);
panelA0.MaximumSize = new Size(0, 124);
panelA0.Name = "panelA0";
@@ -971,7 +981,7 @@ namespace GHelper
panelTitleCPU.Controls.Add(pictureBoxCPU);
panelTitleCPU.Controls.Add(labelPowerLimits);
panelTitleCPU.Dock = DockStyle.Top;
panelTitleCPU.Location = new Point(0, 124);
panelTitleCPU.Location = new Point(0, 248);
panelTitleCPU.Margin = new Padding(4);
panelTitleCPU.Name = "panelTitleCPU";
panelTitleCPU.Size = new Size(520, 60);
@@ -1004,12 +1014,36 @@ namespace GHelper
//
panelBoost.Controls.Add(comboBoost);
panelBoost.Dock = DockStyle.Top;
panelBoost.Location = new Point(0, 60);
panelBoost.Location = new Point(0, 184);
panelBoost.Margin = new Padding(4);
panelBoost.Name = "panelBoost";
panelBoost.Size = new Size(520, 64);
panelBoost.TabIndex = 13;
//
// panelPowerMode
//
panelPowerMode.Controls.Add(comboPowerMode);
panelPowerMode.Dock = DockStyle.Top;
panelPowerMode.Location = new Point(0, 60);
panelPowerMode.Margin = new Padding(4);
panelPowerMode.Name = "panelPowerMode";
panelPowerMode.Size = new Size(520, 64);
panelPowerMode.TabIndex = 49;
//
// comboPowerMode
//
comboPowerMode.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
comboPowerMode.BorderColor = Color.White;
comboPowerMode.ButtonColor = Color.FromArgb(255, 255, 255);
comboPowerMode.DropDownStyle = ComboBoxStyle.DropDownList;
comboPowerMode.FormattingEnabled = true;
comboPowerMode.Items.AddRange(new object[] { "Disabled", "Enabled", "Aggressive", "Efficient Enabled", "Efficient Aggressive", "Aggressive at Guaranteed", "Efficient at Guaranteed" });
comboPowerMode.Location = new Point(13, 12);
comboPowerMode.Margin = new Padding(4);
comboPowerMode.Name = "comboPowerMode";
comboPowerMode.Size = new Size(329, 40);
comboPowerMode.TabIndex = 42;
//
// panelBoostTitle
//
panelBoostTitle.AutoSize = true;
@@ -1017,7 +1051,7 @@ namespace GHelper
panelBoostTitle.Controls.Add(pictureBoost);
panelBoostTitle.Controls.Add(labelBoost);
panelBoostTitle.Dock = DockStyle.Top;
panelBoostTitle.Location = new Point(0, 0);
panelBoostTitle.Location = new Point(0, 124);
panelBoostTitle.Margin = new Padding(4);
panelBoostTitle.Name = "panelBoostTitle";
panelBoostTitle.Size = new Size(520, 60);
@@ -1382,6 +1416,42 @@ namespace GHelper
buttonCPU.TextImageRelation = TextImageRelation.ImageBeforeText;
buttonCPU.UseVisualStyleBackColor = false;
//
// panelPowerModeTItle
//
panelPowerModeTItle.AutoSize = true;
panelPowerModeTItle.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelPowerModeTItle.Controls.Add(picturePowerMode);
panelPowerModeTItle.Controls.Add(labelPowerModeTitle);
panelPowerModeTItle.Dock = DockStyle.Top;
panelPowerModeTItle.Location = new Point(0, 0);
panelPowerModeTItle.Margin = new Padding(4);
panelPowerModeTItle.Name = "panelPowerModeTItle";
panelPowerModeTItle.Size = new Size(520, 60);
panelPowerModeTItle.TabIndex = 50;
//
// picturePowerMode
//
picturePowerMode.BackgroundImage = Properties.Resources.icons8_gauge_32;
picturePowerMode.BackgroundImageLayout = ImageLayout.Zoom;
picturePowerMode.InitialImage = null;
picturePowerMode.Location = new Point(10, 18);
picturePowerMode.Margin = new Padding(4, 2, 4, 10);
picturePowerMode.Name = "picturePowerMode";
picturePowerMode.Size = new Size(32, 32);
picturePowerMode.TabIndex = 40;
picturePowerMode.TabStop = false;
//
// labelPowerModeTitle
//
labelPowerModeTitle.AutoSize = true;
labelPowerModeTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelPowerModeTitle.Location = new Point(46, 18);
labelPowerModeTitle.Margin = new Padding(4, 0, 4, 0);
labelPowerModeTitle.Name = "labelPowerModeTitle";
labelPowerModeTitle.Size = new Size(271, 32);
labelPowerModeTitle.TabIndex = 39;
labelPowerModeTitle.Text = "Windows Power Mode";
//
// Fans
//
AutoScaleDimensions = new SizeF(192F, 192F);
@@ -1449,6 +1519,7 @@ namespace GHelper
panelTitleCPU.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureBoxCPU).EndInit();
panelBoost.ResumeLayout(false);
panelPowerMode.ResumeLayout(false);
panelBoostTitle.ResumeLayout(false);
panelBoostTitle.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureBoost).EndInit();
@@ -1471,6 +1542,9 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureGPU).EndInit();
panelNav.ResumeLayout(false);
tableNav.ResumeLayout(false);
panelPowerModeTItle.ResumeLayout(false);
panelPowerModeTItle.PerformLayout();
((System.ComponentModel.ISupportInitialize)picturePowerMode).EndInit();
ResumeLayout(false);
PerformLayout();
}
@@ -1568,5 +1642,10 @@ namespace GHelper
private TrackBar trackTemp;
private Panel panelAdvancedAlways;
private RCheckBox checkApplyUV;
private Panel panelPowerMode;
private RComboBox comboPowerMode;
private Panel panelPowerModeTItle;
private PictureBox picturePowerMode;
private Label labelPowerModeTitle;
}
}

View File

@@ -145,11 +145,17 @@ namespace GHelper
trackTemp.Minimum = RyzenControl.MinTemp;
trackTemp.Maximum = RyzenControl.MaxTemp;
comboPowerMode.DropDownStyle = ComboBoxStyle.DropDownList;
comboPowerMode.DataSource = new BindingSource(PowerNative.powerModes, null);
comboPowerMode.DisplayMember = "Value";
comboPowerMode.ValueMember = "Key";
FillModes();
InitAll();
comboBoost.SelectedValueChanged += ComboBoost_Changed;
comboPowerMode.SelectedValueChanged += ComboPowerMode_Changed;
comboModes.SelectionChangeCommitted += ComboModes_SelectedValueChanged;
comboModes.TextChanged += ComboModes_TextChanged;
@@ -201,7 +207,7 @@ namespace GHelper
InitMode();
InitFans();
InitPower();
InitBoost();
InitPowerPlan();
InitUV();
InitGPU();
}
@@ -512,7 +518,7 @@ namespace GHelper
if (percentage == 0) return "OFF";
int Max = MaxRPM;
if (device == AsusFan.XGM ) Max = 72;
if (device == AsusFan.XGM) Max = 72;
return (200 * Math.Round((float)(MinRPM * 100 + (Max - MinRPM) * percentage) / 200)).ToString() + unit;
}
@@ -594,11 +600,24 @@ namespace GHelper
}
public void InitBoost()
public void InitPowerPlan()
{
int boost = PowerNative.GetCPUBoost();
if (boost >= 0)
comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1);
string powerMode = PowerNative.GetPowerMode();
comboPowerMode.SelectedValue = powerMode;
}
private void ComboPowerMode_Changed(object? sender, EventArgs e)
{
string powerMode = (string)comboPowerMode.SelectedValue;
PowerNative.SetPowerMode(powerMode);
if (PowerNative.GetDefaultPowerMode(Modes.GetCurrentBase()) != powerMode)
AppConfig.SetMode("powermode", powerMode);
}
private void ComboBoost_Changed(object? sender, EventArgs e)
@@ -871,6 +890,8 @@ namespace GHelper
modeControl.ResetPerformanceMode();
InitPowerPlan();
if (Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();

View File

@@ -18,7 +18,7 @@
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>

View File

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

View File

@@ -131,7 +131,6 @@ namespace GHelper.Gpu
if (eco == 1)
{
/*
if (NvidiaSmi.GetDisplayActiveStatus())
{
@@ -190,7 +189,7 @@ namespace GHelper.Gpu
{
bool GpuAuto = AppConfig.Is("gpu_auto");
bool ForceGPU = AppConfig.ContainsModel("503") || AppConfig.Is("gpu_fix");
bool ForceGPU = AppConfig.ContainsModel("503");
int GpuMode = AppConfig.Get("gpu_mode");

View File

@@ -401,7 +401,7 @@ namespace GHelper.Input
}
}
static void ToggleFnLock()
public static void ToggleFnLock()
{
int fnLock = AppConfig.Is("fn_lock") ? 0 : 1;
AppConfig.Set("fn_lock", fnLock);
@@ -411,6 +411,8 @@ namespace GHelper.Input
else
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
Program.settingsForm.BeginInvoke(Program.settingsForm.VisualiseFnLock);
Program.toast.RunToast("Fn-Lock " + (fnLock == 1 ? "On" : "Off"), ToastIcon.FnLock);
}

View File

@@ -46,7 +46,12 @@ namespace GHelper.Mode
public void ResetPerformanceMode()
{
ResetRyzen();
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, Modes.GetCurrentBase(), "Mode");
// Default power mode
AppConfig.RemoveMode("powermode");
PowerNative.SetPowerMode(Modes.GetCurrentBase());
}
public void SetPerformanceMode(int mode = -1, bool notify = false)
@@ -76,18 +81,21 @@ namespace GHelper.Mode
AutoFans();
AutoPower(1000);
if (AppConfig.Get("auto_apply_power_plan") != 0)
{
if (AppConfig.GetModeString("scheme") is not null)
PowerNative.SetPowerScheme(AppConfig.GetModeString("scheme"));
else
PowerNative.SetPowerScheme(Modes.GetBase(mode));
}
// Power plan from config or defaulting to balanced
if (AppConfig.GetModeString("scheme") is not null)
PowerNative.SetPowerPlan(AppConfig.GetModeString("scheme"));
else
PowerNative.SetBalancedPowerPlan();
// Windows power mode
if (AppConfig.GetModeString("powermode") is not null)
PowerNative.SetPowerMode(AppConfig.GetModeString("powermode"));
else
PowerNative.SetPowerMode(Modes.GetBase(mode));
// CPU Boost setting override
if (AppConfig.GetMode("auto_boost") != -1)
{
PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost"));
}
//BatteryControl.SetBatteryChargeLimit();
@@ -280,35 +288,38 @@ namespace GHelper.Mode
public void SetGPUClocks(bool launchAsAdmin = true)
{
int gpu_core = AppConfig.GetMode("gpu_core");
int gpu_memory = AppConfig.GetMode("gpu_memory");
if (gpu_core == -1 && gpu_memory == -1) return;
//if ((gpu_core > -5 && gpu_core < 5) && (gpu_memory > -5 && gpu_memory < 5)) launchAsAdmin = false;
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) == 1) return;
if (HardwareControl.GpuControl is null) return;
if (!HardwareControl.GpuControl!.IsNvidia) return;
using NvidiaGpuControl nvControl = (NvidiaGpuControl)HardwareControl.GpuControl;
try
Task.Run(() =>
{
int getStatus = nvControl.GetClocks(out int current_core, out int current_memory);
if (getStatus != -1)
int gpu_core = AppConfig.GetMode("gpu_core");
int gpu_memory = AppConfig.GetMode("gpu_memory");
if (gpu_core == -1 && gpu_memory == -1) return;
//if ((gpu_core > -5 && gpu_core < 5) && (gpu_memory > -5 && gpu_memory < 5)) launchAsAdmin = false;
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) == 1) return;
if (HardwareControl.GpuControl is null) return;
if (!HardwareControl.GpuControl!.IsNvidia) return;
using NvidiaGpuControl nvControl = (NvidiaGpuControl)HardwareControl.GpuControl;
try
{
if (Math.Abs(gpu_core - current_core) < 5 && Math.Abs(gpu_memory - current_memory) < 5) return;
int getStatus = nvControl.GetClocks(out int current_core, out int current_memory);
if (getStatus != -1)
{
if (Math.Abs(gpu_core - current_core) < 5 && Math.Abs(gpu_memory - current_memory) < 5) return;
}
int setStatus = nvControl.SetClocks(gpu_core, gpu_memory);
if (launchAsAdmin && setStatus == -1) ProcessHelper.RunAsAdmin("gpu");
}
int setStatus = nvControl.SetClocks(gpu_core, gpu_memory);
if (launchAsAdmin && setStatus == -1) ProcessHelper.RunAsAdmin("gpu");
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
});
}
public void SetGPUPower()

View File

@@ -51,7 +51,8 @@
"gpu_memory",
"auto_boost",
"auto_apply",
"auto_apply_power"
"auto_apply_power",
"powermode"
};
foreach (string clean in cleanup)

View File

@@ -72,7 +72,24 @@ namespace GHelper.Mode
[DllImportAttribute("powrprof.dll", EntryPoint = "PowerSetActiveOverlayScheme")]
public static extern uint PowerSetActiveOverlayScheme(Guid OverlaySchemeGuid);
const string POWER_SILENT = "961cc777-2547-4f9d-8174-7d86181b8a7a";
const string POWER_BALANCED = "00000000-0000-0000-0000-000000000000";
const string POWER_TURBO = "ded574b5-45a0-4f42-8737-46345c09c238";
const string POWER_BETTERPERFORMANCE = "ded574b5-45a0-4f42-8737-46345c09c238";
static List<string> overlays = new() {
POWER_BALANCED,
POWER_TURBO,
POWER_SILENT,
POWER_BETTERPERFORMANCE
};
public static Dictionary<string, string> powerModes = new Dictionary<string, string>
{
{ POWER_SILENT, "Best Power Efficiency" },
{ POWER_BALANCED, "Balanced" },
{ POWER_TURBO, "Best Performance" },
};
static Guid GetActiveScheme()
{
IntPtr pActiveSchemeGuid;
@@ -122,51 +139,67 @@ namespace GHelper.Mode
Logger.WriteLine("Boost " + boost);
}
public static void SetPowerScheme(string scheme)
public static string GetPowerMode()
{
List<string> overlays = new() {
"00000000-0000-0000-0000-000000000000",
"ded574b5-45a0-4f42-8737-46345c09c238",
"961cc777-2547-4f9d-8174-7d86181b8a7a",
"3af9B8d9-7c97-431d-ad78-34a8bfea439f"
};
PowerGetEffectiveOverlayScheme(out Guid activeScheme);
return activeScheme.ToString();
}
public static void SetPowerMode(string scheme)
{
if (!overlays.Contains(scheme)) return;
Guid guidScheme = new Guid(scheme);
if (overlays.Contains(scheme))
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
if (status != 0 || activeScheme != guidScheme)
{
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
if (status != 0 || activeScheme != guidScheme)
{
PowerSetActiveOverlayScheme(guidScheme);
Logger.WriteLine("Power mode: " + scheme);
}
status = PowerSetActiveOverlayScheme(guidScheme);
Logger.WriteLine("Power Mode " + scheme + ":" + (status == 0 ? "OK" : status));
}
else
{
PowerSetActiveScheme(IntPtr.Zero, guidScheme);
Logger.WriteLine("Power plan: " + scheme);
}
}
public static void SetPowerScheme(int mode)
public static void SetBalancedPowerPlan()
{
Guid activeSchemeGuid = GetActiveScheme();
string balanced = "381b4222-f694-41f0-9685-ff5bb260df2e";
if (activeSchemeGuid.ToString() != balanced && !AppConfig.Is("skip_power_plan"))
{
SetPowerPlan(balanced);
}
}
public static void SetPowerPlan(string scheme)
{
// Skipping power modes
if (overlays.Contains(scheme)) return;
Guid guidScheme = new Guid(scheme);
uint status = PowerSetActiveScheme(IntPtr.Zero, guidScheme);
Logger.WriteLine("Power Plan " + scheme + ":" + (status == 0 ? "OK" : status));
}
public static string GetDefaultPowerMode(int mode)
{
switch (mode)
{
case 0: // balanced
SetPowerScheme("00000000-0000-0000-0000-000000000000");
break;
case 1: // turbo
SetPowerScheme("ded574b5-45a0-4f42-8737-46345c09c238");
break;
return POWER_TURBO;
case 2: //silent
SetPowerScheme("961cc777-2547-4f9d-8174-7d86181b8a7a");
break;
return POWER_SILENT;
default: // balanced
return POWER_BALANCED;
}
}
public static void SetPowerMode(int mode)
{
SetPowerMode(GetDefaultPowerMode(mode));
}
public static int GetLidAction(bool ac)
{
Guid activeSchemeGuid = GetActiveScheme();

View File

@@ -128,6 +128,7 @@ namespace GHelper
private static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
gpuControl.StandardModeFix();
BatteryControl.SetBatteryChargeLimit();
}
private static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
@@ -198,10 +199,12 @@ namespace GHelper
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
Logger.WriteLine("Power Mode:" + e.Mode.ToString());
if (e.Mode == PowerModes.Suspend) gpuControl.StandardModeFix();
if (e.Mode == PowerModes.Suspend)
{
Logger.WriteLine("Power Mode:" + e.Mode.ToString());
gpuControl.StandardModeFix();
}
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
SetAutoModes(true);

View File

@@ -565,7 +565,7 @@ namespace GHelper.Properties {
}
/// <summary>
/// Looks up a localized string similar to Download Update.
/// Looks up a localized string similar to Download.
/// </summary>
internal static string DownloadUpdate {
get {
@@ -1323,7 +1323,7 @@ namespace GHelper.Properties {
}
/// <summary>
/// Looks up a localized string similar to Something is using dGPU and preventing Eco mode. Restart dGPU in device manager? * Please proceed at your own risk..
/// Looks up a localized string similar to Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk).
/// </summary>
internal static string RestartGPU {
get {

View File

@@ -286,7 +286,7 @@
<value>Entlädt</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Updates herunterladen</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Treiber und Software</value>
@@ -374,6 +374,9 @@ Trotzdem fortfahren?</value>
<data name="GPUTempTarget" xml:space="preserve">
<value>Maximale GPU Temperatur</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>Hoch</value>
</data>
@@ -537,7 +540,7 @@ Trotzdem fortfahren?</value>
<value>Schließen</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>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>U/Min</value>

View File

@@ -286,7 +286,7 @@
<value>Descargando</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Descargar actualización</value>
<value>Descargar</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers y Software</value>
@@ -374,6 +374,9 @@
<data name="GPUTempTarget" xml:space="preserve">
<value>Temperatura objetivo</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutos hasta hibernación en suspensión con batería (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>Alto</value>
</data>
@@ -537,7 +540,7 @@
<value>Quitar</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Algo está usando la dGPU e impide usar Modo Eco. ¿Reiniciar dGPU en administrador de dispositivos? * Proceda bajo su propio riesgo.</value>
<value>Algo está usando la dGPU e impide el modo Eco. ¿Reiniciar dGPU en el administrador de dispositivos? (Proceda bajo su propio riesgo)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>

View File

@@ -286,7 +286,7 @@
<value>Taux décharge </value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Télécharger la mise à jour</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Pilotes et Logiciels</value>
@@ -374,6 +374,9 @@ Voulez-vous continuer ?</value>
<data name="GPUTempTarget" xml:space="preserve">
<value>Température cible</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>High</value>
</data>
@@ -537,7 +540,7 @@ Voulez-vous continuer ?</value>
<value>Quitter</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Un processus utilisant le dGPU empêche le passage en mode Éco. Redémarrer le dGPU ? * Procédez à vos risques.</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value> RPM</value>

View File

@@ -286,7 +286,7 @@
<value>Merülés</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Frissítés letöltése</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Illesztőprogramok és alkalmazások</value>
@@ -374,6 +374,9 @@ Do you still want to continue?</value>
<data name="GPUTempTarget" xml:space="preserve">
<value>Célhőmérséklet</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>High</value>
</data>
@@ -537,7 +540,7 @@ Do you still want to continue?</value>
<value>Bezárás</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Valami használja még a dGPU-t, ezzel megakadályozva az Eco móda lépést. Újraindítsuk a dGPU-t eszközkezelőben? * Kérjük, saját felelősségére folytassa.</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>Fordulatszám</value>

View File

@@ -163,28 +163,28 @@
<value>Servizi Asus in Esecuzione</value>
</data>
<data name="AuraBatteryState" xml:space="preserve">
<value>Battery State</value>
<value>Stato Batteria</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Respiro</value>
</data>
<data name="AuraClockwise" xml:space="preserve">
<value>Clockwise</value>
<value>Senso Orario</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Ciclo Colori</value>
</data>
<data name="AuraComet" xml:space="preserve">
<value>Comet</value>
<value>Cometa</value>
</data>
<data name="AuraCounterClockwise" xml:space="preserve">
<value>Counterclockwise</value>
<value>Senso Antiorario</value>
</data>
<data name="AuraFast" xml:space="preserve">
<value>Veloce</value>
</data>
<data name="AuraLightingMode" xml:space="preserve">
<value>Lighting Mode</value>
<value>Modalità Illuminazione</value>
</data>
<data name="AuraNormal" xml:space="preserve">
<value>Normale</value>
@@ -193,10 +193,10 @@
<value>Arcobaleno</value>
</data>
<data name="AuraRandomColor" xml:space="preserve">
<value>Random</value>
<value>Casuale</value>
</data>
<data name="AuraReact" xml:space="preserve">
<value>React</value>
<value>Reazione</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Lenta</value>
@@ -208,7 +208,7 @@
<value>Strobo</value>
</data>
<data name="AuraZoneAll" xml:space="preserve">
<value>All</value>
<value>Tutte</value>
</data>
<data name="AuraZoneDock" xml:space="preserve">
<value>Dock</value>
@@ -217,7 +217,7 @@
<value>Logo</value>
</data>
<data name="AuraZoneScroll" xml:space="preserve">
<value>Scrollwheel</value>
<value>Rotellina</value>
</data>
<data name="AuraZoneUnderglow" xml:space="preserve">
<value>Underglow</value>
@@ -241,7 +241,7 @@
<value>Bilanciato</value>
</data>
<data name="BatteryCharge" xml:space="preserve">
<value>Charge</value>
<value>Carica</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Limite Ricarica Batteria</value>
@@ -286,7 +286,7 @@
<value>Scaricamento</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Scarica aggiornamento</value>
<value>Scarica</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Driver e Software</value>
@@ -306,7 +306,7 @@ Sei sicuro di voler continuare?</value>
<value>Modalità schermo NVIDIA non impostata su Optimus</value>
</data>
<data name="EnergySettings" xml:space="preserve">
<value>Energy Settings</value>
<value>Risparmio Energia</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Extra</value>
@@ -374,8 +374,11 @@ Sei sicuro di voler continuare?</value>
<data name="GPUTempTarget" xml:space="preserve">
<value>Temperatura Target</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Iberna dopo X minuti se alimentato a batteria (0 - ACCESO)</value>
</data>
<data name="High" xml:space="preserve">
<value>High</value>
<value>Elevato</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Associazione Tasti</value>
@@ -402,13 +405,13 @@ Sei sicuro di voler continuare?</value>
<value>Barra Luminosa</value>
</data>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
<value>Illuminazione</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="Low" xml:space="preserve">
<value>Low</value>
<value>Basso</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>Visualizzatore Audio</value>
@@ -444,31 +447,31 @@ Sei sicuro di voler continuare?</value>
<value>60Hz refresh rate per risparmiare batteria</value>
</data>
<data name="Minute" xml:space="preserve">
<value>Minute</value>
<value>Minuto</value>
</data>
<data name="Minutes" xml:space="preserve">
<value>Minutes</value>
<value>Minuti</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>Auto Power Off After</value>
<value>Auto-disattivazione dopo</value>
</data>
<data name="MouseButtonResponse" xml:space="preserve">
<value>Button Response</value>
<value>Risposta Tasto Mouse</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>Lift Off Distance</value>
</data>
<data name="MouseLowBatteryWarning" xml:space="preserve">
<value>Low Battery Warning at</value>
<value>Avviso Batteria Mouse in Esaurimento</value>
</data>
<data name="MousePerformance" xml:space="preserve">
<value>Performance</value>
<value>Prestazioni</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Synchronize with mouse</value>
<value>Sincronizza con Mouse</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multizona</value>
@@ -477,7 +480,7 @@ Sei sicuro di voler continuare?</value>
<value>Silenzia microfono</value>
</data>
<data name="Never" xml:space="preserve">
<value>Never</value>
<value>Mai</value>
</data>
<data name="NewUpdates" xml:space="preserve">
<value>Nuovi aggiornamenti</value>
@@ -486,7 +489,7 @@ Sei sicuro di voler continuare?</value>
<value>Sistema aggiornato</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Not Connected</value>
<value>Non Connesso</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Apri G-Helper</value>
@@ -510,7 +513,7 @@ Sei sicuro di voler continuare?</value>
<value>Profilo</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Peripherals</value>
<value>Periferiche</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Immagine / Gif</value>
@@ -531,13 +534,13 @@ Sei sicuro di voler continuare?</value>
<value>PrintScreen</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profile</value>
<value>Profilo</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Esci</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Qualcosa sta utilizzando la dGPU e impedendo la modalità Eco. Riavviare la dGPU da Gestione dispositivi? * Procedere a proprio rischio e pericolo.</value>
<value>Qualcosa sta utilizzando la dGPU e impedisce il passaggio alla modalità Eco. Vuoi che G-Helper provi a riavviare la dGPU in gestione dispositivi? (Procedi a tuo rischio)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>

View File

@@ -286,7 +286,7 @@
<value>방전 중</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>업데이트 다운로드</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>드라이버와 소프트웨어</value>
@@ -374,6 +374,9 @@
<data name="GPUTempTarget" xml:space="preserve">
<value>목표 온도</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>High</value>
</data>
@@ -537,7 +540,7 @@
<value>종료</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>dGPU가 사용중이기 때문에 Eco 모드로 전환할 수 없습니다. 장치 관리자에서 dGPU를 재시작하시겠습니까?</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>

View File

@@ -286,7 +286,7 @@
<value>Iškrovimas</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Atsisiųsti naujinimą</value>
<value>Atsisiųsti</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Tvarkyklės ir programinė įranga</value>
@@ -374,6 +374,9 @@ Vis tiek norite tęsti?</value>
<data name="GPUTempTarget" xml:space="preserve">
<value>Temperatūros tikslas</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutės iki miego su akumuliatoriumi (0 IŠJUNGTA)</value>
</data>
<data name="High" xml:space="preserve">
<value>Aukštas</value>
</data>
@@ -537,7 +540,7 @@ Vis tiek norite tęsti?</value>
<value>Išeiti</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Kažkas naudoja dGPU ir neleidžia nustatyti ekonomiško režimo. Iš naujo paleisti dGPU įrenginių tvarkytuvėje? * Tęskite savo rizika.</value>
<value>Kažkas naudoja dGPU ir neleidžia įjungti ekonomiško režimo. Norite leisti G-Helper bandyti iš naujo paleisti dGPU įrenginių tvarkytuvėje? (Tęskite savo rizika)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>

View File

@@ -286,7 +286,7 @@
<value>Zużycie mocy</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Pobierz aktualizację</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Sterowniki i oprogramowanie</value>
@@ -374,6 +374,9 @@ Nadal chcesz kontynuować?</value>
<data name="GPUTempTarget" xml:space="preserve">
<value>Temperatura docelowa</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>Wysoka</value>
</data>
@@ -537,7 +540,7 @@ Nadal chcesz kontynuować?</value>
<value>Zamknij</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Coś korzysta z dedykowanego GPU i uniemożliwia włączenie trybu Eco. Zresetować dedykowany GPU w Menadżerze Urządzeń? * Używaj na własną odpowiedzialność</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>

View File

@@ -286,7 +286,7 @@
<value>Descarregando</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Baixar a atualização</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers and Software</value>
@@ -374,6 +374,9 @@ Do you still want to continue?</value>
<data name="GPUTempTarget" xml:space="preserve">
<value>Alvo de temperatura</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>High</value>
</data>
@@ -537,7 +540,7 @@ Do you still want to continue?</value>
<value>Sair</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Algum processo está usando o dGPU e impedindo o modo Econômico. Reinicialize o dGPU no gerenciador de dispositivos. Por favor, proceda por sua conta e risco. </value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>

View File

@@ -286,7 +286,7 @@
<value>Discharging</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Download Update</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers and Software</value>
@@ -540,7 +540,7 @@ Do you still want to continue?</value>
<value>Quit</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Something is using dGPU and preventing Eco mode. Restart dGPU in device manager? * Please proceed at your own risk.</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>

View File

@@ -286,7 +286,7 @@
<value>Se descarcă</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Descărcați actualizarea</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers și Aplicații</value>
@@ -374,6 +374,9 @@
<data name="GPUTempTarget" xml:space="preserve">
<value>Temperatura țintă</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>High</value>
</data>
@@ -537,7 +540,7 @@
<value>Închide</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>O aplicație folosește dGPU și previne pornirea modului Eco. Reporniți dGPU în device manager? * Continuați pe propriul risc.</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>

View File

@@ -286,7 +286,7 @@
<value>Pil boşalıyor</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Güncelleştirmeyi İndir</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers and Software</value>
@@ -374,6 +374,9 @@ Do you still want to continue?</value>
<data name="GPUTempTarget" xml:space="preserve">
<value>Temperature Target</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>High</value>
</data>
@@ -537,7 +540,7 @@ Do you still want to continue?</value>
<value>Çıkış Yap</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Something is using dGPU and preventing Eco mode. Restart dGPU in device manager? * Please proceed at your own risk.</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>

View File

@@ -286,7 +286,7 @@
<value>Розрядка</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Завантажити</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Драйвери та програми</value>
@@ -374,6 +374,9 @@
<data name="GPUTempTarget" xml:space="preserve">
<value>Temperature Target</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>Висока</value>
</data>
@@ -537,7 +540,7 @@
<value>Вихід</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Щось використовує dGPU та не дає перейти в режимі Еко. Перезапустити dGPU у менеджері пристроїв? * Будь ласка, продовжуйте на свій страх і ризик.</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>Оберти</value>

View File

@@ -286,7 +286,7 @@
<value>Đang không sạc</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Tải xuống bản cập nhật</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Driver và phần mềm</value>
@@ -374,6 +374,9 @@ Do you still want to continue?</value>
<data name="GPUTempTarget" xml:space="preserve">
<value>Nhiệt độ đích</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>Minutes till Hibernation in sleep on battery (0 - OFF)</value>
</data>
<data name="High" xml:space="preserve">
<value>High</value>
</data>
@@ -537,7 +540,7 @@ Do you still want to continue?</value>
<value>Thoát</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Không thể chuyển về Chế độ Tiết kiệm do có gì đó đang dùng GPU rời. Khởi động lại GPU rời trong Quản lý Thiết bị? * Bạn sẽ chịu mọi rủi ro.</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>VTP</value>

View File

@@ -286,7 +286,7 @@
<value>正在放电</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>下载更新</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>驱动程序和软件</value>
@@ -374,6 +374,9 @@
<data name="GPUTempTarget" xml:space="preserve">
<value>温度目标</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>在使用电池时几分钟后进入休眠状态 (0 - 关闭)</value>
</data>
<data name="High" xml:space="preserve">
<value>高</value>
</data>
@@ -537,7 +540,7 @@
<value>退出</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>有程序正在使用独立显卡阻止进入节能模式。要在设备管理器中重新启动dGPU 吗?* 请自行承担风险。</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>转/分钟</value>

View File

@@ -286,7 +286,7 @@
<value>正在釋放電力</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>下載更新</value>
<value>Download</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>驅動程式與軟體</value>
@@ -374,6 +374,9 @@
<data name="GPUTempTarget" xml:space="preserve">
<value>GPU溫度上限</value>
</data>
<data name="HibernateAfter" xml:space="preserve">
<value>使用電池下何時進入休眠(0=關閉此功能)</value>
</data>
<data name="High" xml:space="preserve">
<value>高</value>
</data>
@@ -537,7 +540,7 @@
<value>退出</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否在裝置管理員中重啟獨顯? * 請自行評估風險</value>
<value>Something is using dGPU and preventing Eco mode. Let G-Helper try to restart dGPU in device manager? (Please proceed at your own risk)</value>
</data>
<data name="RPM" xml:space="preserve">
<value>每分鐘轉數</value>

View File

@@ -94,6 +94,7 @@ namespace GHelper
buttonKeyboardColor = new RButton();
comboKeyboard = new RComboBox();
panelKeyboardTitle = new Panel();
buttonFnLock = new RButton();
pictureKeyboard = new PictureBox();
labelKeyboard = new Label();
panelVersion = new Panel();
@@ -1173,15 +1174,37 @@ namespace GHelper
//
// panelKeyboardTitle
//
panelKeyboardTitle.Controls.Add(buttonFnLock);
panelKeyboardTitle.Controls.Add(pictureKeyboard);
panelKeyboardTitle.Controls.Add(labelKeyboard);
panelKeyboardTitle.Dock = DockStyle.Top;
panelKeyboardTitle.Location = new Point(20, 20);
panelKeyboardTitle.Margin = new Padding(4);
panelKeyboardTitle.Margin = new Padding(0);
panelKeyboardTitle.Name = "panelKeyboardTitle";
panelKeyboardTitle.Padding = new Padding(0, 2, 4, 2);
panelKeyboardTitle.Size = new Size(787, 40);
panelKeyboardTitle.TabIndex = 40;
//
// buttonFnLock
//
buttonFnLock.Activated = false;
buttonFnLock.BackColor = SystemColors.ControlLight;
buttonFnLock.BorderColor = Color.Transparent;
buttonFnLock.BorderRadius = 2;
buttonFnLock.Dock = DockStyle.Right;
buttonFnLock.FlatAppearance.BorderSize = 0;
buttonFnLock.FlatStyle = FlatStyle.Flat;
buttonFnLock.Font = new Font("Segoe UI", 7.125F, FontStyle.Bold, GraphicsUnit.Point);
buttonFnLock.ForeColor = SystemColors.ControlDark;
buttonFnLock.Location = new Point(676, 2);
buttonFnLock.Margin = new Padding(0);
buttonFnLock.Name = "buttonFnLock";
buttonFnLock.Secondary = true;
buttonFnLock.Size = new Size(107, 36);
buttonFnLock.TabIndex = 4;
buttonFnLock.Text = "FN-Lock";
buttonFnLock.UseVisualStyleBackColor = false;
//
// pictureKeyboard
//
pictureKeyboard.BackgroundImage = Properties.Resources.icons8_keyboard_32__1_;
@@ -1197,7 +1220,7 @@ namespace GHelper
//
labelKeyboard.AutoSize = true;
labelKeyboard.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelKeyboard.Location = new Point(44, 0);
labelKeyboard.Location = new Point(40, -2);
labelKeyboard.Margin = new Padding(8, 0, 8, 0);
labelKeyboard.Name = "labelKeyboard";
labelKeyboard.Size = new Size(210, 32);
@@ -1526,5 +1549,6 @@ namespace GHelper
private RButton buttonKeyboard;
private RButton buttonUpdates;
private Label labelCharge;
private RButton buttonFnLock;
}
}

View File

@@ -196,9 +196,13 @@ namespace GHelper
this.Resize += SettingsForm_Resize;
SetContextMenu();
VisualiseFnLock();
buttonFnLock.Click += ButtonFnLock_Click;
panelPerformance.Focus();
}
private void SettingsForm_Resize(object? sender, EventArgs e)
{
Left = Screen.FromControl(this).WorkingArea.Width - 10 - Width;
@@ -633,7 +637,7 @@ namespace GHelper
comboKeyboard.SelectedValueChanged += ComboKeyboard_SelectedValueChanged;
if (AppConfig.NoAuraColor())
if (AppConfig.IsSingleColor())
{
panelColor.Visible = false;
}
@@ -1194,6 +1198,28 @@ namespace GHelper
}
public void VisualiseFnLock()
{
if (AppConfig.Is("fn_lock"))
{
buttonFnLock.BackColor = colorStandard;
buttonFnLock.ForeColor = SystemColors.ControlLightLight;
}
else
{
buttonFnLock.BackColor = buttonSecond;
buttonFnLock.ForeColor = SystemColors.ControlDark;
}
}
private void ButtonFnLock_Click(object? sender, EventArgs e)
{
InputDispatcher.ToggleFnLock();
}
}

View File

@@ -18,7 +18,7 @@
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>

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)](https://GitHub.com/seerge/g-helper/releases/)
[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total.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/) <sup> Language: English | <a href="https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md">[中文]</a></sup>
[![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/) <sup> Language: English | <a href="https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md">[中文]</a></sup>
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat and unnecessary services. Works on all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, VivoBook and many more!
@@ -52,13 +52,15 @@ _To keep auto switching and hotkeys working the app needs to stay running in the
### :rocket: Performance Modes
<img align="right" width="200" src="https://github.com/seerge/g-helper/assets/5920850/3e119674-db8d-486b-aa65-2bf9b61f9aa6">
<img align="right" width="300" src="https://github.com/seerge/g-helper/assets/5920850/3e119674-db8d-486b-aa65-2bf9b61f9aa6">
All Modes are **baked in BIOS** along with default fan curves and power limits. They are the **same** as in the Armoury Crate.
All Modes are **baked in BIOS** along with default fan curves and power limits and they are the **same** as in the Armoury Crate.
1. **Silent** in BIOS + **Best power efficiency** setting in Windows
2. **Balanced** (or Performance as it's called in AC) in BIOS + **Balanced** setting in Windows
3. **Turbo** in BIOS + **Best performance** setting in Windows
Each BIOS mode is paired with matching Windows Power Mode. If you don't want app to set Power Modes uncheck ``Extra``->``Auto adjust Windows Power Modes``
1. **Silent** in BIOS + **Best power efficiency** power mode
2. **Balanced** (Performance in AC) in BIOS + **Balanced** power mode
3. **Turbo** in BIOS + **Best performance** power mode
### :video_game: GPU Modes
@@ -218,7 +220,10 @@ _Make sure to keep json structure (i.e. not to break it with extra or missing co
By default the app will use your windows language setting. But you can set language manually (if it supported of course)
``"language" : "en"`` (by replacing "en" with language of your choice)
```
"language" : "en",
```
(by replacing "en" with language of your choice)
### Custom windows power plans with each mode
@@ -234,25 +239,6 @@ Default behavior is :
"scheme_2": "961cc777-2547-4f9d-8174-7d86181b8a7a",
```
### Custom hotkey actions
Select ``Custom`` next to appropriate hotkey under ``Extra`` settings and do one of the following:
1. To run any custom application - put a full path to exe into "action" text field, for example:
``C:\Program Files\EA Games\Battlefield 2042\BF2042.exe``
2. To simulate any windows key - put appropriate keycode into the "action" field, for example ``0x2C`` for Print Screen.
Full list of keycodes https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
![Screenshot 2023-07-17 192155](https://github.com/seerge/g-helper/assets/5920850/e450e124-1589-4787-bce8-7c37ffe72fbd)
### Force Standard mode on shutdown / hibernation
In some rare cases G14 2023 seem to have issues with enabling / disabling dGPU - i.e. Eco mode. Till we wait for a fix from asus on BIOS level, one of the proposed solutions is to always shutdown the laptop in Standard mode (then everything seems to work fine). To enable "forced" Standard mode on shutdown add following line config
```
"gpu_fix" : 1,
```
### Disable OSD
Disable app's OSD (for performance modes, keyboard backlight, etc.)
```
@@ -265,11 +251,41 @@ Disable app's OSD (for performance modes, keyboard backlight, etc.)
- ``Ctrl + M1 / M2`` - Screen brightness Down / Up
- ``Shift + M1 / M2`` - Backlight brightness Down / Up
If you don't want this bindings to work you can add ``"skip_hotkeys":1,``
If you don't want this bindings to work you can add
```
"skip_hotkeys":1,
```
### Keybinding to toggle performance modes (on external keyboards)
### Toggle Performance Mode key binding
By default the app will toggle performance modes with Ctr+Shift+F5. You can change this binding by adding ``"keybind_profile": 116`` in config.json (under ``%AppData%\GHelper``), where 116 is [numerical code for desired key](https://www.oreilly.com/library/view/javascript-dhtml/9780596514082/apb.html). Put 0 to completely disable this binding.
To change binding for Toggle Performance Modes to ``Ctrl + Shift + KEY``
```
"keybind_profile": 116,
```
Where 116 is [numerical code for desired key](https://www.oreilly.com/library/view/javascript-dhtml/9780596514082/apb.html). Put 0 to completely disable this binding.
### Higher Maximum GPU Clock / Memory Offsets
By default under GPU section you can set up to +250/+250 for Core and Memory Clock Offset. To increase this value:
```
"max_gpu_core": 300,
"max_gpu_memory": 1500,
```
### Custom hotkey actions
Select ``Custom`` next to appropriate hotkey under ``Extra`` settings and do one of the following:
1. To run any custom application - put a full path to exe into "action" text field, for example:
``C:\Program Files\EA Games\Battlefield 2042\BF2042.exe``
2. To simulate any windows key - put appropriate keycode into the "action" field, for example ``0x2C`` for Print Screen.
Full list of keycodes https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
![Screenshot 2023-07-17 192155](https://github.com/seerge/g-helper/assets/5920850/e450e124-1589-4787-bce8-7c37ffe72fbd)
------------