Compare commits

..

96 Commits

Author SHA1 Message Date
Serge
8f70f2a65f Max fan speeds for FX607J 2024-04-21 13:36:01 +02:00
Serge
e193290736 Tray icons update 2024-04-21 13:27:57 +02:00
Serge
23ee21e351 BW Icons update https://github.com/seerge/g-helper/issues/2463 2024-04-21 11:03:37 +02:00
Serge
1e18b94a9c Added UM340 to OLED list https://github.com/seerge/g-helper/discussions/2462 2024-04-20 23:55:29 +02:00
Serge
bdba153ddc Slash Lighting tweaks https://github.com/seerge/g-helper/issues/2381 2024-04-20 18:57:10 +02:00
Serge
c65002cbae Per-led static slash lighting brightness https://github.com/seerge/g-helper/issues/2448 2024-04-19 19:29:20 +02:00
Serge
b6682522d8 Static white for Slash Lighting https://github.com/seerge/g-helper/issues/2448 2024-04-19 16:40:52 +02:00
Serge
c6247f630c Slash lighting tweaks 2024-04-19 14:48:02 +02:00
Serge
cd4936c839 Merge branch 'main' of https://github.com/seerge/g-helper 2024-04-19 11:50:58 +02:00
Serge
5dc9061162 Version Bump 2024-04-19 11:50:56 +02:00
Serge
81b128e76c New translations strings.resx (Chinese Traditional) (#2450) 2024-04-19 11:42:36 +02:00
Serge
5fc999efe8 Fn-lock tweak 2024-04-18 18:14:09 +02:00
Serge
ae41aedb1e Support for inverted fn-lock https://github.com/seerge/g-helper/issues/2445 2024-04-18 18:03:56 +02:00
Serge
51bf22e6a6 Static mode for Slash Lighting https://github.com/seerge/g-helper/issues/2448 2024-04-18 12:52:49 +02:00
Serge
ad3d31cba4 Slash lightning tweak https://github.com/seerge/g-helper/issues/2447 2024-04-18 10:55:00 +02:00
Serge
f13209f403 G614JVR backlight tweaks https://github.com/seerge/g-helper/issues/2444 2024-04-17 17:05:26 +02:00
Serge
2a949732a2 OLED settings for M140 https://github.com/seerge/g-helper/issues/2445 2024-04-17 11:01:00 +02:00
Serge
fc1f594a61 Max fan speeds for GU605 2024-04-16 16:24:55 +02:00
Serge
300eb7af70 Aura cleanup 2024-04-15 19:32:29 +02:00
Serge
55f45fba03 Merge branch 'main' of https://github.com/seerge/g-helper 2024-04-15 12:18:21 +02:00
Serge
b41055ce0f Updates tweaks 2024-04-15 12:18:18 +02:00
Serge
ebb8cda8f0 New translations strings.resx (Turkish) (#2434) 2024-04-15 12:17:59 +02:00
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
Serge
77e63f7703 Version bump 2024-03-28 12:57:18 +01:00
Serge
8e686aded3 Merge branch 'main' of https://github.com/seerge/g-helper 2024-03-28 12:56:19 +01:00
Serge
f866f724b2 Generate battery report in user home directory https://github.com/seerge/g-helper/issues/2311 2024-03-28 12:56:17 +01:00
Serge
29408c4256 Update README.md 2024-03-28 03:37:59 +01:00
Serge
c77a87f435 Improved HDR detection 2024-03-27 23:56:13 +01:00
Serge
66a1774d78 Merge branch 'main' of https://github.com/seerge/g-helper 2024-03-27 18:25:56 +01:00
Serge
2532aadb13 Generate battery report when clicking on battery health #2311 2024-03-27 18:25:54 +01:00
Serge
2ba6c9de20 New Crowdin updates (#2310)
* 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)

* New translations strings.resx (Spanish)

* New translations strings.resx (Chinese Traditional)
2024-03-27 18:19:45 +01:00
Vaibhav Garg
e6938ea5cf Add Delay to Screenpad Actions (#2305)
* Add Delay to Screenpad Actions

Added "screenpad_delay" config

* revert .net version

revert .net version
2024-03-27 18:19:36 +01:00
Serge
5bf60e24b5 Improved USB-C charger detection for Optimized mode https://github.com/seerge/g-helper/issues/2143 2024-03-27 18:19:21 +01:00
Serge
731a6c845f Allow clicking on visual-modes label to enable them again 2024-03-27 18:11:57 +01:00
54 changed files with 827 additions and 300 deletions

View File

@@ -59,16 +59,6 @@ namespace GHelper.AnimeMatrix
if (deviceSlash is not null) SetSlash(wakeUp);
}
public void SetLidMode(bool force = false)
{
if (AppConfig.Is("matrix_lid") || force)
{
Logger.WriteLine($"Matrix LidClosed: {lidClose}");
SetDevice(true);
}
}
public void SetSlash(bool wakeUp = false)
{
if (deviceSlash is null) return;
@@ -108,16 +98,48 @@ namespace GHelper.AnimeMatrix
}
deviceSlash.Init();
deviceSlash.SetMode((SlashMode)running);
deviceSlash.SetOptions(true, brightness, inteval);
deviceSlash.Save();
switch ((SlashMode)running)
{
case SlashMode.Static:
deviceSlash.SetStatic(brightness);
break;
default:
deviceSlash.SetMode((SlashMode)running);
deviceSlash.SetOptions(true, brightness, inteval);
deviceSlash.Save();
break;
}
}
});
}
public void SetLidMode(bool force = false)
{
bool matrixLid = AppConfig.Is("matrix_lid");
if (deviceSlash is not null)
{
deviceSlash.SetLidMode(matrixLid);
deviceSlash.SetSleepActive(!matrixLid);
}
if (matrixLid || force)
{
Logger.WriteLine($"Matrix LidClosed: {lidClose}");
SetDevice(true);
}
}
public void SetBatteryAuto()
{
if (deviceSlash is not null) deviceSlash.SetBatterySaver(AppConfig.Is("matrix_auto"));
if (deviceSlash is not null)
{
bool auto = AppConfig.Is("matrix_auto");
deviceSlash.SetBatterySaver(auto);
if (!auto) SetSlash();
}
if (deviceMatrix is not null) SetMatrix();
}

