Compare commits

...

16 Commits

Author SHA1 Message Date
Serge
5570513eeb Merge branch 'main' of https://github.com/seerge/g-helper 2024-11-03 11:02:21 +01:00
Serge
ceb1c9a250 Skip auto-backlight when lid is closed https://github.com/seerge/g-helper/issues/3335 2024-11-03 11:02:18 +01:00
Serge
e942d3fd49 Added website link 2024-10-31 11:10:09 +01:00
Serge
482fe00014 Version bump 2024-10-30 08:37:35 +01:00
Serge
54fdf9231c Custom mode hotkeys https://github.com/seerge/g-helper/issues/3323 2024-10-29 19:46:16 +01:00
Serge
b9be9a9c97 Added FN+F5 keycode for ancient devices https://github.com/seerge/g-helper/discussions/3322 2024-10-29 18:36:48 +01:00
Serge
501d0a1666 Matrix clock position tweak #3304 2024-10-29 18:34:56 +01:00
Serge
a7e50f89ca Cleanup 2024-10-28 16:21:58 +01:00
Serge
083e918086 Fix possible exception in battery fully charged https://github.com/seerge/g-helper/issues/3317 2024-10-28 16:19:05 +01:00
Serge
e6a547dbfd Animematrix clock position tweak https://github.com/seerge/g-helper/issues/3304 2024-10-28 15:23:47 +01:00
Serge
1321b2eb31 Init Screenpad brightness on start https://github.com/seerge/g-helper/issues/3301 2024-10-26 15:10:26 +02:00
Serge
5e96e3e9bc Option to skip PowerMode setting https://github.com/seerge/g-helper/issues/3287 2024-10-25 22:24:21 +02:00
Serge
5e4bd13aa9 Added GX501G to NoWMI list https://github.com/seerge/g-helper/discussions/3300 2024-10-25 22:19:11 +02:00
Serge
f320da9245 GPU mode toast notifications https://github.com/seerge/g-helper/issues/3286 2024-10-23 13:32:30 +02:00
Serge
a024c05bc1 Backlight tweaks 2024-10-23 13:29:12 +02:00
Serge
15501c7845 Animatrix picture editor tweaks https://github.com/seerge/g-helper/issues/3280 2024-10-22 17:49:37 +02:00
12 changed files with 88 additions and 69 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
# These are supported funding model platforms
custom: https://g-helper.com/support

View File

@@ -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();

View File

@@ -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();

View File

@@ -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()

View File

@@ -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);
}

View File

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

View File

@@ -241,7 +241,7 @@ public static class HardwareControl
if (fullCapacity > 0 && chargeCapacity > 0)
{
batteryCapacity = Math.Min(100, (decimal)chargeCapacity / (decimal)fullCapacity * 100);
if (batteryCapacity > 99) BatteryControl.UnSetBatteryLimitFull();
if (batteryCapacity > 99 && BatteryControl.chargeFull) BatteryControl.UnSetBatteryLimitFull();
if (chargeWatt)
{
batteryCharge = Math.Round((decimal)chargeCapacity / 1000, 1).ToString() + "Wh";
@@ -251,8 +251,6 @@ public static class HardwareControl
batteryCharge = Math.Round(batteryCapacity, 1) + "%";
}
}
}
public static bool IsUsedGPU(int threshold = 10)

View File

@@ -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,7 +121,6 @@ namespace GHelper.Input
if (!AppConfig.Is("skip_hotkeys"))
{
if (AppConfig.IsDUO())
{
hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control | ModifierKeys.Alt, Keys.F7);
@@ -130,11 +132,11 @@ namespace GHelper.Input
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);
@@ -425,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)
{
@@ -450,26 +458,13 @@ namespace GHelper.Input
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;
}
}
@@ -746,6 +741,7 @@ 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;
@@ -879,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);
}
@@ -1024,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;

View File

@@ -81,7 +81,7 @@ namespace GHelper
{
AppConfig.Set("matrix_contrast", trackContrast.Value);
AppConfig.Set("matrix_gamma", trackGamma.Value);
SetMatrixPicture();
SetMatrixPicture(false);
}

View File

@@ -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)

View File

@@ -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();

View File

@@ -674,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;
}
@@ -1544,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"));
@@ -1786,7 +1786,7 @@ namespace GHelper
public void VisualiseBatteryFull()
{
if (AppConfig.Is("charge_full"))
if (BatteryControl.chargeFull)
{
buttonBatteryFull.BackColor = colorStandard;
buttonBatteryFull.ForeColor = SystemColors.ControlLightLight;