Compare commits

...

63 Commits

Author SHA1 Message Date
Serge
f983bdac42 Updates fix 2024-04-15 00:17:00 +02:00
Serge
04143abf7c Updates fix 2024-04-15 00:05:43 +02:00
Serge
b219ff5af4 Updates tweak 2024-04-14 23:25:10 +02:00
Serge
df20fa63a9 Clock reset fix 2024-04-14 22:46:14 +02:00
Serge
501dcb3235 Updates UI tweaks 2024-04-14 15:46:02 +02:00
Serge
322c5dd7c5 Updates section fix 2024-04-14 15:20:47 +02:00
Serge
f68b9218b6 Keyboard control for power sliders 2024-04-14 14:49:11 +02:00
Serge
f35ad1804c Power limits UI tweaks 2024-04-14 14:38:11 +02:00
Serge
5739b63225 Mouse Events support https://github.com/seerge/g-helper/issues/2430 2024-04-14 12:16:35 +02:00
Serge
4cdfb6710b Merge branch 'main' of https://github.com/seerge/g-helper 2024-04-13 15:52:32 +02:00
Serge
db9e4d75cb Power limits improvement for https://github.com/seerge/g-helper/issues/2429 https://github.com/seerge/g-helper/issues/2429 2024-04-13 15:52:29 +02:00
Serge
2d52345f11 Update README.md 2024-04-11 23:49:56 +02:00
Serge
64745ca01e Aura tweaks 2024-04-11 20:05:21 +02:00
Serge
4b42106c31 Added G614J / G814J to the list of devices that require fans curve to be applied in order to make custom power liimits work 2024-04-11 15:06:00 +02:00
Serge
387e869833 UI Tweaks 2024-04-11 13:05:41 +02:00
Serge
2a8e24bc74 Merge branch 'main' of https://github.com/seerge/g-helper 2024-04-11 11:55:19 +02:00
Serge
5c000c0bb0 Typo fix 2024-04-11 11:55:17 +02:00
Serge
1f22887197 Update README.md 2024-04-10 12:17:06 +02:00
Serge
a3913e0ea8 Update README.md 2024-04-10 12:16:40 +02:00
Serge
2aa34edfb2 Version bump 2024-04-07 13:56:02 +02:00
Serge
d7fe4a3bee ModeToggle delay https://github.com/seerge/g-helper/issues/2391 2024-04-05 14:50:21 +02:00
Serge
f072dbe020 Refresh rate hotkey https://github.com/seerge/g-helper/issues/2389 2024-04-05 14:06:59 +02:00
Serge
ccfd514081 Merge branch 'main' of https://github.com/seerge/g-helper 2024-04-05 13:53:28 +02:00
Serge
558f8b2cc0 Slash lightning tweaks https://github.com/seerge/g-helper/issues/2381 2024-04-05 13:53:25 +02:00
Serge
bbf4c10a2e New Crowdin updates (#2383)
* New translations strings.resx (Turkish)

* New translations strings.resx (Turkish)
2024-04-04 17:41:43 +02:00
Serge
fe4e2ea478 New Crowdin updates (#2382)
* New translations strings.resx (Turkish)

* New translations strings.resx (Turkish)
2024-04-04 13:00:03 +02:00
Serge
8d7108bc1e New translations strings.resx (Spanish) (#2374) 2024-04-03 13:23:46 +02:00
Serge
3e28d3f027 New Crowdin updates (#2369)
* New translations strings.resx (Polish)

* New translations strings.resx (French)
2024-04-03 09:52:47 +02:00
Serge
0e42f7955e New translations strings.resx (German) (#2367) 2024-04-02 20:26:11 +02:00
Serge
fff3c2924e Corrected vivobook dimming 2024-04-02 18:15:38 +02:00
Serge
65716048ff Merge branch 'main' of https://github.com/seerge/g-helper 2024-04-02 14:48:30 +02:00
Serge
2e0eed3ab9 Dimming hotkeys for Vivobooks 2024-04-02 14:48:27 +02:00
Serge
bde76ead7e New translations strings.resx (Chinese Simplified) (#2363) 2024-04-02 10:52:34 +02:00
Serge
ebb8de4103 UI tweaks 2024-04-01 18:33:24 +02:00
Serge
8a4d553591 UI Tweaks 2024-04-01 18:24:51 +02:00
Serge
c25ec71104 Merge branch 'main' of https://github.com/seerge/g-helper 2024-04-01 18:23:21 +02:00
Serge
6a9cf45490 Aura fix for GU502 https://github.com/seerge/g-helper/issues/2359 2024-04-01 18:23:19 +02:00
Serge
11da574c48 New Crowdin updates (#2356)
* New translations strings.resx (Romanian)

* New translations strings.resx (French)

* New translations strings.resx (Spanish)

* New translations strings.resx (German)

* New translations strings.resx (Hungarian)

* New translations strings.resx (Italian)

* New translations strings.resx (Korean)

* New translations strings.resx (Lithuanian)

* New translations strings.resx (Polish)

* New translations strings.resx (Portuguese)

* New translations strings.resx (Turkish)

* New translations strings.resx (Ukrainian)

* New translations strings.resx (Chinese Simplified)

* New translations strings.resx (Chinese Traditional)

* New translations strings.resx (Vietnamese)

* New translations strings.resx (Portuguese, Brazilian)

* New translations strings.resx (Indonesian)
2024-04-01 16:12:19 +02:00
Serge
98a22802a0 Version bump 2024-04-01 15:56:48 +02:00
Serge
5594be868b Cleanup 2024-04-01 15:23:17 +02:00
Serge
13c2e725fa Ryzen power cleanup 2024-04-01 15:08:38 +02:00
Serge
11e0dc2df3 Reapply timer 2024-04-01 14:55:00 +02:00
Serge
6758bde975 Re-apply ryzen power limits for old models https://github.com/seerge/g-helper/issues/2355 2024-04-01 14:46:36 +02:00
Serge
ed92dd236f SPPT tweak for old devices https://github.com/seerge/g-helper/issues/2355 2024-04-01 14:31:28 +02:00
Serge
3fc5d6a124 Added option to lock screen https://github.com/seerge/g-helper/issues/2352 2024-04-01 14:22:29 +02:00
Serge
351566e24a Nvidia-smi tweaks 2024-04-01 14:14:28 +02:00
Serge
65b40a4f7a Disregard inadequate nvidia-smi readings for GPU power 2024-04-01 14:03:17 +02:00
Serge
e2a8688581 UI Tweaks 2024-04-01 12:16:25 +02:00
Serge
9445c1c60b Aura tweaks for Strix 2024 https://github.com/seerge/g-helper/issues/2344 2024-04-01 11:23:58 +02:00
Serge
9be602b230 Minor tweaks 2024-04-01 11:23:19 +02:00
Serge
2f83ae7cf6 Correct BIOS versions for swapped fan curves 2024-03-31 22:32:28 +02:00
Serge
ead49d117e UI Tweaks 2024-03-31 20:13:26 +02:00
Serge
9c0e2b4123 UI Tweaks 2024-03-31 20:09:30 +02:00
Serge
0355ca1420 Visual modes for Vivobooks https://github.com/seerge/g-helper/issues/2342 2024-03-31 19:25:01 +02:00
Serge
b5274ae9be Vivobook Visual modes and gamuts https://github.com/seerge/g-helper/issues/2342 2024-03-31 16:42:05 +02:00
Serge
0fc261cfa7 Battery report cleanup 2024-03-31 11:58:01 +02:00
Serge
efa2f0760a Battery report tweaks https://github.com/seerge/g-helper/issues/2311 2024-03-31 11:54:56 +02:00
Serge
822391c98f Added S15 OLED https://github.com/seerge/g-helper/issues/2342 2024-03-31 11:39:37 +02:00
Serge
22ffa19114 Merge branch 'main' of https://github.com/seerge/g-helper 2024-03-30 20:23:26 +01:00
Serge
af90645d6d Ally UI fix https://github.com/seerge/g-helper/issues/2341 2024-03-30 20:23:24 +01:00
Serge
a5590a9ed6 New Crowdin updates (#2323)
* New translations strings.resx (Polish)

* New translations strings.resx (Ukrainian)
2024-03-30 18:26:40 +01:00
Serge
ed8f056c6e Minor UI fix https://github.com/seerge/g-helper/issues/2339 2024-03-30 16:23:30 +01:00
Serge
0b2c962386 Maximize button for Fans+Power https://github.com/seerge/g-helper/issues/2312 2024-03-28 14:43:04 +01:00
43 changed files with 615 additions and 221 deletions

View File

@@ -61,9 +61,11 @@ namespace GHelper.AnimeMatrix
public void SetLidMode(bool force = false)
{
if (AppConfig.Is("matrix_lid") || force)
bool matrixLid = AppConfig.Is("matrix_lid");
if (matrixLid || force)
{
Logger.WriteLine($"Matrix LidClosed: {lidClose}");
if (deviceSlash is not null) deviceSlash.SetLidMode(matrixLid);
SetDevice(true);
}
}

View File

@@ -135,7 +135,7 @@ namespace GHelper.AnimeMatrix
public void Set(Packet packet, string? log = null)
{
_usbProvider?.Set(packet.Data);
if (log is not null) Logger.WriteLine("Slash:" + BitConverter.ToString(packet.Data));
if (log is not null) Logger.WriteLine($"{log}:" + BitConverter.ToString(packet.Data).Substring(0,48));
}

View File

@@ -406,7 +406,7 @@ public static class AppConfig
public static bool IsOLED()
{
return ContainsModel("OLED") || IsSlash() || ContainsModel("M7600") || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M350") || ContainsModel("K650") || ContainsModel("UM53") || ContainsModel("K660") || ContainsModel("UX84") || ContainsModel("M650") || ContainsModel("K340");
return ContainsModel("OLED") || IsSlash() || ContainsModel("M7600") || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M350") || ContainsModel("K650") || ContainsModel("UM53") || ContainsModel("K660") || ContainsModel("UX84") || ContainsModel("M650") || ContainsModel("K340") || ContainsModel("K350");
}
public static bool IsNoOverdrive()
@@ -442,7 +442,7 @@ public static class AppConfig
public static bool IsNoDirectRGB()
{
return ContainsModel("GA503") || ContainsModel("G533Q") || IsSlash();
return ContainsModel("GA503") || ContainsModel("G533Q") || ContainsModel("GU502") || IsSlash();
}
public static bool IsStrixNumpad()
@@ -535,7 +535,10 @@ public static class AppConfig
try
{
var (bios, model) = GetBiosAndModel();
return (Int32.Parse(bios) == 317 || Int32.Parse(bios) == 316);
var biosVersion = Int32.Parse(bios);
if (ContainsModel("GA503RM") && biosVersion == 317) return true;
if ((ContainsModel("GA503RS") || ContainsModel("GA503RW")) && biosVersion == 316) return true;
return false;
}
catch
{
@@ -550,7 +553,7 @@ public static class AppConfig
public static bool IsFanRequired()
{
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P") || ContainsModel("GU605") || ContainsModel("GA403") || ContainsModel("G634J") || ContainsModel("G834J");
return ContainsModel("GA402X") || ContainsModel("G513") || ContainsModel("G713R") || ContainsModel("G713P") || ContainsModel("GU605") || ContainsModel("GA403") || ContainsModel("G634J") || ContainsModel("G834J") || ContainsModel("G614J") || ContainsModel("G814J") || ContainsModel("FX507V");
}
public static bool IsAMDLight()

View File

@@ -1,4 +1,7 @@
namespace GHelper.Battery
using GHelper.Helpers;
using System.Diagnostics;
namespace GHelper.Battery
{
internal class BatteryControl
{
@@ -42,5 +45,25 @@
Program.settingsForm.VisualiseBattery(limit);
}
public static void BatteryReport()
{
var reportDir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
try
{
var cmd = new Process();
cmd.StartInfo.WorkingDirectory = reportDir;
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.FileName = "powershell";
cmd.StartInfo.Arguments = "powercfg /batteryreport; explorer battery-report.html";
cmd.Start();
}
catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
}
}
}

View File

@@ -47,7 +47,7 @@ namespace GHelper.Display
info.monitorFriendlyDeviceName == internalName)
{
if (log) Logger.WriteLine(info.monitorFriendlyDeviceName + " HDR: " + colorInfo.advancedColorEnabled + " " + colorInfo.bitsPerColorChannel + " " + colorInfo.value + " " + colorInfo.wideColorEnforced);
return colorInfo.advancedColorEnabled && colorInfo.bitsPerColorChannel > 8;
return colorInfo.advancedColorEnabled && (colorInfo.bitsPerColorChannel > 8 || !colorInfo.wideColorEnforced);
}
}

View File

@@ -21,6 +21,16 @@
}
}
public void ToggleScreenRate()
{
var laptopScreen = ScreenNative.FindLaptopScreen(true);
var refreshRate = ScreenNative.GetRefreshRate(laptopScreen);
if (refreshRate < 0) return;
ScreenNative.SetRefreshRate(laptopScreen, refreshRate > 60 ? 60 : ScreenNative.GetMaxRefreshRate(laptopScreen));
InitScreen();
}
public void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1)
{

View File

@@ -5,6 +5,10 @@ namespace GHelper.Display
{
public enum SplendidGamut : int
{
VivoNative = 0,
VivoSRGB = 1,
VivoDCIP3 = 3,
ViviDisplayP3 = 4,
Native = 50,
sRGB = 51,
DCIP3 = 53,
@@ -15,8 +19,13 @@ namespace GHelper.Display
{
None = -1,
VivoNormal = 1,
VivoVivid = 2,
VivoManual = 6,
VivoEycare = 7,
Init = 10,
DimmingAsus = 9,
DimmingVivo = 9,
DimmingVisual = 19,
GamutMode = 200,
@@ -52,29 +61,39 @@ namespace GHelper.Display
return Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\ASUS\\GameVisual";
}
public static string GetVivobookPath()
{
return Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\ASUS\\ASUS System Control Interface\\ASUSOptimization\\Splendid";
}
public static Dictionary<SplendidGamut, string> GetGamutModes()
{
bool isVivo = AppConfig.IsVivoZenbook();
Dictionary<SplendidGamut, string> _modes = new Dictionary<SplendidGamut, string>();
string gameVisualPath = GetGameVisualPath();
if (!Directory.Exists(gameVisualPath))
string iccPath = isVivo ? GetVivobookPath() : GetGameVisualPath();
if (!Directory.Exists(iccPath))
{
Logger.WriteLine(gameVisualPath + " doesn't exit");
Logger.WriteLine(iccPath + " doesn't exit");
return _modes;
}
try
{
DirectoryInfo d = new DirectoryInfo(GetGameVisualPath());
DirectoryInfo d = new DirectoryInfo(iccPath);
FileInfo[] icms = d.GetFiles("*.icm");
if (icms.Length == 0) return _modes;
_modes.Add(SplendidGamut.Native, "Gamut: Native");
_modes.Add(isVivo ? SplendidGamut.VivoNative : 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");
//Logger.WriteLine(icm.FullName);
if (icm.Name.Contains("sRGB")) _modes.Add(isVivo ? SplendidGamut.VivoSRGB : SplendidGamut.sRGB, "Gamut: sRGB");
if (icm.Name.Contains("DCIP3")) _modes.Add(isVivo ? SplendidGamut.VivoDCIP3 : SplendidGamut.DCIP3, "Gamut: DCIP3");
if (icm.Name.Contains("DisplayP3")) _modes.Add(isVivo ? SplendidGamut.ViviDisplayP3 : SplendidGamut.DisplayP3, "Gamut: DisplayP3");
}
return _modes;
}
@@ -87,6 +106,18 @@ namespace GHelper.Display
public static Dictionary<SplendidCommand, string> GetVisualModes()
{
if (AppConfig.IsVivoZenbook())
{
return new Dictionary<SplendidCommand, string>
{
{ SplendidCommand.VivoNormal, "Default" },
{ SplendidCommand.VivoVivid, "Vivid" },
{ SplendidCommand.VivoManual, "Manual" },
{ SplendidCommand.VivoEycare, "Eyecare" },
};
}
return new Dictionary<SplendidCommand, string>
{
{ SplendidCommand.Default, "Default"},
@@ -114,6 +145,18 @@ namespace GHelper.Display
};
}
public static Dictionary<int, string> GetEyeCares()
{
return new Dictionary<int, string>
{
{ 0, "0"},
{ 1, "1"},
{ 2, "2"},
{ 3, "3"},
{ 4, "4"},
};
}
public static void SetGamut(int mode = 50)
{
if (RunSplendid(SplendidCommand.GamutMode, 0, mode)) return;
@@ -136,7 +179,24 @@ namespace GHelper.Display
if (whiteBalance != DefaultColorTemp && !init) ProcessHelper.RunAsAdmin();
int balance = mode == SplendidCommand.Eyecare ? 2 : whiteBalance;
int? balance;
switch (mode) {
case SplendidCommand.Eyecare:
balance = 2;
break;
case SplendidCommand.VivoNormal:
case SplendidCommand.VivoVivid:
balance = null;
break;
case SplendidCommand.VivoEycare:
balance = Math.Abs(whiteBalance - 50) * 4 / 50;
break;
default:
balance = whiteBalance;
break;
}
if (RunSplendid(mode, 0, balance)) return;
if (_init)
@@ -175,14 +235,14 @@ namespace GHelper.Display
private static bool RunSplendid(SplendidCommand command, int? param1 = null, int? param2 = null)
{
var splendid = GetSplendidPath();
bool isGameVisual = Directory.Exists(GetGameVisualPath());
bool isVivo = AppConfig.IsVivoZenbook();
bool isSplenddid = File.Exists(splendid);
if (isSplenddid)
{
if (command == SplendidCommand.DimmingVisual && !isGameVisual) command = SplendidCommand.DimmingAsus;
if (command == SplendidCommand.DimmingVisual && isVivo) command = SplendidCommand.DimmingVivo;
var result = ProcessHelper.RunCMD(splendid, (int)command + " " + param1 + " " + param2);
if (result.Contains("file not exist") || (result.Length == 0 && isGameVisual)) return false;
if (result.Contains("file not exist") || (result.Length == 0 && !isVivo)) return false;
}
return true;

View File

@@ -30,6 +30,7 @@ namespace GHelper
{"aura", Properties.Strings.ToggleAura},
{"performance", Properties.Strings.PerformanceMode},
{"screen", Properties.Strings.ToggleScreen},
{"lock", Properties.Strings.LockScreen},
{"miniled", Properties.Strings.ToggleMiniled},
{"fnlock", Properties.Strings.ToggleFnLock},
{"brightness_down", Properties.Strings.BrightnessDown},

6
app/Fans.Designer.cs generated
View File

@@ -220,10 +220,10 @@ namespace GHelper
panelFans.Controls.Add(tableFanCharts);
panelFans.Controls.Add(panelTitleFans);
panelFans.Controls.Add(panelApplyFans);
panelFans.Dock = DockStyle.Left;
panelFans.Dock = DockStyle.Fill;
panelFans.Location = new Point(530, 0);
panelFans.Margin = new Padding(0);
panelFans.MaximumSize = new Size(816, 0);
//panelFans.MaximumSize = new Size(816, 0);
panelFans.MinimumSize = new Size(816, 0);
panelFans.Name = "panelFans";
panelFans.Padding = new Padding(0, 0, 10, 0);
@@ -1685,7 +1685,7 @@ namespace GHelper
Controls.Add(panelFans);
Controls.Add(panelSliders);
Margin = new Padding(4, 2, 4, 2);
MaximizeBox = false;
MaximizeBox = true;
MinimizeBox = false;
MinimumSize = new Size(26, 1100);
Name = "Fans";

View File

@@ -73,8 +73,6 @@ namespace GHelper
labelTip.Visible = false;
labelTip.BackColor = Color.Transparent;
FormClosing += Fans_FormClosing;
seriesCPU = chartCPU.Series.Add("CPU");
seriesGPU = chartGPU.Series.Add("GPU");
seriesMid = chartMid.Series.Add("Mid");
@@ -120,16 +118,21 @@ namespace GHelper
trackFast.Maximum = AsusACPI.MaxTotal;
trackFast.Minimum = AsusACPI.MinTotal;
trackFast.Scroll += TrackPower_Scroll;
trackCPU.Scroll += TrackPower_Scroll;
trackTotal.Scroll += TrackPower_Scroll;
trackSlow.Scroll += TrackPower_Scroll;
trackTotal.Scroll += TrackTotal_Scroll;
trackSlow.Scroll += TrackSlow_Scroll;
trackFast.Scroll += TrackFast_Scroll;
trackCPU.Scroll += TrackCPU_Scroll;
trackFast.MouseUp += TrackPower_MouseUp;
trackCPU.MouseUp += TrackPower_MouseUp;
trackTotal.MouseUp += TrackPower_MouseUp;
trackSlow.MouseUp += TrackPower_MouseUp;
trackFast.KeyUp += TrackPower_KeyUp;
trackCPU.KeyUp += TrackPower_KeyUp;
trackTotal.KeyUp += TrackPower_KeyUp;
trackSlow.KeyUp += TrackPower_KeyUp;
checkApplyFans.Click += CheckApplyFans_Click;
checkApplyPower.Click += CheckApplyPower_Click;
@@ -232,6 +235,7 @@ namespace GHelper
}
private void ButtonDownload_Click(object? sender, EventArgs e)
{
RyzenControl.DownloadRing();
@@ -799,6 +803,14 @@ namespace GHelper
}
private void TrackPower_KeyUp(object? sender, KeyEventArgs e)
{
Task.Run(() =>
{
modeControl.AutoPower(true);
});
}
public void InitPowerPlan()
{
int boost = PowerNative.GetCPUBoost();
@@ -883,18 +895,8 @@ namespace GHelper
});
}
private void Fans_FormClosing(object? sender, FormClosingEventArgs e)
{
/*
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
Hide();
}*/
}
public void InitPower(bool changed = false)
public void InitPower()
{
bool modeA = Program.acpi.DeviceGet(AsusACPI.PPT_APUA0) >= 0 || RyzenControl.IsAMD();
@@ -921,57 +923,37 @@ namespace GHelper
if (RyzenControl.IsAMD())
{
labelLeftTotal.Text = "CPU Sustained (SPL)";
labelLeftSlow.Text = "CPU Slow (sPPT)";
labelLeftFast.Text = "CPU Fast (fPPT)";
labelLeftTotal.Text = "SPL (CPU sustained)";
labelLeftSlow.Text = "sPPT (CPU 2 min boost)";
labelLeftFast.Text = "fPPT (CPU 2 sec boost)";
panelFast.Visible = modeC1;
}
else
{
labelLeftTotal.Text = "CPU Slow (PL1)";
labelLeftSlow.Text = "CPU Fast (PL2)";
labelLeftTotal.Text = "PL1 (CPU sustained)";
labelLeftSlow.Text = "PL2 (CPU 2 min boost)";
panelFast.Visible = false;
}
}
int limit_total;
int limit_slow;
int limit_cpu;
int limit_fast;
checkApplyPower.Checked = AppConfig.IsMode("auto_apply_power");
bool apply = AppConfig.IsMode("auto_apply_power");
int limit_total = AppConfig.GetMode("limit_total", AsusACPI.DefaultTotal);
int limit_slow = AppConfig.GetMode("limit_slow", limit_total);
int limit_fast = AppConfig.GetMode("limit_fast", limit_total);
int limit_cpu = AppConfig.GetMode("limit_cpu", AsusACPI.DefaultCPU);
if (changed)
{
limit_total = trackTotal.Value;
limit_slow = trackSlow.Value;
limit_cpu = trackCPU.Value;
limit_fast = trackFast.Value;
}
else
{
limit_total = AppConfig.GetMode("limit_total");
limit_slow = AppConfig.GetMode("limit_slow");
limit_cpu = AppConfig.GetMode("limit_cpu");
limit_fast = AppConfig.GetMode("limit_fast");
}
if (limit_total < 0) limit_total = AsusACPI.DefaultTotal;
if (limit_total > AsusACPI.MaxTotal) limit_total = AsusACPI.MaxTotal;
if (limit_total < AsusACPI.MinTotal) limit_total = AsusACPI.MinTotal;
if (limit_cpu < 0) limit_cpu = AsusACPI.DefaultCPU;
if (limit_cpu > AsusACPI.MaxCPU) limit_cpu = AsusACPI.MaxCPU;
if (limit_cpu < AsusACPI.MinCPU) limit_cpu = AsusACPI.MinCPU;
if (limit_cpu > limit_total) limit_cpu = limit_total;
if (limit_slow < 0) limit_slow = limit_total;
if (limit_slow > AsusACPI.MaxTotal) limit_slow = AsusACPI.MaxTotal;
if (limit_slow < AsusACPI.MinTotal) limit_slow = AsusACPI.MinTotal;
if (limit_fast < 0) limit_fast = AsusACPI.DefaultTotal;
if (limit_fast > AsusACPI.MaxTotal) limit_fast = AsusACPI.MaxTotal;
if (limit_fast < AsusACPI.MinTotal) limit_fast = AsusACPI.MinTotal;
@@ -980,27 +962,50 @@ namespace GHelper
trackCPU.Value = limit_cpu;
trackFast.Value = limit_fast;
checkApplyPower.Checked = apply;
SavePower();
}
private void SavePower()
{
labelTotal.Text = trackTotal.Value.ToString() + "W";
labelSlow.Text = trackSlow.Value.ToString() + "W";
labelCPU.Text = trackCPU.Value.ToString() + "W";
labelFast.Text = trackFast.Value.ToString() + "W";
AppConfig.SetMode("limit_total", limit_total);
AppConfig.SetMode("limit_slow", limit_slow);
AppConfig.SetMode("limit_cpu", limit_cpu);
AppConfig.SetMode("limit_fast", limit_fast);
AppConfig.SetMode("limit_total", trackTotal.Value);
AppConfig.SetMode("limit_slow", trackSlow.Value);
AppConfig.SetMode("limit_cpu", trackCPU.Value);
AppConfig.SetMode("limit_fast", trackFast.Value);
}
private void TrackPower_Scroll(object? sender, EventArgs e)
private void TrackTotal_Scroll(object? sender, EventArgs e)
{
InitPower(true);
if (trackTotal.Value > trackSlow.Value) trackSlow.Value = trackTotal.Value;
if (trackTotal.Value > trackFast.Value) trackFast.Value = trackTotal.Value;
if (trackTotal.Value < trackCPU.Value) trackCPU.Value = trackTotal.Value;
SavePower();
}
private void TrackSlow_Scroll(object? sender, EventArgs e)
{
if (trackSlow.Value < trackTotal.Value) trackTotal.Value = trackSlow.Value;
if (trackSlow.Value > trackFast.Value) trackFast.Value = trackSlow.Value;
SavePower();
}
private void TrackFast_Scroll(object? sender, EventArgs e)
{
if (trackFast.Value < trackSlow.Value) trackSlow.Value = trackFast.Value;
if (trackFast.Value < trackTotal.Value) trackTotal.Value = trackFast.Value;
SavePower();
}
private void TrackCPU_Scroll(object? sender, EventArgs e)
{
if (trackCPU.Value > trackTotal.Value) trackTotal.Value = trackCPU.Value;
SavePower();
}
public void InitFans()
{
@@ -1161,7 +1166,7 @@ namespace GHelper
InitGPUPower();
VisualiseGPUSettings();
modeControl.SetGPUClocks(true);
modeControl.SetGPUClocks(true, true);
modeControl.SetGPUPower();
}
@@ -1261,7 +1266,7 @@ namespace GHelper
labelTip.Text = Math.Floor(curPoint.XValue) + "C, " + ChartYLabel((int)curPoint.YValues[0], device, " " + Properties.Strings.RPM);
labelTip.Top = e.Y + ((Control)sender).Top;
labelTip.Left = e.X - 50;
labelTip.Left = Math.Min(chart.Width - labelTip.Width - 20, e.X - 50);
}
catch

View File

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

View File

@@ -30,6 +30,14 @@ public static class NvidiaSmi
return false; // Return false if the "Display Active" status is not found
}
public static int GetDefaultMaxGPUPower()
{
if (AppConfig.ContainsModel("GU605")) return 125;
if (AppConfig.ContainsModel("GA403")) return 90;
if (AppConfig.ContainsModel("FA607")) return 140;
else return 175;
}
public static int GetMaxGPUPower()
{
string output = RunNvidiaSmiCommand("--query-gpu=power.max_limit --format csv,noheader,nounits");
@@ -38,10 +46,10 @@ public static class NvidiaSmi
if (float.TryParse(output, out float floatValue))
{
int intValue = (int)floatValue;
return intValue;
if (intValue >= 50 && intValue <= 175) return intValue;
}
return -1;
return GetDefaultMaxGPUPower();
}
private static string RunNvidiaSmiCommand(string arguments = "-i 0 -q")

View File

@@ -971,7 +971,7 @@
//
// checkController
//
checkController.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
checkController.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
checkController.AutoSize = true;
checkController.BackColor = SystemColors.ControlLight;
checkController.Location = new Point(650, 41);

View File

@@ -118,6 +118,8 @@ namespace GHelper.Input
if (!AppConfig.Is("skip_hotkeys"))
{
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F13);
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F14);
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F15);
@@ -128,6 +130,7 @@ namespace GHelper.Input
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F20);
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeDown);
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeUp);
hook.RegisterHotKey(ModifierKeys.Shift, Keys.VolumeDown);
@@ -385,6 +388,9 @@ namespace GHelper.Input
case Keys.F4:
Program.settingsForm.BeginInvoke(Program.settingsForm.allyControl.ToggleModeHotkey);
break;
case Keys.F13:
ToggleScreenRate();
break;
case Keys.F14:
Program.settingsForm.gpuControl.SetGPUMode(AsusACPI.GPUModeEco);
break;
@@ -473,6 +479,10 @@ namespace GHelper.Input
case "screenshot":
KeyboardHook.KeyPress(Keys.Snapshot);
break;
case "lock":
Logger.WriteLine("Screen lock");
NativeMethods.LockScreen();
break;
case "screen":
Logger.WriteLine("Screen off toggle");
NativeMethods.TurnOffScreen();
@@ -687,6 +697,18 @@ namespace GHelper.Input
case 199: // ON Z13 - FN+F11 - cycles backlight
SetBacklight(4);
return;
case 46: // Fn + F4 Vivobook Brightness down
if (Control.ModifierKeys == Keys.Control && AppConfig.IsOLED())
{
SetBrightnessDimming(-10);
}
break;
case 47: // Fn + F5 Vivobook Brightness up
if (Control.ModifierKeys == Keys.Control && AppConfig.IsOLED())
{
SetBrightnessDimming(10);
}
break;
}
}
@@ -820,6 +842,12 @@ namespace GHelper.Input
Program.toast.RunToast($"Screen Pad " + (toggle == 1 ? "On" : "Off"), toggle > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
}
public static void ToggleScreenRate()
{
AppConfig.Set("screen_auto", 0);
screenControl.ToggleScreenRate();
}
public static void ToggleCamera()
{
if (!ProcessHelper.IsUserAdministrator()) return;

View File

@@ -21,12 +21,35 @@ public sealed class KeyboardHook : IDisposable
private const byte VK_LWIN = 0x5B;
private const byte VK_LCONTROL = 0xA2;
[DllImport("user32.dll")]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
//Mouse actions
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
private const int MOUSEEVENTF_MIDDOWN = 0x20;
private const int MOUSEEVENTF_MIDTUP = 0x40;
public static void KeyPress(Keys key)
{
switch (key)
{
case Keys.LButton:
mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, (uint)Cursor.Position.X, (uint)Cursor.Position.Y, 0, 0);
return;
case Keys.RButton:
mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, (uint)Cursor.Position.X, (uint)Cursor.Position.Y, 0, 0);
return;
case Keys.MButton:
mouse_event(MOUSEEVENTF_MIDDOWN | MOUSEEVENTF_MIDTUP, (uint)Cursor.Position.X, (uint)Cursor.Position.Y, 0, 0);
return;
}
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY, IntPtr.Zero);
Thread.Sleep(1);
keybd_event((byte)key, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, IntPtr.Zero);
}

