Compare commits

..

26 Commits

Author SHA1 Message Date
Serge
bd1a11a15a Update README.md 2023-07-23 14:46:02 +02:00
Serge
c2262c0f89 Moved Aura commands to parallel thread 2023-07-23 14:36:22 +02:00
Serge
88aaf94441 Merge branch 'main' of https://github.com/seerge/g-helper 2023-07-23 13:33:08 +02:00
Serge
20b99810cb Standard mode fix 2023-07-23 13:33:05 +02:00
Serge
7b327a4481 Merge pull request #856 from seerge/l10n_main
New Crowdin updates
2023-07-23 12:39:23 +02:00
Serge
6f40dadfcb New translations Strings.resx (Chinese Simplified) 2023-07-23 09:59:11 +02:00
Serge
a004924a42 Merge 2023-07-22 19:23:36 +02:00
Serge
ef442da885 Merge 2023-07-22 19:23:29 +02:00
Serge
eab2ef695d Hide Unsupported elements in Extra 2023-07-22 19:20:44 +02:00
Serge
0291920a55 Merge pull request #844 from seerge/l10n_main
New Crowdin updates
2023-07-22 11:39:35 +02:00
Serge
633c841d7f New translations Strings.resx (Chinese Traditional) 2023-07-22 01:48:49 +02:00
Serge
f2f4df5693 New translations Strings.resx (Spanish) 2023-07-21 20:47:51 +02:00
Serge
4592d729d3 New translations Strings.resx (Italian) 2023-07-21 18:26:01 +02:00
Serge
8cedcb7b5d Merge pull request #841 from seerge/l10n_main
New Crowdin updates
2023-07-21 18:05:15 +02:00
Serge
37d133bd7c Merge pull request #842 from IceStormNG/clamshell-mode-fixes
Clamshell mode fixes
2023-07-21 15:50:51 +02:00
IceStormNG
3f87730375 Fixed a typo 2023-07-21 15:45:42 +02:00
IceStormNG
d99c3a8301 Assign handler via code so the settings assignment does not trigger the handler 2023-07-21 15:42:40 +02:00
IceStormNG
fbc792cb1d Only instanciate if needed. 2023-07-21 15:40:24 +02:00
IceStormNG
5498bb9398 This name makes more sense as it only checks for requirements 2023-07-21 15:39:23 +02:00
IceStormNG
25f842df9d Only touch power settings if the user checks the box. But always disable the changes back to the defaults when the user unchecks it. 2023-07-21 15:38:26 +02:00
Serge
987ee1c000 New translations Strings.resx (Polish) 2023-07-21 14:46:05 +02:00
Serge
afe760f58d Merge pull request #840 from seerge/l10n_main
New Crowdin updates
2023-07-21 13:00:18 +02:00
Serge
b07f0a09fa New translations Strings.resx (Chinese Simplified) 2023-07-21 12:59:52 +02:00
Serge
2b26791dc0 New translations Strings.resx (Ukrainian) 2023-07-21 12:59:51 +02:00
Serge
8db6939b30 Update README.md 2023-07-21 12:47:21 +02:00
Serge
29bcb810b4 Update release.yml 2023-07-21 11:40:51 +02:00
17 changed files with 239 additions and 141 deletions

View File