View File

@@ -19,7 +19,8 @@ namespace GHelper.AnimeMatrix
Ramp,
GameOver,
Start,
Buzzer
Buzzer,
Static
}
internal class SlashPacket : Packet
@@ -53,6 +54,7 @@ namespace GHelper.AnimeMatrix
{ SlashMode.GameOver, "Game Over"},
{ SlashMode.Start, "Start"},
{ SlashMode.Buzzer, "Buzzer"},
{ SlashMode.Static, "Static"},
};
private static Dictionary<SlashMode, byte> modeCodes = new Dictionary<SlashMode, byte>
@@ -115,6 +117,17 @@ namespace GHelper.AnimeMatrix
Set(Packet<SlashPacket>(0xD3, 0x04, 0x00, 0x0C, 0x01, modeByte, 0x02, 0x19, 0x03, 0x13, 0x04, 0x11, 0x05, 0x12, 0x06, 0x13), "SlashMode");
}
public void SetStatic(int brightness = 0)
{
byte brightnessByte = (byte)(brightness * 85.333);
Set(Packet<SlashPacket>(0xD2, 0x02, 0x01, 0x08, 0xAC), "Static");
Set(Packet<SlashPacket>(0xD3, 0x03, 0x01, 0x08, 0xAC, 0xFF, 0xFF, 0x01, 0x05, 0xFF, 0xFF), "StaticSettings");
Set(Packet<SlashPacket>(0xD4, 0x00, 0x00, 0x01, 0xAC), "StaticSave");
Set(Packet<SlashPacket>(0xD3, 0x00, 0x00, 0x07, brightnessByte, brightnessByte, brightnessByte, brightnessByte, brightnessByte, brightnessByte, brightnessByte), "Static White");
}
public void SetOptions(bool status, int brightness = 0, int interval = 0)
{
byte brightnessByte = (byte)(brightness * 85.333);
@@ -124,18 +137,24 @@ namespace GHelper.AnimeMatrix
public void SetBatterySaver(bool status)
{
Set(Packet<SlashPacket>(0xD8, 0x01, 0x00, 0x01, status ? (byte)0x80 : (byte)0x00), "SlashBatterySaver");
Set(Packet<SlashPacket>(0xD8, 0x01, 0x00, 0x01, status ? (byte)0x80 : (byte)0x00), $"SlashBatterySaver {status}");
}
public void SetLidMode(bool status)
{
Set(Packet<SlashPacket>(0xD8, 0x00, 0x00, 0x02, 0xA5, status ? (byte)0x80 : (byte)0x00));
Set(Packet<SlashPacket>(0xD8, 0x00, 0x00, 0x02, 0xA5, status ? (byte)0x80 : (byte)0x00), $"DisableLidClose {status}");
}
public void SetSleepActive(bool status)
{
Set(Packet<SlashPacket>(0xD2, 0x02, 0x01, 0x08, 0xA1), "SleepInit");
Set(Packet<SlashPacket>(0xD3, 0x03, 0x01, 0x08, 0xA1, 0x00, 0xFF, status ? (byte)0x01 : (byte)0x00, 0x02, 0xFF, 0xFF), $"Sleep {status}");
}
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

@@ -404,9 +404,14 @@ public static class AppConfig
return ContainsModel("GA503") || IsSlash();
}
public static bool IsInvertedFNLock()
{
return ContainsModel("M140");
}
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") || ContainsModel("M140") || ContainsModel("UM340");
}
public static bool IsNoOverdrive()
@@ -426,7 +431,7 @@ public static class AppConfig
public static bool IsStrixLimitedRGB()
{
return (ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G713RC") || ContainsModel("G513QM") || ContainsModel("G531G")) && !Is("per_key_rgb");
return (ContainsModel("G614JV_") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G713RC") || ContainsModel("G513QM") || ContainsModel("G531G")) && !Is("per_key_rgb");
}
@@ -442,7 +447,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 +540,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 +558,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()
@@ -588,11 +596,6 @@ public static class AppConfig
return ContainsModel("G814") || ContainsModel("G614") || ContainsModel("G834") || ContainsModel("G634");
}
public static bool IsNewAura()
{
return ContainsModel("G834") || ContainsModel("G614") || ContainsModel("G834") || ContainsModel("G634");
}
public static bool IsNoFNV()
{
return ContainsModel("FX507") || ContainsModel("FX707");

View File

@@ -866,14 +866,23 @@ namespace GHelper
private void VisualizeCurrentDPIProfile()
{
if (mouse.DpiProfile > mouse.DpiSettings.Count())
if (mouse.DpiProfile > mouse.DpiSettings.Length)
{
Logger.WriteLine($"Wrong mouse DPI: {mouse.DpiProfile}");
return;
}
AsusMouseDPI dpi = mouse.DpiSettings[mouse.DpiProfile - 1];
AsusMouseDPI dpi;
try
{
dpi = mouse.DpiSettings[mouse.DpiProfile - 1];
} catch (Exception ex)
{
Logger.WriteLine($"Wrong mouse DPI: {mouse.DpiProfile} {mouse.DpiSettings.Length} {ex.Message}");
return;
}
if (dpi is null)
{
return;

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

@@ -6,7 +6,7 @@ namespace GHelper.Display
public class ScreenCCD
{
public static bool GetHDRStatus(bool log = false)
public static bool GetHDRStatus(bool log = true)
{
var err = GetDisplayConfigBufferSizes(QDC.QDC_ONLY_ACTIVE_PATHS, out var pathCount, out var modeCount);
if (err != 0)
@@ -46,8 +46,8 @@ namespace GHelper.Display
info.outputTechnology == DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED ||
info.monitorFriendlyDeviceName == internalName)
{
if (log) Logger.WriteLine(info.monitorFriendlyDeviceName + " HDR: " + colorInfo.advancedColorEnabled);
return colorInfo.advancedColorEnabled;
if (log) Logger.WriteLine(info.monitorFriendlyDeviceName + " HDR: " + colorInfo.advancedColorEnabled + " " + colorInfo.bitsPerColorChannel + " " + colorInfo.value + " " + colorInfo.wideColorEnforced);
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,
@@ -40,6 +49,8 @@ namespace GHelper.Display
private static System.Timers.Timer brightnessTimer = new System.Timers.Timer(200);
public const int DefaultColorTemp = 50;
public static bool forceVisual = false;
static VisualControl()
{
brightnessTimer.Elapsed += BrightnessTimerTimer_Elapsed;
@@ -50,29 +61,44 @@ 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 SplendidGamut GetDefaultGamut()
{
return AppConfig.IsVivoZenbook() ? SplendidGamut.VivoNative : SplendidGamut.Native;
}
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;
}
@@ -83,8 +109,25 @@ namespace GHelper.Display
}
public static SplendidCommand GetDefaultVisualMode()
{
return AppConfig.IsVivoZenbook() ? SplendidCommand.VivoNormal : SplendidCommand.Default;
}
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"},
@@ -112,6 +155,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;
@@ -129,12 +184,29 @@ namespace GHelper.Display
if (mode == SplendidCommand.None) return;
if (mode == SplendidCommand.Default && init) return; // Skip default setting on init
if (ScreenCCD.GetHDRStatus(true)) return;
if (ScreenNative.GetRefreshRate(ScreenNative.FindLaptopScreen(true)) < 0) return;
if (!forceVisual && ScreenCCD.GetHDRStatus(true)) return;
if (!forceVisual && ScreenNative.GetRefreshRate(ScreenNative.FindLaptopScreen(true)) < 0) return;
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)
@@ -173,14 +245,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},

View File

@@ -58,6 +58,8 @@ namespace GHelper.Fan
if (AppConfig.ContainsModel("FA507R")) return new int[3] { 63, 57, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("FA507X")) return new int[3] { 63, 68, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("FX607J")) return new int[3] { 74, 72, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("GX650")) return new int[3] { 62, 62, DEFAULT_FAN_MAX };
if (AppConfig.ContainsModel("G732")) return new int[3] { 61, 60, DEFAULT_FAN_MAX };
@@ -68,6 +70,7 @@ namespace GHelper.Fan
if (AppConfig.ContainsModel("GV601")) return new int[3] { 78, 59, 85 };
if (AppConfig.ContainsModel("GA403")) return new int[3] { 68, 68, 80 };
if (AppConfig.ContainsModel("GU605")) return new int[3] { 62, 62, 92 };
return new int[3] { DEFAULT_FAN_MAX, DEFAULT_FAN_MAX, DEFAULT_FAN_MAX };
}

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.163</AssemblyVersion>
<AssemblyVersion>0.167</AssemblyVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">

View File

@@ -190,7 +190,7 @@ namespace GHelper.Gpu
int chargerMode = Program.acpi.DeviceGet(AsusACPI.ChargerMode);
Logger.WriteLine("ChargerStatus: " + chargerMode);
if (chargerMode < 0) return true;
if (chargerMode <= 0) return true;
return (chargerMode & AsusACPI.ChargerBarrel) > 0;
}

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

@@ -85,7 +85,8 @@ namespace GHelper.Input
InitBacklightTimer();
if (AppConfig.IsVivoZenbook()) Program.acpi.DeviceSet(AsusACPI.FnLock, AppConfig.Is("fn_lock") ? 1 : 0, "FnLock");
if (AppConfig.IsVivoZenbook())
Program.acpi.DeviceSet(AsusACPI.FnLock, AppConfig.Is("fn_lock") ^ AppConfig.IsInvertedFNLock() ? 1 : 0, "FnLock");
}
@@ -118,6 +119,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 +131,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 +389,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 +480,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();
@@ -575,17 +586,17 @@ namespace GHelper.Input
public static void ToggleFnLock()
{
int fnLock = AppConfig.Is("fn_lock") ? 0 : 1;
AppConfig.Set("fn_lock", fnLock);
bool fnLock = !AppConfig.Is("fn_lock");
AppConfig.Set("fn_lock", fnLock ? 1 : 0);
if (AppConfig.IsVivoZenbook())
Program.acpi.DeviceSet(AsusACPI.FnLock, fnLock == 1 ? 1 : 0, "FnLock");
Program.acpi.DeviceSet(AsusACPI.FnLock, fnLock ^ AppConfig.IsInvertedFNLock() ? 1 : 0, "FnLock");
else
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
Program.settingsForm.BeginInvoke(Program.settingsForm.VisualiseFnLock);
Program.toast.RunToast(fnLock == 1 ? Properties.Strings.FnLockOn : Properties.Strings.FnLockOff, ToastIcon.FnLock);
Program.toast.RunToast(fnLock ? Properties.Strings.FnLockOn : Properties.Strings.FnLockOff, ToastIcon.FnLock);
}
public static void TabletMode()
@@ -687,6 +698,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;
}
}
@@ -809,17 +832,23 @@ namespace GHelper.Input
public static void ToggleScreenpad()
{
int toggle = AppConfig.Is("screenpad_toggle") ? 0 : 1;
int brightness = AppConfig.Get("screenpad", 100);
int brightness = toggle == 0 ? -10 : AppConfig.Get("screenpad", 100);
Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, toggle, "ScreenpadToggle");
if (toggle > 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(brightness * 255 / 100, 0), "Screenpad");
Debug.WriteLine($"Screenpad toggle = {toggle}");
ApplyScreenpadAction(brightness, true);
AppConfig.Set("screenpad_toggle", toggle);
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;
@@ -851,6 +880,37 @@ namespace GHelper.Input
}
private static System.Threading.Timer screenpadActionTimer;
private static int screenpadBrightnessToSet;
public static void ApplyScreenpadAction(int brightness, bool doToggle = false)
{
var delay = AppConfig.Get("screenpad_delay", 1500);
//Action
Action<int> action = (b) =>
{
if (b >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn");
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(b * 255 / 100, 0), "Screenpad");
if (b < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
};
if(delay <= 0 || (brightness > 0 && brightness < 100 && doToggle == false)) //instant action
{
action(brightness);
}
else //delayed action
{
//Timer Approach
if (screenpadActionTimer == null)
{
screenpadActionTimer = new System.Threading.Timer(_ => action(screenpadBrightnessToSet), null, Timeout.Infinite, Timeout.Infinite);
}
//Start Timer
screenpadBrightnessToSet = brightness;
screenpadActionTimer.Change(delay, Timeout.Infinite);
}
}
public static void SetScreenpad(int delta)
{
int brightness = AppConfig.Get("screenpad", 100);
@@ -860,7 +920,6 @@ namespace GHelper.Input
if (brightness < 0) brightness = 100;
else if (brightness >= 100) brightness = 0;
else brightness = -10;
}
else
{
@@ -869,11 +928,7 @@ namespace GHelper.Input
AppConfig.Set("screenpad", brightness);
if (brightness >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn");
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(brightness * 255 / 100, 0), "Screenpad");
if (brightness < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
ApplyScreenpadAction(brightness);
string toast;
@@ -882,10 +937,8 @@ namespace GHelper.Input
else toast = brightness.ToString() + "%";
Program.toast.RunToast($"Screen Pad {toast}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
}
static void LaunchProcess(string command = "")
{

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

@@ -139,12 +139,6 @@
<data name="icons8-bicycle-48 (1)" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-bicycle-48 (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="standard" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="eco" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_mute_unmute_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-mute-unmute-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -226,9 +220,6 @@
<data name="icons8-hibernate-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-hibernate-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ultimate" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ultimate.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-keyboard-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-keyboard-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -349,10 +340,19 @@
<data name="dark_standard" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\dark-standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="eco" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="light_eco" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\light-eco.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="light_standard" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\light-standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="standard" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\standard.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ultimate" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ultimate.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

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

@@ -494,6 +494,9 @@ Trotzdem fortfahren?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Laptopbildschirm</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED-Statusanzeige</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Deckel</value>
</data>
@@ -503,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>
@@ -768,10 +774,10 @@ Trotzdem fortfahren?</value>
<value>Darstellungsmodus</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
<value>Darstellungsmodi sind nicht verfügbar, wenn HDR aktiv ist.</value>
</data>
<data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value>
<value>Darstellungsmodi sind nicht verfügbar, wenn Laptop-Bildschirm aus ist.</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Lautstärke verringern</value>

View File

@@ -494,6 +494,9 @@
<data name="LaptopScreen" xml:space="preserve">
<value>Pantalla del portátil</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>Indicadores de estado LED</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Tapa</value>
</data>
@@ -503,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>
@@ -768,10 +774,10 @@
<value>Modo visual</value>
</data>
<data name="VisualModesHDR" xml:space="preserve">
<value>Visual Modes are not available when HDR is active</value>
<value>Los modos visuales no están disponibles cuando el HDR está activo</value>
</data>
<data name="VisualModesScreen" xml:space="preserve">
<value>Visual Modes are not available when laptop screen is off</value>
<value>Los modos visuales no están disponibles cuando la pantalla portátil está apagada</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Bajar volumen</value>

View File

@@ -494,6 +494,9 @@ Voulez-vous continuer ?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Écran</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Capot</value>
</data>
@@ -503,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>
@@ -768,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

@@ -494,6 +494,9 @@ Do you still want to continue?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Laptop kijelző</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Fedél</value>
</data>
@@ -503,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

@@ -494,6 +494,9 @@ Apakah Anda masih ingin melanjutkan?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Layar Laptop</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Lid</value>
</data>
@@ -503,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

@@ -494,6 +494,9 @@ Sei sicuro di voler continuare?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Schermo Laptop</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Lid</value>
</data>
@@ -503,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

@@ -494,6 +494,9 @@
<data name="LaptopScreen" xml:space="preserve">
<value>화면</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>덮개</value>
</data>
@@ -503,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

@@ -494,6 +494,9 @@ Vis tiek norite tęsti?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Ekranas</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Dangtis</value>
</data>
@@ -503,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

@@ -494,6 +494,9 @@ Nadal chcesz kontynuować?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Ekran laptopa</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>Wskaźniki stanu</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Pokrywa</value>
</data>
@@ -503,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>
@@ -768,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

@@ -494,6 +494,9 @@ Do you still want to continue?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Tela</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Tampa</value>
</data>
@@ -503,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

@@ -494,6 +494,9 @@ Quer prosseguir?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Ecrã</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Tampa</value>
</data>
@@ -503,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

@@ -494,6 +494,9 @@
<data name="LaptopScreen" xml:space="preserve">
<value>Ecran Laptop</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Capac</value>
</data>
@@ -503,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>
@@ -139,7 +139,7 @@
<value>Ultimate Modu kapatmak yeniden başlatmayı gerektirir</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Ultimate Modu etkinleştirmek yeniden başlatmayı gerektirir</value>
<value>Ultimate Mod için yeniden başlatılmalı</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Şimdi yeniden başlatılsın mı?</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.
@@ -387,10 +387,10 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Profili Dışa Aktar</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Ekstra</value>
<value>Ek Özellikler</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>
@@ -420,10 +420,10 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Fanlar + Güç</value>
</data>
<data name="FlickerFreeDimming" xml:space="preserve">
<value>Flicker-free Dimming</value>
<value>Titreşimsiz Karartma</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Fn+F kısayol tuşlarını FN tuşuna basmadan çalıştır</value>
<value>Fn+F kısayolunu Fn tuşuna basmadan çalıştır</value>
</data>
<data name="FnLockOff" xml:space="preserve">
<value>FN-Lock Kapalı</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>
@@ -494,6 +494,9 @@ Yine de devam etmek istiyor musunuz?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Laptop Ekranı</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Durum Göstergeleri</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Kapak</value>
</data>
@@ -503,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>
@@ -510,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>
@@ -519,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>
@@ -543,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>
@@ -555,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>
@@ -576,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>
@@ -585,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>
@@ -597,10 +603,10 @@ Yine de devam etmek istiyor musunuz?</value>
<value>Yeni güncellemeler</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>Güncelleme yok</value>
<value>Yeni 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>
@@ -615,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>
@@ -651,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>
@@ -669,7 +675,7 @@ Yine de devam etmek istiyor musunuz?</value>
<value>RPM</value>
</data>
<data name="RSDeadzones" xml:space="preserve">
<value>Sağ Joystick Ölü Bölgeleri</value>
<value>Sağ Çubuk Ölü Bölgeleri</value>
</data>
<data name="RTDeadzones" xml:space="preserve">
<value>Sağ Tetik Ölü Bölgeleri</value>
@@ -687,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>
@@ -696,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>
@@ -744,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>
@@ -762,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>
@@ -786,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

@@ -494,6 +494,9 @@
<data name="LaptopScreen" xml:space="preserve">
<value>Дисплей</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED-Індикатори стану</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Кришка</value>
</data>
@@ -503,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>
@@ -768,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

@@ -494,6 +494,9 @@ Do you still want to continue?</value>
<data name="LaptopScreen" xml:space="preserve">
<value>Màn hình Laptop</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED Status Indicators</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Màn gập</value>
</data>
@@ -503,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

@@ -494,6 +494,9 @@
<data name="LaptopScreen" xml:space="preserve">
<value>笔记本屏幕</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED 状态指示器</value>
</data>
<data name="Lid" xml:space="preserve">
<value>盖子</value>
</data>
@@ -503,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>
@@ -579,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>
@@ -609,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>
@@ -765,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>
@@ -786,6 +792,6 @@
<value>窗口置顶</value>
</data>
<data name="Zoom" xml:space="preserve">
<value>Zoom</value>
<value>缩放</value>
</data>
</root>

View File

@@ -494,6 +494,9 @@
<data name="LaptopScreen" xml:space="preserve">
<value>螢幕顯示</value>
</data>
<data name="LEDStatusIndicators" xml:space="preserve">
<value>LED狀態指示器</value>
</data>
<data name="Lid" xml:space="preserve">
<value>螢幕背蓋</value>
</data>
@@ -503,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>Logo</value>
</data>
@@ -768,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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

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);
@@ -1705,12 +1706,13 @@ namespace GHelper
//
// labelVisual
//
labelVisual.Cursor = Cursors.Hand;
labelVisual.ForeColor = SystemColors.GrayText;
labelVisual.Location = new Point(20, 170);
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;
@@ -1864,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";
//
@@ -1874,7 +1876,7 @@ namespace GHelper
AutoScaleMode = AutoScaleMode.Dpi;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(849, 1559);
ClientSize = new Size(849, 2045);
Controls.Add(panelFooter);
Controls.Add(panelVersion);
Controls.Add(panelBattery);

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;
@@ -256,10 +256,23 @@ namespace GHelper
VisualiseFnLock();
buttonFnLock.Click += ButtonFnLock_Click;
labelVisual.Click += LabelVisual_Click;
labelCharge.Click += LabelCharge_Click;
panelPerformance.Focus();
InitVisual();
}
private void LabelCharge_Click(object? sender, EventArgs e)
{
BatteryControl.BatteryReport();
}
private void LabelVisual_Click(object? sender, EventArgs e)
{
labelVisual.Visible = false;
VisualControl.forceVisual = true;
}
public void InitVisual()
{
@@ -310,7 +323,7 @@ namespace GHelper
panelGamma.Visible = true;
tableVisual.Visible = true;
var visualValue = (SplendidCommand)AppConfig.Get("visual", (int)SplendidCommand.Default);
var visualValue = (SplendidCommand)AppConfig.Get("visual", (int)VisualControl.GetDefaultVisualMode());
var colorTempValue = AppConfig.Get("color_temp", VisualControl.DefaultColorTemp);
comboVisual.DropDownStyle = ComboBoxStyle.DropDownList;
@@ -339,7 +352,7 @@ namespace GHelper
comboGamut.DataSource = new BindingSource(gamuts, null);
comboGamut.DisplayMember = "Value";
comboGamut.ValueMember = "Key";
comboGamut.SelectedValue = (SplendidGamut)AppConfig.Get("gamut", (int)SplendidGamut.Native);
comboGamut.SelectedValue = (SplendidGamut)AppConfig.Get("gamut", (int)VisualControl.GetDefaultGamut());
comboGamut.SelectedValueChanged += ComboGamut_SelectedValueChanged;
comboGamut.Visible = true;
@@ -1054,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)
@@ -1664,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

@@ -268,25 +268,6 @@ namespace GHelper.USB
Encoding.ASCII.GetBytes("]ASUS Tech.Inc."),
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1A },
}, "Init");
// Random data AC sends to keyboard on start, that seem to wake up keyboard on 2024
if (AppConfig.IsNewAura())
{
AsusHid.Write(new List<byte[]> {
new byte[] { AsusHid.AURA_ID, 0x9F, 0x01 },
new byte[] { AsusHid.AURA_ID, 0xBF },
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x10 },
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x20 },
new byte[] { AsusHid.AURA_ID, 0xC0, 0x03, 0x01 },
new byte[] { AsusHid.AURA_ID, 0x9E, 0x01, 0x20 },
Encoding.ASCII.GetBytes("]ASUS Tech.Inc."),
new byte[] { AsusHid.AURA_ID, 0x05, 0x20, 0x31, 0, 0x1A },
new byte[] { AsusHid.AURA_ID, 0xC0, 0x00, 0x01 },
}, "Init");
}
}
@@ -438,8 +419,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 +443,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 +467,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 +592,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