View File

@@ -15,19 +15,23 @@ namespace GHelper.Mode
private int _cpuUV = 0;
private int _igpuUV = 0;
private bool _ryzenPower = false;
static System.Timers.Timer reapplyTimer = default!;
static System.Timers.Timer modeToggleTimer = default!;
public ModeControl()
{
reapplyTimer = new System.Timers.Timer(AppConfig.GetMode("reapply_time", 30) * 1000);
reapplyTimer.Elapsed += ReapplyTimer_Elapsed;
reapplyTimer.Enabled = false;
reapplyTimer.Elapsed += ReapplyTimer_Elapsed;
}
private void ReapplyTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
SetCPUTemp(AppConfig.GetMode("cpu_temp"), false);
SetCPUTemp(AppConfig.GetMode("cpu_temp"));
SetRyzenPower();
}
public void AutoPerformance(bool powerChanged = false)
@@ -54,6 +58,11 @@ namespace GHelper.Mode
PowerNative.SetPowerMode(Modes.GetCurrentBase());
}
public void Toast()
{
Program.toast.RunToast(Modes.GetCurrentName(), SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online ? ToastIcon.Charger : ToastIcon.Battery);
}
public void SetPerformanceMode(int mode = -1, bool notify = false)
{
@@ -99,10 +108,7 @@ namespace GHelper.Mode
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);
if (notify) Toast();
// Power plan from config or defaulting to balanced
if (AppConfig.GetModeString("scheme") is not null)
@@ -133,9 +139,34 @@ namespace GHelper.Mode
}
private void ModeToggleTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
modeToggleTimer.Stop();
Logger.WriteLine($"Timed mode: {Modes.GetCurrent()}");
SetPerformanceMode();
}
public void CyclePerformanceMode(bool back = false)
{
SetPerformanceMode(Modes.GetNext(back), true);
int delay = AppConfig.Get("mode_delay");
if (delay > 0)
{
if (modeToggleTimer is null)
{
modeToggleTimer = new System.Timers.Timer(delay);
modeToggleTimer.Elapsed += ModeToggleTimer_Elapsed;
}
modeToggleTimer.Stop();
modeToggleTimer.Start();
Modes.SetCurrent(Modes.GetNext(back));
Toast();
} else
{
SetPerformanceMode(Modes.GetNext(back), true);
}
}
public void AutoFans(bool force = false)
@@ -222,6 +253,34 @@ namespace GHelper.Mode
settings.SetModeLabel(Properties.Strings.PerformanceMode + ": " + Modes.GetCurrentName() + (customFans ? "+" : "") + ((customPower > 0) ? " " + customPower + "W" : ""));
}
public void SetRyzenPower(bool init = false)
{
if (init) _ryzenPower = true;
if (!_ryzenPower) return;
if (!RyzenControl.IsRingExsists()) return;
if (!AppConfig.IsMode("auto_apply_power")) return;
int limit_total = AppConfig.GetMode("limit_total");
int limit_slow = AppConfig.GetMode("limit_slow", limit_total);
if (limit_total > AsusACPI.MaxTotal) return;
if (limit_total < AsusACPI.MinTotal) return;
var stapmResult = SendCommand.set_stapm_limit((uint)limit_total * 1000);
if (init) Logger.WriteLine($"STAPM: {limit_total} {stapmResult}");
var stapmResult2 = SendCommand.set_stapm2_limit((uint)limit_total * 1000);
if (init) Logger.WriteLine($"STAPM2: {limit_total} {stapmResult2}");
var slowResult = SendCommand.set_slow_limit((uint)limit_slow * 1000);
if (init) Logger.WriteLine($"SLOW: {limit_slow} {slowResult}");
var fastResult = SendCommand.set_fast_limit((uint)limit_slow * 1000);
if (init) Logger.WriteLine($"FAST: {limit_slow} {fastResult}");
}
public void SetPower(bool launchAsAdmin = false)
{
@@ -258,19 +317,7 @@ namespace GHelper.Mode
if (ProcessHelper.IsUserAdministrator())
{
var stapmResult = SendCommand.set_stapm_limit((uint)limit_total * 1000);
Logger.WriteLine($"STAPM: {limit_total} {stapmResult}");
var stapmResult2 = SendCommand.set_stapm2_limit((uint)limit_total * 1000);
Logger.WriteLine($"STAPM2: {limit_total} {stapmResult2}");
var slowResult = SendCommand.set_slow_limit((uint)limit_total * 1000);
Logger.WriteLine($"SLOW: {limit_total} {slowResult}");
var fastResult = SendCommand.set_fast_limit((uint)limit_total * 1000);
Logger.WriteLine($"FAST: {limit_total} {fastResult}");
customPower = limit_total;
SetRyzenPower(true);
}
else if (launchAsAdmin)
{
@@ -295,7 +342,7 @@ namespace GHelper.Mode
}
public void SetGPUClocks(bool launchAsAdmin = true)
public void SetGPUClocks(bool launchAsAdmin = true, bool reset = false)
{
Task.Run(() =>
{
@@ -304,6 +351,8 @@ namespace GHelper.Mode
int memory = AppConfig.GetMode("gpu_memory");
int clock_limit = AppConfig.GetMode("gpu_clock_limit");
if (reset) core = memory = clock_limit = 0;
if (core == -1 && memory == -1 && clock_limit == -1) return;
//if ((gpu_core > -5 && gpu_core < 5) && (gpu_memory > -5 && gpu_memory < 5)) launchAsAdmin = false;
@@ -351,22 +400,15 @@ namespace GHelper.Mode
}
public void SetCPUTemp(int? cpuTemp, bool log = true)
public void SetCPUTemp(int? cpuTemp, bool init = false)
{
if (cpuTemp >= RyzenControl.MinTemp && cpuTemp < RyzenControl.MaxTemp)
{
var resultCPU = SendCommand.set_tctl_temp((uint)cpuTemp);
if (log) Logger.WriteLine($"CPU Temp: {cpuTemp} {resultCPU}");
if (init) Logger.WriteLine($"CPU Temp: {cpuTemp} {resultCPU}");
var restultAPU = SendCommand.set_apu_skin_temp_limit((uint)cpuTemp);
if (log) Logger.WriteLine($"APU Temp: {cpuTemp} {restultAPU}");
reapplyTimer.Enabled = AppConfig.IsMode("auto_uv");
}
else
{
reapplyTimer.Enabled = false;
if (init) Logger.WriteLine($"APU Temp: {cpuTemp} {restultAPU}");
}
}
@@ -409,18 +451,21 @@ namespace GHelper.Mode
{
SetUV(AppConfig.GetMode("cpu_uv", 0));
SetUViGPU(AppConfig.GetMode("igpu_uv", 0));
SetCPUTemp(AppConfig.GetMode("cpu_temp"));
SetCPUTemp(AppConfig.GetMode("cpu_temp"), true);
}
catch (Exception ex)
{
Logger.WriteLine("UV Error: " + ex.ToString());
}
reapplyTimer.Enabled = AppConfig.IsMode("auto_uv");
}
public void ResetRyzen()
{
if (_cpuUV != 0) SetUV(0);
if (_igpuUV != 0) SetUViGPU(0);
reapplyTimer.Enabled = false;
}
public void AutoRyzen()

View File

@@ -27,14 +27,25 @@ public class NativeMethods
private const int MONITOR_OFF = 2;
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);
private static extern IntPtr SendMessage(nint hWnd, int hMsg, int wParam, int lParam);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern uint FormatMessage(uint dwFlags, IntPtr lpSource, uint dwMessageId, uint dwLanguageId, out string lpBuffer, uint nSize, IntPtr Arguments);
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool LockWorkStation();
public static void LockScreen()
{
LockWorkStation();
}
public static void TurnOffScreen()
{
IntPtr result = SendMessage(-1, WM_SYSCOMMAND, (IntPtr)SC_MONITORPOWER, (IntPtr)MONITOR_OFF);
Form f = new Form();
IntPtr result = SendMessage(f.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, MONITOR_OFF);
if (result == IntPtr.Zero)
{
int error = Marshal.GetLastWin32Error();

View File

@@ -1223,6 +1223,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Lock Screen.
/// </summary>
internal static string LockScreen {
get {
return ResourceManager.GetString("LockScreen", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Logo.
/// </summary>

View File

@@ -495,7 +495,7 @@ Trotzdem fortfahren?</value>
<value>Laptopbildschirm</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
<value>LED-Statusanzeige</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Deckel</value>
@@ -506,6 +506,9 @@ Trotzdem fortfahren?</value>
<data name="Lighting" xml:space="preserve">
<value>Beleuchtung</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>

View File

@@ -506,6 +506,9 @@
<data name="Lighting" xml:space="preserve">
<value>Iluminación</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Pantalla de bloqueo</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>

View File

@@ -506,6 +506,9 @@ Voulez-vous continuer ?</value>
<data name="Lighting" xml:space="preserve">
<value>Éclairage</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
@@ -771,10 +774,10 @@ Voulez-vous continuer ?</value>
<value>Mode d'affichage</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
<value>Les modes visuels ne sont pas disponibles lorsque le HDR est actif</value>
</data>
<data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value>
<value>Les modes visuels ne sont pas disponibles lorsque l'écran de l'ordinateur portable est éteint</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Vol-</value>

View File

@@ -506,6 +506,9 @@ Do you still want to continue?</value>
<data name="Lighting" xml:space="preserve">
<value>Világítás</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logó</value>
</data>

View File

@@ -506,6 +506,9 @@ Apakah Anda masih ingin melanjutkan?</value>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>

View File

@@ -506,6 +506,9 @@ Sei sicuro di voler continuare?</value>
<data name="Lighting" xml:space="preserve">
<value>Illuminazione</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>

View File

@@ -506,6 +506,9 @@
<data name="Lighting" xml:space="preserve">
<value>조명</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>로고</value>
</data>

View File

@@ -506,6 +506,9 @@ Vis tiek norite tęsti?</value>
<data name="Lighting" xml:space="preserve">
<value>Apšvietimas</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logotipas</value>
</data>

View File

@@ -495,7 +495,7 @@ Nadal chcesz kontynuować?</value>
<value>Ekran laptopa</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
<value>Wskaźniki stanu</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Pokrywa</value>
@@ -506,6 +506,9 @@ Nadal chcesz kontynuować?</value>
<data name="Lighting" xml:space="preserve">
<value>Oświetlenie</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Ekran blokady</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
@@ -771,10 +774,10 @@ Nadal chcesz kontynuować?</value>
<value>Tryb wyświetlania</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
<value>Tryby wyświetlania nie są dostępne, kiedy HDR jest włączone</value>
</data>
<data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value>
<value>Tryby wyświetlania nie są dostępne, kiedy ekran laptopa jest wyłączony</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Zmniejsz głośność</value>

View File

@@ -506,6 +506,9 @@ Do you still want to continue?</value>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>

View File

@@ -506,6 +506,9 @@ Quer prosseguir?</value>
<data name="Lighting" xml:space="preserve">
<value>Iluminação</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>

View File

@@ -506,6 +506,9 @@ Do you still want to continue?</value>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>

View File

@@ -506,6 +506,9 @@
<data name="Lighting" xml:space="preserve">
<value>Iluminare</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo-ul</value>
</data>

View File

@@ -121,7 +121,7 @@
<value>Hızlandırma</value>
</data>
<data name="ACPIError" xml:space="preserve">
<value>ASUS ACPI'ye bağlanılamıyor. Uygulama o olmadan çalışamaz. Asus Sistem Kontrol Arayüzü'yüklemeyi deneyin.</value>
<value>ASUS ACPI bağlanılamıyor. Uygulama onsuz çalışamaz. Asus Sistem Kontrol Arayüzünü kurmayı deneyin</value>
</data>
<data name="AlertAPUMemoryRestart" xml:space="preserve">
<value>Değişiklikleri uygulamak için cihazınızı yeniden başlatın</value>
@@ -130,7 +130,7 @@
<value>Şimdi yeniden başlatılsın mı?</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Görünüşe göre GPU yoğun bir şekilde kullanılıyor, devre dışı bırakılsın mı?</value>
<value>GPU yoğun kullanımda gibi, devre dışı bırakılsın mı?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Eko Modu</value>
@@ -169,10 +169,10 @@
<value>Güç Sınırlarını Uygula</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Windows Güç Modunu otomatik ayarla</value>
<value>Windows Güç Modlarını otomatik ayarla</value>
</data>
<data name="APUMemory" xml:space="preserve">
<value>GPU'ya Atanan Bellek</value>
<value>GPU için Atanan Bellek</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Çalışan Asus Hizmetleri</value>
@@ -244,7 +244,7 @@
<value>Otomatik</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>Pil tasarrufu için 60Hz kullanılır ve şarja takıldığında eski haline getirir</value>
<value>Pil tasarrufu için 60Hz kullanılır, şarja takıldığında eski haline gelir</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Uyanırken</value>
@@ -262,7 +262,7 @@
<value>Kapalı</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Pildeyken klavye ışığının kapanma süresi</value>
<value>Pilde klavye ışığı kapanma süresi</value>
</data>
<data name="BacklightTimeoutBattery" xml:space="preserve">
<value>Pildeyken Arka Işık Zaman Aşımı</value>
@@ -283,7 +283,7 @@
<value>Pil Sağlığı</value>
</data>
<data name="BatteryLimitFull" xml:space="preserve">
<value>Bir seferlik %100 şarj etme</value>
<value>Tek seferlik %100'e kadar şarj</value>
</data>
<data name="Binding" xml:space="preserve">
<value>Tuş Atamaları</value>
@@ -298,13 +298,13 @@
<value>BIOS ve Sürücü Güncellemeleri</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Boot</value>
<value>ılışta</value>
</data>
<data name="BootSound" xml:space="preserve">
<value>Boot Sesi</value>
<value>Önyükleme Sesi</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Parlaklığı</value>
<value>Parlaklık</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Parlaklığı Azalt</value>
@@ -313,10 +313,10 @@
<value>Parlaklığı Artır</value>
</data>
<data name="BWTrayIcon" xml:space="preserve">
<value>Siyah-beyaz tepsi simgesi</value>
<value>Siyah ve beyaz tepsi simgesi</value>
</data>
<data name="Calibrate" xml:space="preserve">
<value>Kalibre Et</value>
<value>Kalibrasyon</value>
</data>
<data name="Charging" xml:space="preserve">
<value>Şarj oluyor</value>
@@ -331,7 +331,7 @@
<value>Kontrolcü</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Desteği</value>
<value>CPU Artışı</value>
</data>
<data name="Custom" xml:space="preserve">
<value>Özel</value>
@@ -352,7 +352,7 @@
<value>Ekran overdrive özelliğini devre dışı bırak</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Şarj azalıyor</value>
<value>Şarj Azalıyor</value>
</data>
<data name="DownloadColorProfiles" xml:space="preserve">
<value>Renk Profillerini İndir</value>
@@ -364,13 +364,13 @@
<value>Sürücüler ve Yazılımlar</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Pil tasarrufu için harici GPU'yu devre dışı bırakır</value>
<value>Pil tasarrufu için dGPU devre dışı bırakılır</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Eko</value>
</data>
<data name="EnableGPUOnShutdown" xml:space="preserve">
<value>Kapanma sırasında harici GPU'yu etkinleştir (Eco moduyla ilgili sorunları önler)</value>
<value>Kapatma sırasında GPU'yu etkinleştir (Eco modundaki sorunları önler)</value>
</data>
<data name="EnableOptimusText" xml:space="preserve">
<value>NVIDIA Denetim Masası'ndaki Görüntü Modu Optimus olarak ayarlı değilken Eko moduna geçilerek harici GPU'nun devre dışı bırakılması, bir sonraki yeniden başlatmaya kadar parlaklık ayarlarında sorunlara neden olabilir.
@@ -390,7 +390,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Ekstra</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>Ekstra Ayarlar</value>
<value>Ek Ayarlar</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Fabrika Ayarları</value>
@@ -447,13 +447,13 @@ Yine de devam etmek istiyor musunuz?</value>
<value>GPU Modu</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>sadece dahili GPU</value>
<value>Sadece iGPU</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>dahili + harici GPU</value>
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>sadece harici GPU</value>
<value>Ayrıcalıklı dGPU</value>
</data>
<data name="GPUPower" xml:space="preserve">
<value>GPU Gücü</value>
@@ -471,7 +471,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Yüksek</value>
</data>
<data name="ImageRotation" xml:space="preserve">
<value>Görüntü Rotasyonu</value>
<value>Görüntü Döndürme</value>
</data>
<data name="Import" xml:space="preserve">
<value>Profili İçe Aktar</value>
@@ -483,7 +483,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Klavye</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Eco'ya geçerken harici GPU'yu kullanan tüm uygulamaları durdur</value>
<value>Eco moda geçerken GPU kullanan tüm uygulamaları durdur</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Laptop Aydınlatması</value>
@@ -495,7 +495,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Laptop Ekranı</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
<value>LED Durum Göstergeleri</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Kapak</value>
@@ -506,6 +506,9 @@ Yine de devam etmek istiyor musunuz?</value>
<data name="Lighting" xml:space="preserve">
<value>Işıklandırma</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Kilit Ekranı</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
@@ -513,7 +516,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Düşük</value>
</data>
<data name="LSDeadzones" xml:space="preserve">
<value>Sol Joystick Ölü Bölgeleri</value>
<value>Sol Çubuk Ölü Bölgeleri</value>
</data>
<data name="LTDeadzones" xml:space="preserve">
<value>Sol Tetik Ölü Bölgeleri</value>
@@ -522,7 +525,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Ses Görselleştirici</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Binary Banner</value>
<value>İkili Afiş</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Parlak</value>
@@ -546,7 +549,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Resim</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>Daha düşük gecikme için maksimum yenileme hızı</value>
<value>En düşük gecikme için en yüksek yenileme hızı</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>Pil tasarrufu için 60Hz yenileme hızı</value>
@@ -558,7 +561,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Dakika</value>
</data>
<data name="MouseAngleSnapping" xml:space="preserve">
<value>Angle Snapping</value>
<value>Açılı Yakalama</value>
</data>
<data name="MouseAutoPowerOff" xml:space="preserve">
<value>Sonrasında Otomatik Kapat</value>
@@ -579,7 +582,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Performans</value>
</data>
<data name="MouseSynchronize" xml:space="preserve">
<value>Fare ile senkronize edin</value>
<value>Fare ile eşitle</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Çok Bölgeli</value>
@@ -588,7 +591,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Çok Bölgeli (Güçlü)</value>
</data>
<data name="Muted" xml:space="preserve">
<value>Ses kapalı</value>
<value>Susturuldu</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Mikrofonu Sustur</value>
@@ -603,7 +606,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Güncelleme yok</value>
</data>
<data name="NotConnected" xml:space="preserve">
<value>Bağlantı Yok</value>
<value>Bağlı Değil</value>
</data>
<data name="Off" xml:space="preserve">
<value>Kapalı</value>
@@ -618,13 +621,13 @@ Yine de devam etmek istiyor musunuz?</value>
<value>G-Helper penceresini aç</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>Optimize edilmiş</value>
<value>İyileştirilmiş</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Pille çalışırken Eko moda ve şarjdayken Standart moda geçiş yapın</value>
<value>Pil ile çalışırken Eko moda, şarjda Standart moda geçiş yap</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Optimize edilmiş modda USB-c şarj cihazında GPU'yu devre dışı bırak</value>
<value>İyileştirilmiş modda USB-C şarj cihazı bağlıyken, GPU devre dışı kalsın</value>
</data>
<data name="Other" xml:space="preserve">
<value>Diğer</value>
@@ -654,13 +657,13 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Güç Sınırları deneysel bir özelliktir. Riski göze alarak dikkatli kullanın!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Ekran Görüntüsü Al</value>
<value>PrintScreen</value>
</data>
<data name="Profile" xml:space="preserve">
<value>Profil</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Çıkış Yap</value>
<value>Çıkış</value>
</data>
<data name="Reset" xml:space="preserve">
<value>Sıfırla</value>
@@ -690,7 +693,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Screenpad Parlaklığını Artır</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Kapatma</value>
<value>Kapanış</value>
</data>
<data name="Silent" xml:space="preserve">
<value>Sessiz</value>
@@ -699,7 +702,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Uyku</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Standart kullanım için harici GPU'yu etkinleştirir</value>
<value>Standart kullanım için dGPU etkinleştirilir</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Standart</value>
@@ -747,13 +750,13 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Pille çalışırken kapat</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Dizüstü ekranını harici GPU'ya yönlendirerek FPS'yi maksimize eder</value>
<value>Dizüstü ekranını dGPU üstüne yönlendirerek FPS en üst düzeye çıkar</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="UndervoltingRisky" xml:space="preserve">
<value>Undervolting deneysel ve riskli bir özelliktir. Uygulanan değerler cihazınız için çok düşükse, cihazınız stabil çalışmayabilir, kapanabilir veya veri kaybına uğrayabilir. Yine de denemek istiyorsanız, önce küçük değerlerden başlayıp Uygula'ya tıklayın ve sizin için uygun olanı test edin.</value>
<value>Düşük voltaj deneysel ve riskli bir özelliktir. Uygulanan değerler cihaz için çok düşükse, cihazı stabil çalışmayabilir, kapanabilir veya veri kaybına uğrayabilir. Yine de denemek istiyorsanız, önce küçük değerlerden başlayın ve sizin için uygun olanı test edin.</value>
</data>
<data name="Unmuted" xml:space="preserve">
<value>Ses açık</value>
@@ -765,16 +768,16 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Sürüm</value>
</data>
<data name="VibrationStrength" xml:space="preserve">
<value>Titreşim Şiddeti</value>
<value>Titreşim Yoğunluğu</value>
</data>
<data name="VisualMode" xml:space="preserve">
<value>Görüntü Modu</value>
<value>Görsel Mod</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
<value>HDR etkin olduğunda Görsel Modlar kullanılamaz</value>
</data>
<data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value>
<value>Bilgisayar ekranı kapalı olduğunda Görsel Modlar kullanılamaz</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Sesi Azalt</value>
@@ -789,6 +792,6 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Uygulama penceresini her zaman en üstte tut</value>
</data>
<data name="Zoom" xml:space="preserve">
<value>Yakınlaştırma</value>
<value>Yakınlaştır</value>
</data>
</root>

View File

@@ -495,7 +495,7 @@
<value>Дисплей</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
<value>LED-Індикатори стану</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Кришка</value>
@@ -506,6 +506,9 @@
<data name="Lighting" xml:space="preserve">
<value>Ілюмінація</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Лого</value>
</data>
@@ -771,10 +774,10 @@
<value>Візуальний режим</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
<value>Візуальні режими недоступні, коли HDR активний</value>
</data>
<data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value>
<value>Візуальні режими недоступні, коли екран вимкнений</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Зменшення гучності</value>

View File

@@ -506,6 +506,9 @@ Do you still want to continue?</value>
<data name="Lighting" xml:space="preserve">
<value>Lighting</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>

View File

@@ -495,7 +495,7 @@
<value>笔记本屏幕</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
<value>LED 状态指示器</value>
</data>
<data name="Lid" xml:space="preserve">
<value>盖子</value>
@@ -506,6 +506,9 @@
<data name="Lighting" xml:space="preserve">
<value>背光</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>锁定屏幕</value>
</data>
<data name="Logo" xml:space="preserve">
<value>徽标</value>
</data>
@@ -582,10 +585,10 @@
<value>和鼠标同步</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multi Zone</value>
<value>多区</value>
</data>
<data name="MultizoneStrong" xml:space="preserve">
<value>Multi Zone Strong</value>
<value>多区强化</value>
</data>
<data name="Muted" xml:space="preserve">
<value>麦克风关闭</value>
@@ -612,7 +615,7 @@
<value>开</value>
</data>
<data name="OneZone" xml:space="preserve">
<value>One Zone</value>
<value>单区</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>打开G-Helper窗口</value>
@@ -768,13 +771,13 @@
<value>震动强度</value>
</data>
<data name="VisualMode" xml:space="preserve">
<value>Visual Mode</value>
<value>色域模式</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
<value>HDR 开启时不支持色域模式</value>
</data>
<data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value>
<value>笔记本自带屏幕关闭时不支持色域模式</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>音量降低</value>
@@ -789,6 +792,6 @@
<value>窗口置顶</value>
</data>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
<value>缩放</value>
</data>
</root>

View File

@@ -506,6 +506,9 @@
<data name="Lighting" xml:space="preserve">
<value>亮度</value>
</data>
<data name="LockScreen" xml:space="preserve">
<value>Lock Screen</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>

View File

@@ -1368,7 +1368,7 @@ namespace GHelper
//
pictureKeyboard.BackgroundImage = Properties.Resources.icons8_keyboard_32__1_;
pictureKeyboard.BackgroundImageLayout = ImageLayout.Zoom;
pictureKeyboard.Location = new Point(8, 3);
pictureKeyboard.Location = new Point(8, 0);
pictureKeyboard.Margin = new Padding(4);
pictureKeyboard.Name = "pictureKeyboard";
pictureKeyboard.Size = new Size(32, 32);
@@ -1379,7 +1379,7 @@ namespace GHelper
//
labelKeyboard.AutoSize = true;
labelKeyboard.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelKeyboard.Location = new Point(40, 0);
labelKeyboard.Location = new Point(43, 0);
labelKeyboard.Margin = new Padding(4, 0, 4, 0);
labelKeyboard.Name = "labelKeyboard";
labelKeyboard.Size = new Size(210, 32);
@@ -1399,6 +1399,7 @@ namespace GHelper
//
// labelCharge
//
labelCharge.Cursor = Cursors.Hand;
labelCharge.Dock = DockStyle.Right;
labelCharge.ForeColor = SystemColors.ControlDark;
labelCharge.Location = new Point(366, 0);
@@ -1408,7 +1409,6 @@ namespace GHelper
labelCharge.Size = new Size(461, 56);
labelCharge.TabIndex = 40;
labelCharge.TextAlign = ContentAlignment.MiddleRight;
labelCharge.Cursor = Cursors.Hand;
//
// panelPeripherals
//
@@ -1712,7 +1712,7 @@ namespace GHelper
labelVisual.Margin = new Padding(4, 0, 4, 0);
labelVisual.Name = "labelVisual";
labelVisual.Padding = new Padding(4);
labelVisual.Size = new Size(787, 52);
labelVisual.Size = new Size(800, 52);
labelVisual.TabIndex = 42;
labelVisual.Text = "Visual Modes are not available when HDR is active";
labelVisual.Visible = false;
@@ -1866,7 +1866,7 @@ namespace GHelper
labelGammaTitle.Location = new Point(43, 0);
labelGammaTitle.Margin = new Padding(4, 0, 4, 0);
labelGammaTitle.Name = "labelGammaTitle";
labelGammaTitle.Size = new Size(507, 32);
labelGammaTitle.Size = new Size(540, 32);
labelGammaTitle.TabIndex = 37;
labelGammaTitle.Text = "Flicker-free Dimming";
//

View File

@@ -138,9 +138,9 @@ namespace GHelper
buttonOptimized.BorderColor = colorEco;
buttonXGM.BorderColor = colorTurbo;
button60Hz.BorderColor = SystemColors.ActiveBorder;
button120Hz.BorderColor = SystemColors.ActiveBorder;
buttonScreenAuto.BorderColor = SystemColors.ActiveBorder;
button60Hz.BorderColor = colorGray;
button120Hz.BorderColor = colorGray;
buttonScreenAuto.BorderColor = colorGray;
buttonMiniled.BorderColor = colorTurbo;
buttonSilent.Click += ButtonSilent_Click;
@@ -265,9 +265,7 @@ namespace GHelper
private void LabelCharge_Click(object? sender, EventArgs e)
{
var report = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\battery-report.html";
ProcessHelper.RunCMD("powershell", $"powercfg /batteryreport /output \"{report}\"");
ProcessHelper.RunCMD("explorer", $"\"{report}\"");
BatteryControl.BatteryReport();
}
private void LabelVisual_Click(object? sender, EventArgs e)
@@ -1069,7 +1067,7 @@ namespace GHelper
if (matrixControl.IsSlash)
{
labelMatrix.Text = "Slash Lightning";
labelMatrix.Text = "Slash Lighting";
comboMatrixRunning.Items.Clear();
foreach (var item in SlashDevice.Modes)
@@ -1679,7 +1677,7 @@ namespace GHelper
sliderBattery.Value = limit;
sliderBattery.AccessibleName = Properties.Strings.BatteryChargeLimit + ": " + limit.ToString() + "%";
sliderBattery.AccessibilityObject.Select(AccessibleSelection.TakeFocus);
//sliderBattery.AccessibilityObject.Select(AccessibleSelection.TakeFocus);
VisualiseBatteryFull();
}

View File

@@ -10,6 +10,7 @@ namespace GHelper.UI
public static Color colorStandard = Color.FromArgb(255, 58, 174, 239);
public static Color colorTurbo = Color.FromArgb(255, 255, 32, 32);
public static Color colorCustom = Color.FromArgb(255, 255, 128, 0);
public static Color colorGray = Color.FromArgb(255, 168, 168, 168);
public static Color buttonMain;

View File

@@ -438,8 +438,8 @@ namespace GHelper.USB
105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 139, 121, 122, 123, 124, 125,
/* LCTL LFNC LWIN LALT SPC RALT RFNC RCTL ARWL ARWD ARWR PRT15 NM0 NMPD NMER */
126, 127, 128, 129, 131, 135, 136, 137, 159, 160, 161, 142, 144, 145, 146,
/* LB1 LB2 LB3 LB4 LB5 LB6 */
174, 173, 172, 171, 170, 169,
/* LB1 LB2 LB3 ARW? ARWL? ARWD? ARWR? LB4 LB5 LB6 */
174, 173, 172, 120, 140, 141, 143, 171, 170, 169,
/* KSTN LOGO LIDL LIDR */
0, 167, 176, 177,
@@ -462,8 +462,8 @@ namespace GHelper.USB
0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3,
/* LCTL LFNC LWIN LALT SPC RALT RFNC RCTL ARWL ARWD ARWR PRT15 NM0 NMPD NMER */
0, 0, 0, 0, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3,
/* LB1 LB1 LB3 LB4 LB5 LB6 */
5, 5, 4, 6, 7, 7,
/* LB1 LB1 LB3 ARW? ARW? ARW? ARW? LB4 LB5 LB6 */
5, 5, 4, 3, 3, 3, 3, 6, 7, 7,
/* KSTN LOGO LIDL LIDR */
3, 0, 0, 3,
@@ -486,8 +486,8 @@ namespace GHelper.USB
0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
/* LCTL LFNC LWIN LALT SPC RALT RFNC RCTL ARWL ARWD ARWR PRT15 NM0 NMPD NMER */
0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3,
/* LB1 LB1 LB3 LB4 LB5 LB6 */
5, 5, 4, 6, 7, 7,
/* LB1 LB1 LB3 ARW? ARW? ARW? ARW? LB4 LB5 LB6 */
5, 5, 4, 2, 2, 2, 3, 6, 7, 7,
/* KSTN LOGO LIDL LIDR */
3, 0, 0, 3,
@@ -611,6 +611,7 @@ namespace GHelper.USB
if (init || initDirect)
{
initDirect = false;
Init();
AsusHid.WriteAura(new byte[] { AsusHid.AURA_ID, 0xbc, 1 });
}

112
app/Updates.Designer.cs generated
View File

@@ -42,12 +42,18 @@ namespace GHelper
panelDriversTitle = new Panel();
labelDrivers = new Label();
pictureDrivers = new PictureBox();
tableLayoutLegend = new TableLayoutPanel();
labelLegendGreen = new Label();
labelLegendGray = new Label();
labelLegendRed = new Label();
labelLegend = new Label();
((System.ComponentModel.ISupportInitialize)pictureBios).BeginInit();
panelBiosTitle.SuspendLayout();
panelBios.SuspendLayout();
panelDrivers.SuspendLayout();
panelDriversTitle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureDrivers).BeginInit();
tableLayoutLegend.SuspendLayout();
SuspendLayout();
//
// tableBios
@@ -99,14 +105,14 @@ namespace GHelper
panelBiosTitle.Location = new Point(0, 0);
panelBiosTitle.Margin = new Padding(4);
panelBiosTitle.Name = "panelBiosTitle";
panelBiosTitle.Size = new Size(1294, 62);
panelBiosTitle.Size = new Size(1236, 60);
panelBiosTitle.TabIndex = 3;
//
// labelUpdates
//
labelUpdates.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelUpdates.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelUpdates.Location = new Point(848, 23);
labelUpdates.Location = new Point(919, 19);
labelUpdates.Name = "labelUpdates";
labelUpdates.Size = new Size(245, 32);
labelUpdates.TabIndex = 4;
@@ -122,7 +128,7 @@ namespace GHelper
buttonRefresh.FlatAppearance.BorderSize = 0;
buttonRefresh.FlatStyle = FlatStyle.Flat;
buttonRefresh.Image = Properties.Resources.icons8_refresh_32;
buttonRefresh.Location = new Point(1221, 14);
buttonRefresh.Location = new Point(1172, 11);
buttonRefresh.Name = "buttonRefresh";
buttonRefresh.Secondary = true;
buttonRefresh.Size = new Size(52, 46);
@@ -134,11 +140,11 @@ namespace GHelper
panelBios.AutoSize = true;
panelBios.Controls.Add(tableBios);
panelBios.Dock = DockStyle.Top;
panelBios.Location = new Point(0, 62);
panelBios.Location = new Point(0, 60);
panelBios.Margin = new Padding(4);
panelBios.Name = "panelBios";
panelBios.Padding = new Padding(20);
panelBios.Size = new Size(1294, 40);
panelBios.Size = new Size(1236, 40);
panelBios.TabIndex = 4;
//
// panelDrivers
@@ -146,11 +152,11 @@ namespace GHelper
panelDrivers.AutoSize = true;
panelDrivers.Controls.Add(tableDrivers);
panelDrivers.Dock = DockStyle.Top;
panelDrivers.Location = new Point(0, 146);
panelDrivers.Location = new Point(0, 144);
panelDrivers.Margin = new Padding(4);
panelDrivers.Name = "panelDrivers";
panelDrivers.Padding = new Padding(20);
panelDrivers.Size = new Size(1294, 40);
panelDrivers.Size = new Size(1236, 40);
panelDrivers.TabIndex = 6;
//
// tableDrivers
@@ -175,10 +181,10 @@ namespace GHelper
panelDriversTitle.Controls.Add(labelDrivers);
panelDriversTitle.Controls.Add(pictureDrivers);
panelDriversTitle.Dock = DockStyle.Top;
panelDriversTitle.Location = new Point(0, 102);
panelDriversTitle.Location = new Point(0, 100);
panelDriversTitle.Margin = new Padding(4);
panelDriversTitle.Name = "panelDriversTitle";
panelDriversTitle.Size = new Size(1294, 44);
panelDriversTitle.Size = new Size(1236, 44);
panelDriversTitle.TabIndex = 5;
//
// labelDrivers
@@ -203,12 +209,91 @@ namespace GHelper
pictureDrivers.TabIndex = 2;
pictureDrivers.TabStop = false;
//
// tableLayoutLegend
//
tableLayoutLegend.AutoSize = true;
tableLayoutLegend.AutoSizeMode = AutoSizeMode.GrowAndShrink;
tableLayoutLegend.ColumnCount = 4;
tableLayoutLegend.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15.151515F));
tableLayoutLegend.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 28.2828274F));
tableLayoutLegend.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 28.2828274F));
tableLayoutLegend.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 28.2828274F));
tableLayoutLegend.Controls.Add(labelLegendGreen, 0, 0);
tableLayoutLegend.Controls.Add(labelLegendGray, 0, 0);
tableLayoutLegend.Controls.Add(labelLegendRed, 1, 0);
tableLayoutLegend.Controls.Add(labelLegend, 0, 0);
tableLayoutLegend.Dock = DockStyle.Bottom;
tableLayoutLegend.Location = new Point(0, 608);
tableLayoutLegend.Margin = new Padding(0);
tableLayoutLegend.Name = "tableLayoutLegend";
tableLayoutLegend.Padding = new Padding(10, 0, 10, 20);
tableLayoutLegend.RowCount = 1;
tableLayoutLegend.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
tableLayoutLegend.Size = new Size(1236, 82);
tableLayoutLegend.TabIndex = 7;
//
// labelLegendGreen
//
labelLegendGreen.AutoSize = true;
labelLegendGreen.BackColor = Color.Green;
labelLegendGreen.Dock = DockStyle.Top;
labelLegendGreen.ForeColor = Color.White;
labelLegendGreen.Location = new Point(547, 10);
labelLegendGreen.Margin = new Padding(10);
labelLegendGreen.Name = "labelLegendGreen";
labelLegendGreen.Padding = new Padding(5);
labelLegendGreen.Size = new Size(323, 42);
labelLegendGreen.TabIndex = 4;
labelLegendGreen.Text = "Updated";
//
// labelLegendGray
//
labelLegendGray.AutoSize = true;
labelLegendGray.BackColor = Color.Gray;
labelLegendGray.Dock = DockStyle.Top;
labelLegendGray.ForeColor = Color.White;
labelLegendGray.Location = new Point(204, 10);
labelLegendGray.Margin = new Padding(10);
labelLegendGray.Name = "labelLegendGray";
labelLegendGray.Padding = new Padding(5);
labelLegendGray.Size = new Size(323, 42);
labelLegendGray.TabIndex = 3;
labelLegendGray.Text = "Can't check local version";
//
// labelLegendRed
//
labelLegendRed.AutoSize = true;
labelLegendRed.BackColor = Color.Red;
labelLegendRed.Dock = DockStyle.Top;
labelLegendRed.ForeColor = Color.White;
labelLegendRed.Location = new Point(890, 10);
labelLegendRed.Margin = new Padding(10);
labelLegendRed.Name = "labelLegendRed";
labelLegendRed.Padding = new Padding(5);
labelLegendRed.Size = new Size(326, 42);
labelLegendRed.TabIndex = 1;
labelLegendRed.Text = "Update Available";
//
// labelLegend
//
labelLegend.AutoSize = true;
labelLegend.Dock = DockStyle.Top;
labelLegend.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelLegend.Location = new Point(20, 10);
labelLegend.Margin = new Padding(10);
labelLegend.Name = "labelLegend";
labelLegend.Padding = new Padding(5);
labelLegend.Size = new Size(164, 42);
labelLegend.TabIndex = 0;
labelLegend.Text = "Legend";
//
// Updates
//
AutoScaleDimensions = new SizeF(192F, 192F);
AutoScaleMode = AutoScaleMode.Dpi;
AutoScroll = true;
ClientSize = new Size(1294, 690);
ClientSize = new Size(1236, 690);
Controls.Add(tableLayoutLegend);
Controls.Add(panelDrivers);
Controls.Add(panelDriversTitle);
Controls.Add(panelBios);
@@ -229,6 +314,8 @@ namespace GHelper
panelDriversTitle.ResumeLayout(false);
panelDriversTitle.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureDrivers).EndInit();
tableLayoutLegend.ResumeLayout(false);
tableLayoutLegend.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
@@ -247,5 +334,10 @@ namespace GHelper
private PictureBox pictureDrivers;
private RButton buttonRefresh;
private Label labelUpdates;
private TableLayoutPanel tableLayoutLegend;
private Label labelLegend;
private Label labelLegendRed;
private Label labelLegendGray;
private Label labelLegendGreen;
}
}

