Merge branch 'seerge:main' into main

This commit is contained in:
IceStormNG
2024-02-28 20:30:02 +01:00
committed by GitHub
44 changed files with 1217 additions and 117 deletions

4
.github/SECURITY.md vendored
View File

@@ -4,8 +4,8 @@
| Version | Supported |
| ------- | ------------------ |
| 0.89+ | :white_check_mark: |
| < 0.89 | :x: |
| 0.151+ | :white_check_mark: |
| < 0.151 | :x: |
## Reporting a Vulnerability

View File

@@ -18,6 +18,8 @@ namespace GHelper.AnimeMatrix
public AnimeMatrixDevice? deviceMatrix;
public SlashDevice? deviceSlash;
public static bool lidClose = false;
double[]? AudioValues;
WasapiCapture? AudioDevice;
string? AudioDeviceId;
@@ -56,6 +58,15 @@ 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)
{
@@ -66,6 +77,7 @@ namespace GHelper.AnimeMatrix
int inteval = AppConfig.Get("matrix_interval", 0);
bool auto = AppConfig.Is("matrix_auto");
bool lid = AppConfig.Is("matrix_lid");
Task.Run(() =>
{
@@ -81,7 +93,7 @@ namespace GHelper.AnimeMatrix
if (wakeUp) deviceSlash.WakeUp();
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) || (lid && lidClose))
{
deviceSlash.Init();
deviceSlash.SetOptions(false, 0, 0);
@@ -110,6 +122,7 @@ namespace GHelper.AnimeMatrix
int brightness = AppConfig.Get("matrix_brightness", 0);
int running = AppConfig.Get("matrix_running", 0);
bool auto = AppConfig.Is("matrix_auto");
bool lid = AppConfig.Is("matrix_lid");
StopMatrixTimer();
StopMatrixAudio();
@@ -128,7 +141,7 @@ namespace GHelper.AnimeMatrix
if (wakeUp) deviceMatrix.WakeUp();
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online))
if (brightness == 0 || (auto && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) || (lid && lidClose))
{
deviceMatrix.SetDisplayState(false);
deviceMatrix.SetDisplayState(false); // some devices are dumb

View File

@@ -127,6 +127,11 @@ namespace GHelper.AnimeMatrix
Set(Packet<SlashPacket>(0xD8, 0x01, 0x00, 0x01, status ? (byte)0x80 : (byte)0x00));
}
public void SetLidMode(bool status)
{
Set(Packet<SlashPacket>(0xD8, 0x00, 0x00, 0x02, 0xA5, status ? (byte)0x80 : (byte)0x00));
}
public void Set(Packet packet)
{
_usbProvider?.Set(packet.Data);

View File

@@ -91,13 +91,19 @@ public static class AppConfig
if (_model is null)
{
_model = "";
using (var searcher = new ManagementObjectSearcher(@"Select * from Win32_ComputerSystem"))
try
{
foreach (var process in searcher.Get())
using (var searcher = new ManagementObjectSearcher(@"Select * from Win32_ComputerSystem"))
{
_model = process["Model"].ToString();
break;
foreach (var process in searcher.Get())
{
_model = process["Model"].ToString();
break;
}
}
} catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
}
@@ -389,6 +395,11 @@ public static class AppConfig
return ContainsModel("GA503") || IsSlash();
}
public static bool IsOLED()
{
return ContainsModel("OLED") || IsSlash() || ContainsModel("UX64") || ContainsModel("UX34") || ContainsModel("UX53") || ContainsModel("K360") || ContainsModel("X150");
}
public static bool IsStrix()
{
return ContainsModel("Strix") || ContainsModel("Scar") || ContainsModel("G703G");
@@ -399,11 +410,17 @@ public static class AppConfig
return (ContainsModel("G614JV") || ContainsModel("G614JZ") || ContainsModel("G512LI") || ContainsModel("G513R") || ContainsModel("G713PV") || ContainsModel("G513IE") || ContainsModel("G713RC") || ContainsModel("G513QM") || ContainsModel("G531G")) && !Is("per_key_rgb");
}
public static bool IsNoAirplaneMode()
{
return ContainsModel("FX506");
}
public static bool NoWMI()
{
return ContainsModel("GL704G");
}
public static bool IsNoDirectRGB()
{
return ContainsModel("GA503") || ContainsModel("G533Q");
@@ -451,7 +468,7 @@ public static class AppConfig
public static bool NoAutoUltimate()
{
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617") || ContainsModel("G834");
return ContainsModel("G614") || ContainsModel("GU604") || ContainsModel("FX507") || ContainsModel("G513") || ContainsModel("FA617") || ContainsModel("G834") || ContainsModel("GA403") || ContainsModel("GU605");
}

View File

@@ -43,6 +43,10 @@ public class AsusACPI
public const int Brightness_Down = 0x10;
public const int Brightness_Up = 0x20;
public const int KB_Sleep = 0x6c;
public const int KB_TouchpadToggle = 0x6b;
public const int KB_MuteToggle = 0x7c;
public const int KB_DUO_PgUpDn = 0x4B;
public const int KB_DUO_SecondDisplay = 0x6A;
@@ -98,6 +102,9 @@ public class AsusACPI
public const int PPT_APUC1 = 0x001200C1; // fPPT (fast boost limit)
public const int PPT_GPUC2 = 0x001200C2; // NVIDIA GPU Temp Target (75.. 87 C)
public const uint CORES_CPU = 0x001200D2; // Intel E-core and P-core configuration in a format 0x0[E]0[P]
public const uint CORES_MAX = 0x001200D3; // Maximum Intel E-core and P-core availability
public const int APU_MEM = 0x000600C1;
public const int TUF_KB_BRIGHTNESS = 0x00050021;
@@ -146,6 +153,12 @@ public class AsusACPI
public const int MinGPUTemp = 75;
public const int MaxGPUTemp = 87;
public const int PCoreMin = 4;
public const int ECoreMin = 0;
public const int PCoreMax = 16;
public const int ECoreMax = 16;
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
private static extern IntPtr CreateFile(
@@ -514,16 +527,25 @@ public class AsusACPI
default: fan_mode = 0; break;
}
byte[] result;
switch (device)
{
case AsusFan.GPU:
return DeviceGetBuffer(DevsGPUFanCurve, fan_mode);
result = DeviceGetBuffer(DevsGPUFanCurve, fan_mode);
break;
case AsusFan.Mid:
return DeviceGetBuffer(DevsMidFanCurve, fan_mode);
result = DeviceGetBuffer(DevsMidFanCurve, fan_mode);
break;
default:
return DeviceGetBuffer(DevsCPUFanCurve, fan_mode);
result = DeviceGetBuffer(DevsCPUFanCurve, fan_mode);
break;
}
Logger.WriteLine($"GetFan {device} :" + BitConverter.ToString(result));
return result;
}
public static bool IsInvalidCurve(byte[] curve)
@@ -665,6 +687,29 @@ public class AsusACPI
}
}
public (int, int) GetCores(bool max = false)
{
int value = Program.acpi.DeviceGet(max ? CORES_MAX : CORES_CPU);
//value = max ? 0x406 : 0x605;
if (value < 0) return (-1, -1);
Logger.WriteLine("Cores" + (max ? "Max" : "") + ": 0x" + value.ToString("X4"));
return ((value >> 8) & 0xFF, (value) & 0xFF);
}
public void SetCores(int eCores, int pCores)
{
if (eCores < ECoreMin || eCores > ECoreMax || pCores < PCoreMin || pCores > PCoreMax)
{
Logger.WriteLine($"Incorrect Core config ({eCores}, {pCores})");
return;
};
int value = (eCores << 8) | pCores;
Program.acpi.DeviceSet(CORES_CPU, value, "Cores (0x" + value.ToString("X4") + ")");
}
public string ScanRange()
{
int value;

View File

@@ -0,0 +1,112 @@
namespace GHelper.Display
{
public class DisplayGammaRamp
{
public DisplayGammaRamp(ushort[] red, ushort[] green, ushort[] blue)
{
if (red?.Length != GammaRamp.DataPoints)
{
throw new ArgumentOutOfRangeException(nameof(red));
}
if (green?.Length != GammaRamp.DataPoints)
{
throw new ArgumentOutOfRangeException(nameof(green));
}
if (blue?.Length != GammaRamp.DataPoints)
{
throw new ArgumentOutOfRangeException(nameof(blue));
}
Red = red;
Green = green;
Blue = blue;
}
public DisplayGammaRamp(double brightness = 1, double contrast = 1, double gamma = 1)
: this(
CalculateLUT(brightness, contrast, gamma),
CalculateLUT(brightness, contrast, gamma),
CalculateLUT(brightness, contrast, gamma)
)
{
}
public DisplayGammaRamp(
double redBrightness,
double redContrast,
double redGamma,
double greenBrightness,
double greenContrast,
double greenGamma,
double blueBrightness,
double blueContrast,
double blueGamma
)
: this(
CalculateLUT(redBrightness, redContrast, redGamma),
CalculateLUT(greenBrightness, greenContrast, greenGamma),
CalculateLUT(blueBrightness, blueContrast, blueGamma)
)
{
}
internal DisplayGammaRamp(GammaRamp ramp) :
this(ramp.Red, ramp.Green, ramp.Blue)
{
}
public ushort[] Blue { get; }
public ushort[] Green { get; }
public ushort[] Red { get; }
private static ushort[] CalculateLUT(double brightness, double contrast, double gamma)
{
brightness = 0.5 + brightness / 2;
var result = new ushort[GammaRamp.DataPoints];
for (var i = 0; i < result.Length; i++)
{
result[i] = (ushort)(brightness * ushort.MaxValue * i / (float)(result.Length - 1));
}
return result;
}
public bool IsOriginal()
{
int MaxRed = Red[Red.Length - 1];
int MaxGreen = Green[Green.Length - 1];
int MaxBlue = Blue[Blue.Length - 1];
return (Math.Abs((MaxRed + MaxGreen + MaxBlue) / 3 - ushort.MaxValue) < 256);
}
private static ushort[] Brightness(ushort[] data, double brightness)
{
var result = new ushort[GammaRamp.DataPoints];
for (var i = 0; i < result.Length; i++)
{
if (brightness < 0.5)
result[i] = (ushort)(0.5 * ushort.MaxValue * Math.Pow((float)i/(result.Length - 1), 2 - brightness*2));
else
result[i] = (ushort)(data[i] * brightness);
}
return result;
}
internal GammaRamp AsBrightnessRamp(double brightness)
{
return new GammaRamp(
Brightness(Red, brightness),
Brightness(Green, brightness),
Brightness(Blue, brightness)
);
}
internal GammaRamp AsRamp()
{
return new GammaRamp(Red, Green, Blue);
}
}
}

56
app/Display/GammaRamp.cs Normal file
View File

@@ -0,0 +1,56 @@
using System.Runtime.InteropServices;
namespace GHelper.Display
{
[StructLayout(LayoutKind.Sequential)]
internal struct GammaRamp
{
public const int DataPoints = 256;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DataPoints)]
public readonly ushort[] Red;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DataPoints)]
public readonly ushort[] Green;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = DataPoints)]
public readonly ushort[] Blue;
public GammaRamp(ushort[] red, ushort[] green, ushort[] blue)
{
if (red == null)
{
throw new ArgumentNullException(nameof(red));
}
if (green == null)
{
throw new ArgumentNullException(nameof(green));
}
if (blue == null)
{
throw new ArgumentNullException(nameof(blue));
}
if (red.Length != DataPoints)
{
throw new ArgumentOutOfRangeException(nameof(red));
}
if (green.Length != DataPoints)
{
throw new ArgumentOutOfRangeException(nameof(green));
}
if (blue.Length != DataPoints)
{
throw new ArgumentOutOfRangeException(nameof(blue));
}
Red = red;
Green = green;
Blue = blue;
}
}
}