@@ -54,12 +54,15 @@ 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={model}", 1, tableBios);
});
Task.Run(async () =>
@@ -230,11 +233,23 @@ namespace GHelper
AutomaticDecompression = DecompressionMethods.All
}))
{
Logger.WriteLine(url);
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate, br");
httpClient.DefaultRequestHeaders.Add("User-Agent", "C# App");
var json = await httpClient.GetStringAsync(url);
var data = JsonSerializer.Deserialize<JsonElement>(json);
var result = data.GetProperty("Result");
// fallback for bugged API
if (result.ToString() == "" || result.GetProperty("Obj").GetArrayLength() == 0)
{
var urlFallback = url + "&tag=" + new Random().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

@@ -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)](https://GitHub.com/seerge/g-helper/releases/)
[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social)](https://GitHub.com/seerge/g-helper/stargazers/)
[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total)](https://GitHub.com/seerge/g-helper/releases/) [![GitHub stars](https://img.shields.io/github/stars/seerge/g-helper.svg?style=social)](https://GitHub.com/seerge/g-helper/stargazers/) <sup>[中文版点这里](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)</sup>
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra load and unnecessary services.
Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, TUF Series, Strix / Scar Series, ProArt, Vivobook, Zenbook, ROG Ally and many more!
@@ -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