@@ -20,7 +20,7 @@ jobs:
- name: Publish
run: |
dotnet publish app/GHelper.sln --configuration Release --runtime win-x64 -p:PublishSingleFile=true --no-self-contained
powershell Compress-Archive app/bin/x64/Release/net7.0-windows8.0/win-x64/publish/* GHelper.zip
powershell Compress-Archive app/bin/x64/Release/net7.0-windows/win-x64/publish/* GHelper.zip
- name: Upload
env:
GH_TOKEN: ${{ github.token }}

View File

@@ -256,13 +256,13 @@ namespace GHelper
public static void ApplyBrightness(int brightness, string log = "Backlight")
{
if (AppConfig.ContainsModel("TUF"))
Program.acpi.TUFKeyboardBrightness(brightness);
Task.Run(async () =>
{
if (AppConfig.ContainsModel("TUF"))
Program.acpi.TUFKeyboardBrightness(brightness);
byte[] msg = { AURA_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
byte[] msgBackup = { INPUT_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
@@ -311,55 +311,60 @@ namespace GHelper
public static void ApplyAuraPower()
{
List<AuraDev19b6> flags = new();
// Keyboard
if (AppConfig.IsNotFalse("keyboard_awake")) flags.Add(AuraDev19b6.AwakeKeyb);
if (AppConfig.IsNotFalse("keyboard_boot")) flags.Add(AuraDev19b6.BootKeyb);
if (AppConfig.IsNotFalse("keyboard_sleep")) flags.Add(AuraDev19b6.SleepKeyb);
if (AppConfig.IsNotFalse("keyboard_shutdown")) flags.Add(AuraDev19b6.ShutdownKeyb);
// Lightbar
if (AppConfig.IsNotFalse("keyboard_awake_bar")) flags.Add(AuraDev19b6.AwakeBar);
if (AppConfig.IsNotFalse("keyboard_boot_bar")) flags.Add(AuraDev19b6.BootBar);
if (AppConfig.IsNotFalse("keyboard_sleep_bar")) flags.Add(AuraDev19b6.SleepBar);
if (AppConfig.IsNotFalse("keyboard_shutdown_bar")) flags.Add(AuraDev19b6.ShutdownBar);
// Lid
if (AppConfig.IsNotFalse("keyboard_awake_lid")) flags.Add(AuraDev19b6.AwakeLid);
if (AppConfig.IsNotFalse("keyboard_boot_lid")) flags.Add(AuraDev19b6.BootLid);
if (AppConfig.IsNotFalse("keyboard_sleep_lid")) flags.Add(AuraDev19b6.SleepLid);
if (AppConfig.IsNotFalse("keyboard_shutdown_lid")) flags.Add(AuraDev19b6.ShutdownLid);
// Logo
if (AppConfig.IsNotFalse("keyboard_awake_logo")) flags.Add(AuraDev19b6.AwakeLogo);
if (AppConfig.IsNotFalse("keyboard_boot_logo")) flags.Add(AuraDev19b6.BootLogo);
if (AppConfig.IsNotFalse("keyboard_sleep_logo")) flags.Add(AuraDev19b6.SleepLogo);
if (AppConfig.IsNotFalse("keyboard_shutdown_logo")) flags.Add(AuraDev19b6.ShutdownLogo);
byte[] msg = AuraDev19b6Extensions.ToBytes(flags.ToArray());
var devices = GetHidDevices(deviceIds);
foreach (HidDevice device in devices)
Task.Run(async () =>
{
device.OpenDevice();
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
{
device.WriteFeatureData(msg);
Logger.WriteLine("USB-KB " + device.Attributes.ProductHexId + ":" + BitConverter.ToString(msg));
}
device.CloseDevice();
}
if (AppConfig.ContainsModel("TUF"))
Program.acpi.TUFKeyboardPower(
flags.Contains(AuraDev19b6.AwakeKeyb),
flags.Contains(AuraDev19b6.BootKeyb),
flags.Contains(AuraDev19b6.SleepKeyb),
flags.Contains(AuraDev19b6.ShutdownKeyb));
List<AuraDev19b6> flags = new();
// Keyboard
if (AppConfig.IsNotFalse("keyboard_awake")) flags.Add(AuraDev19b6.AwakeKeyb);
if (AppConfig.IsNotFalse("keyboard_boot")) flags.Add(AuraDev19b6.BootKeyb);
if (AppConfig.IsNotFalse("keyboard_sleep")) flags.Add(AuraDev19b6.SleepKeyb);
if (AppConfig.IsNotFalse("keyboard_shutdown")) flags.Add(AuraDev19b6.ShutdownKeyb);
// Lightbar
if (AppConfig.IsNotFalse("keyboard_awake_bar")) flags.Add(AuraDev19b6.AwakeBar);
if (AppConfig.IsNotFalse("keyboard_boot_bar")) flags.Add(AuraDev19b6.BootBar);
if (AppConfig.IsNotFalse("keyboard_sleep_bar")) flags.Add(AuraDev19b6.SleepBar);
if (AppConfig.IsNotFalse("keyboard_shutdown_bar")) flags.Add(AuraDev19b6.ShutdownBar);
// Lid
if (AppConfig.IsNotFalse("keyboard_awake_lid")) flags.Add(AuraDev19b6.AwakeLid);
if (AppConfig.IsNotFalse("keyboard_boot_lid")) flags.Add(AuraDev19b6.BootLid);
if (AppConfig.IsNotFalse("keyboard_sleep_lid")) flags.Add(AuraDev19b6.SleepLid);
if (AppConfig.IsNotFalse("keyboard_shutdown_lid")) flags.Add(AuraDev19b6.ShutdownLid);
// Logo
if (AppConfig.IsNotFalse("keyboard_awake_logo")) flags.Add(AuraDev19b6.AwakeLogo);
if (AppConfig.IsNotFalse("keyboard_boot_logo")) flags.Add(AuraDev19b6.BootLogo);
if (AppConfig.IsNotFalse("keyboard_sleep_logo")) flags.Add(AuraDev19b6.SleepLogo);
if (AppConfig.IsNotFalse("keyboard_shutdown_logo")) flags.Add(AuraDev19b6.ShutdownLogo);
byte[] msg = AuraDev19b6Extensions.ToBytes(flags.ToArray());
var devices = GetHidDevices(deviceIds);
foreach (HidDevice device in devices)
{
device.OpenDevice();
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
{
device.WriteFeatureData(msg);
Logger.WriteLine("USB-KB " + device.Attributes.ProductHexId + ":" + BitConverter.ToString(msg));
}
device.CloseDevice();
}
if (AppConfig.ContainsModel("TUF"))
Program.acpi.TUFKeyboardPower(
flags.Contains(AuraDev19b6.AwakeKeyb),
flags.Contains(AuraDev19b6.BootKeyb),
flags.Contains(AuraDev19b6.SleepKeyb),
flags.Contains(AuraDev19b6.ShutdownKeyb));
});
}
@@ -367,44 +372,48 @@ namespace GHelper
public static void ApplyAura()
{
Mode = AppConfig.Get("aura_mode");
Speed = AppConfig.Get("aura_speed");
SetColor(AppConfig.Get("aura_color"));
SetColor2(AppConfig.Get("aura_color2"));
int _speed;
switch (Speed)
Task.Run(async () =>
{
case 1:
_speed = 0xeb;
break;
case 2:
_speed = 0xf5;
break;
default:
_speed = 0xe1;
break;
}
byte[] msg = AuraMessage(Mode, Color1, Color2, _speed);
var devices = GetHidDevices(deviceIds);
Mode = AppConfig.Get("aura_mode");
Speed = AppConfig.Get("aura_speed");
SetColor(AppConfig.Get("aura_color"));
SetColor2(AppConfig.Get("aura_color2"));
foreach (HidDevice device in devices)
{
device.OpenDevice();
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
int _speed;
switch (Speed)
{
device.WriteFeatureData(msg);
device.WriteFeatureData(MESSAGE_SET);
device.WriteFeatureData(MESSAGE_APPLY);
Logger.WriteLine("USB-KB " + device.Capabilities.FeatureReportByteLength + "|" + device.Capabilities.InputReportByteLength + device.Description + device.DevicePath + ":" + BitConverter.ToString(msg));
case 1:
_speed = 0xeb;
break;
case 2:
_speed = 0xf5;
break;
default:
_speed = 0xe1;
break;
}
device.CloseDevice();
}
if (AppConfig.ContainsModel("TUF"))
Program.acpi.TUFKeyboardRGB(Mode, Color1, _speed);
byte[] msg = AuraMessage(Mode, Color1, Color2, _speed);
var devices = GetHidDevices(deviceIds);
foreach (HidDevice device in devices)
{
device.OpenDevice();
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
{
device.WriteFeatureData(msg);
device.WriteFeatureData(MESSAGE_SET);
device.WriteFeatureData(MESSAGE_APPLY);
Logger.WriteLine("USB-KB " + device.Capabilities.FeatureReportByteLength + "|" + device.Capabilities.InputReportByteLength + device.Description + device.DevicePath + ":" + BitConverter.ToString(msg));
}
device.CloseDevice();
}
if (AppConfig.ContainsModel("TUF"))
Program.acpi.TUFKeyboardRGB(Mode, Color1, _speed);
});
}

View File

@@ -238,7 +238,7 @@ namespace GHelper.Display
//Fallback scenario
if (iRet != 0)
{
Thread.Sleep(1000);
Thread.Sleep(500);
iRet = ChangeDisplaySettingsEx(laptopScreen, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
Logger.WriteLine("Screen = " + frequency.ToString() + "Hz : " + (iRet == 0 ? "OK" : iRet));
}

66
app/Extra.Designer.cs generated
View File

@@ -137,7 +137,7 @@ namespace GHelper
panelServices.Controls.Add(labelServices);
panelServices.Controls.Add(buttonServices);
panelServices.Dock = DockStyle.Top;
panelServices.Location = new Point(15, 1236);
panelServices.Location = new Point(15, 1216);
panelServices.Name = "panelServices";
panelServices.Size = new Size(983, 75);
panelServices.TabIndex = 3;
@@ -235,15 +235,17 @@ namespace GHelper
panelBindings.Location = new Point(15, 65);
panelBindings.Name = "panelBindings";
panelBindings.Padding = new Padding(0, 0, 10, 5);
panelBindings.Size = new Size(983, 325);
panelBindings.Size = new Size(983, 305);
panelBindings.TabIndex = 5;
//
// tableBindings
//
tableBindings.AutoSize = true;
tableBindings.AutoSizeMode = AutoSizeMode.GrowAndShrink;
tableBindings.ColumnCount = 3;
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15.4649944F));
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40.97453F));
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 43.6323357F));
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 15.45389F));
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 40.94511F));
tableBindings.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 43.6010056F));
tableBindings.Controls.Add(label1, 0, 5);
tableBindings.Controls.Add(textBox1, 2, 1);
tableBindings.Controls.Add(textM1, 2, 0);
@@ -268,19 +270,19 @@ namespace GHelper
tableBindings.Name = "tableBindings";
tableBindings.Padding = new Padding(16, 12, 0, 12);
tableBindings.RowCount = 6;
tableBindings.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F));
tableBindings.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F));
tableBindings.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F));
tableBindings.RowStyles.Add(new RowStyle(SizeType.Absolute, 51F));
tableBindings.RowStyles.Add(new RowStyle(SizeType.Absolute, 49F));
tableBindings.RowStyles.Add(new RowStyle(SizeType.Absolute, 21F));
tableBindings.Size = new Size(973, 320);
tableBindings.RowStyles.Add(new RowStyle());
tableBindings.RowStyles.Add(new RowStyle());
tableBindings.RowStyles.Add(new RowStyle());
tableBindings.RowStyles.Add(new RowStyle());
tableBindings.RowStyles.Add(new RowStyle());
tableBindings.RowStyles.Add(new RowStyle());
tableBindings.Size = new Size(973, 300);
tableBindings.TabIndex = 12;
//
// label1
//
label1.AutoSize = true;
label1.Location = new Point(16, 265);
label1.Location = new Point(16, 242);
label1.Margin = new Padding(0);
label1.Name = "label1";
label1.Padding = new Padding(5, 10, 0, 0);
@@ -291,7 +293,7 @@ namespace GHelper
// textBox1
//
textBox1.Dock = DockStyle.Top;
textBox1.Location = new Point(558, 66);
textBox1.Location = new Point(558, 61);
textBox1.Margin = new Padding(4, 3, 4, 3);
textBox1.Name = "textBox1";
textBox1.PlaceholderText = "action";
@@ -339,7 +341,7 @@ namespace GHelper
comboM4.Dock = DockStyle.Top;
comboM4.FormattingEnabled = true;
comboM4.Items.AddRange(new object[] { Strings.PerformanceMode, Strings.OpenGHelper, Strings.Custom });
comboM4.Location = new Point(167, 168);
comboM4.Location = new Point(167, 153);
comboM4.Margin = new Padding(4, 3, 4, 3);
comboM4.Name = "comboM4";
comboM4.Size = new Size(383, 40);
@@ -352,7 +354,7 @@ namespace GHelper
comboM3.Dock = DockStyle.Top;
comboM3.FormattingEnabled = true;
comboM3.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
comboM3.Location = new Point(167, 117);
comboM3.Location = new Point(167, 107);
comboM3.Margin = new Padding(4, 3, 4, 3);
comboM3.Name = "comboM3";
comboM3.Size = new Size(383, 40);
@@ -361,7 +363,7 @@ namespace GHelper
// textM4
//
textM4.Dock = DockStyle.Top;
textM4.Location = new Point(558, 168);
textM4.Location = new Point(558, 153);
textM4.Margin = new Padding(4, 3, 4, 3);
textM4.Name = "textM4";
textM4.PlaceholderText = "action";
@@ -371,7 +373,7 @@ namespace GHelper
// textM3
//
textM3.Dock = DockStyle.Top;
textM3.Location = new Point(558, 117);
textM3.Location = new Point(558, 107);
textM3.Margin = new Padding(4, 3, 4, 3);
textM3.Name = "textM3";
textM3.PlaceholderText = "action";
@@ -381,7 +383,7 @@ namespace GHelper
// labelM4
//
labelM4.AutoSize = true;
labelM4.Location = new Point(16, 165);
labelM4.Location = new Point(16, 150);
labelM4.Margin = new Padding(0);
labelM4.Name = "labelM4";
labelM4.Padding = new Padding(5, 10, 0, 0);
@@ -392,7 +394,7 @@ namespace GHelper
// labelM3
//
labelM3.AutoSize = true;
labelM3.Location = new Point(16, 114);
labelM3.Location = new Point(16, 104);
labelM3.Margin = new Padding(0);
labelM3.Name = "labelM3";
labelM3.Padding = new Padding(5, 10, 0, 0);
@@ -403,7 +405,7 @@ namespace GHelper
// labelM2
//
labelM2.AutoSize = true;
labelM2.Location = new Point(16, 63);
labelM2.Location = new Point(16, 58);
labelM2.Margin = new Padding(0);
labelM2.Name = "labelM2";
labelM2.Padding = new Padding(5, 10, 0, 0);
@@ -418,7 +420,7 @@ namespace GHelper
comboM2.Dock = DockStyle.Top;
comboM2.FormattingEnabled = true;
comboM2.Items.AddRange(new object[] { Strings.Default, Strings.VolumeMute, Strings.PlayPause, Strings.PrintScreen, Strings.ToggleAura, Strings.Custom });
comboM2.Location = new Point(167, 66);
comboM2.Location = new Point(167, 61);
comboM2.Margin = new Padding(4, 3, 4, 3);
comboM2.Name = "comboM2";
comboM2.Size = new Size(383, 40);
@@ -427,7 +429,7 @@ namespace GHelper
// labelFNF4
//
labelFNF4.AutoSize = true;
labelFNF4.Location = new Point(16, 216);
labelFNF4.Location = new Point(16, 196);
labelFNF4.Margin = new Padding(0);
labelFNF4.Name = "labelFNF4";
labelFNF4.Padding = new Padding(5, 10, 0, 0);
@@ -441,7 +443,7 @@ namespace GHelper
comboFNF4.ButtonColor = Color.FromArgb(255, 255, 255);
comboFNF4.Dock = DockStyle.Top;
comboFNF4.FormattingEnabled = true;
comboFNF4.Location = new Point(167, 219);
comboFNF4.Location = new Point(167, 199);
comboFNF4.Margin = new Padding(4, 3, 4, 3);
comboFNF4.Name = "comboFNF4";
comboFNF4.Size = new Size(383, 40);
@@ -450,7 +452,7 @@ namespace GHelper
// textFNF4
//
textFNF4.Dock = DockStyle.Top;
textFNF4.Location = new Point(558, 219);
textFNF4.Location = new Point(558, 199);
textFNF4.Margin = new Padding(4, 3, 4, 3);
textFNF4.Name = "textFNF4";
textFNF4.PlaceholderText = "action";
@@ -463,7 +465,7 @@ namespace GHelper
comboFNC.ButtonColor = Color.FromArgb(255, 255, 255);
comboFNC.Dock = DockStyle.Top;
comboFNC.FormattingEnabled = true;
comboFNC.Location = new Point(167, 268);
comboFNC.Location = new Point(167, 245);
comboFNC.Margin = new Padding(4, 3, 4, 3);
comboFNC.Name = "comboFNC";
comboFNC.Size = new Size(383, 40);
@@ -472,7 +474,7 @@ namespace GHelper
// textFNC
//
textFNC.Dock = DockStyle.Top;
textFNC.Location = new Point(558, 268);
textFNC.Location = new Point(558, 245);
textFNC.Margin = new Padding(4, 3, 4, 3);
textFNC.Name = "textFNC";
textFNC.PlaceholderText = "action";
@@ -526,7 +528,7 @@ namespace GHelper
panelBacklightHeader.Controls.Add(pictureBacklight);
panelBacklightHeader.Controls.Add(labelBacklightTitle);
panelBacklightHeader.Dock = DockStyle.Top;
panelBacklightHeader.Location = new Point(15, 390);
panelBacklightHeader.Location = new Point(15, 370);
panelBacklightHeader.Name = "panelBacklightHeader";
panelBacklightHeader.Padding = new Padding(10, 5, 10, 5);
panelBacklightHeader.Size = new Size(983, 50);
@@ -572,7 +574,7 @@ namespace GHelper
panelBacklight.Controls.Add(panelXMG);
panelBacklight.Controls.Add(tableBacklight);
panelBacklight.Dock = DockStyle.Top;
panelBacklight.Location = new Point(15, 440);
panelBacklight.Location = new Point(15, 420);
panelBacklight.Name = "panelBacklight";
panelBacklight.Padding = new Padding(0, 5, 0, 5);
panelBacklight.Size = new Size(983, 402);
@@ -961,7 +963,7 @@ namespace GHelper
panelSettingsHeader.Controls.Add(pictureSettings);
panelSettingsHeader.Controls.Add(labelSettings);
panelSettingsHeader.Dock = DockStyle.Top;
panelSettingsHeader.Location = new Point(15, 842);
panelSettingsHeader.Location = new Point(15, 822);
panelSettingsHeader.Name = "panelSettingsHeader";
panelSettingsHeader.Padding = new Padding(10, 5, 10, 5);
panelSettingsHeader.Size = new Size(983, 50);
@@ -1013,7 +1015,7 @@ namespace GHelper
panelSettings.Controls.Add(checkGpuApps);
panelSettings.Controls.Add(checkFnLock);
panelSettings.Dock = DockStyle.Top;
panelSettings.Location = new Point(15, 892);
panelSettings.Location = new Point(15, 872);
panelSettings.Name = "panelSettings";
panelSettings.Padding = new Padding(20, 5, 10, 5);
panelSettings.Size = new Size(983, 344);
@@ -1031,7 +1033,6 @@ namespace GHelper
checkAutoToggleClamshellMode.TabIndex = 58;
checkAutoToggleClamshellMode.Text = "Auto Toggle Clamshell Mode";
checkAutoToggleClamshellMode.UseVisualStyleBackColor = true;
checkAutoToggleClamshellMode.CheckedChanged += checkAutoToggleClamshellMode_CheckedChanged;
//
// checkAutoApplyWindowsPowerMode
//
@@ -1159,6 +1160,7 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)pictureBindings).EndInit();
((System.ComponentModel.ISupportInitialize)pictureHelp).EndInit();
panelBindings.ResumeLayout(false);
panelBindings.PerformLayout();
tableBindings.ResumeLayout(false);
tableBindings.PerformLayout();
tableKeys.ResumeLayout(false);

View File

@@ -11,6 +11,7 @@ namespace GHelper
{
ScreenControl screenControl = new ScreenControl();
ClamshellModeControl clamshellControl = new ClamshellModeControl();
Dictionary<string, string> customActions = new Dictionary<string, string>
{
@@ -123,6 +124,21 @@ namespace GHelper
customActions.Add("screenpad_up", Properties.Strings.ScreenPadUp);
}
if (InputDispatcher.NoMKeys())
{
labelM1.Text = "FN+F2";
labelM2.Text = "FN+F3";
labelM3.Text = "FN+F4";
labelM4.Visible = comboM4.Visible = textM4.Visible = false;
labelFNF4.Visible = comboFNF4.Visible = textFNF4.Visible = false;
}
if (Program.acpi.DeviceGet(AsusACPI.GPUEco) < 0)
{
checkGpuApps.Visible = false;
checkUSBC.Visible = false;
}
InitTheme();
SetKeyCombo(comboM1, textM1, "m1");
@@ -211,8 +227,9 @@ namespace GHelper
}
}
//checkAutoToggleClamshellMode.Visible = clamshellControl.IsExternalDisplayConnected();
checkAutoToggleClamshellMode.Checked = AppConfig.Is("toggle_clamshell_mode");
checkAutoToggleClamshellMode.CheckedChanged += checkAutoToggleClamshellMode_CheckedChanged;
checkTopmost.Checked = AppConfig.Is("topmost");
checkTopmost.CheckedChanged += CheckTopmost_CheckedChanged; ;
@@ -471,11 +488,19 @@ namespace GHelper
AppConfig.Set("auto_apply_power_plan", checkAutoApplyWindowsPowerMode.Checked ? 1 : 0);
}
private void checkAutoToggleClamshellMode_CheckedChanged(object sender, EventArgs e)
private void checkAutoToggleClamshellMode_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.Set("toggle_clamshell_mode", checkAutoToggleClamshellMode.Checked ? 1 : 0);
ClamshellModeControl ctrl = new ClamshellModeControl();
ctrl.ToggleLidAction();
if (checkAutoToggleClamshellMode.Checked)
{
clamshellControl.ToggleLidAction();
}
else
{
ClamshellModeControl.DisableClamshellMode();
}
}
}
}

View File

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

View File

@@ -177,7 +177,7 @@ namespace GHelper.Gpu
{
bool GpuAuto = AppConfig.Is("gpu_auto");
bool ForceGPU = AppConfig.ContainsModel("503");
bool ForceGPU = AppConfig.ContainsModel("503") || AppConfig.Is("gpu_fix");
int GpuMode = AppConfig.Get("gpu_mode");
@@ -321,5 +321,16 @@ namespace GHelper.Gpu
}
}
// Manually forcing standard mode on shutdown/hibernate for some exotic cases
// https://github.com/seerge/g-helper/pull/855
public void StandardModeFix()
{
if (!AppConfig.Is("gpu_fix")) return; // No config entry
if (Program.acpi.DeviceGet(AsusACPI.GPUMux) == 0) return; // Ultimate mode
Logger.WriteLine("Forcing Standard Mode on shutdown / hibernation");
Program.acpi.SetGPUEco(0);
}
}
}

View File

@@ -39,24 +39,38 @@ namespace GHelper.Helpers
return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online;
}
public bool IsInClamshellMode()
public bool IsClamshellReady()
{
return IsExternalDisplayConnected() && IsChargerConnected();
}
public void ToggleLidAction()
{
if (IsInClamshellMode() && IsClamshellEnabled())
if (!IsClamshellEnabled())
{
PowerNative.SetLidAction(0, true);
Logger.WriteLine("Engaging Clamshell Mode");
return;
}
if (IsClamshellReady())
{
EnableClamshellMode();
}
else
{
PowerNative.SetLidAction(1, true);
Logger.WriteLine("Disengaging Clamshell Mode");
DisableClamshellMode();
}
}
public static void DisableClamshellMode()
{
PowerNative.SetLidAction(1, true);
Logger.WriteLine("Disengaging Clamshell Mode");
}
public static void EnableClamshellMode()
{
PowerNative.SetLidAction(0, true);
Logger.WriteLine("Engaging Clamshell Mode");
}
public void UnregisterDisplayEvents()
{

View File

@@ -148,6 +148,13 @@ namespace GHelper.Input
return AppConfig.ContainsModel("TUF") && !AppConfig.ContainsModel("FA506");
}
public static bool NoMKeys()
{
return AppConfig.ContainsModel("Z13") ||
AppConfig.ContainsModel("FA506") ||
AppConfig.ContainsModel("FX506");
}
public void KeyPressed(object sender, KeyPressedEventArgs e)
{
@@ -155,7 +162,7 @@ namespace GHelper.Input
{
Logger.WriteLine(e.Key.ToString());
if (AppConfig.ContainsModel("Z13") || AppConfig.ContainsModel("FA506"))
if (NoMKeys())
{
switch (e.Key)
{

View File

@@ -100,6 +100,10 @@ namespace GHelper
// Subscribing for system power change events
SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
SystemEvents.UserPreferenceChanged += SystemEvents_UserPreferenceChanged;
SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
SystemEvents.SessionEnding += SystemEvents_SessionEnding;
clamshellControl.RegisterDisplayEvents();
clamshellControl.ToggleLidAction();
@@ -117,7 +121,19 @@ namespace GHelper
}
private static void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
gpuControl.StandardModeFix();
}
private static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
if (e.Reason == SessionSwitchReason.SessionLogon || e.Reason == SessionSwitchReason.SessionUnlock)
{
Logger.WriteLine("Session:" + e.Reason.ToString());
screenControl.AutoScreen();
}
}
static void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
{
@@ -178,8 +194,12 @@ namespace GHelper
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
Logger.WriteLine("Power Mode:" + e.Mode.ToString());
if (e.Mode == PowerModes.Suspend) gpuControl.StandardModeFix();
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
Logger.WriteLine("Power Mode Changed");
SetAutoModes(true);
}

View File

@@ -402,7 +402,7 @@
<value>Nuevas actualizaciones</value>
</data>
<data name="NoNewUpdates" xml:space="preserve">
<value>No hay nuevas actualizaciones</value>
<value>No hay actualizaciones</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Abrir ventana G-Helper</value>

View File

@@ -208,7 +208,7 @@
<value>Limite Ricarica Batteria</value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Battery Health</value>
<value>Salute Batteria</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Aggiornamenti Driver e BIOS</value>
@@ -232,7 +232,7 @@
<value>Colore</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Boost</value>
<value>Boost CPU</value>
</data>
<data name="Custom" xml:space="preserve">
<value>Personalizzato</value>

View File

@@ -208,7 +208,7 @@
<value>Limit ładowania baterii</value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Battery Health</value>
<value>Stan baterii</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Aktualizacje BIOS i sterowników</value>
@@ -294,7 +294,7 @@ Nadal chcesz kontynuować?</value>
<value>Wentylatory i moc</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Wentylator</value>
<value>Went</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Dostosuj</value>

View File

@@ -208,7 +208,7 @@
<value>Ліміт заряду батареї</value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Battery Health</value>
<value>Стан батареї</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Оновлення BIOS та драйверів</value>

View File

@@ -199,7 +199,7 @@
<value>唤醒时</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>插电/电池时背光时间 (0表示长亮)</value>
<value>插电/电池时熄灭时间(0表示长亮</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>平衡模式</value>
@@ -208,7 +208,7 @@
<value>电池充电限制</value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Battery Health</value>
<value>电池健康</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS 和驱动程序更新</value>
@@ -495,7 +495,7 @@
<value>切换 Aura 模式</value>
</data>
<data name="ToggleClamshellMode" xml:space="preserve">
<value>Auto Toggle Clamshell Mode</value>
<value>自动启用外接显示器模式</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>切换 Fn 锁定</value>

View File

@@ -208,7 +208,7 @@
<value>電池充電上限</value>
</data>
<data name="BatteryHealth" xml:space="preserve">
<value>Battery Health</value>
<value>電池健康度</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>BIOS與驅動程式更新 Updates</value>

View File

@@ -125,7 +125,11 @@ You can find them under ``%AppData%\GHelper`` folder. Please include them when p
Open app, and uncheck and check again "run on startup". If it still doesn't help (by some reason), you can try to manually edit "GHelper" task in windows Task Scheduler, and add couple of seconds delay to start.
#### How do I uninstall G-helper?
G-helper is a single exe, and it doesn't install anything in the system. To remove it - you can simply delete exe :) If you have applied any custom fan profiles or PPTs - before removing I would recommend selecting your favorite performance mode (for example balanced) and clicking "Factory defaults" under Fans + Power.
G-helper is a single exe, and it doesn't install anything in the system. To remove it - you can simply delete exe :) If you have applied any custom fan profiles or PPTs - before removing I would recommend selecting your
favorite performance mode (for example balanced) and clicking "Factory defaults" under Fans + Power.
#### Can I undervolt my CPU ?
Currently you can undervolt AMD CPUs. If your model supports that - you will see undervolting slider under ``Fans+Power -> Advanced``. If you don't see slider there, it means your CPU doesn't support undervolting. Full list of models that suppor that [can be found here](https://github.com/seerge/g-helper/discussions/736)
#### I have G14 2023 and my GPU refuses to disable/enable
It seem to be an issue in older BIOS versions. As [users report](https://github.com/seerge/g-helper/issues/680) - latest BIOS 310 (installable via myasus / g-helper -> updates) resolves all issues :) So please update.
@@ -219,6 +223,12 @@ Full list of keycodes https://learn.microsoft.com/en-us/windows/win32/inputdev/v
![Screenshot 2023-07-17 192155](https://github.com/seerge/g-helper/assets/5920850/e450e124-1589-4787-bce8-7c37ffe72fbd)
### Force Standard mode on shutdown / hibernation
In some rare cases G14 2023 seem to have issues with enabling / disabling dGPU - i.e. Eco mode. Till we wait for a fix from asus on BIOS level, one of the proposed solutions is to always shutdown laptop in Standard mode (then everything seem to work fine). To enable "forced" Standard mode on shutdown add following line to ``%AppData%\GHelper\config.json``
```
"gpu_fix" : 1,
```
### Disable OSD
You can disable app's OSD (for performance modes, keyboard backlight, etc) by adding following line to ``%AppData%\GHelper\config.json``
```