View File

@@ -1,4 +1,4 @@
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace GHelper.Display
{
@@ -7,6 +7,8 @@ namespace GHelper.Display
public const int MAX_REFRESH = 1000;
public static DisplayGammaRamp? gammaRamp;
public void AutoScreen(bool force = false)
{
if (force || AppConfig.Is("screen_auto"))
@@ -22,6 +24,70 @@ namespace GHelper.Display
}
}
public void SaveGamma()
{
var screenName = ScreenNative.FindLaptopScreen();
if (screenName is null) return;
try
{
var handle = ScreenNative.CreateDC(screenName, screenName, null, IntPtr.Zero);
var gammaRamp = new GammaRamp();
if (ScreenNative.GetDeviceGammaRamp(handle, ref gammaRamp))
{
var gamma = new DisplayGammaRamp(gammaRamp);
Logger.WriteLine("Gamma R: " + string.Join("-", gamma.Red));
Logger.WriteLine("Gamma G: " + string.Join("-", gamma.Green));
Logger.WriteLine("Gamma B: " + string.Join("-", gamma.Blue));
}
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
}
public void SetGamma(int brightness = 100)
{
var bright = Math.Round((float)brightness / 200 + 0.5, 2);
var screenName = ScreenNative.FindLaptopScreen();
if (screenName is null) return;
try
{
var handle = ScreenNative.CreateDC(screenName, screenName, null, IntPtr.Zero);
if (gammaRamp is null)
{
var gammaDump = new GammaRamp();
if (ScreenNative.GetDeviceGammaRamp(handle, ref gammaDump))
{
gammaRamp = new DisplayGammaRamp(gammaDump);
Logger.WriteLine("Gamma R: " + string.Join("-", gammaRamp.Red));
Logger.WriteLine("Gamma G: " + string.Join("-", gammaRamp.Green));
Logger.WriteLine("Gamma B: " + string.Join("-", gammaRamp.Blue));
}
}
if (gammaRamp is null || !gammaRamp.IsOriginal())
{
Logger.WriteLine("Default Gamma");
gammaRamp = new DisplayGammaRamp();
}
var ramp = gammaRamp.AsBrightnessRamp(bright);
bool result = ScreenNative.SetDeviceGammaRamp(handle, ref ramp);
Logger.WriteLine("Brightness " + bright.ToString() + ": " + result);
} catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
//ScreenBrightness.Set(60 + (int)(40 * bright));
}
public void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1)
{
var laptopScreen = ScreenNative.FindLaptopScreen(true);
@@ -71,7 +137,8 @@ namespace GHelper.Display
if (miniled1 >= 0)
{
miniled = (miniled1 == 1) ? 0 : 1;
} else
}
else
{
switch (miniled2)
{

View File

@@ -339,7 +339,20 @@ namespace GHelper.Display
for (var i = 0; i < modeCount; i++)
if (displayModes[i].infoType == DISPLAYCONFIG_MODE_INFO_TYPE.DISPLAYCONFIG_MODE_INFO_TYPE_TARGET)
yield return DeviceName(displayModes[i].adapterId, displayModes[i].id);
{
DISPLAYCONFIG_TARGET_DEVICE_NAME? displayName = null;
try
{
displayName = DeviceName(displayModes[i].adapterId, displayModes[i].id);
} catch (Exception e)
{
Logger.WriteLine(e.Message);
}
if (displayName is not null) yield return (DISPLAYCONFIG_TARGET_DEVICE_NAME)displayName;
}
}

View File

@@ -32,6 +32,16 @@ namespace GHelper.Display
}
internal class ScreenNative
{
[DllImport("gdi32", CharSet = CharSet.Unicode)]
internal static extern IntPtr CreateDC(string driver, string device, string port, IntPtr deviceMode);
[DllImport("gdi32")]
internal static extern bool SetDeviceGammaRamp(IntPtr dcHandle, ref GammaRamp ramp);
[DllImport("gdi32")]
internal static extern bool GetDeviceGammaRamp(IntPtr dcHandle, ref GammaRamp ramp);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct DEVMODE
{
@@ -146,7 +156,7 @@ namespace GHelper.Display
public const string defaultDevice = @"\\.\DISPLAY1";
private static string? FindInternalName(bool log = false)
public static string? FindInternalName(bool log = false)
{
try
{

240
app/Extra.Designer.cs generated
View File

@@ -99,6 +99,7 @@ namespace GHelper
checkSleepLid = new CheckBox();
checkShutdownLid = new CheckBox();
panelSettingsHeader = new Panel();
pictureScan = new PictureBox();
pictureLog = new PictureBox();
pictureSettings = new PictureBox();
labelSettings = new Label();
@@ -120,7 +121,18 @@ namespace GHelper
comboAPU = new RComboBox();
pictureAPUMem = new PictureBox();
labelAPUMem = new Label();
pictureScan = new PictureBox();
panelCores = new Panel();
buttonCores = new RButton();
comboCoresP = new RComboBox();
comboCoresE = new RComboBox();
pictureCores = new PictureBox();
label1 = new Label();
panelACPI = new Panel();
textACPIParam = new TextBox();
textACPICommand = new TextBox();
buttonACPISend = new RButton();
pictureDebug = new PictureBox();
labelACPITitle = new Label();
panelServices.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureService).BeginInit();
panelBindingsHeader.SuspendLayout();
@@ -137,6 +149,7 @@ namespace GHelper
panelXMG.SuspendLayout();
tableBacklight.SuspendLayout();
panelSettingsHeader.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureScan).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureLog).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureSettings).BeginInit();
panelSettings.SuspendLayout();
@@ -145,7 +158,10 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureHibernate).BeginInit();
panelAPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureAPUMem).BeginInit();
((System.ComponentModel.ISupportInitialize)pictureScan).BeginInit();
panelCores.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureCores).BeginInit();
panelACPI.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureDebug).BeginInit();
SuspendLayout();
//
// panelServices
@@ -155,7 +171,7 @@ namespace GHelper
panelServices.Controls.Add(labelServices);
panelServices.Controls.Add(buttonServices);
panelServices.Dock = DockStyle.Top;
panelServices.Location = new Point(15, 1378);
panelServices.Location = new Point(15, 1508);
panelServices.Name = "panelServices";
panelServices.Size = new Size(983, 75);
panelServices.TabIndex = 5;
@@ -1016,6 +1032,20 @@ namespace GHelper
panelSettingsHeader.Size = new Size(983, 51);
panelSettingsHeader.TabIndex = 45;
//
// pictureScan
//
pictureScan.Anchor = AnchorStyles.Top | AnchorStyles.Right;
pictureScan.BackgroundImage = Resources.icons8_search_32;
pictureScan.BackgroundImageLayout = ImageLayout.Zoom;
pictureScan.Cursor = Cursors.Hand;
pictureScan.Location = new Point(891, 11);
pictureScan.Margin = new Padding(4, 3, 4, 3);
pictureScan.Name = "pictureScan";
pictureScan.Size = new Size(32, 32);
pictureScan.TabIndex = 13;
pictureScan.TabStop = false;
pictureScan.Visible = false;
//
// pictureLog
//
pictureLog.Anchor = AnchorStyles.Top | AnchorStyles.Right;
@@ -1063,7 +1093,7 @@ namespace GHelper
panelSettings.Controls.Add(checkGpuApps);
panelSettings.Controls.Add(checkGPUFix);
panelSettings.Dock = DockStyle.Top;
panelSettings.Location = new Point(15, 978);
panelSettings.Location = new Point(15, 1108);
panelSettings.Name = "panelSettings";
panelSettings.Padding = new Padding(20, 5, 11, 5);
panelSettings.Size = new Size(983, 346);
@@ -1178,7 +1208,7 @@ namespace GHelper
panelPower.Controls.Add(labelHibernateAfter);
panelPower.Controls.Add(pictureHibernate);
panelPower.Dock = DockStyle.Top;
panelPower.Location = new Point(15, 1324);
panelPower.Location = new Point(15, 1454);
panelPower.Name = "panelPower";
panelPower.Size = new Size(983, 54);
panelPower.TabIndex = 4;
@@ -1221,7 +1251,7 @@ namespace GHelper
panelAPU.Controls.Add(pictureAPUMem);
panelAPU.Controls.Add(labelAPUMem);
panelAPU.Dock = DockStyle.Top;
panelAPU.Location = new Point(15, 921);
panelAPU.Location = new Point(15, 1051);
panelAPU.Name = "panelAPU";
panelAPU.Padding = new Padding(11, 5, 11, 0);
panelAPU.Size = new Size(983, 57);
@@ -1239,10 +1269,10 @@ namespace GHelper
comboAPU.FormattingEnabled = true;
comboAPU.ItemHeight = 32;
comboAPU.Items.AddRange(new object[] { "Auto", "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G" });
comboAPU.Location = new Point(663, 8);
comboAPU.Location = new Point(654, 8);
comboAPU.Margin = new Padding(4, 12, 4, 9);
comboAPU.Name = "comboAPU";
comboAPU.Size = new Size(293, 40);
comboAPU.Size = new Size(309, 40);
comboAPU.TabIndex = 12;
comboAPU.TabStop = false;
//
@@ -1260,25 +1290,169 @@ namespace GHelper
//
labelAPUMem.AutoSize = true;
labelAPUMem.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelAPUMem.Location = new Point(56, 11);
labelAPUMem.Location = new Point(64, 11);
labelAPUMem.Name = "labelAPUMem";
labelAPUMem.Size = new Size(309, 32);
labelAPUMem.TabIndex = 0;
labelAPUMem.Text = "Memory Assigned to GPU";
//
// pictureScan
// panelCores
//
pictureScan.Anchor = AnchorStyles.Top | AnchorStyles.Right;
pictureScan.BackgroundImage = Resources.icons8_heartbeat_32;
pictureScan.BackgroundImageLayout = ImageLayout.Zoom;
pictureScan.Cursor = Cursors.Hand;
pictureScan.Location = new Point(891, 11);
pictureScan.Margin = new Padding(4, 3, 4, 3);
pictureScan.Name = "pictureScan";
pictureScan.Size = new Size(32, 32);
pictureScan.TabIndex = 13;
pictureScan.TabStop = false;
pictureScan.Visible = false;
panelCores.AutoSize = true;
panelCores.Controls.Add(buttonCores);
panelCores.Controls.Add(comboCoresP);
panelCores.Controls.Add(comboCoresE);
panelCores.Controls.Add(pictureCores);
panelCores.Controls.Add(label1);
panelCores.Dock = DockStyle.Top;
panelCores.Location = new Point(15, 990);
panelCores.Name = "panelCores";
panelCores.Padding = new Padding(11, 5, 11, 0);
panelCores.Size = new Size(983, 61);
panelCores.TabIndex = 47;
panelCores.Visible = false;
//
// buttonCores
//
buttonCores.Activated = false;
buttonCores.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
buttonCores.BackColor = SystemColors.ButtonHighlight;
buttonCores.BorderColor = Color.Transparent;
buttonCores.BorderRadius = 2;
buttonCores.FlatStyle = FlatStyle.Flat;
buttonCores.Location = new Point(856, 7);
buttonCores.Margin = new Padding(4, 3, 4, 3);
buttonCores.Name = "buttonCores";
buttonCores.Secondary = false;
buttonCores.Size = new Size(106, 46);
buttonCores.TabIndex = 20;
buttonCores.Text = "Apply";
buttonCores.UseVisualStyleBackColor = false;
//
// comboCoresP
//
comboCoresP.Anchor = AnchorStyles.Top | AnchorStyles.Right;
comboCoresP.BorderColor = Color.White;
comboCoresP.ButtonColor = SystemColors.ControlLight;
comboCoresP.FlatStyle = FlatStyle.Flat;
comboCoresP.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
comboCoresP.FormattingEnabled = true;
comboCoresP.ItemHeight = 32;
comboCoresP.Location = new Point(543, 10);
comboCoresP.Margin = new Padding(4, 12, 4, 9);
comboCoresP.Name = "comboCoresP";
comboCoresP.Size = new Size(150, 40);
comboCoresP.TabIndex = 13;
comboCoresP.TabStop = false;
//
// comboCoresE
//
comboCoresE.Anchor = AnchorStyles.Top | AnchorStyles.Right;
comboCoresE.BorderColor = Color.White;
comboCoresE.ButtonColor = SystemColors.ControlLight;
comboCoresE.FlatStyle = FlatStyle.Flat;
comboCoresE.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
comboCoresE.FormattingEnabled = true;
comboCoresE.ItemHeight = 32;
comboCoresE.Location = new Point(702, 10);
comboCoresE.Margin = new Padding(4, 12, 4, 9);
comboCoresE.Name = "comboCoresE";
comboCoresE.Size = new Size(150, 40);
comboCoresE.TabIndex = 12;
comboCoresE.TabStop = false;
//
// pictureCores
//
pictureCores.BackgroundImage = Resources.icons8_processor_32;
pictureCores.BackgroundImageLayout = ImageLayout.Zoom;
pictureCores.Location = new Point(20, 15);
pictureCores.Name = "pictureCores";
pictureCores.Size = new Size(32, 32);
pictureCores.TabIndex = 1;
pictureCores.TabStop = false;
//
// label1
//
label1.AutoSize = true;
label1.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
label1.Location = new Point(64, 14);
label1.Name = "label1";
label1.Size = new Size(299, 32);
label1.TabIndex = 0;
label1.Text = "CPU Cores Configuration";
//
// panelACPI
//
panelACPI.AutoSize = true;
panelACPI.Controls.Add(textACPIParam);
panelACPI.Controls.Add(textACPICommand);
panelACPI.Controls.Add(buttonACPISend);
panelACPI.Controls.Add(pictureDebug);
panelACPI.Controls.Add(labelACPITitle);
panelACPI.Dock = DockStyle.Top;
panelACPI.Location = new Point(15, 921);
panelACPI.Name = "panelACPI";
panelACPI.Padding = new Padding(11, 5, 11, 0);
panelACPI.Size = new Size(983, 69);
panelACPI.TabIndex = 48;
panelACPI.Visible = false;
//
// textACPIParam
//
textACPIParam.Location = new Point(717, 18);
textACPIParam.Margin = new Padding(4, 3, 4, 3);
textACPIParam.Name = "textACPIParam";
textACPIParam.PlaceholderText = "Value";
textACPIParam.Size = new Size(127, 39);
textACPIParam.TabIndex = 22;
textACPIParam.TabStop = false;
//
// textACPICommand
//
textACPICommand.Location = new Point(467, 18);
textACPICommand.Margin = new Padding(4, 3, 4, 3);
textACPICommand.Name = "textACPICommand";
textACPICommand.PlaceholderText = "Address";
textACPICommand.Size = new Size(242, 39);
textACPICommand.TabIndex = 21;
textACPICommand.TabStop = false;
//
// buttonACPISend
//
buttonACPISend.Activated = false;
buttonACPISend.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
buttonACPISend.BackColor = SystemColors.ButtonHighlight;
buttonACPISend.BorderColor = Color.Transparent;
buttonACPISend.BorderRadius = 2;
buttonACPISend.FlatStyle = FlatStyle.Flat;
buttonACPISend.Location = new Point(854, 13);
buttonACPISend.Margin = new Padding(4, 3, 4, 3);
buttonACPISend.Name = "buttonACPISend";
buttonACPISend.Secondary = false;
buttonACPISend.Size = new Size(106, 46);
buttonACPISend.TabIndex = 20;
buttonACPISend.Text = "Send";
buttonACPISend.UseVisualStyleBackColor = false;
//
// pictureDebug
//
pictureDebug.BackgroundImage = Resources.icons8_heartbeat_32;
pictureDebug.BackgroundImageLayout = ImageLayout.Zoom;
pictureDebug.Location = new Point(20, 20);
pictureDebug.Name = "pictureDebug";
pictureDebug.Size = new Size(32, 32);
pictureDebug.TabIndex = 1;
pictureDebug.TabStop = false;
//
// labelACPITitle
//
labelACPITitle.AutoSize = true;
labelACPITitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelACPITitle.Location = new Point(57, 20);
labelACPITitle.Name = "labelACPITitle";
labelACPITitle.Size = new Size(188, 32);
labelACPITitle.TabIndex = 0;
labelACPITitle.Text = "ACPI DEVS Test";
//
// Extra
//
@@ -1287,11 +1461,13 @@ namespace GHelper
AutoScroll = true;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(1013, 1515);
ClientSize = new Size(1013, 1612);
Controls.Add(panelServices);
Controls.Add(panelPower);
Controls.Add(panelSettings);
Controls.Add(panelAPU);
Controls.Add(panelCores);
Controls.Add(panelACPI);
Controls.Add(panelSettingsHeader);
Controls.Add(panelBacklight);
Controls.Add(panelBacklightHeader);
@@ -1332,6 +1508,7 @@ namespace GHelper
tableBacklight.ResumeLayout(false);
panelSettingsHeader.ResumeLayout(false);
panelSettingsHeader.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureScan).EndInit();
((System.ComponentModel.ISupportInitialize)pictureLog).EndInit();
((System.ComponentModel.ISupportInitialize)pictureSettings).EndInit();
panelSettings.ResumeLayout(false);
@@ -1343,7 +1520,12 @@ namespace GHelper
panelAPU.ResumeLayout(false);
panelAPU.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureAPUMem).EndInit();
((System.ComponentModel.ISupportInitialize)pictureScan).EndInit();
panelCores.ResumeLayout(false);
panelCores.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureCores).EndInit();
panelACPI.ResumeLayout(false);
panelACPI.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureDebug).EndInit();
ResumeLayout(false);
PerformLayout();
}
@@ -1439,5 +1621,17 @@ namespace GHelper
private Label labelAPUMem;
private RComboBox comboAPU;
private PictureBox pictureScan;
private Panel panelCores;
private RComboBox comboCoresE;
private PictureBox pictureCores;
private Label label1;
private RComboBox comboCoresP;
private RButton buttonCores;
private Panel panelACPI;
private TextBox textACPIParam;
private TextBox textACPICommand;
private RButton buttonACPISend;
private PictureBox pictureDebug;
private Label labelACPITitle;
}
}

