mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
58 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d7202b12bf | ||
|
|
7e7c90d4fb | ||
|
|
50503e126e | ||
|
|
2f2d64135a | ||
|
|
dea88f87df | ||
|
|
819207c4f1 | ||
|
|
63d3393b7b | ||
|
|
960ebf3bbb | ||
|
|
dba6b1a24f | ||
|
|
5968788105 | ||
|
|
819f750591 | ||
|
|
be3e15cd6e | ||
|
|
871f80f654 | ||
|
|
c2c5d2a0c5 | ||
|
|
86e08bc3f5 | ||
|
|
c63c64967f | ||
|
|
468ed27390 | ||
|
|
c6ea0b0e3e | ||
|
|
000162b989 | ||
|
|
df5bdfde33 | ||
|
|
815d033a56 | ||
|
|
857d858987 | ||
|
|
9d130ca540 | ||
|
|
0a503d286a | ||
|
|
f72e3a69dd | ||
|
|
35867a434c | ||
|
|
5570513eeb | ||
|
|
ceb1c9a250 | ||
|
|
e942d3fd49 | ||
|
|
482fe00014 | ||
|
|
54fdf9231c | ||
|
|
b9be9a9c97 | ||
|
|
501d0a1666 | ||
|
|
a7e50f89ca | ||
|
|
083e918086 | ||
|
|
e6a547dbfd | ||
|
|
1321b2eb31 | ||
|
|
5e96e3e9bc | ||
|
|
5e4bd13aa9 | ||
|
|
f320da9245 | ||
|
|
a024c05bc1 | ||
|
|
15501c7845 | ||
|
|
011fdeeb36 | ||
|
|
3df0aa04de | ||
|
|
9f364a331c | ||
|
|
08af10afef | ||
|
|
4ea59d2669 | ||
|
|
5eb0c1d095 | ||
|
|
a8c32470b3 | ||
|
|
45709eb7d6 | ||
|
|
ecbd926d81 | ||
|
|
1cca7a5881 | ||
|
|
0d3332faf3 | ||
|
|
aa74730e12 | ||
|
|
9b5e2acf90 | ||
|
|
3fafe63c42 | ||
|
|
6c0252156c | ||
|
|
3a750c08b5 |
2
.github/FUNDING.yml
vendored
Normal file
2
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
# These are supported funding model platforms
|
||||
custom: https://g-helper.com/support
|
||||
@@ -648,7 +648,7 @@ namespace GHelper.Ally
|
||||
if (init)
|
||||
{
|
||||
WakeUp();
|
||||
InputDispatcher.SetBacklightAuto(true);
|
||||
InputDispatcher.SetBacklightAuto();
|
||||
}
|
||||
|
||||
AsusHid.WriteInput([AsusHid.INPUT_ID, 0xD1, 0x01, 0x01, (byte)_applyMode], "Controller");
|
||||
|
||||
@@ -36,7 +36,8 @@ namespace GHelper.AnimeMatrix
|
||||
public AniMatrixControl(SettingsForm settingsForm)
|
||||
{
|
||||
settings = settingsForm;
|
||||
|
||||
if (!AppConfig.IsSlash() && !AppConfig.IsAnimeMatrix()) return;
|
||||
|
||||
try
|
||||
{
|
||||
if (AppConfig.IsSlash())
|
||||
@@ -213,7 +214,7 @@ namespace GHelper.AnimeMatrix
|
||||
switch (running)
|
||||
{
|
||||
case 2:
|
||||
SetMatrixPicture(AppConfig.GetString("matrix_picture"));
|
||||
SetMatrixPicture(AppConfig.GetString("matrix_picture"), false);
|
||||
break;
|
||||
case 3:
|
||||
SetMatrixClock();
|
||||
|
||||
@@ -410,7 +410,7 @@ namespace GHelper.AnimeMatrix
|
||||
if (DateTime.Now.Second % 2 != 0) timeFormat = timeFormat.Replace(":", " ");
|
||||
|
||||
Clear();
|
||||
Text(DateTime.Now.ToString(timeFormat), 15, 2, 25);
|
||||
Text(DateTime.Now.ToString(timeFormat), 15, 7 - FullRows / 2, 25);
|
||||
Text(DateTime.Now.ToString(dateFormat), 11.5F, 0, 14);
|
||||
Present();
|
||||
|
||||
|
||||
@@ -413,7 +413,7 @@ public static class AppConfig
|
||||
|
||||
public static bool IsDUO()
|
||||
{
|
||||
return ContainsModel("Duo") || ContainsModel("GX550") || ContainsModel("GX650");
|
||||
return ContainsModel("Duo") || ContainsModel("GX550") || ContainsModel("GX650") || ContainsModel("UX840");
|
||||
}
|
||||
|
||||
// G14 2020 has no aura, but media keys instead
|
||||
@@ -432,6 +432,11 @@ public static class AppConfig
|
||||
return ContainsModel("GA401") || ContainsModel("FX517Z") || ContainsModel("FX516P") || ContainsModel("X13") || IsARCNM() || ContainsModel("FA617N") || ContainsModel("FA617X") || NoAura();
|
||||
}
|
||||
|
||||
public static bool IsAnimeMatrix()
|
||||
{
|
||||
return ContainsModel("GA401") || ContainsModel("GA402") || ContainsModel("GU604V");
|
||||
}
|
||||
|
||||
public static bool IsSlash()
|
||||
{
|
||||
return ContainsModel("GA403") || ContainsModel("GU605") || ContainsModel("GA605");
|
||||
@@ -454,7 +459,7 @@ public static class AppConfig
|
||||
|
||||
public static bool IsOLED()
|
||||
{
|
||||
return ContainsModel("OLED") || IsSlash() || ContainsModel("M7600") || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150") || ContainsModel("M350") || ContainsModel("K650") || ContainsModel("UM53") || ContainsModel("K660") || ContainsModel("UX84") || ContainsModel("M650") || ContainsModel("M550") || ContainsModel("K340") || ContainsModel("K350") || ContainsModel("M140") || ContainsModel("UM340") || ContainsModel("S540") || ContainsModel("M7400") || ContainsModel("N650") || ContainsModel("HN7306") || ContainsModel("H7606") || ContainsModel("UX5406") || ContainsModel("UM5606");
|
||||
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("M550") || ContainsModel("K340") || ContainsModel("K350") || ContainsModel("M140") || ContainsModel("UM340") || ContainsModel("S540") || ContainsModel("M7400") || ContainsModel("N650") || ContainsModel("HN7306") || ContainsModel("H7606") || ContainsModel("UX5406") || ContainsModel("M5606");
|
||||
}
|
||||
|
||||
public static bool IsNoOverdrive()
|
||||
@@ -504,7 +509,7 @@ public static class AppConfig
|
||||
|
||||
public static bool NoWMI()
|
||||
{
|
||||
return ContainsModel("GL704G") || ContainsModel("GM501G");
|
||||
return ContainsModel("GL704G") || ContainsModel("GM501G") || ContainsModel("GX501G");
|
||||
}
|
||||
|
||||
public static bool IsNoDirectRGB()
|
||||
@@ -648,6 +653,11 @@ public static class AppConfig
|
||||
return ContainsModel("GV301RA") || ContainsModel("GV302XA") || IsAlly();
|
||||
}
|
||||
|
||||
public static bool NoGpu()
|
||||
{
|
||||
return Is("no_gpu") || ContainsModel("UX540");
|
||||
}
|
||||
|
||||
public static bool IsHardwareTouchpadToggle()
|
||||
{
|
||||
return ContainsModel("FA507");
|
||||
@@ -691,17 +701,22 @@ public static class AppConfig
|
||||
// 2024 Models support Dynamic Lighting
|
||||
public static bool IsDynamicLighting()
|
||||
{
|
||||
return IsSlash() || IsIntelHX() || ContainsModel("FA607P") || ContainsModel("FX607J") || ContainsModel("FA507U");
|
||||
return IsSlash() || IsIntelHX() || IsTUF();
|
||||
}
|
||||
|
||||
public static bool IsForceMiniled()
|
||||
{
|
||||
return ContainsModel("G834JYR") || Is("force_miniled");
|
||||
return ContainsModel("G834JYR") || ContainsModel("G834JZR") || Is("force_miniled");
|
||||
}
|
||||
|
||||
public static bool SaveDimming()
|
||||
{
|
||||
return Is("save_dimming");
|
||||
}
|
||||
|
||||
public static bool IsAutoStatusLed()
|
||||
{
|
||||
return Is("auto_status_led");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -129,6 +129,7 @@ public class AsusACPI
|
||||
public const int ScreenPadToggle = 0x00050031;
|
||||
public const int ScreenPadBrightness = 0x00050032;
|
||||
|
||||
public const int CameraShutter = 0x00060078;
|
||||
public const int CameraLed = 0x00060079;
|
||||
public const int StatusLed = 0x000600C2;
|
||||
|
||||
|
||||
@@ -2,31 +2,46 @@
|
||||
|
||||
namespace GHelper.Battery
|
||||
{
|
||||
internal class BatteryControl
|
||||
public static class BatteryControl
|
||||
{
|
||||
|
||||
static bool _chargeFull = AppConfig.Is("charge_full");
|
||||
public static bool chargeFull
|
||||
{
|
||||
get
|
||||
{
|
||||
return _chargeFull;
|
||||
}
|
||||
set
|
||||
{
|
||||
AppConfig.Set("charge_full", value ? 1 : 0);
|
||||
_chargeFull = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static void ToggleBatteryLimitFull()
|
||||
{
|
||||
if (AppConfig.Is("charge_full")) SetBatteryChargeLimit();
|
||||
if (chargeFull) SetBatteryChargeLimit();
|
||||
else SetBatteryLimitFull();
|
||||
}
|
||||
|
||||
public static void SetBatteryLimitFull()
|
||||
{
|
||||
AppConfig.Set("charge_full", 1);
|
||||
chargeFull = true;
|
||||
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, 100, "BatteryLimit");
|
||||
Program.settingsForm.VisualiseBatteryFull();
|
||||
}
|
||||
|
||||
public static void UnSetBatteryLimitFull()
|
||||
{
|
||||
AppConfig.Set("charge_full", 0);
|
||||
chargeFull = false;
|
||||
Logger.WriteLine("Battery fully charged");
|
||||
Program.settingsForm.Invoke(Program.settingsForm.VisualiseBatteryFull);
|
||||
}
|
||||
|
||||
public static void AutoBattery(bool init = false)
|
||||
{
|
||||
if (AppConfig.Is("charge_full") && !init) SetBatteryLimitFull();
|
||||
if (chargeFull && !init) SetBatteryLimitFull();
|
||||
else SetBatteryChargeLimit();
|
||||
}
|
||||
|
||||
@@ -46,7 +61,7 @@ namespace GHelper.Battery
|
||||
Program.acpi.DeviceSet(AsusACPI.BatteryLimit, limit, "BatteryLimit");
|
||||
|
||||
AppConfig.Set("charge_limit", limit);
|
||||
AppConfig.Set("charge_full", 0);
|
||||
chargeFull = false;
|
||||
|
||||
Program.settingsForm.VisualiseBattery(limit);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,14 @@ namespace GHelper.Display
|
||||
{
|
||||
|
||||
public const int MAX_REFRESH = 1000;
|
||||
public static int MIN_RATE = AppConfig.Get("min_rate", 60);
|
||||
public static int MAX_RATE = AppConfig.Get("max_rate");
|
||||
|
||||
public static int GetMaxRate(string? laptopScreen)
|
||||
{
|
||||
if (MAX_RATE > 0) return MAX_RATE;
|
||||
else return ScreenNative.GetMaxRefreshRate(laptopScreen);
|
||||
}
|
||||
|
||||
public void AutoScreen(bool force = false)
|
||||
{
|
||||
@@ -15,7 +22,7 @@ namespace GHelper.Display
|
||||
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
|
||||
SetScreen(MAX_REFRESH, 1);
|
||||
else
|
||||
SetScreen(60, 0);
|
||||
SetScreen(MIN_RATE, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -29,7 +36,7 @@ namespace GHelper.Display
|
||||
var refreshRate = ScreenNative.GetRefreshRate(laptopScreen);
|
||||
if (refreshRate < 0) return;
|
||||
|
||||
ScreenNative.SetRefreshRate(laptopScreen, refreshRate > 60 ? 60 : ScreenNative.GetMaxRefreshRate(laptopScreen));
|
||||
ScreenNative.SetRefreshRate(laptopScreen, refreshRate > MIN_RATE ? MIN_RATE : GetMaxRate(laptopScreen));
|
||||
InitScreen();
|
||||
}
|
||||
|
||||
@@ -43,7 +50,7 @@ namespace GHelper.Display
|
||||
|
||||
if (frequency >= MAX_REFRESH)
|
||||
{
|
||||
frequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
|
||||
frequency = GetMaxRate(laptopScreen);
|
||||
}
|
||||
|
||||
if (frequency > 0 && frequency != refreshRate)
|
||||
@@ -151,7 +158,7 @@ namespace GHelper.Display
|
||||
{
|
||||
var laptopScreen = ScreenNative.FindLaptopScreen();
|
||||
int frequency = ScreenNative.GetRefreshRate(laptopScreen);
|
||||
int maxFrequency = ScreenNative.GetMaxRefreshRate(laptopScreen);
|
||||
int maxFrequency = GetMaxRate(laptopScreen);
|
||||
|
||||
if (maxFrequency > 0) AppConfig.Set("max_frequency", maxFrequency);
|
||||
else maxFrequency = AppConfig.Get("max_frequency");
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using GHelper.Helpers;
|
||||
using Microsoft.Win32;
|
||||
using System.Management;
|
||||
|
||||
namespace GHelper.Display
|
||||
@@ -37,6 +38,7 @@ namespace GHelper.Display
|
||||
Cinema = 25,
|
||||
Vivid = 13,
|
||||
Eyecare = 17,
|
||||
Disabled = 18,
|
||||
}
|
||||
public static class VisualControl
|
||||
{
|
||||
@@ -99,7 +101,7 @@ namespace GHelper.Display
|
||||
foreach (FileInfo icm in icms)
|
||||
{
|
||||
//Logger.WriteLine(icm.FullName);
|
||||
|
||||
|
||||
if (icm.Name.Contains("sRGB"))
|
||||
{
|
||||
try
|
||||
@@ -107,7 +109,7 @@ namespace GHelper.Display
|
||||
_modes.Add(isVivo ? SplendidGamut.VivoSRGB : SplendidGamut.sRGB, "Gamut: sRGB");
|
||||
Logger.WriteLine(icm.FullName + " sRGB");
|
||||
}
|
||||
catch
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -175,7 +177,8 @@ namespace GHelper.Display
|
||||
{ SplendidCommand.FPS, "FPS"},
|
||||
{ SplendidCommand.Cinema, "Cinema"},
|
||||
{ SplendidCommand.Vivid, "Vivid" },
|
||||
{ SplendidCommand.Eyecare, "Eyecare"}
|
||||
{ SplendidCommand.Eyecare, "Eyecare"},
|
||||
{ SplendidCommand.Disabled, "Disabled"}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -205,6 +208,20 @@ namespace GHelper.Display
|
||||
};
|
||||
}
|
||||
|
||||
const string GameVisualKey = @"HKEY_CURRENT_USER\Software\ASUS\ARMOURY CRATE Service\GameVisual";
|
||||
const string GameVisualValue = "ActiveGVStatus";
|
||||
|
||||
public static bool IsEnabled()
|
||||
{
|
||||
var status = (int?)Registry.GetValue(GameVisualKey, GameVisualValue, 1);
|
||||
return status > 0;
|
||||
}
|
||||
|
||||
public static void SetRegStatus(int status = 1)
|
||||
{
|
||||
Registry.SetValue(GameVisualKey, GameVisualValue, status, RegistryValueKind.DWord);
|
||||
}
|
||||
|
||||
public static void SetGamut(int mode = -1)
|
||||
{
|
||||
if (skipGamut) return;
|
||||
@@ -235,7 +252,7 @@ namespace GHelper.Display
|
||||
public static void SetVisual(SplendidCommand mode = SplendidCommand.Default, int whiteBalance = DefaultColorTemp, bool init = false)
|
||||
{
|
||||
if (mode == SplendidCommand.None) return;
|
||||
if ((mode == SplendidCommand.Default || mode == SplendidCommand.VivoNormal) && init) return; // Skip default setting on init
|
||||
if ((mode == SplendidCommand.Disabled || mode == SplendidCommand.Default || mode == SplendidCommand.VivoNormal) && init) return; // Skip default setting on init
|
||||
|
||||
if (!forceVisual && ScreenCCD.GetHDRStatus(true)) return;
|
||||
if (!forceVisual && ScreenNative.GetRefreshRate(ScreenNative.FindLaptopScreen(true)) < 0) return;
|
||||
@@ -245,12 +262,16 @@ namespace GHelper.Display
|
||||
|
||||
if (whiteBalance != DefaultColorTemp && !init) ProcessHelper.RunAsAdmin();
|
||||
|
||||
int? balance;
|
||||
int? balance = null;
|
||||
int command = 0;
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case SplendidCommand.Disabled:
|
||||
command = 2;
|
||||
break;
|
||||
case SplendidCommand.Eyecare:
|
||||
balance = 2;
|
||||
balance = 4;
|
||||
break;
|
||||
case SplendidCommand.VivoNormal:
|
||||
case SplendidCommand.VivoVivid:
|
||||
@@ -264,7 +285,7 @@ namespace GHelper.Display
|
||||
break;
|
||||
}
|
||||
|
||||
var result = RunSplendid(mode, 0, balance);
|
||||
int result = RunSplendid(mode, command, balance);
|
||||
if (result == 0) return;
|
||||
if (result == -1)
|
||||
{
|
||||
@@ -321,6 +342,11 @@ namespace GHelper.Display
|
||||
var result = ProcessHelper.RunCMD(splendid, (int)command + " " + param1 + " " + param2);
|
||||
if (result.Contains("file not exist") || (result.Length == 0 && !isVivo)) return 1;
|
||||
if (result.Contains("return code: -1")) return -1;
|
||||
if (result.Contains("Visual is disabled"))
|
||||
{
|
||||
SetRegStatus(1);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
615
app/Extra.Designer.cs
generated
615
app/Extra.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@@ -37,6 +37,7 @@ namespace GHelper
|
||||
{"brightness_up", Properties.Strings.BrightnessUp},
|
||||
{"visual", Properties.Strings.VisualMode},
|
||||
{"touchscreen", Properties.Strings.ToggleTouchscreen },
|
||||
{"micmute", Properties.Strings.MuteMic},
|
||||
{"ghelper", Properties.Strings.OpenGHelper},
|
||||
{"custom", Properties.Strings.Custom}
|
||||
};
|
||||
@@ -62,6 +63,7 @@ namespace GHelper
|
||||
break;
|
||||
case "m3":
|
||||
customActions[""] = Properties.Strings.MuteMic;
|
||||
customActions.Remove("micmute");
|
||||
break;
|
||||
case "m4":
|
||||
customActions[""] = Properties.Strings.OpenGHelper;
|
||||
@@ -421,7 +423,7 @@ namespace GHelper
|
||||
var statusLed = Program.acpi.DeviceGet(AsusACPI.StatusLed);
|
||||
checkStatusLed.Visible = statusLed >= 0;
|
||||
checkStatusLed.Checked = (statusLed > 0);
|
||||
checkStatusLed.CheckedChanged += CheckLEDStatus_CheckedChanged; ;
|
||||
checkStatusLed.CheckedChanged += CheckLEDStatus_CheckedChanged;
|
||||
|
||||
|
||||
checkBWIcon.Checked = AppConfig.IsBWIcon();
|
||||
@@ -458,7 +460,7 @@ namespace GHelper
|
||||
|
||||
private void CheckLEDStatus_CheckedChanged(object? sender, EventArgs e)
|
||||
{
|
||||
Program.acpi.DeviceSet(AsusACPI.StatusLed, (checkStatusLed.Checked ? 7 : 0), "StatusLED");
|
||||
InputDispatcher.SetStatusLED(checkStatusLed.Checked);
|
||||
}
|
||||
|
||||
private void CheckBWIcon_CheckedChanged(object? sender, EventArgs e)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.195</AssemblyVersion>
|
||||
<AssemblyVersion>0.199</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -62,8 +62,7 @@ public class AmdGpuControl : IGpuControl
|
||||
|
||||
public AmdGpuControl()
|
||||
{
|
||||
if (!Adl2.Load())
|
||||
return;
|
||||
if (AppConfig.NoGpu() || !Adl2.Load()) return;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -22,6 +22,12 @@ namespace GHelper.Gpu
|
||||
|
||||
public void InitGPUMode()
|
||||
{
|
||||
if (AppConfig.NoGpu())
|
||||
{
|
||||
settings.HideGPUModes(false);
|
||||
return;
|
||||
}
|
||||
|
||||
int eco = Program.acpi.DeviceGet(AsusACPI.GPUEco);
|
||||
int mux = Program.acpi.DeviceGet(AsusACPI.GPUMux);
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ public static class HardwareControl
|
||||
public static decimal? fullCapacity;
|
||||
public static decimal? chargeCapacity;
|
||||
|
||||
|
||||
public static string? batteryCharge;
|
||||
|
||||
public static string? cpuFan;
|
||||
public static string? gpuFan;
|
||||
@@ -34,6 +34,20 @@ public static class HardwareControl
|
||||
|
||||
static long lastUpdate;
|
||||
|
||||
static bool _chargeWatt = AppConfig.Is("charge_watt");
|
||||
public static bool chargeWatt
|
||||
{
|
||||
get
|
||||
{
|
||||
return _chargeWatt;
|
||||
}
|
||||
set
|
||||
{
|
||||
AppConfig.Set("charge_watt", value ? 1 : 0);
|
||||
_chargeWatt = value;
|
||||
}
|
||||
}
|
||||
|
||||
private static int GetGpuUse()
|
||||
{
|
||||
try
|
||||
@@ -226,11 +240,17 @@ public static class HardwareControl
|
||||
|
||||
if (fullCapacity > 0 && chargeCapacity > 0)
|
||||
{
|
||||
batteryCapacity = Math.Min(100, ((decimal)chargeCapacity / (decimal)fullCapacity) * 100);
|
||||
if (batteryCapacity > 99) BatteryControl.UnSetBatteryLimitFull();
|
||||
batteryCapacity = Math.Min(100, (decimal)chargeCapacity / (decimal)fullCapacity * 100);
|
||||
if (batteryCapacity > 99 && BatteryControl.chargeFull) BatteryControl.UnSetBatteryLimitFull();
|
||||
if (chargeWatt)
|
||||
{
|
||||
batteryCharge = Math.Round((decimal)chargeCapacity / 1000, 1).ToString() + "Wh";
|
||||
}
|
||||
else
|
||||
{
|
||||
batteryCharge = Math.Round(batteryCapacity, 1) + "%";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static bool IsUsedGPU(int threshold = 10)
|
||||
@@ -265,6 +285,7 @@ public static class HardwareControl
|
||||
|
||||
public static void RecreateGpuControl()
|
||||
{
|
||||
if (AppConfig.NoGpu()) return;
|
||||
try
|
||||
{
|
||||
GpuControl?.Dispose();
|
||||
|
||||
@@ -106,7 +106,7 @@ public class Startup
|
||||
{
|
||||
|
||||
td.RegistrationInfo.Description = "G-Helper Auto Start";
|
||||
td.Triggers.Add(new LogonTrigger { UserId = WindowsIdentity.GetCurrent().Name, Delay = TimeSpan.FromSeconds(1) });
|
||||
td.Triggers.Add(new LogonTrigger { UserId = WindowsIdentity.GetCurrent().Name, Delay = TimeSpan.FromSeconds(2) });
|
||||
td.Actions.Add(strExeFilePath);
|
||||
|
||||
if (ProcessHelper.IsUserAdministrator())
|
||||
|
||||
@@ -14,9 +14,16 @@ namespace GHelper.Input
|
||||
{
|
||||
System.Timers.Timer timer = new System.Timers.Timer(1000);
|
||||
public static bool backlightActivity = true;
|
||||
public static bool lidClose = false;
|
||||
|
||||
public static Keys keyProfile = Keys.F5;
|
||||
public static Keys keyApp = Keys.F12;
|
||||
public static Keys keyProfile = (Keys)AppConfig.Get("keybind_profile", (int)Keys.F5);
|
||||
public static Keys keyApp = (Keys)AppConfig.Get("keybind_app", (int)Keys.F12);
|
||||
|
||||
public static Keys keyProfile0 = (Keys)AppConfig.Get("keybind_profile_0", (int)Keys.F17);
|
||||
public static Keys keyProfile1 = (Keys)AppConfig.Get("keybind_profile_1", (int)Keys.F18);
|
||||
public static Keys keyProfile2 = (Keys)AppConfig.Get("keybind_profile_2", (int)Keys.F16);
|
||||
public static Keys keyProfile3 = (Keys)AppConfig.Get("keybind_profile_3", (int)Keys.F19);
|
||||
public static Keys keyProfile4 = (Keys)AppConfig.Get("keybind_profile_4", (int)Keys.F20);
|
||||
|
||||
static ModeControl modeControl = Program.modeControl;
|
||||
static ScreenControl screenControl = new ScreenControl();
|
||||
@@ -79,9 +86,14 @@ namespace GHelper.Input
|
||||
Program.acpi.DeviceInit();
|
||||
|
||||
if (!OptimizationService.IsRunning())
|
||||
{
|
||||
Program.acpi.DeviceGet(AsusACPI.CameraShutter);
|
||||
listener = new KeyboardListener(HandleEvent);
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.WriteLine("Optimization service is running");
|
||||
}
|
||||
|
||||
InitBacklightTimer();
|
||||
|
||||
@@ -101,10 +113,6 @@ namespace GHelper.Input
|
||||
{
|
||||
hook.UnregisterAll();
|
||||
|
||||
// CTRL + SHIFT + F5 to cycle profiles
|
||||
if (AppConfig.Get("keybind_profile") != -1) keyProfile = (Keys)AppConfig.Get("keybind_profile");
|
||||
if (AppConfig.Get("keybind_app") != -1) keyApp = (Keys)AppConfig.Get("keybind_app");
|
||||
|
||||
string actionM1 = AppConfig.GetString("m1");
|
||||
string actionM2 = AppConfig.GetString("m2");
|
||||
|
||||
@@ -118,18 +126,22 @@ namespace GHelper.Input
|
||||
|
||||
if (!AppConfig.Is("skip_hotkeys"))
|
||||
{
|
||||
if (AppConfig.IsDUO())
|
||||
{
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F7);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F8);
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F16);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F17);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F18);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F19);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F20);
|
||||
|
||||
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile0);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile1);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile2);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile3);
|
||||
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, keyProfile4);
|
||||
|
||||
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeDown);
|
||||
hook.RegisterHotKey(ModifierKeys.Control, Keys.VolumeUp);
|
||||
@@ -421,6 +433,12 @@ namespace GHelper.Input
|
||||
{
|
||||
if (e.Key == keyProfile) modeControl.CyclePerformanceMode(true);
|
||||
|
||||
if (e.Key == keyProfile0) modeControl.SetPerformanceMode(0, true);
|
||||
if (e.Key == keyProfile1) modeControl.SetPerformanceMode(1, true);
|
||||
if (e.Key == keyProfile2) modeControl.SetPerformanceMode(2, true);
|
||||
if (e.Key == keyProfile3) modeControl.SetPerformanceMode(3, true);
|
||||
if (e.Key == keyProfile4) modeControl.SetPerformanceMode(4, true);
|
||||
|
||||
switch (e.Key)
|
||||
{
|
||||
case Keys.F1:
|
||||
@@ -435,30 +453,23 @@ namespace GHelper.Input
|
||||
case Keys.F4:
|
||||
Program.settingsForm.BeginInvoke(Program.settingsForm.allyControl.ToggleModeHotkey);
|
||||
break;
|
||||
case Keys.F7:
|
||||
SetScreenpad(-10);
|
||||
break;
|
||||
case Keys.F8:
|
||||
SetScreenpad(10);
|
||||
break;
|
||||
case Keys.F13:
|
||||
ToggleScreenRate();
|
||||
break;
|
||||
case Keys.F14:
|
||||
Program.toast.RunToast(Properties.Strings.EcoMode);
|
||||
Program.settingsForm.gpuControl.SetGPUMode(AsusACPI.GPUModeEco);
|
||||
break;
|
||||
case Keys.F15:
|
||||
Program.toast.RunToast(Properties.Strings.StandardMode);
|
||||
Program.settingsForm.gpuControl.SetGPUMode(AsusACPI.GPUModeStandard);
|
||||
break;
|
||||
case Keys.F16:
|
||||
modeControl.SetPerformanceMode(2, true);
|
||||
break;
|
||||
case Keys.F17:
|
||||
modeControl.SetPerformanceMode(0, true);
|
||||
break;
|
||||
case Keys.F18:
|
||||
modeControl.SetPerformanceMode(1, true);
|
||||
break;
|
||||
case Keys.F19:
|
||||
modeControl.SetPerformanceMode(3, true);
|
||||
break;
|
||||
case Keys.F20:
|
||||
modeControl.SetPerformanceMode(4, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -658,7 +669,7 @@ namespace GHelper.Input
|
||||
bool fnLock = !AppConfig.Is("fn_lock");
|
||||
AppConfig.Set("fn_lock", fnLock ? 1 : 0);
|
||||
|
||||
if (AppConfig.IsHardwareFnLock())
|
||||
if (AppConfig.IsHardwareFnLock())
|
||||
HardwareFnLock(fnLock);
|
||||
else
|
||||
Program.settingsForm.BeginInvoke(Program.inputDispatcher.RegisterKeys);
|
||||
@@ -735,6 +746,8 @@ namespace GHelper.Input
|
||||
KeyProcess("fne");
|
||||
return;
|
||||
case 174: // FN+F5
|
||||
case 153: // FN+F5 OLD MODELS
|
||||
case 157: // Zenbook DUO FN+F
|
||||
modeControl.CyclePerformanceMode(Control.ModifierKeys == Keys.Shift);
|
||||
return;
|
||||
case 179: // FN+F4
|
||||
@@ -865,10 +878,22 @@ namespace GHelper.Input
|
||||
return Math.Max(Math.Min(3, backlight), 0);
|
||||
}
|
||||
|
||||
public static void SetBacklightAuto(bool init = false)
|
||||
public static void AutoKeyboard()
|
||||
{
|
||||
if (init) Aura.Init();
|
||||
Aura.ApplyBrightness(GetBacklight(), "Auto", init);
|
||||
if (AppConfig.HasTabletMode()) TabletMode();
|
||||
if (lidClose || AppConfig.Is("skip_aura")) return;
|
||||
|
||||
Aura.Init();
|
||||
Aura.ApplyPower();
|
||||
Aura.ApplyAura();
|
||||
SetBacklightAuto();
|
||||
}
|
||||
|
||||
|
||||
public static void SetBacklightAuto()
|
||||
{
|
||||
if (lidClose) return;
|
||||
Aura.ApplyBrightness(GetBacklight(), "Auto");
|
||||
}
|
||||
|
||||
public static void SetBacklight(int delta, bool force = false)
|
||||
@@ -924,33 +949,55 @@ namespace GHelper.Input
|
||||
|
||||
public static void ToggleCamera()
|
||||
{
|
||||
if (!ProcessHelper.IsUserAdministrator()) return;
|
||||
int cameraShutter = Program.acpi.DeviceGet(AsusACPI.CameraShutter);
|
||||
|
||||
string CameraRegistryKeyPath = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam";
|
||||
string CameraRegistryValueName = "Value";
|
||||
|
||||
try
|
||||
if (cameraShutter == 0)
|
||||
{
|
||||
var status = (string?)Registry.GetValue(CameraRegistryKeyPath, CameraRegistryValueName, "");
|
||||
Program.acpi.DeviceSet(AsusACPI.CameraShutter, 1, "CameraShutterOn");
|
||||
Program.toast.RunToast($"Camera Off");
|
||||
}
|
||||
else if (cameraShutter == 1)
|
||||
{
|
||||
Program.acpi.DeviceSet(AsusACPI.CameraShutter, 0, "CameraShutterOff");
|
||||
Program.toast.RunToast($"Camera On");
|
||||
}
|
||||
else if (cameraShutter == 262144)
|
||||
{
|
||||
Program.toast.RunToast($"Camera Off");
|
||||
}
|
||||
else if (cameraShutter == 262145)
|
||||
{
|
||||
Program.toast.RunToast($"Camera On");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!ProcessHelper.IsUserAdministrator()) return;
|
||||
|
||||
if (status == "Allow") status = "Deny";
|
||||
else if (status == "Deny") status = "Allow";
|
||||
else
|
||||
string CameraRegistryKeyPath = @"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam";
|
||||
string CameraRegistryValueName = "Value";
|
||||
|
||||
try
|
||||
{
|
||||
Logger.WriteLine("Unknown camera status");
|
||||
return;
|
||||
var status = (string?)Registry.GetValue(CameraRegistryKeyPath, CameraRegistryValueName, "");
|
||||
|
||||
if (status == "Allow") status = "Deny";
|
||||
else if (status == "Deny") status = "Allow";
|
||||
else
|
||||
{
|
||||
Logger.WriteLine("Unknown camera status");
|
||||
return;
|
||||
}
|
||||
|
||||
Registry.SetValue(CameraRegistryKeyPath, CameraRegistryValueName, status, RegistryValueKind.String);
|
||||
Program.acpi.DeviceSet(AsusACPI.CameraLed, (status == "Deny" ? 1 : 0), "Camera");
|
||||
Program.toast.RunToast($"Camera " + (status == "Deny" ? "Off" : "On"));
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
}
|
||||
|
||||
Registry.SetValue(CameraRegistryKeyPath, CameraRegistryValueName, status, RegistryValueKind.String);
|
||||
Program.acpi.DeviceSet(AsusACPI.CameraLed, (status == "Deny" ? 1 : 0), "Camera");
|
||||
Program.toast.RunToast($"Camera " + (status == "Deny" ? "Off" : "On"));
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine(ex.ToString());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static System.Threading.Timer screenpadActionTimer;
|
||||
@@ -968,7 +1015,7 @@ namespace GHelper.Input
|
||||
if (b < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
|
||||
};
|
||||
|
||||
if(delay <= 0 || instant) //instant action
|
||||
if (delay <= 0 || instant) //instant action
|
||||
{
|
||||
action(brightness);
|
||||
}
|
||||
@@ -1012,6 +1059,28 @@ namespace GHelper.Input
|
||||
Program.toast.RunToast($"Screen Pad {toast}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
|
||||
}
|
||||
|
||||
public static void InitScreenpad()
|
||||
{
|
||||
if (!AppConfig.IsDUO()) return;
|
||||
int brightness = AppConfig.Get("screenpad");
|
||||
if (brightness >= 0) ApplyScreenpadAction(brightness);
|
||||
}
|
||||
|
||||
public static void SetStatusLED(bool status)
|
||||
{
|
||||
Program.acpi.DeviceSet(AsusACPI.StatusLed, status ? 7 : 0, "StatusLED");
|
||||
}
|
||||
|
||||
public static void InitStatusLed()
|
||||
{
|
||||
if (AppConfig.IsAutoStatusLed()) SetStatusLED(true);
|
||||
}
|
||||
|
||||
public static void ShutdownStatusLed()
|
||||
{
|
||||
if (AppConfig.IsAutoStatusLed()) SetStatusLED(false);
|
||||
}
|
||||
|
||||
static void LaunchProcess(string command = "")
|
||||
{
|
||||
if (string.IsNullOrEmpty(command)) return;
|
||||
|
||||
@@ -10,6 +10,8 @@ namespace GHelper.Input
|
||||
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
|
||||
Action<int> _handler;
|
||||
|
||||
static int retry = 0;
|
||||
|
||||
public KeyboardListener(Action<int> KeyHandler)
|
||||
{
|
||||
_handler = KeyHandler;
|
||||
@@ -54,6 +56,7 @@ namespace GHelper.Input
|
||||
input.ReadTimeout = int.MaxValue;
|
||||
|
||||
var data = input.Read();
|
||||
if (cancellationTokenSource.Token.IsCancellationRequested) break;
|
||||
if (data.Length > 1 && data[0] == AsusHid.INPUT_ID && data[1] > 0 && data[1] != 236)
|
||||
{
|
||||
Logger.WriteLine($"Key: {data[1]}");
|
||||
@@ -67,6 +70,12 @@ namespace GHelper.Input
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.WriteLine($"Listener exited: {ex.Message}");
|
||||
if (retry++ < 2)
|
||||
{
|
||||
Thread.Sleep(300);
|
||||
Logger.WriteLine($"Restarting listener {retry}");
|
||||
Listen();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ namespace GHelper
|
||||
{
|
||||
AppConfig.Set("matrix_contrast", trackContrast.Value);
|
||||
AppConfig.Set("matrix_gamma", trackGamma.Value);
|
||||
SetMatrixPicture();
|
||||
SetMatrixPicture(false);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -110,30 +110,24 @@ namespace GHelper.Mode
|
||||
|
||||
if (notify) Toast();
|
||||
|
||||
// Power plan from config or defaulting to balanced
|
||||
if (AppConfig.GetModeString("scheme") is not null)
|
||||
PowerNative.SetPowerPlan(AppConfig.GetModeString("scheme"));
|
||||
else
|
||||
PowerNative.SetBalancedPowerPlan();
|
||||
if (!AppConfig.Is("skip_powermode"))
|
||||
{
|
||||
// Power plan from config or defaulting to balanced
|
||||
if (AppConfig.GetModeString("scheme") is not null)
|
||||
PowerNative.SetPowerPlan(AppConfig.GetModeString("scheme"));
|
||||
else
|
||||
PowerNative.SetBalancedPowerPlan();
|
||||
|
||||
// Windows power mode
|
||||
if (AppConfig.GetModeString("powermode") is not null)
|
||||
PowerNative.SetPowerMode(AppConfig.GetModeString("powermode"));
|
||||
else
|
||||
PowerNative.SetPowerMode(Modes.GetBase(mode));
|
||||
// Windows power mode
|
||||
if (AppConfig.GetModeString("powermode") is not null)
|
||||
PowerNative.SetPowerMode(AppConfig.GetModeString("powermode"));
|
||||
else
|
||||
PowerNative.SetPowerMode(Modes.GetBase(mode));
|
||||
}
|
||||
|
||||
// CPU Boost setting override
|
||||
if (AppConfig.GetMode("auto_boost") != -1)
|
||||
PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost"));
|
||||
|
||||
//BatteryControl.SetBatteryChargeLimit();
|
||||
|
||||
/*
|
||||
if (NativeMethods.PowerGetEffectiveOverlayScheme(out Guid activeScheme) == 0)
|
||||
{
|
||||
Debug.WriteLine("Effective :" + activeScheme);
|
||||
}
|
||||
*/
|
||||
PowerNative.SetCPUBoost(AppConfig.GetMode("auto_boost"));
|
||||
|
||||
settings.FansInit();
|
||||
}
|
||||
@@ -162,7 +156,8 @@ namespace GHelper.Mode
|
||||
modeToggleTimer.Start();
|
||||
Modes.SetCurrent(Modes.GetNext(back));
|
||||
Toast();
|
||||
} else
|
||||
}
|
||||
else
|
||||
{
|
||||
SetPerformanceMode(Modes.GetNext(back), true);
|
||||
}
|
||||
@@ -385,7 +380,7 @@ namespace GHelper.Mode
|
||||
if (gpu_power >= AsusACPI.MinGPUPower && gpu_power <= AsusACPI.MaxGPUPower && Program.acpi.DeviceGet(AsusACPI.GPU_POWER) >= 0)
|
||||
Program.acpi.DeviceSet(AsusACPI.GPU_POWER, gpu_power, "PowerLimit TGP (GPU VAR)");
|
||||
|
||||
if (gpu_boost >= AsusACPI.MinGPUBoost && gpu_boost <= AsusACPI.MaxGPUBoost && Program.acpi.DeviceGet(AsusACPI.PPT_GPUC0) >= 0)
|
||||
if (gpu_boost >= AsusACPI.MinGPUBoost && gpu_boost <= AsusACPI.MaxGPUBoost && Program.acpi.DeviceGet(AsusACPI.PPT_GPUC0) >= 0)
|
||||
boostResult = Program.acpi.DeviceSet(AsusACPI.PPT_GPUC0, gpu_boost, "PowerLimit C0 (GPU BOOST)");
|
||||
|
||||
if (gpu_temp >= AsusACPI.MinGPUTemp && gpu_temp <= AsusACPI.MaxGPUTemp && Program.acpi.DeviceGet(AsusACPI.PPT_GPUC2) >= 0)
|
||||
|
||||
@@ -175,6 +175,7 @@ namespace GHelper.Mode
|
||||
|
||||
if (activeSchemeGuid.ToString() != balanced && !AppConfig.Is("skip_power_plan"))
|
||||
{
|
||||
Logger.WriteLine($"Changing power plan from {activeSchemeGuid.ToString()} to Balanced");
|
||||
SetPowerPlan(balanced);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -481,9 +481,8 @@ namespace GHelper.Peripherals.Mouse
|
||||
{
|
||||
try
|
||||
{
|
||||
HidSharp.DeviceList.Local.GetHidDevices(VendorID(), ProductID())
|
||||
.First(x => x.DevicePath.Contains(path));
|
||||
return true;
|
||||
return HidSharp.DeviceList.Local.GetHidDevices(VendorID(), ProductID())
|
||||
.FirstOrDefault(x => x.DevicePath.Contains(path)) != null;
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
@@ -6,6 +6,7 @@ using GHelper.Helpers;
|
||||
using GHelper.Input;
|
||||
using GHelper.Mode;
|
||||
using GHelper.Peripherals;
|
||||
using GHelper.USB;
|
||||
using Microsoft.Win32;
|
||||
using Ryzen;
|
||||
using System.Diagnostics;
|
||||
@@ -172,6 +173,7 @@ namespace GHelper
|
||||
{
|
||||
gpuControl.StandardModeFix();
|
||||
BatteryControl.AutoBattery();
|
||||
InputDispatcher.ShutdownStatusLed();
|
||||
}
|
||||
|
||||
private static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
|
||||
@@ -231,7 +233,10 @@ namespace GHelper
|
||||
Logger.WriteLine("AutoSetting for " + isPlugged.ToString());
|
||||
|
||||
BatteryControl.AutoBattery(init);
|
||||
if (init) screenControl.InitMiniled();
|
||||
if (init)
|
||||
{
|
||||
InputDispatcher.InitScreenpad();
|
||||
}
|
||||
|
||||
inputDispatcher.Init();
|
||||
|
||||
@@ -253,9 +258,12 @@ namespace GHelper
|
||||
}
|
||||
else
|
||||
{
|
||||
settingsForm.AutoKeyboard();
|
||||
InputDispatcher.AutoKeyboard();
|
||||
}
|
||||
|
||||
screenControl.InitMiniled();
|
||||
InputDispatcher.InitStatusLed();
|
||||
XGM.InitLight();
|
||||
VisualControl.InitBrightness();
|
||||
|
||||
return true;
|
||||
@@ -268,6 +276,7 @@ namespace GHelper
|
||||
{
|
||||
Logger.WriteLine("Power Mode Changed:" + e.Mode.ToString());
|
||||
gpuControl.StandardModeFix();
|
||||
InputDispatcher.ShutdownStatusLed();
|
||||
}
|
||||
|
||||
int delay = AppConfig.Get("charger_delay");
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
<value>Animationsgeschwindigkeit</value>
|
||||
</data>
|
||||
<data name="AnimeMatrix" xml:space="preserve">
|
||||
<value>AniMeMatrix</value>
|
||||
<value>AniMe Matrix</value>
|
||||
</data>
|
||||
<data name="AppAlreadyRunning" xml:space="preserve">
|
||||
<value>Die Anwendung läuft bereits</value>
|
||||
|
||||
@@ -235,6 +235,7 @@ namespace GHelper
|
||||
|
||||
labelCharge.MouseEnter += PanelBattery_MouseEnter;
|
||||
labelCharge.MouseLeave += PanelBattery_MouseLeave;
|
||||
labelBattery.Click += LabelBattery_Click;
|
||||
|
||||
buttonPeripheral1.Click += ButtonPeripheral_Click;
|
||||
buttonPeripheral2.Click += ButtonPeripheral_Click;
|
||||
@@ -271,8 +272,9 @@ namespace GHelper
|
||||
labelCharge.Click += LabelCharge_Click;
|
||||
|
||||
buttonDonate.Click += ButtonDonate_Click;
|
||||
|
||||
if (AppConfig.Get("start_count") > 10 && !AppConfig.Is("donate_click"))
|
||||
|
||||
int click = AppConfig.Get("donate_click");
|
||||
if (AppConfig.Get("start_count") >= ((click < 10) ? 10 : click + 50))
|
||||
{
|
||||
buttonDonate.BorderColor = colorTurbo;
|
||||
buttonDonate.Badge = true;
|
||||
@@ -284,11 +286,17 @@ namespace GHelper
|
||||
InitVisual();
|
||||
}
|
||||
|
||||
private void LabelBattery_Click(object? sender, EventArgs e)
|
||||
{
|
||||
HardwareControl.chargeWatt = !HardwareControl.chargeWatt;
|
||||
RefreshSensors(true);
|
||||
}
|
||||
|
||||
private void ButtonDonate_Click(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("donate_click", 1);
|
||||
AppConfig.Set("donate_click", AppConfig.Get("start_count"));
|
||||
buttonDonate.Badge = false;
|
||||
Process.Start(new ProcessStartInfo("https://github.com/seerge/g-helper/wiki/Support-Project") { UseShellExecute = true });
|
||||
Process.Start(new ProcessStartInfo("https://g-helper.com/support") { UseShellExecute = true });
|
||||
}
|
||||
|
||||
private void LabelDynamicLighting_Click(object? sender, EventArgs e)
|
||||
@@ -667,14 +675,14 @@ namespace GHelper
|
||||
{
|
||||
case 0:
|
||||
Logger.WriteLine("Lid Closed");
|
||||
InputDispatcher.lidClose = AniMatrixControl.lidClose = true;
|
||||
Aura.ApplyBrightness(0, "Lid");
|
||||
AniMatrixControl.lidClose = true;
|
||||
matrixControl.SetLidMode();
|
||||
break;
|
||||
case 1:
|
||||
Logger.WriteLine("Lid Open");
|
||||
InputDispatcher.lidClose = AniMatrixControl.lidClose = false;
|
||||
Aura.ApplyBrightness(InputDispatcher.GetBacklight(), "Lid");
|
||||
AniMatrixControl.lidClose = false;
|
||||
matrixControl.SetLidMode();
|
||||
break;
|
||||
}
|
||||
@@ -843,7 +851,7 @@ namespace GHelper
|
||||
|
||||
private void Button60Hz_MouseHover(object? sender, EventArgs e)
|
||||
{
|
||||
labelTipScreen.Text = Properties.Strings.MinRefreshTooltip;
|
||||
labelTipScreen.Text = Properties.Strings.MinRefreshTooltip.Replace("60", ScreenControl.MIN_RATE.ToString());
|
||||
}
|
||||
|
||||
private void ButtonScreen_MouseLeave(object? sender, EventArgs e)
|
||||
@@ -853,7 +861,7 @@ namespace GHelper
|
||||
|
||||
private void ButtonScreenAuto_MouseHover(object? sender, EventArgs e)
|
||||
{
|
||||
labelTipScreen.Text = Properties.Strings.AutoRefreshTooltip;
|
||||
labelTipScreen.Text = Properties.Strings.AutoRefreshTooltip.Replace("60", ScreenControl.MIN_RATE.ToString());
|
||||
}
|
||||
|
||||
private void ButtonUltimate_MouseHover(object? sender, EventArgs e)
|
||||
@@ -1208,7 +1216,7 @@ namespace GHelper
|
||||
private void Button60Hz_Click(object? sender, EventArgs e)
|
||||
{
|
||||
AppConfig.Set("screen_auto", 0);
|
||||
screenControl.SetScreen(60, 0);
|
||||
screenControl.SetScreen(ScreenControl.MIN_RATE, 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1239,16 +1247,18 @@ namespace GHelper
|
||||
{
|
||||
buttonScreenAuto.Activated = true;
|
||||
}
|
||||
else if (frequency == 60)
|
||||
else if (frequency == ScreenControl.MIN_RATE)
|
||||
{
|
||||
button60Hz.Activated = true;
|
||||
}
|
||||
else if (frequency > 60)
|
||||
else if (frequency > ScreenControl.MIN_RATE)
|
||||
{
|
||||
button120Hz.Activated = true;
|
||||
}
|
||||
|
||||
if (maxFrequency > 60)
|
||||
button60Hz.Text = ScreenControl.MIN_RATE + "Hz";
|
||||
|
||||
if (maxFrequency > ScreenControl.MIN_RATE)
|
||||
{
|
||||
button120Hz.Text = maxFrequency.ToString() + "Hz" + (overdriveSetting ? " + OD" : "");
|
||||
panelScreen.Visible = true;
|
||||
@@ -1420,7 +1430,9 @@ namespace GHelper
|
||||
cpuTemp = ": " + Math.Round((decimal)HardwareControl.cpuTemp).ToString() + "°C";
|
||||
|
||||
if (HardwareControl.batteryCapacity > 0)
|
||||
charge = Properties.Strings.BatteryCharge + ": " + Math.Round(HardwareControl.batteryCapacity, 1) + "% ";
|
||||
{
|
||||
charge = Properties.Strings.BatteryCharge + ": " + HardwareControl.batteryCharge;
|
||||
}
|
||||
|
||||
if (HardwareControl.batteryRate < 0)
|
||||
battery = Properties.Strings.Discharging + ": " + Math.Round(-(decimal)HardwareControl.batteryRate, 1).ToString() + "W";
|
||||
@@ -1530,24 +1542,6 @@ namespace GHelper
|
||||
}
|
||||
|
||||
|
||||
public void AutoKeyboard()
|
||||
{
|
||||
|
||||
InputDispatcher.SetBacklightAuto(true);
|
||||
|
||||
if (!AppConfig.Is("skip_aura"))
|
||||
{
|
||||
Aura.ApplyPower();
|
||||
Aura.ApplyAura();
|
||||
}
|
||||
|
||||
if (Program.acpi.IsXGConnected())
|
||||
XGM.Light(AppConfig.Is("xmg_light"));
|
||||
|
||||
if (AppConfig.HasTabletMode()) InputDispatcher.TabletMode();
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void VisualizeXGM(int GPUMode = -1)
|
||||
{
|
||||
@@ -1775,7 +1769,7 @@ namespace GHelper
|
||||
|
||||
public void VisualiseBatteryFull()
|
||||
{
|
||||
if (AppConfig.Is("charge_full"))
|
||||
if (BatteryControl.chargeFull)
|
||||
{
|
||||
buttonBatteryFull.BackColor = colorStandard;
|
||||
buttonBatteryFull.ForeColor = SystemColors.ControlLightLight;
|
||||
|
||||
@@ -361,6 +361,11 @@ namespace GHelper.USB
|
||||
AsusHid.WriteInput(new byte[] { AsusHid.INPUT_ID, 0xD1, 0x09, 0x01, power }, "Aura");
|
||||
}
|
||||
|
||||
public static void ApplyPowerOff()
|
||||
{
|
||||
AsusHid.Write(AuraPowerMessage(new AuraPower()));
|
||||
}
|
||||
|
||||
public static void ApplyPower()
|
||||
{
|
||||
|
||||
|
||||
@@ -52,6 +52,10 @@ namespace GHelper.USB
|
||||
Write(new byte[] { 0x5e, 0xc5, status ? (byte)0x50 : (byte)0 });
|
||||
}
|
||||
|
||||
public static void InitLight()
|
||||
{
|
||||
if (Program.acpi.IsXGConnected()) Light(AppConfig.Is("xmg_light"));
|
||||
}
|
||||
|
||||
public static void Reset()
|
||||
{
|
||||
|
||||
@@ -3,11 +3,9 @@
|
||||
[](https://GitHub.com/seerge/g-helper/releases/)
|
||||
[](https://GitHub.com/seerge/g-helper/releases/) [](https://GitHub.com/seerge/g-helper/stargazers/) <sup>[中文版点这里](https://github.com/seerge/g-helper/blob/main/docs/README.zh-CN.md)</sup> <sup>[日本語はこちら](https://github.com/seerge/g-helper/blob/main/docs/README.ja-JP.md)</sup>
|
||||
|
||||
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra load and unnecessary services.
|
||||
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality with a much smaller footprint. Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, DUO, TUF Series, Strix or Scar Series, ProArt, Vivobook, Zenbook, ROG Ally or Ally X and many more!
|
||||
|
||||
Works with all popular models, such as ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, Flow Z13, DUO, TUF Series, Strix or Scar Series, ProArt, Vivobook, Zenbook, ROG Ally or Ally X and many more!
|
||||
|
||||
# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||
# [:floppy_disk: Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
|
||||
**⭐ If you like the app - please spread the word about it online**
|
||||
|
||||
<table>
|
||||
|
||||
Reference in New Issue
Block a user