View File

@@ -1,4 +1,5 @@
using GHelper.UI;
using Ryzen;
using System.Diagnostics;
using System.Management;
using System.Net;
@@ -54,17 +55,20 @@ namespace GHelper
tableBios.Visible = false;
tableDrivers.Visible = false;
labelLegendGreen.BackColor = colorEco;
labelLegendRed.BackColor = colorTurbo;
ClearTable(tableBios);
ClearTable(tableDrivers);
Task.Run(async () =>
{
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDBIOS?website=global&model={model}&cpu=", 1, tableBios);
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDBIOS?website=global&model={model}&cpu=CPUNAME", model, 1, tableBios);
});
Task.Run(async () =>
{
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&cpu={model}&osid=52", 0, tableDrivers);
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&cpu=CPUNAME&osid=52", model, 0, tableDrivers);
});
}
@@ -220,7 +224,7 @@ namespace GHelper
return input;
}
public async void DriversAsync(string url, int type, TableLayoutPanel table)
public async void DriversAsync(string url, string model, int type, TableLayoutPanel table)
{
try
@@ -230,11 +234,26 @@ namespace GHelper
AutomaticDecompression = DecompressionMethods.All
}))
{
var urlNormal = url.Replace("CPUNAME", model);
Logger.WriteLine(urlNormal);
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate, br");
httpClient.DefaultRequestHeaders.Add("User-Agent", "C# App");
var json = await httpClient.GetStringAsync(url);
var json = await httpClient.GetStringAsync(urlNormal);
var data = JsonSerializer.Deserialize<JsonElement>(json);
var result = data.GetProperty("Result");
// fallback for bugged API
if (result.ToString() == "" || result.GetProperty("Obj").GetArrayLength() == 0)
{
Random rnd = new Random();
var urlFallback = url.Replace("CPUNAME", model + rnd.Next(10, 99));
Logger.WriteLine(urlFallback);
json = await httpClient.GetStringAsync(urlFallback);
data = JsonSerializer.Deserialize<JsonElement>(json);
}
var groups = data.GetProperty("Result").GetProperty("Obj");

View File

@@ -13,7 +13,7 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
- [Troubleshooting](https://github.com/seerge/g-helper/wiki/Troubleshooting)
- [Power User Settings](https://github.com/seerge/g-helper/wiki/Power-user-settings)
### Support project in [:euro: EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) or [💵 USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY)
### Support project : [:euro: Paypal EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 Paypal USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) | [🪙 Stripe](https://buy.stripe.com/00gaFJ9Lf79v7WobII)
[![G-Helper Download](https://github.com/seerge/g-helper/assets/5920850/4d98465a-63a5-4498-ae14-afb3e67e7e82)](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
@@ -38,7 +38,7 @@ Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13
2. GPU modes: Eco - Standard - Ultimate - Optimized
3. Screen refresh rate control with display overdrive (OD)
4. Custom fan curve editor, power limits and turbo boost selection for every performance mode
5. Anime Matrix or Slash Lightning control including animated GIFs, clock and Audio visualizer
5. Anime Matrix or Slash Lighting control including animated GIFs, clock and Audio visualizer
6. Backlight animation modes and colors
7. Custom hotkeys (M-keys, FN+X keys)
8. Monitor CPU and GPU temperature, fan speeds and battery status
@@ -113,9 +113,10 @@ Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contributio
- ``Ctrl + M1 / M2`` - Screen brightness Down / Up
- ``Shift + M1 / M2`` - Backlight brightness Down / Up
- ``Fn + C`` - Fn-Lock
- ``Fn + Shift + F7 / F8`` - Matrix / Slash Lightning brightness Down / Up
- ``Fn + Shift + F7 / F8`` - Matrix / Slash Lighting brightness Down / Up
- ``Fn + Shift + F7 / F8`` - Screenpad brightness Down / Up
- ``Ctrl + Shift + F20`` - Mute Microphone
- ``Ctrl + Shift + Alt + F13`` - Toggle Display Refresh Rate
- ``Ctrl + Shift + Alt + F14`` - Eco GPU Mode
- ``Ctrl + Shift + Alt + F15`` - Standard GPU Mode
- ``Ctrl + Shift + Alt + F16`` - Silent