View File

@@ -386,7 +386,6 @@ namespace GHelper
buttonServices.Click += ButtonServices_Click;
pictureLog.Click += PictureLog_Click;
pictureScan.Click += PictureScan_Click;
checkGPUFix.Visible = Program.acpi.IsNVidiaGPU();
checkGPUFix.Checked = AppConfig.IsGPUFix();
@@ -394,11 +393,81 @@ namespace GHelper
toolTip.SetToolTip(checkAutoToggleClamshellMode, "Disable sleep on lid close when plugged in and external monitor is connected");
InitCores();
InitVariBright();
InitServices();
InitHibernate();
//InitACPITesting();
}
private void InitACPITesting()
{
pictureScan.Visible = true;
panelACPI.Visible = true;
textACPICommand.Text = "120075";
textACPIParam.Text = "1";
buttonACPISend.Click += ButtonACPISend_Click;
pictureScan.Click += PictureScan_Click;
}
private void ButtonACPISend_Click(object? sender, EventArgs e)
{
try {
int deviceID = Convert.ToInt32(textACPICommand.Text, 16);
int status = Convert.ToInt32(textACPIParam.Text, textACPIParam.Text.Contains("x") ? 16 : 10);
int result = Program.acpi.DeviceSet((uint)deviceID, status, "TestACPI " + deviceID.ToString("X8") + " " + status.ToString("X4"));
labelACPITitle.Text = "ACPI DEVS Test : " + result.ToString();
} catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
}
private void InitCores()
{
(int eCores, int pCores) = Program.acpi.GetCores();
(int eCoresMax, int pCoresMax) = Program.acpi.GetCores(true);
if (eCores < 0 || pCores < 0 || eCoresMax < 0 || pCoresMax < 0)
{
panelCores.Visible = false;
return;
}
eCoresMax = Math.Max(8, eCoresMax);
pCoresMax = Math.Max(6, pCoresMax);
panelCores.Visible = true;
comboCoresE.DropDownStyle = ComboBoxStyle.DropDownList;
comboCoresP.DropDownStyle = ComboBoxStyle.DropDownList;
for (int i = AsusACPI.PCoreMin; i <= pCoresMax; i++) comboCoresP.Items.Add(i.ToString() + " Pcores");
for (int i = AsusACPI.ECoreMin; i <= eCoresMax; i++) comboCoresE.Items.Add(i.ToString() + " Ecores");
comboCoresP.SelectedIndex = Math.Max(Math.Min(pCores - AsusACPI.PCoreMin, comboCoresP.Items.Count - 1), 0);
comboCoresE.SelectedIndex = Math.Max(Math.Min(eCores - AsusACPI.ECoreMin, comboCoresE.Items.Count - 1), 0);
buttonCores.Click += ButtonCores_Click;
}
private void ButtonCores_Click(object? sender, EventArgs e)
{
DialogResult dialogResult = MessageBox.Show(Properties.Strings.AlertAPUMemoryRestart, Properties.Strings.AlertAPUMemoryRestartTitle, MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
Program.acpi.SetCores(AsusACPI.ECoreMin + comboCoresE.SelectedIndex, AsusACPI.PCoreMin + comboCoresP.SelectedIndex);
Process.Start("shutdown", "/r /t 1");
}
}
private void PictureScan_Click(object? sender, EventArgs e)
{
string logFile = Program.acpi.ScanRange();

View File

@@ -953,7 +953,7 @@ namespace GHelper
int chartCount = 2;
// Middle / system fan check
if (!AsusACPI.IsEmptyCurve(Program.acpi.GetFanCurve(AsusFan.Mid)))
if (!AsusACPI.IsEmptyCurve(Program.acpi.GetFanCurve(AsusFan.Mid)) || Program.acpi.GetFan(AsusFan.Mid) >= 0)
{
AppConfig.Set("mid_fan", 1);
chartCount++;

View File

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

View File

@@ -890,6 +890,7 @@ namespace GHelper.Input
if (e.NewEvent is null) return;
int EventID = int.Parse(e.NewEvent["EventID"].ToString());
Logger.WriteLine("WMI event " + EventID);
if (AppConfig.NoWMI()) return;
HandleEvent(EventID);
}
}

