mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
32 Commits
FixedCurve
...
Experiment
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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
|
||||
@@ -213,7 +213,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
|
||||
@@ -454,7 +454,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 +504,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()
|
||||
@@ -696,7 +696,7 @@ public static class AppConfig
|
||||
|
||||
public static bool IsForceMiniled()
|
||||
{
|
||||
return ContainsModel("G834JYR") || Is("force_miniled");
|
||||
return ContainsModel("G834JYR") || ContainsModel("G834JZR") || Is("force_miniled");
|
||||
}
|
||||
|
||||
public static bool SaveDimming()
|
||||
|
||||
@@ -583,7 +583,7 @@ public class AsusACPI
|
||||
}
|
||||
|
||||
//Logger.WriteLine($"GetFan {device} :" + BitConverter.ToString(result));
|
||||
if (IsInvalidCurve(result)) result = AppConfig.GetDefaultCurve(device);
|
||||
|
||||
return result;
|
||||
|
||||
}
|
||||
@@ -598,20 +598,43 @@ public class AsusACPI
|
||||
return curve.All(singleByte => singleByte == 0);
|
||||
}
|
||||
|
||||
public static int FixTemp(int temp, int index)
|
||||
{
|
||||
var dxMin = 30 + 10 * index;
|
||||
var dxMax = dxMin + 9;
|
||||
return Math.Min(dxMax, Math.Max(dxMin, temp));
|
||||
}
|
||||
|
||||
public static byte[] FixFanCurve(byte[] curve)
|
||||
{
|
||||
if (curve.Length != 16) throw new Exception("Incorrect curve");
|
||||
|
||||
var points = new Dictionary<byte, byte>();
|
||||
byte old = 0;
|
||||
|
||||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
curve[i] = (byte)FixTemp(curve[i], i);
|
||||
if (curve[i] <= old) curve[i] = (byte)Math.Min(100, old + 6); // preventing 2 points in same spot from default asus profiles
|
||||
points[curve[i]] = curve[i + 8];
|
||||
old = curve[i];
|
||||
}
|
||||
|
||||
var pointsFixed = new Dictionary<byte, byte>();
|
||||
bool fix = false;
|
||||
|
||||
int count = 0;
|
||||
foreach (var pair in points.OrderBy(x => x.Key))
|
||||
{
|
||||
if (count == 0 && pair.Key >= 40)
|
||||
{
|
||||
fix = true;
|
||||
pointsFixed.Add(30, 0);
|
||||
}
|
||||
|
||||
if (count != 3 || !fix)
|
||||
pointsFixed.Add(pair.Key, pair.Value);
|
||||
count++;
|
||||
}
|
||||
|
||||
count = 0;
|
||||
foreach (var pair in pointsFixed.OrderBy(x => x.Key))
|
||||
{
|
||||
curve[count] = pair.Key;
|
||||
curve[count + 8] = pair.Value;
|
||||
count++;
|
||||
}
|
||||
|
||||
return curve;
|
||||
|
||||
@@ -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;
|
||||
|
||||
18
app/Fans.cs
18
app/Fans.cs
@@ -757,8 +757,8 @@ namespace GHelper
|
||||
|
||||
chart.Titles[0].Text = title;
|
||||
|
||||
chart.ChartAreas[0].AxisX.Minimum = 20;
|
||||
chart.ChartAreas[0].AxisX.Maximum = 110;
|
||||
chart.ChartAreas[0].AxisX.Minimum = 10;
|
||||
chart.ChartAreas[0].AxisX.Maximum = 100;
|
||||
chart.ChartAreas[0].AxisX.Interval = 10;
|
||||
|
||||
chart.ChartAreas[0].AxisY.Minimum = 0;
|
||||
@@ -1019,7 +1019,7 @@ namespace GHelper
|
||||
int chartCount = 2;
|
||||
|
||||
// Middle / system fan check
|
||||
if (Program.acpi.GetFan(AsusFan.Mid) >= 0)
|
||||
if (!AsusACPI.IsEmptyCurve(Program.acpi.GetFanCurve(AsusFan.Mid)) || Program.acpi.GetFan(AsusFan.Mid) >= 0)
|
||||
{
|
||||
AppConfig.Set("mid_fan", 1);
|
||||
chartCount++;
|
||||
@@ -1082,10 +1082,15 @@ namespace GHelper
|
||||
if (reset || AsusACPI.IsInvalidCurve(curve))
|
||||
{
|
||||
curve = Program.acpi.GetFanCurve(device, Modes.GetCurrentBase());
|
||||
Logger.WriteLine($"Default {device}:" + BitConverter.ToString(curve));
|
||||
|
||||
if (AsusACPI.IsInvalidCurve(curve))
|
||||
curve = AppConfig.GetDefaultCurve(device);
|
||||
|
||||
curve = AsusACPI.FixFanCurve(curve);
|
||||
|
||||
}
|
||||
|
||||
curve = AsusACPI.FixFanCurve(curve);
|
||||
//Debug.WriteLine(BitConverter.ToString(curve));
|
||||
|
||||
byte old = 0;
|
||||
for (int i = 0; i < 8; i++)
|
||||
@@ -1240,7 +1245,8 @@ namespace GHelper
|
||||
dx = ax.PixelPositionToValue(e.X);
|
||||
dy = ay.PixelPositionToValue(e.Y);
|
||||
|
||||
dx = AsusACPI.FixTemp((int)dx, curIndex);
|
||||
if (dx < 20) dx = 20;
|
||||
if (dx > 100) dx = 100;
|
||||
|
||||
if (dy < 0) dy = 0;
|
||||
if (dy > fansMax) dy = fansMax;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.195</AssemblyVersion>
|
||||
<AssemblyVersion>0.198</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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();
|
||||
@@ -101,10 +108,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 +121,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);
|
||||
@@ -420,6 +427,12 @@ namespace GHelper.Input
|
||||
if (e.Modifier == (ModifierKeys.Control | ModifierKeys.Shift | ModifierKeys.Alt))
|
||||
{
|
||||
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)
|
||||
{
|
||||
@@ -435,30 +448,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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -735,6 +741,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
|
||||
@@ -867,6 +875,7 @@ namespace GHelper.Input
|
||||
|
||||
public static void SetBacklightAuto(bool init = false)
|
||||
{
|
||||
if (lidClose) return;
|
||||
if (init) Aura.Init();
|
||||
Aura.ApplyBrightness(GetBacklight(), "Auto", init);
|
||||
}
|
||||
@@ -1012,6 +1021,13 @@ 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);
|
||||
}
|
||||
|
||||
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;
|
||||
@@ -67,6 +69,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)
|
||||
|
||||
@@ -231,7 +231,12 @@ namespace GHelper
|
||||
Logger.WriteLine("AutoSetting for " + isPlugged.ToString());
|
||||
|
||||
BatteryControl.AutoBattery(init);
|
||||
if (init) screenControl.InitMiniled();
|
||||
|
||||
if (init)
|
||||
{
|
||||
screenControl.InitMiniled();
|
||||
InputDispatcher.InitScreenpad();
|
||||
}
|
||||
|
||||
inputDispatcher.Init();
|
||||
|
||||
|
||||
@@ -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;
|
||||
@@ -284,6 +285,12 @@ 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);
|
||||
@@ -667,14 +674,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 +850,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 +860,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 +1215,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 +1246,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 +1429,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";
|
||||
@@ -1533,14 +1544,14 @@ namespace GHelper
|
||||
public void AutoKeyboard()
|
||||
{
|
||||
|
||||
InputDispatcher.SetBacklightAuto(true);
|
||||
|
||||
if (!AppConfig.Is("skip_aura"))
|
||||
{
|
||||
Aura.ApplyPower();
|
||||
Aura.ApplyAura();
|
||||
}
|
||||
|
||||
InputDispatcher.SetBacklightAuto(true);
|
||||
|
||||
if (Program.acpi.IsXGConnected())
|
||||
XGM.Light(AppConfig.Is("xmg_light"));
|
||||
|
||||
@@ -1775,7 +1786,7 @@ namespace GHelper
|
||||
|
||||
public void VisualiseBatteryFull()
|
||||
{
|
||||
if (AppConfig.Is("charge_full"))
|
||||
if (BatteryControl.chargeFull)
|
||||
{
|
||||
buttonBatteryFull.BackColor = colorStandard;
|
||||
buttonBatteryFull.ForeColor = SystemColors.ControlLightLight;
|
||||
|
||||
Reference in New Issue
Block a user