View File

@@ -163,7 +163,7 @@ namespace GHelper.Mode
if (status != 0 || activeScheme != guidScheme)
{
status = PowerSetActiveOverlayScheme(guidScheme);
Logger.WriteLine("Power Mode " + scheme + ":" + (status == 0 ? "OK" : status));
Logger.WriteLine("Power Mode " + activeScheme + " -> " + scheme + ":" + (status == 0 ? "OK" : status));
}
}

View File

@@ -0,0 +1,247 @@
namespace GHelper.Peripherals.Mouse.Models
{
//P303
public class StrixImpact : AsusMouse
{
public StrixImpact() : base(0x0B05, 0x1847, "mi_02", false)
{
}
public StrixImpact(ushort productId, string path) : base(0x0B05, productId, path, false)
{
}
public override int DPIProfileCount()
{
return 2;
}
public override string GetDisplayName()
{
return "Strix Impact";
}
public override PollingRate[] SupportedPollingrates()
{
return new PollingRate[] {
PollingRate.PR125Hz,
PollingRate.PR250Hz,
PollingRate.PR500Hz,
PollingRate.PR1000Hz
};
}
public override int ProfileCount()
{
return 1;
}
public override int MaxDPI()
{
return 5_000;
}
public override bool HasRGB()
{
return true;
}
public override bool HasAutoPowerOff()
{
return false;
}
public override bool HasDebounceSetting()
{
return true;
}
public override bool HasLowBatteryWarning()
{
return false;
}
public override bool HasBattery()
{
return false;
}
public override bool HasDPIColors()
{
return false;
}
public override bool IsLightingModeSupported(LightingMode lightingMode)
{
return lightingMode == LightingMode.Static
|| lightingMode == LightingMode.Breathing
|| lightingMode == LightingMode.ColorCycle
|| lightingMode == LightingMode.React;
}
public override LightingZone[] SupportedLightingZones()
{
return new LightingZone[] { LightingZone.Logo };
}
public override int DPIIncrements()
{
return 100;
}
public override int MinDPI()
{
return 200;
}
public override bool CanChangeDPIProfile()
{
return true;
}
public override int MaxBrightness()
{
return 4;
}
protected override byte[] GetUpdateLightingModePacket(LightingSetting lightingSetting, LightingZone zone)
{
/*
* 51 28 00 00 [00] [04] [35 04 FF] 00 00 00 00 00 00 00
*/
return new byte[] { reportId, 0x51, 0x28, 0x00, 0x00,
IndexForLightingMode(lightingSetting.LightingMode),
(byte)lightingSetting.Brightness,
lightingSetting.RGBColor.R, lightingSetting.RGBColor.G, lightingSetting.RGBColor.B
};
}
protected override byte[] GetReadLightingModePacket(LightingZone zone)
{
return new byte[] { 0x00, 0x12, 0x03, 0x00 };
}
protected LightingSetting? ParseLightingSetting(byte[] packet, LightingZone zone)
{
if (packet[1] != 0x12 || packet[2] != 0x03)
{
return null;
}
int offset = 5 + (((int)zone) * 5);
LightingSetting setting = new LightingSetting();
setting.LightingMode = LightingModeForIndex(packet[offset + 0]);
setting.Brightness = packet[offset + 1];
setting.RGBColor = Color.FromArgb(packet[offset + 2], packet[offset + 3], packet[offset + 4]);
return setting;
}
public override void ReadLightingSetting()
{
if (!HasRGB())
{
return;
}
//Mouse sends all lighting zones in one response Direction, Random col, Speed
//00 12 03 00 00 [00 04 ff 00 80] [00 04 00 ff ff] [00 04 ff ff ff] 00 [00] [00] [00] 00 00
//00 12 03 00 00 [03 04 00 00 00] [03 04 00 00 00] [03 04 00 00 00] 00 [00] [00] [07] 00 00
byte[]? response = WriteForResponse(GetReadLightingModePacket(LightingZone.All));
if (response is null) return;
LightingZone[] lz = SupportedLightingZones();
for (int i = 0; i < lz.Length; ++i)
{
LightingSetting? ls = ParseLightingSetting(response, lz[i]);
if (ls is null)
{
Logger.WriteLine(GetDisplayName() + ": Failed to read RGB Setting for Zone " + lz[i].ToString());
continue;
}
ls.AnimationDirection = SupportsAnimationDirection(ls.LightingMode)
? (AnimationDirection)response[21]
: AnimationDirection.Clockwise;
ls.RandomColor = SupportsRandomColor(ls.LightingMode) && response[22] == 0x01;
ls.AnimationSpeed = SupportsAnimationSpeed(ls.LightingMode)
? (AnimationSpeed)response[23]
: AnimationSpeed.Medium;
if (ls.AnimationSpeed != AnimationSpeed.Fast
&& ls.AnimationSpeed != AnimationSpeed.Medium
&& ls.AnimationSpeed != AnimationSpeed.Slow)
{
ls.AnimationSpeed = AnimationSpeed.Medium;
}
Logger.WriteLine(GetDisplayName() + ": Read RGB Setting for Zone " + lz[i].ToString() + ": " + ls.ToString());
LightingSetting[i] = ls;
}
}
protected override PollingRate ParsePollingRate(byte[] packet)
{
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
{
return (PollingRate)packet[9];
}
return PollingRate.PR125Hz;
}
protected override byte[] GetUpdatePollingRatePacket(PollingRate pollingRate)
{
return new byte[] { reportId, 0x51, 0x31, 0x02, 0x00, (byte)pollingRate };
}
protected override bool ParseAngleSnapping(byte[] packet)
{
if (packet[1] == 0x12 && packet[2] == 0x04 && packet[3] == 0x00)
{
return packet[13] == 0x01;
}
return false;
}
protected override byte[] GetUpdateAngleSnappingPacket(bool angleSnapping)
{
return new byte[] { reportId, 0x51, 0x31, 0x04, 0x00, (byte)(angleSnapping ? 0x01 : 0x00) };
}
protected override DebounceTime ParseDebounce(byte[] packet)
{
if (packet[1] != 0x12 || packet[2] != 0x04 || packet[3] != 0x00)
{
return DebounceTime.MS12;
}
if (packet[11] < 0x02)
{
return DebounceTime.MS12;
}
if (packet[11] > 0x07)
{
return DebounceTime.MS32;
}
return (DebounceTime)packet[11];
}
protected override byte[] GetUpdateDebouncePacket(DebounceTime debounce)
{
return new byte[] { reportId, 0x51, 0x31, 0x03, 0x00, ((byte)debounce) };
}
}
}

View File

@@ -215,6 +215,7 @@ namespace GHelper.Peripherals
DetectMouse(new SpathaX());
DetectMouse(new StrixCarry());
DetectMouse(new StrixImpactIII());
DetectMouse(new StrixImpact());
}
public static void DetectMouse(AsusMouse am)

View File

@@ -210,6 +210,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_brightness_32 {
get {
object obj = ResourceManager.GetObject("icons8-brightness-32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -590,6 +600,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_search_32 {
get {
object obj = ResourceManager.GetObject("icons8-search-32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View File

@@ -166,11 +166,14 @@
<data name="brightness_up" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\brightness-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="brightness_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\brightness-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_processor_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-processor-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-fiat-500-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-fiat-500-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="MFont" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Font.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="icons8_touchpad_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-touchpad-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -187,9 +190,6 @@
<data name="icons8-laptop-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-laptop-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ally" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ally.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_remove_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-remove-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -214,6 +214,9 @@
<data name="backlight" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\backlight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-brightness-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-brightness-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-refresh-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-refresh-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@@ -250,8 +253,11 @@
<data name="dot_ultimate" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\dot-ultimate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="brightness_down" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\brightness-down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icons8-heartbeat-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-heartbeat-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ally" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ally.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="backlight_up" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\backlight-up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -283,8 +289,8 @@
<data name="icons8_video_48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-video-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="MFont" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Font.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="icons8-fiat-500-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-fiat-500-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="dot_eco" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\dot-eco.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -331,7 +337,7 @@
<data name="icons8-charging-battery-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-charging-battery-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8-heartbeat-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-heartbeat-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="icons8-search-32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-search-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -699,6 +699,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Disable on lid close.
/// </summary>
internal static string DisableOnLidClose {
get {
return ResourceManager.GetString("DisableOnLidClose", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Disable screen overdrive.
/// </summary>
@@ -790,9 +799,9 @@ namespace GHelper.Properties {
return ResourceManager.GetString("EnergySettings", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Export.
/// Looks up a localized string similar to Export Profile.
/// </summary>
internal static string Export {
get {
@@ -1024,9 +1033,9 @@ namespace GHelper.Properties {
return ResourceManager.GetString("ImageRotation", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Import.
/// Looks up a localized string similar to Import Profile.
/// </summary>
internal static string Import {
get {
@@ -1294,9 +1303,9 @@ namespace GHelper.Properties {
return ResourceManager.GetString("MouseButtonResponse", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Import failed. Selected file is not a valid mouse profile or corrutpted.
/// Looks up a localized string similar to Import failed. Selected file is not a valid mouse profile or corrutpted..
/// </summary>
internal static string MouseImportFailed {
get {
@@ -1800,7 +1809,7 @@ namespace GHelper.Properties {
}
/// <summary>
/// Looks up a localized string similar to Turn off on battery.
/// Looks up a localized string similar to Disable on battery.
/// </summary>
internal static string TurnOffOnBattery {
get {

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Bildschirm: Overdrive abschalten</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Deshabilitar mando</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Desactivar al cerrar la tapa</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Desactivar Overdrive</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Désactiver le contrôleur</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Désactiver l'overdrive de l'écran</value>
</data>
@@ -456,10 +459,10 @@ Voulez-vous continuer ?</value>
<value>Rétroéclairage du clavier</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Clavier de l'ordinateur</value>
<value>Clavier</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>Écran de l'ordinateur </value>
<value>Écran</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Capot</value>
@@ -588,7 +591,7 @@ Voulez-vous continuer ?</value>
<value>Overdrive</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Mode Performance</value>
<value>Mode</value>
</data>
<data name="Peripherals" xml:space="preserve">
<value>Périphériques</value>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Képernyőtúlhajtás letiltása</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Nonaktifkan screen overdrive</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Disabilita Overdrive Schermo</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>화면 OD 끄기</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Išjungti ekrano pikselių spartinimą</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Wyłącz funkcję Overdrive monitora</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Desativar o overdrive da tela</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Desativar o overdrive do ecrã</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Disable screen overdrive</value>
</data>
@@ -699,7 +702,7 @@ Do you still want to continue?</value>
<value>Turned off</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Turn off on battery</value>
<value>Disable on battery</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Routes laptop screen to dGPU, maximizing FPS</value>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Dezactivează screen overdrive</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Ekran overdrive özelliğini devre dışı bırak</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Вимкнути контролер</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Вимкнути при закритті</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Вимкнути овердрайв дисплею</value>
</data>
@@ -699,7 +702,7 @@
<value>Вимкнений</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Вимикати на батареї</value>
<value>Вимкнути на батареї</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Підключає екран лептопу до dGPU, щоб підвищити FPS</value>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Tắt Overdrive</value>
</data>

View File

@@ -330,6 +330,9 @@
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>禁用屏幕快速显示(OD)</value>
</data>

View File

@@ -145,7 +145,7 @@
<value>現在重新啟動嗎?</value>
</data>
<data name="AllyController" xml:space="preserve">
<value>Ally Controller</value>
<value>Ally控制器</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>動畫速度</value>
@@ -277,10 +277,10 @@
<value>Binding</value>
</data>
<data name="BindingPrimary" xml:space="preserve">
<value>Primary</value>
<value>主要</value>
</data>
<data name="BindingSecondary" xml:space="preserve">
<value>Secondary</value>
<value>次要</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS與驅動程式更新</value>
@@ -313,7 +313,7 @@
<value>Contrast</value>
</data>
<data name="Controller" xml:space="preserve">
<value>Controller</value>
<value>控制器</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU 加速</value>
@@ -328,7 +328,10 @@
<value>預設</value>
</data>
<data name="DisableController" xml:space="preserve">
<value>Disable Controller</value>
<value>停用控制器</value>
</data>
<data name="DisableOnLidClose" xml:space="preserve">
<value>Disable on lid close</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>禁用螢幕加速OD</value>
@@ -363,7 +366,7 @@
<value>電源設定</value>
</data>
<data name="Export" xml:space="preserve">
<value>Export Profile</value>
<value>匯出設定檔</value>
</data>
<data name="Extra" xml:space="preserve">
<value>更多</value>
@@ -441,7 +444,7 @@
<value>Image Rotation</value>
</data>
<data name="Import" xml:space="preserve">
<value>Import Profile</value>
<value>匯入設定檔</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>按鍵綁定</value>
@@ -531,7 +534,7 @@
<value>按鍵回應</value>
</data>
<data name="MouseImportFailed" xml:space="preserve">
<value>Import failed. Selected file is not a valid mouse profile or corrutpted.</value>
<value>匯入失敗,所選檔案並非有效的滑鼠設定檔或該檔已毀損</value>
</data>
<data name="MouseLiftOffDistance" xml:space="preserve">
<value>響應高度(LOD)</value>
@@ -618,7 +621,7 @@
<value>退出</value>
</data>
<data name="Reset" xml:space="preserve">
<value>Reset</value>
<value>重設</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否讓G-Helper重新啟動獨顯? * 請自行評估風險</value>

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

202
app/Settings.Designer.cs generated
View File

@@ -31,14 +31,17 @@ namespace GHelper
private void InitializeComponent()
{
panelMatrix = new Panel();
panelMatrixAuto = new Panel();
checkMatrixLid = new CheckBox();
checkMatrix = new CheckBox();
tableLayoutMatrix = new TableLayoutPanel();
comboMatrix = new RComboBox();
comboMatrixRunning = new RComboBox();
comboInterval = new RComboBox();
buttonMatrix = new RButton();
panelMatrixTitle = new Panel();
pictureMatrix = new PictureBox();
labelMatrix = new Label();
checkMatrix = new CheckBox();
panelBattery = new Panel();
buttonBatteryFull = new RButton();
sliderBattery = new Slider();
@@ -119,8 +122,14 @@ namespace GHelper
panelAllyTitle = new Panel();
pictureAlly = new PictureBox();
labelAlly = new Label();
comboInterval = new RComboBox();
panelGamma = new Panel();
sliderGamma = new Slider();
panelGammaTitle = new Panel();
labelGamma = new Label();
pictureGamma = new PictureBox();
labelGammaTitle = new Label();
panelMatrix.SuspendLayout();
panelMatrixAuto.SuspendLayout();
tableLayoutMatrix.SuspendLayout();
panelMatrixTitle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureMatrix).BeginInit();
@@ -158,6 +167,9 @@ namespace GHelper
tableLayoutAlly.SuspendLayout();
panelAllyTitle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureAlly).BeginInit();
panelGamma.SuspendLayout();
panelGammaTitle.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureGamma).BeginInit();
SuspendLayout();
//
// panelMatrix
@@ -165,18 +177,58 @@ namespace GHelper
panelMatrix.AccessibleRole = AccessibleRole.Grouping;
panelMatrix.AutoSize = true;
panelMatrix.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelMatrix.Controls.Add(panelMatrixAuto);
panelMatrix.Controls.Add(tableLayoutMatrix);
panelMatrix.Controls.Add(panelMatrixTitle);
panelMatrix.Controls.Add(checkMatrix);
panelMatrix.Dock = DockStyle.Top;
panelMatrix.Location = new Point(11, 827);
panelMatrix.Location = new Point(11, 950);
panelMatrix.Margin = new Padding(0);
panelMatrix.Name = "panelMatrix";
panelMatrix.Padding = new Padding(20, 20, 20, 10);
panelMatrix.Size = new Size(827, 176);
panelMatrix.Size = new Size(827, 194);
panelMatrix.TabIndex = 3;
panelMatrix.TabStop = true;
//
// panelMatrixAuto
//
panelMatrixAuto.Controls.Add(checkMatrixLid);
panelMatrixAuto.Controls.Add(checkMatrix);
panelMatrixAuto.Dock = DockStyle.Top;
panelMatrixAuto.Location = new Point(20, 144);
panelMatrixAuto.Margin = new Padding(4);
panelMatrixAuto.Name = "panelMatrixAuto";
panelMatrixAuto.Padding = new Padding(5, 0, 0, 0);
panelMatrixAuto.Size = new Size(787, 40);
panelMatrixAuto.TabIndex = 47;
//
// checkMatrixLid
//
checkMatrixLid.AutoSize = true;
checkMatrixLid.Dock = DockStyle.Left;
checkMatrixLid.ForeColor = SystemColors.GrayText;
checkMatrixLid.Location = new Point(256, 0);
checkMatrixLid.Margin = new Padding(8, 4, 8, 4);
checkMatrixLid.Name = "checkMatrixLid";
checkMatrixLid.Size = new Size(253, 40);
checkMatrixLid.TabIndex = 46;
checkMatrixLid.Text = "Disable on lid close";
checkMatrixLid.UseVisualStyleBackColor = true;
checkMatrixLid.Visible = false;
//
// checkMatrix
//
checkMatrix.AutoSize = true;
checkMatrix.Dock = DockStyle.Left;
checkMatrix.ForeColor = SystemColors.GrayText;
checkMatrix.Location = new Point(5, 0);
checkMatrix.Margin = new Padding(8, 4, 8, 4);
checkMatrix.Name = "checkMatrix";
checkMatrix.Padding = new Padding(0, 0, 10, 0);
checkMatrix.Size = new Size(251, 40);
checkMatrix.TabIndex = 19;
checkMatrix.Text = Properties.Strings.TurnOffOnBattery;
checkMatrix.UseVisualStyleBackColor = true;
//
// tableLayoutMatrix
//
tableLayoutMatrix.AutoSize = true;
@@ -230,6 +282,21 @@ namespace GHelper
comboMatrixRunning.Size = new Size(248, 40);
comboMatrixRunning.TabIndex = 17;
//
// comboInterval
//
comboInterval.BorderColor = Color.White;
comboInterval.ButtonColor = Color.FromArgb(255, 255, 255);
comboInterval.Dock = DockStyle.Top;
comboInterval.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
comboInterval.FormattingEnabled = true;
comboInterval.ItemHeight = 32;
comboInterval.Location = new Point(7, 75);
comboInterval.Margin = new Padding(7, 11, 7, 8);
comboInterval.Name = "comboInterval";
comboInterval.Size = new Size(248, 40);
comboInterval.TabIndex = 19;
comboInterval.Visible = false;
//
// buttonMatrix
//
buttonMatrix.Activated = false;
@@ -281,18 +348,6 @@ namespace GHelper
labelMatrix.TabIndex = 40;
labelMatrix.Text = "Anime Matrix";
//
// checkMatrix
//
checkMatrix.AutoSize = true;
checkMatrix.ForeColor = SystemColors.GrayText;
checkMatrix.Location = new Point(27, 126);
checkMatrix.Margin = new Padding(8, 4, 8, 4);
checkMatrix.Name = "checkMatrix";
checkMatrix.Size = new Size(249, 36);
checkMatrix.TabIndex = 19;
checkMatrix.Text = Properties.Strings.TurnOffOnBattery;
checkMatrix.UseVisualStyleBackColor = true;
//
// panelBattery
//
panelBattery.AutoSize = true;
@@ -301,7 +356,7 @@ namespace GHelper
panelBattery.Controls.Add(sliderBattery);
panelBattery.Controls.Add(panelBatteryTitle);
panelBattery.Dock = DockStyle.Top;
panelBattery.Location = new Point(11, 1485);
panelBattery.Location = new Point(11, 1626);
panelBattery.Margin = new Padding(0);
panelBattery.Name = "panelBattery";
panelBattery.Padding = new Padding(20, 20, 20, 10);
@@ -393,7 +448,7 @@ namespace GHelper
panelFooter.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelFooter.Controls.Add(tableButtons);
panelFooter.Dock = DockStyle.Top;
panelFooter.Location = new Point(11, 1660);
panelFooter.Location = new Point(11, 1801);
panelFooter.Margin = new Padding(0);
panelFooter.Name = "panelFooter";
panelFooter.Padding = new Padding(20);
@@ -1140,7 +1195,7 @@ namespace GHelper
panelKeyboard.Controls.Add(tableLayoutKeyboard);
panelKeyboard.Controls.Add(panelKeyboardTitle);
panelKeyboard.Dock = DockStyle.Top;
panelKeyboard.Location = new Point(11, 1143);
panelKeyboard.Location = new Point(11, 1284);
panelKeyboard.Margin = new Padding(0);
panelKeyboard.Name = "panelKeyboard";
panelKeyboard.Padding = new Padding(20);
@@ -1316,7 +1371,7 @@ namespace GHelper
panelVersion.Controls.Add(labelCharge);
panelVersion.Controls.Add(checkStartup);
panelVersion.Dock = DockStyle.Top;
panelVersion.Location = new Point(11, 1604);
panelVersion.Location = new Point(11, 1745);
panelVersion.Margin = new Padding(4);
panelVersion.Name = "panelVersion";
panelVersion.Size = new Size(827, 56);
@@ -1341,7 +1396,7 @@ namespace GHelper
panelPeripherals.Controls.Add(tableLayoutPeripherals);
panelPeripherals.Controls.Add(panelPeripheralsTile);
panelPeripherals.Dock = DockStyle.Top;
panelPeripherals.Location = new Point(11, 1287);
panelPeripherals.Location = new Point(11, 1428);
panelPeripherals.Margin = new Padding(0);
panelPeripherals.Name = "panelPeripherals";
panelPeripherals.Padding = new Padding(20, 20, 20, 10);
@@ -1483,7 +1538,7 @@ namespace GHelper
panelAlly.Controls.Add(tableLayoutAlly);
panelAlly.Controls.Add(panelAllyTitle);
panelAlly.Dock = DockStyle.Top;
panelAlly.Location = new Point(11, 1003);
panelAlly.Location = new Point(11, 1144);
panelAlly.Margin = new Padding(0);
panelAlly.Name = "panelAlly";
panelAlly.Padding = new Padding(20, 20, 20, 0);
@@ -1611,20 +1666,79 @@ namespace GHelper
labelAlly.TabIndex = 26;
labelAlly.Text = "Ally Controller";
//
// comboInterval
// panelGamma
//
comboInterval.BorderColor = Color.White;
comboInterval.ButtonColor = Color.FromArgb(255, 255, 255);
comboInterval.Dock = DockStyle.Top;
comboInterval.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
comboInterval.FormattingEnabled = true;
comboInterval.ItemHeight = 32;
comboInterval.Location = new Point(7, 75);
comboInterval.Margin = new Padding(7, 11, 7, 8);
comboInterval.Name = "comboInterval";
comboInterval.Size = new Size(248, 40);
comboInterval.TabIndex = 19;
comboInterval.Visible = false;
panelGamma.AutoSize = true;
panelGamma.AutoSizeMode = AutoSizeMode.GrowAndShrink;
panelGamma.Controls.Add(sliderGamma);
panelGamma.Controls.Add(panelGammaTitle);
panelGamma.Dock = DockStyle.Top;
panelGamma.Location = new Point(11, 827);
panelGamma.Margin = new Padding(0);
panelGamma.Name = "panelGamma";
panelGamma.Padding = new Padding(20, 20, 20, 10);
panelGamma.Size = new Size(827, 123);
panelGamma.TabIndex = 9;
panelGamma.Visible = false;
//
// sliderGamma
//
sliderGamma.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
sliderGamma.Location = new Point(40, 69);
sliderGamma.Margin = new Padding(4);
sliderGamma.Max = 100;
sliderGamma.Min = 0;
sliderGamma.Name = "sliderGamma";
sliderGamma.Size = new Size(752, 40);
sliderGamma.Step = 10;
sliderGamma.TabIndex = 20;
sliderGamma.Text = "sliderGamma";
sliderGamma.Value = 100;
//
// panelGammaTitle
//
panelGammaTitle.Controls.Add(labelGamma);
panelGammaTitle.Controls.Add(pictureGamma);
panelGammaTitle.Controls.Add(labelGammaTitle);
panelGammaTitle.Dock = DockStyle.Top;
panelGammaTitle.Location = new Point(20, 20);
panelGammaTitle.Margin = new Padding(4);
panelGammaTitle.Name = "panelGammaTitle";
panelGammaTitle.Padding = new Padding(0, 0, 0, 4);
panelGammaTitle.Size = new Size(787, 44);
panelGammaTitle.TabIndex = 40;
//
// labelGamma
//
labelGamma.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelGamma.Location = new Point(675, 4);
labelGamma.Margin = new Padding(8, 0, 8, 0);
labelGamma.Name = "labelGamma";
labelGamma.Size = new Size(107, 36);
labelGamma.TabIndex = 39;
labelGamma.Text = " ";
labelGamma.TextAlign = ContentAlignment.TopRight;
//
// pictureGamma
//
pictureGamma.BackgroundImage = Properties.Resources.icons8_brightness_32;
pictureGamma.BackgroundImageLayout = ImageLayout.Zoom;
pictureGamma.Location = new Point(4, 2);
pictureGamma.Margin = new Padding(4);
pictureGamma.Name = "pictureGamma";
pictureGamma.Size = new Size(32, 32);
pictureGamma.TabIndex = 38;
pictureGamma.TabStop = false;
//
// labelGammaTitle
//
labelGammaTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGammaTitle.Location = new Point(43, 0);
labelGammaTitle.Margin = new Padding(8, 0, 8, 0);
labelGammaTitle.Name = "labelGammaTitle";
labelGammaTitle.Size = new Size(307, 32);
labelGammaTitle.TabIndex = 37;
labelGammaTitle.Text = "Flicker-free Dimming";
//
// SettingsForm
//
@@ -1632,7 +1746,7 @@ namespace GHelper
AutoScaleMode = AutoScaleMode.Dpi;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(849, 1717);
ClientSize = new Size(849, 2119);
Controls.Add(panelFooter);
Controls.Add(panelVersion);
Controls.Add(panelBattery);
@@ -1640,6 +1754,7 @@ namespace GHelper
Controls.Add(panelKeyboard);
Controls.Add(panelAlly);
Controls.Add(panelMatrix);
Controls.Add(panelGamma);
Controls.Add(panelScreen);
Controls.Add(panelGPU);
Controls.Add(panelPerformance);
@@ -1655,6 +1770,8 @@ namespace GHelper
Text = "G-Helper";
panelMatrix.ResumeLayout(false);
panelMatrix.PerformLayout();
panelMatrixAuto.ResumeLayout(false);
panelMatrixAuto.PerformLayout();
tableLayoutMatrix.ResumeLayout(false);
panelMatrixTitle.ResumeLayout(false);
panelMatrixTitle.PerformLayout();
@@ -1708,6 +1825,9 @@ namespace GHelper
panelAllyTitle.ResumeLayout(false);
panelAllyTitle.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureAlly).EndInit();
panelGamma.ResumeLayout(false);
panelGammaTitle.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)pictureGamma).EndInit();
ResumeLayout(false);
PerformLayout();
}
@@ -1803,5 +1923,13 @@ namespace GHelper
private RButton buttonController;
private RButton buttonOverlay;
private RComboBox comboInterval;
private Panel panelGamma;
private Slider sliderGamma;
private Panel panelGammaTitle;
private Label labelGamma;
private PictureBox pictureGamma;
private Label labelGammaTitle;
private CheckBox checkMatrixLid;
private Panel panelMatrixAuto;
}
}

View File

@@ -85,6 +85,7 @@ namespace GHelper
labelPeripherals.Text = Properties.Strings.Peripherals;
checkMatrix.Text = Properties.Strings.TurnOffOnBattery;
checkMatrixLid.Text = Properties.Strings.DisableOnLidClose;
checkStartup.Text = Properties.Strings.RunOnStartup;
buttonMatrix.Text = Properties.Strings.PictureGif;
@@ -218,7 +219,7 @@ namespace GHelper
sliderBattery.ValueChanged += SliderBattery_ValueChanged;
Program.trayIcon.MouseMove += TrayIcon_MouseMove;
sensorTimer = new System.Timers.Timer(1000);
sensorTimer = new System.Timers.Timer(AppConfig.Get("sensor_timer",1000));
sensorTimer.Elapsed += OnTimedEvent;
sensorTimer.Enabled = true;
@@ -253,9 +254,19 @@ namespace GHelper
VisualiseFnLock();
buttonFnLock.Click += ButtonFnLock_Click;
panelGamma.Visible = AppConfig.IsOLED();
sliderGamma.ValueChanged += SliderGamma_ValueChanged;
labelGamma.Text = "100%";
panelPerformance.Focus();
}
private void SliderGamma_ValueChanged(object? sender, EventArgs e)
{
screenControl.SetGamma(sliderGamma.Value);
labelGamma.Text = sliderGamma.Value + "%";
}
private void ButtonOverlay_Click(object? sender, EventArgs e)
{
KeyboardHook.KeyKeyKeyPress(Keys.LControlKey, Keys.LShiftKey, Keys.O);
@@ -445,10 +456,14 @@ namespace GHelper
case 0:
Logger.WriteLine("Lid Closed");
Aura.ApplyBrightness(0, "Lid");
AniMatrixControl.lidClose = true;
matrixControl.SetLidMode();
break;
case 1:
Logger.WriteLine("Lid Open");
Aura.ApplyBrightness(InputDispatcher.GetBacklight(), "Lid");
AniMatrixControl.lidClose = false;
matrixControl.SetLidMode();
break;
}
@@ -691,6 +706,11 @@ namespace GHelper
matrixControl.SetBatteryAuto();
}
private void CheckMatrixLid_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("matrix_lid", checkMatrixLid.Checked ? 1 : 0);
matrixControl.SetLidMode(true);
}
private void ButtonMatrix_Click(object? sender, EventArgs e)
@@ -919,7 +939,8 @@ namespace GHelper
for (int i = 1; i <= 5; i++) comboInterval.Items.Add($"Interval {i}s");
buttonMatrix.Visible = false;
}
checkMatrixLid.Visible = true;
}
comboMatrix.SelectedIndex = Math.Min(AppConfig.Get("matrix_brightness", 0), comboMatrix.Items.Count - 1);
comboMatrixRunning.SelectedIndex = Math.Min(AppConfig.Get("matrix_running", 0), comboMatrixRunning.Items.Count - 1);
@@ -928,6 +949,10 @@ namespace GHelper
checkMatrix.Checked = AppConfig.Is("matrix_auto");
checkMatrix.CheckedChanged += CheckMatrix_CheckedChanged;
checkMatrixLid.Checked = AppConfig.Is("matrix_lid");
checkMatrixLid.CheckedChanged += CheckMatrixLid_CheckedChanged;
}

View File

@@ -1,10 +1,10 @@
# 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.svg?style=flat-square)](https://GitHub.com/seerge/g-helper/releases/)
[![Github all releases](https://img.shields.io/github/downloads/seerge/g-helper/total.svg?style=flat-square)](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 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/)
Small and lightweight Armoury Crate alternative for Asus laptops offering almost same functionality without extra bloat 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 and many more!
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, Ally and many more!
# [:floppy_disk:Download](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
@@ -124,6 +124,14 @@ Huge thanks to [@IceStormNG](https://github.com/IceStormNG) 👑 for contributio
- ``Ctrl + Shift + Alt + F20`` - Custom 2 (if exists)
- [Custom keybindings / hotkeys](https://github.com/seerge/g-helper/wiki/Power-user-settings#custom-hotkey-actions)
### 🎮ROG Ally Bindings
- ``M + DPad Left / Right`` - Display Brightness
- ``M + DPad Up`` - Touch keyboard
- ``M + DPad Down`` - Show desktop
- ``M + Y`` - Toggle AMD overay
- ``M + X`` - Screenshot
- ``M + Right Stick Click`` - Controller Mode
------------------
#### If you like the app you can make a Donation