Compare commits

...

47 Commits
0.80 ... v0.87

Author SHA1 Message Date
Serge
8e6f54e833 Update README.md 2023-06-17 10:39:06 +02:00
Serge
05aae069b4 Update README.md 2023-06-15 12:29:44 +02:00
Serge
28e949bee4 Power modes fix 2023-06-15 12:21:48 +02:00
Serge
9a82a54b04 Verion bump 2023-06-15 00:14:08 +02:00
Serge
8aff60546a UI Fixes 2023-06-15 00:09:00 +02:00
Serge Samusya
d5039207ec Rog Ally Aura support 2023-06-15 00:04:33 +02:00
Serge
f940d343c3 Translations update 2023-06-14 09:19:17 +02:00
Serge
1848612434 UI Tweaks 2023-06-14 09:17:45 +02:00
Serge
fe253de0e1 Merge pull request #618 from weslleykawan/patch-2
(PT-BR) Translation Update 2 (Strings.pt-br.resx)
2023-06-14 09:16:52 +02:00
Weslley K
7211fd5f22 (PT-BR) Translation Update 2 (Strings.pt-br.resx)
- Resolved previous translation issues

- Updated:
 
 <data name="AutoRefreshTooltip" xml:space="preserve">
    <value>Menor taxa de atualização quando estiver na bateria</value>
  </data>

  <data name="MinRefreshTooltip" xml:space="preserve">
    <value>Taxa de atualização à 60Hz para economizar bateria</value>
  </data>

  <data name="MaxRefreshTooltip" xml:space="preserve">
    <value>Taxa de atualização máxima e menor latência</value>
  </data>

Please offer a version so I can test if everything is working as it should.

I want to be part of the PT-BR translation of this project from now on.
2023-06-13 20:33:58 -03:00
Serge
c1a8eb12f9 Merge pull request #616 from weslleykawan/patch-1
(PT-BR) Translation update (Strings.pt-br.resx)
2023-06-13 16:51:24 +02:00
Weslley K
0477d03ecc (PT-BR) Translation update (Strings.pt-br.resx)
Added/updated strings:

    <data name="VolumeDown" xml:space="preserve">
    <value>Abaixar o volume</value>
  </data>

  <data name="VolumeUp" xml:space="preserve">
    <value>Aumentar o volume</value>
  </data>

    <data name="VolumeMute" xml:space="preserve">
    <value>Silenciar microfone</value>
  </data>

  <data name="WindowTop" xml:space="preserve">
    <value>Manter a janela do aplicativo sempre no topo</value>
  </data>

   <data name="Updates" xml:space="preserve">
    <value>Atualizações</value>
  </data>

    <data name="FnLock" xml:space="preserve">
    <value>Processar teclas de atalho Fn+F sem pressionar Fn</value>
  </data>

   <data name="KillGpuApps" xml:space="preserve">
    <value>Parar todos os aplicativos que usam a GPU ao alternar para o modo Eco</value>
  </data>

  <data name="Boot" xml:space="preserve">
    <value>Ao ligar</value>
  </data>

  <data name="Brightness" xml:space="preserve">
    <value>Nível do brilho</value>
  </data>

  <data name="BacklightTimeout" xml:space="preserve">
    <value>Tempo limite da iluminação na bateria (em segundos)</value>
  </data>

    <data name="BacklightTimeoutPlugged" xml:space="preserve">
    <value>Tempo limite da iluminação carregando (0 - sempre ligado)</value>
  </data>

  <data name="LaptopBacklight" xml:space="preserve">
    <value>Configurações de iluminação</value>
  </data>

  <data name="ApplyWindowsPowerPlan" xml:space="preserve">
    <value>Ajuste automático dos modos de energia do Windows</value>
  </data>

    <data name="AsusServicesRunning" xml:space="preserve">
    <value>Serviços da Asus em execução</value>
  </data>

<data name="Start" xml:space="preserve">
    <value>Iniciar</value>
  </data>
  <data name="StartingServices" xml:space="preserve">
    <value>Iniciando os serviços</value>
  </data>
  <data name="StartupError" xml:space="preserve">
    <value>Erro de inicialização</value>
  </data>
  <data name="Stop" xml:space="preserve">
    <value>Parar</value>
  </data>
  <data name="StoppingServices" xml:space="preserve">
    <value>Parando os serviços</value>
  </data>
2023-06-13 10:30:31 -03:00
Serge
e923d82732 Update README.md 2023-06-13 12:34:11 +02:00
Serge
6558d66e8d Update README.md 2023-06-13 12:21:21 +02:00
Serge
ec8605dfe6 UI Fixes 2023-06-13 00:54:11 +02:00
Serge
ac462b628f Driver updater fix, new turbo boost modes 2023-06-12 19:07:57 +02:00
Serge
1cd9c30c4a UI Tweaks 2023-06-12 14:41:47 +02:00
Serge
c575b17aba UI Tweaks 2023-06-11 23:32:13 +02:00
Serge
d2e0e6f51e Colors for custom modes 2023-06-11 17:09:17 +02:00
Serge
0dae1c9115 Custom mode renaming 2023-06-11 14:50:01 +02:00
Serge
16e085d9f1 Custom modes 2023-06-11 00:27:58 +02:00
Serge
6b04ffa172 Version bump 2023-06-09 21:55:47 +02:00
Serge
15e4310016 Clock fix 2023-06-09 21:53:31 +02:00
Serge
3abe924525 Merge branch 'main' of https://github.com/seerge/g-helper 2023-06-09 21:29:02 +02:00
Serge
691f187b7d Improved backlight sync with optimization service 2023-06-09 21:28:59 +02:00
Serge
8e4c0dada7 Update README.md 2023-06-09 15:44:13 +02:00
Serge
f535818fb0 Update README.md 2023-06-09 14:14:21 +02:00
Serge
ce75d2c778 Update README.md 2023-06-09 12:45:08 +02:00
Serge
c755213472 Merge pull request #573 from hellotale/patch-2
Update and fix Korean translation
2023-06-08 14:57:01 +02:00
hellotale
60e8712131 Update and rename Strings.kr.resx to Strings.ko.resx 2023-06-08 21:30:24 +09:00
Serge
2c817b46ef Merge branch 'main' of https://github.com/seerge/g-helper 2023-06-08 13:20:28 +02:00
Serge
e16f612311 Driver updater fix 2023-06-08 13:20:26 +02:00
Serge
4ce4b4bbf7 Update README.md 2023-06-08 12:03:13 +02:00
Serge
f9303ced8a Merge pull request #570 from marcelomijas/main
Spanish translation fix for "Updates" + more
2023-06-08 11:55:28 +02:00
Serge
f000a03395 Update README.md 2023-06-08 11:51:30 +02:00
Marcelo Moreno
90205e9231 Start/stop Spanish translation 2023-06-08 11:51:26 +02:00
Marcelo Moreno
e65270c961 Spanish translation fix for "Updates" 2023-06-08 11:34:13 +02:00
Serge
306dfe2bd7 XGM button fix 2023-06-08 11:17:06 +02:00
Serge
ca7dfff357 Merge branch 'main' of https://github.com/seerge/g-helper 2023-06-07 22:52:05 +02:00
Serge
59288b9422 Integrated debloater 2023-06-07 22:52:04 +02:00
Serge
46ff8deb44 Merge pull request #558 from marcelomijas/main
Update Spanish translation
2023-06-07 22:21:51 +02:00
Marcelo Moreno
e6e8877531 Update Spanish translation 2023-06-07 21:48:57 +02:00
Serge
b13306b989 Added brightness control to M-hotkeys 2023-06-07 16:34:40 +02:00
Serge
838dc039ac Merge branch 'main' of https://github.com/seerge/g-helper 2023-06-07 15:16:34 +02:00
Serge
0702f95e0c Driver Updater improvements 2023-06-07 15:16:32 +02:00
Serge
f42fcf2f73 Merge pull request #554 from hellotale/patch-1
Add Korean translation
2023-06-07 12:07:15 +02:00
hellotale
6a7e1ddaa3 Add Korean translation 2023-06-07 16:25:57 +09:00
47 changed files with 2827 additions and 1188 deletions

View File

@@ -42,10 +42,10 @@ namespace GHelper.AnimeMatrix
if (!IsValid) return;
int brightness = AppConfig.getConfig("matrix_brightness");
int running = AppConfig.getConfig("matrix_running");
int brightness = AppConfig.Get("matrix_brightness");
int running = AppConfig.Get("matrix_running");
bool auto = AppConfig.getConfig("matrix_auto") == 1;
bool auto = AppConfig.Is("matrix_auto");
if (brightness < 0) brightness = 0;
if (running < 0) running = 0;
@@ -75,7 +75,7 @@ namespace GHelper.AnimeMatrix
switch (running)
{
case 2:
SetMatrixPicture(AppConfig.getConfigString("matrix_picture"));
SetMatrixPicture(AppConfig.GetString("matrix_picture"));
break;
case 3:
SetMatrixClock();
@@ -110,7 +110,7 @@ namespace GHelper.AnimeMatrix
{
//if (!IsValid) return;
switch (AppConfig.getConfig("matrix_running"))
switch (AppConfig.Get("matrix_running"))
{
case 2:
mat.PresentNextFrame();

View File

@@ -369,7 +369,7 @@ namespace Starlight.AnimeMatrix
g.CompositingQuality = CompositingQuality.HighQuality;
g.SmoothingMode = SmoothingMode.AntiAlias;
using (Font font = new Font("Consolas", 24F, FontStyle.Regular, GraphicsUnit.Pixel))
using (Font font = new Font("Consolas", 21F, FontStyle.Regular, GraphicsUnit.Pixel))
{
SizeF textSize = g.MeasureString(text1, font);
g.DrawString(text1, font, Brushes.White, (MaxColumns * 3 - textSize.Width) + 3, -4);

View File

@@ -1,4 +1,5 @@
using System.Diagnostics;
using GHelper;
using System.Diagnostics;
using System.Management;
using System.Text.Json;
@@ -13,8 +14,18 @@ public static class AppConfig
static AppConfig()
{
string startupPath = Application.StartupPath.Trim('\\');
string appPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\GHelper";
configFile = appPath + "\\config.json";
string configName = "\\config.json";
if (File.Exists(startupPath + configName))
{
configFile = startupPath + configName;
} else
{
configFile = appPath + configName;
}
if (!System.IO.Directory.Exists(appPath))
System.IO.Directory.CreateDirectory(appPath);
@@ -28,12 +39,12 @@ public static class AppConfig
}
catch
{
initConfig();
Init();
}
}
else
{
initConfig();
Init();
}
}
@@ -63,24 +74,8 @@ public static class AppConfig
return (_model is not null && _model.ToLower().Contains(contains.ToLower()));
}
public static string GetModelShort()
{
GetModel();
if (_model is not null)
{
int trim = _model.LastIndexOf("_");
if (trim > 0) return _model.Substring(trim+1);
trim = _model.LastIndexOf(" ");
if (trim > 0) return _model.Substring(trim + 1);
return _model;
}
return "";
}
private static void initConfig()
private static void Init()
{
config = new Dictionary<string, object>();
config["performance_mode"] = 0;
@@ -88,41 +83,27 @@ public static class AppConfig
File.WriteAllText(configFile, jsonString);
}
public static int getConfig(string name, int empty = -1)
public static int Get(string name, int empty = -1)
{
if (config.ContainsKey(name))
return int.Parse(config[name].ToString());
else return empty;
}
public static bool isConfig(string name)
public static bool Is(string name)
{
return getConfig(name) == 1;
return Get(name) == 1;
}
public static string getConfigString(string name, string empty = null)
public static string GetString(string name, string empty = null)
{
if (config.ContainsKey(name))
return config[name].ToString();
else return empty;
}
public static void setConfig(string name, int value)
private static void Write()
{
config[name] = value;
string jsonString = JsonSerializer.Serialize(config, new JsonSerializerOptions { WriteIndented = true });
try
{
File.WriteAllText(configFile, jsonString);
} catch (Exception e)
{
Debug.Write(e.ToString());
}
}
public static void setConfig(string name, string value)
{
config[name] = value;
string jsonString = JsonSerializer.Serialize(config, new JsonSerializerOptions { WriteIndented = true });
try
{
@@ -134,9 +115,26 @@ public static class AppConfig
}
}
public static string getParamName(AsusFan device, string paramName = "fan_profile")
public static void Set(string name, int value)
{
int mode = getConfig("performance_mode");
config[name] = value;
Write();
}
public static void Set(string name, string value)
{
config[name] = value;
Write();
}
public static void Remove(string name)
{
config.Remove(name);
Write();
}
public static string GgetParamName(AsusFan device, string paramName = "fan_profile")
{
int mode = Modes.GetCurrent();
string name;
switch (device)
@@ -159,9 +157,9 @@ public static class AppConfig
return paramName + "_" + name + "_" + mode;
}
public static byte[] getFanConfig(AsusFan device)
public static byte[] GetFanConfig(AsusFan device)
{
string curveString = getConfigString(getParamName(device));
string curveString = GetString(GgetParamName(device));
byte[] curve = { };
if (curveString is not null)
@@ -170,10 +168,10 @@ public static class AppConfig
return curve;
}
public static void setFanConfig(AsusFan device, byte[] curve)
public static void SetFanConfig(AsusFan device, byte[] curve)
{
string bitCurve = BitConverter.ToString(curve);
setConfig(getParamName(device), bitCurve);
Set(GgetParamName(device), bitCurve);
}
@@ -185,9 +183,9 @@ public static class AppConfig
return array;
}
public static byte[] getDefaultCurve(AsusFan device)
public static byte[] GetDefaultCurve(AsusFan device)
{
int mode = getConfig("performance_mode");
int mode = Modes.GetCurrentBase();
byte[] curve;
switch (mode)
@@ -215,29 +213,29 @@ public static class AppConfig
return curve;
}
public static string getConfigPerfString(string name)
public static string GetModeString(string name)
{
int mode = getConfig("performance_mode");
return getConfigString(name + "_" + mode);
return GetString(name + "_" + Modes.GetCurrent());
}
public static int getConfigPerf(string name)
public static int GetMode(string name)
{
int mode = getConfig("performance_mode");
return getConfig(name + "_" + mode);
return Get(name + "_" + Modes.GetCurrent());
}
public static bool isConfigPerf(string name)
public static bool IsMode(string name)
{
int mode = getConfig("performance_mode");
return getConfig(name + "_" + mode) == 1;
return Get(name + "_" + Modes.GetCurrent()) == 1;
}
public static void setConfigPerf(string name, int value)
public static void SetMode(string name, int value)
{
int mode = getConfig("performance_mode");
setConfig(name + "_" + mode, value);
Set(name + "_" + Modes.GetCurrent(), value);
}
public static void SetMode(string name, string value)
{
Set(name + "_" + Modes.GetCurrent(), value);
}
}

View File

@@ -34,8 +34,16 @@ public class AsusACPI
const uint INIT = 0x54494E49;
public const uint UniversalControl = 0x00100021;
public const int KB_Light_Up = 0xc4;
public const int KB_Light_Down = 0xc5;
public const int Brightness_Down = 0x10;
public const int Brightness_Up = 0x20;
public const int KB_Sleep = 0x6c;
public const int KB_DUO_PgUpDn = 0x4B;
public const int KB_DUO_SecondDisplay = 0x6A;
public const int Touchpad_Toggle = 0x6B;
public const int ChargerMode = 0x0012006C;
@@ -65,10 +73,10 @@ public class AsusACPI
public const int Temp_CPU = 0x00120094;
public const int Temp_GPU = 0x00120097;
public const int PPT_TotalA0 = 0x001200A0; // SPL (Total limit for all-AMD models)
public const int PPT_TotalA0 = 0x001200A0; // SPL (Total limit for all-AMD models) / PL1
public const int PPT_EDCA1 = 0x001200A1; // CPU EDC
public const int PPT_TDCA2 = 0x001200A2; // CPU TDC
public const int PPT_APUA3 = 0x001200A3; // sPPT (long boost limit)
public const int PPT_APUA3 = 0x001200A3; // sPPT (long boost limit) / PL2
public const int PPT_CPUB0 = 0x001200B0; // CPU PPT on 2022 (PPT_LIMIT_APU)
public const int PPT_CPUB1 = 0x001200B1; // Total PPT on 2022 (PPT_LIMIT_SLOW)

View File

@@ -66,7 +66,7 @@ namespace GHelper
static byte[] MESSAGE_SET = { AURA_HID_ID, 0xb5, 0, 0, 0 };
static byte[] MESSAGE_APPLY = { AURA_HID_ID, 0xb4 };
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6 };
static int[] deviceIds = { 0x1a30, 0x1854, 0x1869, 0x1866, 0x19b6, 0x1822, 0x1837, 0x1854, 0x184a, 0x183d, 0x8502, 0x1807, 0x17e0, 0x18c6, 0x1abe };
private static int mode = 0;
private static int speed = 1;
@@ -124,7 +124,8 @@ namespace GHelper
_modes.Remove(3);
}
if (AppConfig.ContainsModel("G513QY")) {
if (AppConfig.ContainsModel("G513QY"))
{
return _modes;
}
@@ -260,18 +261,31 @@ namespace GHelper
{
byte[] msg = { AURA_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
byte[] msgBackup = { INPUT_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
var devices = GetHidDevices(deviceIds);
var devices = GetHidDevices(deviceIds, 0);
foreach (HidDevice device in devices)
{
device.OpenDevice();
device.WriteFeatureData(msg);
Logger.WriteLine(log + ":" + BitConverter.ToString(msg));
if (device.ReadFeatureData(out byte[] data, AURA_HID_ID))
{
device.WriteFeatureData(msg);
Logger.WriteLine(log + ":" + BitConverter.ToString(msg));
}
if (AppConfig.ContainsModel("GA503") && device.ReadFeatureData(out byte[] dataBackkup, INPUT_HID_ID))
{
device.WriteFeatureData(msgBackup);
Logger.WriteLine(log + ":" + BitConverter.ToString(msgBackup));
}
device.CloseDevice();
}
// Backup payload for old models
if (AppConfig.ContainsModel("503"))
/*
if (AppConfig.ContainsModel("GA503RW"))
{
byte[] msgBackup = { INPUT_HID_ID, 0xba, 0xc5, 0xc4, (byte)brightness };
@@ -283,6 +297,7 @@ namespace GHelper
device.CloseDevice();
}
}
*/
});

View File

@@ -12,6 +12,8 @@ namespace CustomControls
public static Color colorEco = Color.FromArgb(255, 6, 180, 138);
public static Color colorStandard = Color.FromArgb(255, 58, 174, 239);
public static Color colorTurbo = Color.FromArgb(255, 255, 32, 32);
public static Color colorCustom = Color.FromArgb(255, 255, 128, 0);
public static Color buttonMain;
public static Color buttonSecond;

145
app/Extra.Designer.cs generated
View File

@@ -93,6 +93,9 @@ namespace GHelper
checkVariBright = new CheckBox();
checkGpuApps = new CheckBox();
checkFnLock = new CheckBox();
panelServices = new Panel();
labelServices = new Label();
buttonServices = new RButton();
groupBindings.SuspendLayout();
tableKeys.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureHelp).BeginInit();
@@ -104,6 +107,7 @@ namespace GHelper
panelXMG.SuspendLayout();
tableBacklight.SuspendLayout();
groupOther.SuspendLayout();
panelServices.SuspendLayout();
SuspendLayout();
//
// groupBindings
@@ -115,8 +119,8 @@ namespace GHelper
groupBindings.Location = new Point(9, 11);
groupBindings.Margin = new Padding(4, 2, 4, 2);
groupBindings.Name = "groupBindings";
groupBindings.Padding = new Padding(4, 2, 50, 2);
groupBindings.Size = new Size(966, 343);
groupBindings.Padding = new Padding(4, 2, 50, 10);
groupBindings.Size = new Size(966, 351);
groupBindings.TabIndex = 0;
groupBindings.TabStop = false;
groupBindings.Text = "Key Bindings";
@@ -376,11 +380,11 @@ namespace GHelper
groupLight.Controls.Add(panelXMG);
groupLight.Controls.Add(tableBacklight);
groupLight.Dock = DockStyle.Top;
groupLight.Location = new Point(9, 354);
groupLight.Location = new Point(9, 362);
groupLight.Margin = new Padding(4, 2, 4, 2);
groupLight.Name = "groupLight";
groupLight.Padding = new Padding(4, 2, 4, 11);
groupLight.Size = new Size(966, 554);
groupLight.Size = new Size(966, 526);
groupLight.TabIndex = 1;
groupLight.TabStop = false;
groupLight.Text = "Keyboard Backlight";
@@ -398,15 +402,15 @@ namespace GHelper
panelBacklightExtra.Controls.Add(labelSpeed);
panelBacklightExtra.Controls.Add(comboKeyboardSpeed);
panelBacklightExtra.Dock = DockStyle.Top;
panelBacklightExtra.Location = new Point(4, 315);
panelBacklightExtra.Location = new Point(4, 299);
panelBacklightExtra.Margin = new Padding(4, 2, 4, 2);
panelBacklightExtra.Name = "panelBacklightExtra";
panelBacklightExtra.Size = new Size(958, 228);
panelBacklightExtra.Size = new Size(958, 216);
panelBacklightExtra.TabIndex = 43;
//
// numericBacklightPluggedTime
//
numericBacklightPluggedTime.Location = new Point(702, 181);
numericBacklightPluggedTime.Location = new Point(702, 169);
numericBacklightPluggedTime.Margin = new Padding(4, 2, 4, 2);
numericBacklightPluggedTime.Maximum = new decimal(new int[] { 3600, 0, 0, 0 });
numericBacklightPluggedTime.Name = "numericBacklightPluggedTime";
@@ -415,7 +419,7 @@ namespace GHelper
//
// labelBacklightTimeoutPlugged
//
labelBacklightTimeoutPlugged.Location = new Point(13, 183);
labelBacklightTimeoutPlugged.Location = new Point(13, 171);
labelBacklightTimeoutPlugged.Margin = new Padding(4, 0, 4, 0);
labelBacklightTimeoutPlugged.Name = "labelBacklightTimeoutPlugged";
labelBacklightTimeoutPlugged.Size = new Size(683, 45);
@@ -424,7 +428,7 @@ namespace GHelper
//
// numericBacklightTime
//
numericBacklightTime.Location = new Point(702, 132);
numericBacklightTime.Location = new Point(702, 120);
numericBacklightTime.Margin = new Padding(4, 2, 4, 2);
numericBacklightTime.Maximum = new decimal(new int[] { 3600, 0, 0, 0 });
numericBacklightTime.Name = "numericBacklightTime";
@@ -433,7 +437,7 @@ namespace GHelper
//
// labelBacklightTimeout
//
labelBacklightTimeout.Location = new Point(13, 134);
labelBacklightTimeout.Location = new Point(13, 122);
labelBacklightTimeout.Margin = new Padding(4, 0, 4, 0);
labelBacklightTimeout.Name = "labelBacklightTimeout";
labelBacklightTimeout.Size = new Size(683, 45);
@@ -452,7 +456,7 @@ namespace GHelper
// trackBrightness
//
trackBrightness.LargeChange = 1;
trackBrightness.Location = new Point(355, 60);
trackBrightness.Location = new Point(355, 59);
trackBrightness.Margin = new Padding(4, 2, 4, 2);
trackBrightness.Maximum = 3;
trackBrightness.Name = "trackBrightness";
@@ -462,7 +466,7 @@ namespace GHelper
//
// labelSpeed
//
labelSpeed.Location = new Point(13, 15);
labelSpeed.Location = new Point(13, 18);
labelSpeed.Margin = new Padding(4, 0, 4, 0);
labelSpeed.Name = "labelSpeed";
labelSpeed.Size = new Size(539, 41);
@@ -478,7 +482,7 @@ namespace GHelper
comboKeyboardSpeed.FormattingEnabled = true;
comboKeyboardSpeed.ItemHeight = 32;
comboKeyboardSpeed.Items.AddRange(new object[] { "Slow", "Normal", "Fast" });
comboKeyboardSpeed.Location = new Point(607, 15);
comboKeyboardSpeed.Location = new Point(607, 16);
comboKeyboardSpeed.Margin = new Padding(4, 11, 4, 9);
comboKeyboardSpeed.Name = "comboKeyboardSpeed";
comboKeyboardSpeed.Size = new Size(292, 40);
@@ -489,7 +493,7 @@ namespace GHelper
//
panelXMG.Controls.Add(checkXMG);
panelXMG.Dock = DockStyle.Top;
panelXMG.Location = new Point(4, 257);
panelXMG.Location = new Point(4, 241);
panelXMG.Margin = new Padding(4, 2, 4, 2);
panelXMG.Name = "panelXMG";
panelXMG.Size = new Size(958, 58);
@@ -545,7 +549,7 @@ namespace GHelper
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.RowStyles.Add(new RowStyle());
tableBacklight.Size = new Size(958, 223);
tableBacklight.Size = new Size(958, 207);
tableBacklight.TabIndex = 41;
//
// labelBacklight
@@ -563,8 +567,8 @@ namespace GHelper
// checkAwake
//
checkAwake.Dock = DockStyle.Fill;
checkAwake.Location = new Point(4, 45);
checkAwake.Margin = new Padding(4, 2, 4, 2);
checkAwake.Location = new Point(4, 43);
checkAwake.Margin = new Padding(4, 0, 4, 0);
checkAwake.Name = "checkAwake";
checkAwake.Padding = new Padding(15, 2, 6, 2);
checkAwake.Size = new Size(231, 41);
@@ -575,8 +579,8 @@ namespace GHelper
// checkBoot
//
checkBoot.Dock = DockStyle.Fill;
checkBoot.Location = new Point(4, 90);
checkBoot.Margin = new Padding(4, 2, 4, 2);
checkBoot.Location = new Point(4, 84);
checkBoot.Margin = new Padding(4, 0, 4, 0);
checkBoot.Name = "checkBoot";
checkBoot.Padding = new Padding(15, 2, 6, 2);
checkBoot.Size = new Size(231, 41);
@@ -587,8 +591,8 @@ namespace GHelper
// checkSleep
//
checkSleep.Dock = DockStyle.Fill;
checkSleep.Location = new Point(4, 135);
checkSleep.Margin = new Padding(4, 2, 4, 2);
checkSleep.Location = new Point(4, 125);
checkSleep.Margin = new Padding(4, 0, 4, 0);
checkSleep.Name = "checkSleep";
checkSleep.Padding = new Padding(15, 2, 6, 2);
checkSleep.Size = new Size(231, 41);
@@ -599,8 +603,8 @@ namespace GHelper
// checkShutdown
//
checkShutdown.Dock = DockStyle.Fill;
checkShutdown.Location = new Point(4, 180);
checkShutdown.Margin = new Padding(4, 2, 4, 2);
checkShutdown.Location = new Point(4, 166);
checkShutdown.Margin = new Padding(4, 0, 4, 0);
checkShutdown.Name = "checkShutdown";
checkShutdown.Padding = new Padding(15, 2, 6, 2);
checkShutdown.Size = new Size(231, 41);
@@ -623,8 +627,8 @@ namespace GHelper
// checkAwakeLogo
//
checkAwakeLogo.Dock = DockStyle.Fill;
checkAwakeLogo.Location = new Point(243, 45);
checkAwakeLogo.Margin = new Padding(4, 2, 4, 2);
checkAwakeLogo.Location = new Point(243, 43);
checkAwakeLogo.Margin = new Padding(4, 0, 4, 0);
checkAwakeLogo.Name = "checkAwakeLogo";
checkAwakeLogo.Padding = new Padding(15, 2, 6, 2);
checkAwakeLogo.Size = new Size(231, 41);
@@ -635,8 +639,8 @@ namespace GHelper
// checkBootLogo
//
checkBootLogo.Dock = DockStyle.Fill;
checkBootLogo.Location = new Point(243, 90);
checkBootLogo.Margin = new Padding(4, 2, 4, 2);
checkBootLogo.Location = new Point(243, 84);
checkBootLogo.Margin = new Padding(4, 0, 4, 0);
checkBootLogo.Name = "checkBootLogo";
checkBootLogo.Padding = new Padding(15, 2, 6, 2);
checkBootLogo.Size = new Size(231, 41);
@@ -647,8 +651,8 @@ namespace GHelper
// checkSleepLogo
//
checkSleepLogo.Dock = DockStyle.Fill;
checkSleepLogo.Location = new Point(243, 135);
checkSleepLogo.Margin = new Padding(4, 2, 4, 2);
checkSleepLogo.Location = new Point(243, 125);
checkSleepLogo.Margin = new Padding(4, 0, 4, 0);
checkSleepLogo.Name = "checkSleepLogo";
checkSleepLogo.Padding = new Padding(15, 2, 6, 2);
checkSleepLogo.Size = new Size(231, 41);
@@ -659,8 +663,8 @@ namespace GHelper
// checkShutdownLogo
//
checkShutdownLogo.Dock = DockStyle.Fill;
checkShutdownLogo.Location = new Point(243, 180);
checkShutdownLogo.Margin = new Padding(4, 2, 4, 2);
checkShutdownLogo.Location = new Point(243, 166);
checkShutdownLogo.Margin = new Padding(4, 0, 4, 0);
checkShutdownLogo.Name = "checkShutdownLogo";
checkShutdownLogo.Padding = new Padding(15, 2, 6, 2);
checkShutdownLogo.Size = new Size(231, 41);
@@ -683,8 +687,8 @@ namespace GHelper
// checkAwakeBar
//
checkAwakeBar.Dock = DockStyle.Fill;
checkAwakeBar.Location = new Point(482, 45);
checkAwakeBar.Margin = new Padding(4, 2, 4, 2);
checkAwakeBar.Location = new Point(482, 43);
checkAwakeBar.Margin = new Padding(4, 0, 4, 0);
checkAwakeBar.Name = "checkAwakeBar";
checkAwakeBar.Padding = new Padding(15, 2, 6, 2);
checkAwakeBar.Size = new Size(231, 41);
@@ -695,8 +699,8 @@ namespace GHelper
// checkBootBar
//
checkBootBar.Dock = DockStyle.Fill;
checkBootBar.Location = new Point(482, 90);
checkBootBar.Margin = new Padding(4, 2, 4, 2);
checkBootBar.Location = new Point(482, 84);
checkBootBar.Margin = new Padding(4, 0, 4, 0);
checkBootBar.Name = "checkBootBar";
checkBootBar.Padding = new Padding(15, 2, 6, 2);
checkBootBar.Size = new Size(231, 41);
@@ -707,8 +711,8 @@ namespace GHelper
// checkSleepBar
//
checkSleepBar.Dock = DockStyle.Fill;
checkSleepBar.Location = new Point(482, 135);
checkSleepBar.Margin = new Padding(4, 2, 4, 2);
checkSleepBar.Location = new Point(482, 125);
checkSleepBar.Margin = new Padding(4, 0, 4, 0);
checkSleepBar.Name = "checkSleepBar";
checkSleepBar.Padding = new Padding(15, 2, 6, 2);
checkSleepBar.Size = new Size(231, 41);
@@ -719,8 +723,8 @@ namespace GHelper
// checkShutdownBar
//
checkShutdownBar.Dock = DockStyle.Fill;
checkShutdownBar.Location = new Point(482, 180);
checkShutdownBar.Margin = new Padding(4, 2, 4, 2);
checkShutdownBar.Location = new Point(482, 166);
checkShutdownBar.Margin = new Padding(4, 0, 4, 0);
checkShutdownBar.Name = "checkShutdownBar";
checkShutdownBar.Padding = new Padding(15, 2, 6, 2);
checkShutdownBar.Size = new Size(231, 41);
@@ -743,8 +747,8 @@ namespace GHelper
// checkAwakeLid
//
checkAwakeLid.Dock = DockStyle.Fill;
checkAwakeLid.Location = new Point(721, 45);
checkAwakeLid.Margin = new Padding(4, 2, 4, 2);
checkAwakeLid.Location = new Point(721, 43);
checkAwakeLid.Margin = new Padding(4, 0, 4, 0);
checkAwakeLid.Name = "checkAwakeLid";
checkAwakeLid.Padding = new Padding(15, 2, 6, 2);
checkAwakeLid.Size = new Size(233, 41);
@@ -755,8 +759,8 @@ namespace GHelper
// checkBootLid
//
checkBootLid.Dock = DockStyle.Fill;
checkBootLid.Location = new Point(721, 90);
checkBootLid.Margin = new Padding(4, 2, 4, 2);
checkBootLid.Location = new Point(721, 84);
checkBootLid.Margin = new Padding(4, 0, 4, 0);
checkBootLid.Name = "checkBootLid";
checkBootLid.Padding = new Padding(15, 2, 6, 2);
checkBootLid.Size = new Size(233, 41);
@@ -767,8 +771,8 @@ namespace GHelper
// checkSleepLid
//
checkSleepLid.Dock = DockStyle.Fill;
checkSleepLid.Location = new Point(721, 135);
checkSleepLid.Margin = new Padding(4, 2, 4, 2);
checkSleepLid.Location = new Point(721, 125);
checkSleepLid.Margin = new Padding(4, 0, 4, 0);
checkSleepLid.Name = "checkSleepLid";
checkSleepLid.Padding = new Padding(15, 2, 6, 2);
checkSleepLid.Size = new Size(233, 41);
@@ -779,8 +783,8 @@ namespace GHelper
// checkShutdownLid
//
checkShutdownLid.Dock = DockStyle.Fill;
checkShutdownLid.Location = new Point(721, 180);
checkShutdownLid.Margin = new Padding(4, 2, 4, 2);
checkShutdownLid.Location = new Point(721, 166);
checkShutdownLid.Margin = new Padding(4, 0, 4, 0);
checkShutdownLid.Name = "checkShutdownLid";
checkShutdownLid.Padding = new Padding(15, 2, 6, 2);
checkShutdownLid.Size = new Size(233, 41);
@@ -800,7 +804,7 @@ namespace GHelper
groupOther.Controls.Add(checkGpuApps);
groupOther.Controls.Add(checkFnLock);
groupOther.Dock = DockStyle.Top;
groupOther.Location = new Point(9, 908);
groupOther.Location = new Point(9, 888);
groupOther.Margin = new Padding(4, 2, 4, 2);
groupOther.Name = "groupOther";
groupOther.Padding = new Padding(20, 2, 4, 10);
@@ -894,13 +898,51 @@ namespace GHelper
checkFnLock.Text = "Process Fn+F hotkeys without Fn";
checkFnLock.UseVisualStyleBackColor = true;
//
// panelServices
//
panelServices.Controls.Add(labelServices);
panelServices.Controls.Add(buttonServices);
panelServices.Dock = DockStyle.Top;
panelServices.Location = new Point(9, 1184);
panelServices.Name = "panelServices";
panelServices.Size = new Size(966, 72);
panelServices.TabIndex = 3;
//
// labelServices
//
labelServices.AutoSize = true;
labelServices.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelServices.Location = new Point(23, 19);
labelServices.Name = "labelServices";
labelServices.Size = new Size(273, 32);
labelServices.TabIndex = 20;
labelServices.Text = "Asus Services Running";
//
// buttonServices
//
buttonServices.Activated = false;
buttonServices.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
buttonServices.BackColor = SystemColors.ControlLight;
buttonServices.BorderColor = Color.Transparent;
buttonServices.BorderRadius = 2;
buttonServices.FlatStyle = FlatStyle.Flat;
buttonServices.Location = new Point(695, 14);
buttonServices.Margin = new Padding(4, 2, 4, 2);
buttonServices.Name = "buttonServices";
buttonServices.Secondary = true;
buttonServices.Size = new Size(250, 44);
buttonServices.TabIndex = 19;
buttonServices.Text = "Start Services";
buttonServices.UseVisualStyleBackColor = false;
//
// Extra
//
AutoScaleDimensions = new SizeF(13F, 32F);
AutoScaleMode = AutoScaleMode.Font;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(984, 1244);
ClientSize = new Size(984, 1262);
Controls.Add(panelServices);
Controls.Add(groupOther);
Controls.Add(groupLight);
Controls.Add(groupBindings);
@@ -931,6 +973,8 @@ namespace GHelper
tableBacklight.ResumeLayout(false);
groupOther.ResumeLayout(false);
groupOther.PerformLayout();
panelServices.ResumeLayout(false);
panelServices.PerformLayout();
ResumeLayout(false);
PerformLayout();
}
@@ -999,5 +1043,8 @@ namespace GHelper
private RComboBox comboFNC;
private TextBox textFNC;
private CheckBox checkVariBright;
private Panel panelServices;
private RButton buttonServices;
private Label labelServices;
}
}

View File

@@ -1,6 +1,5 @@
using CustomControls;
using GHelper.Gpu;
using Microsoft.VisualBasic.Devices;
using System.Diagnostics;
namespace GHelper
@@ -19,6 +18,8 @@ namespace GHelper
{"screen", Properties.Strings.ToggleScreen},
{"miniled", Properties.Strings.ToggleMiniled},
{"fnlock", Properties.Strings.ToggleFnLock},
{"brightness_down", Properties.Strings.BrightnessDown},
{"brightness_up", Properties.Strings.BrightnessUp},
{"custom", Properties.Strings.Custom}
};
@@ -54,7 +55,7 @@ namespace GHelper
combo.DisplayMember = "Value";
combo.ValueMember = "Key";
string action = AppConfig.getConfigString(name);
string action = AppConfig.GetString(name);
combo.SelectedValue = (action is not null) ? action : "";
if (combo.SelectedValue is null) combo.SelectedValue = "";
@@ -62,17 +63,17 @@ namespace GHelper
combo.SelectedValueChanged += delegate
{
if (combo.SelectedValue is not null)
AppConfig.setConfig(name, combo.SelectedValue.ToString());
AppConfig.Set(name, combo.SelectedValue.ToString());
if (name == "m1" || name == "m2")
Program.inputDispatcher.RegisterKeys();
};
txbox.Text = AppConfig.getConfigString(name + "_custom");
txbox.Text = AppConfig.GetString(name + "_custom");
txbox.TextChanged += delegate
{
AppConfig.setConfig(name + "_custom", txbox.Text);
AppConfig.Set(name + "_custom", txbox.Text);
};
}
@@ -129,28 +130,28 @@ namespace GHelper
comboKeyboardSpeed.SelectedValueChanged += ComboKeyboardSpeed_SelectedValueChanged;
// Keyboard
checkAwake.Checked = !(AppConfig.getConfig("keyboard_awake") == 0);
checkBoot.Checked = !(AppConfig.getConfig("keyboard_boot") == 0);
checkSleep.Checked = !(AppConfig.getConfig("keyboard_sleep") == 0);
checkShutdown.Checked = !(AppConfig.getConfig("keyboard_shutdown") == 0);
checkAwake.Checked = !(AppConfig.Get("keyboard_awake") == 0);
checkBoot.Checked = !(AppConfig.Get("keyboard_boot") == 0);
checkSleep.Checked = !(AppConfig.Get("keyboard_sleep") == 0);
checkShutdown.Checked = !(AppConfig.Get("keyboard_shutdown") == 0);
// Lightbar
checkAwakeBar.Checked = !(AppConfig.getConfig("keyboard_awake_bar") == 0);
checkBootBar.Checked = !(AppConfig.getConfig("keyboard_boot_bar") == 0);
checkSleepBar.Checked = !(AppConfig.getConfig("keyboard_sleep_bar") == 0);
checkShutdownBar.Checked = !(AppConfig.getConfig("keyboard_shutdown_bar") == 0);
checkAwakeBar.Checked = !(AppConfig.Get("keyboard_awake_bar") == 0);
checkBootBar.Checked = !(AppConfig.Get("keyboard_boot_bar") == 0);
checkSleepBar.Checked = !(AppConfig.Get("keyboard_sleep_bar") == 0);
checkShutdownBar.Checked = !(AppConfig.Get("keyboard_shutdown_bar") == 0);
// Lid
checkAwakeLid.Checked = !(AppConfig.getConfig("keyboard_awake_lid") == 0);
checkBootLid.Checked = !(AppConfig.getConfig("keyboard_boot_lid") == 0);
checkSleepLid.Checked = !(AppConfig.getConfig("keyboard_sleep_lid") == 0);
checkShutdownLid.Checked = !(AppConfig.getConfig("keyboard_shutdown_lid") == 0);
checkAwakeLid.Checked = !(AppConfig.Get("keyboard_awake_lid") == 0);
checkBootLid.Checked = !(AppConfig.Get("keyboard_boot_lid") == 0);
checkSleepLid.Checked = !(AppConfig.Get("keyboard_sleep_lid") == 0);
checkShutdownLid.Checked = !(AppConfig.Get("keyboard_shutdown_lid") == 0);
// Logo
checkAwakeLogo.Checked = !(AppConfig.getConfig("keyboard_awake_logo") == 0);
checkBootLogo.Checked = !(AppConfig.getConfig("keyboard_boot_logo") == 0);
checkSleepLogo.Checked = !(AppConfig.getConfig("keyboard_sleep_logo") == 0);
checkShutdownLogo.Checked = !(AppConfig.getConfig("keyboard_shutdown_logo") == 0);
checkAwakeLogo.Checked = !(AppConfig.Get("keyboard_awake_logo") == 0);
checkBootLogo.Checked = !(AppConfig.Get("keyboard_boot_logo") == 0);
checkSleepLogo.Checked = !(AppConfig.Get("keyboard_sleep_logo") == 0);
checkShutdownLogo.Checked = !(AppConfig.Get("keyboard_shutdown_logo") == 0);
checkAwake.CheckedChanged += CheckPower_CheckedChanged;
checkBoot.CheckedChanged += CheckPower_CheckedChanged;
@@ -196,40 +197,93 @@ namespace GHelper
}
}
checkTopmost.Checked = (AppConfig.getConfig("topmost") == 1);
checkTopmost.Checked = AppConfig.Is("topmost");
checkTopmost.CheckedChanged += CheckTopmost_CheckedChanged; ;
checkNoOverdrive.Checked = (AppConfig.getConfig("no_overdrive") == 1);
checkNoOverdrive.Checked = AppConfig.Is("no_overdrive");
checkNoOverdrive.CheckedChanged += CheckNoOverdrive_CheckedChanged;
checkUSBC.Checked = (AppConfig.getConfig("optimized_usbc") == 1);
checkUSBC.Checked = AppConfig.Is("optimized_usbc");
checkUSBC.CheckedChanged += CheckUSBC_CheckedChanged;
checkAutoApplyWindowsPowerMode.Checked = (AppConfig.getConfig("auto_apply_power_plan") != 0);
checkAutoApplyWindowsPowerMode.Checked = (AppConfig.Get("auto_apply_power_plan") != 0);
checkAutoApplyWindowsPowerMode.CheckedChanged += checkAutoApplyWindowsPowerMode_CheckedChanged;
trackBrightness.Value = InputDispatcher.GetBacklight();
trackBrightness.Scroll += TrackBrightness_Scroll;
panelXMG.Visible = (Program.acpi.DeviceGet(AsusACPI.GPUXGConnected) == 1);
checkXMG.Checked = !(AppConfig.getConfig("xmg_light") == 0);
checkXMG.Checked = !(AppConfig.Get("xmg_light") == 0);
checkXMG.CheckedChanged += CheckXMG_CheckedChanged;
numericBacklightTime.Value = AppConfig.getConfig("keyboard_timeout", 60);
numericBacklightPluggedTime.Value = AppConfig.getConfig("keyboard_ac_timeout", 0);
numericBacklightTime.Value = AppConfig.Get("keyboard_timeout", 60);
numericBacklightPluggedTime.Value = AppConfig.Get("keyboard_ac_timeout", 0);
numericBacklightTime.ValueChanged += NumericBacklightTime_ValueChanged;
numericBacklightPluggedTime.ValueChanged += NumericBacklightTime_ValueChanged;
checkGpuApps.Checked = AppConfig.isConfig("kill_gpu_apps");
checkGpuApps.Checked = AppConfig.Is("kill_gpu_apps");
checkGpuApps.CheckedChanged += CheckGpuApps_CheckedChanged;
checkFnLock.Checked = AppConfig.isConfig("fn_lock");
checkFnLock.Checked = AppConfig.Is("fn_lock");
checkFnLock.CheckedChanged += CheckFnLock_CheckedChanged; ;
pictureHelp.Click += PictureHelp_Click;
buttonServices.Click += ButtonServices_Click;
InitVariBright();
InitServices();
}
private void InitServices()
{
if (OptimizationService.IsRunning()) buttonServices.Text = Properties.Strings.Stop;
else buttonServices.Text = Properties.Strings.Start;
labelServices.Text = Properties.Strings.AsusServicesRunning + ": " + OptimizationService.GetRunningCount();
buttonServices.Enabled = true;
}
public void ServiesToggle()
{
buttonServices.Enabled = false;
if (OptimizationService.IsRunning())
{
labelServices.Text = Properties.Strings.StoppingServices + " ...";
Task.Run(() =>
{
OptimizationService.StopAsusServices();
BeginInvoke(delegate
{
InitServices();
});
Program.inputDispatcher.Init();
});
}
else
{
labelServices.Text = Properties.Strings.StartingServices + " ...";
Task.Run(() =>
{
OptimizationService.StartAsusServices();
BeginInvoke(delegate
{
InitServices();
});
});
}
}
private void ButtonServices_Click(object? sender, EventArgs e)
{
if (ProcessHelper.IsUserAdministrator())
ServiesToggle();
else
ProcessHelper.RunAsAdmin("services");
}
private void InitVariBright()
@@ -271,7 +325,7 @@ namespace GHelper
private void CheckFnLock_CheckedChanged(object? sender, EventArgs e)
{
int fnLock = checkFnLock.Checked ? 1 : 0;
AppConfig.setConfig("fn_lock", fnLock);
AppConfig.Set("fn_lock", fnLock);
Program.acpi.DeviceSet(AsusACPI.FnLock, (fnLock == 1) ? 0 : 1, "FnLock");
Program.inputDispatcher.RegisterKeys();
@@ -279,31 +333,31 @@ namespace GHelper
private void CheckGpuApps_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("kill_gpu_apps", (checkGpuApps.Checked ? 1 : 0));
AppConfig.Set("kill_gpu_apps", (checkGpuApps.Checked ? 1 : 0));
}
private void NumericBacklightTime_ValueChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("keyboard_timeout", (int)numericBacklightTime.Value);
AppConfig.setConfig("keyboard_ac_timeout", (int)numericBacklightPluggedTime.Value);
AppConfig.Set("keyboard_timeout", (int)numericBacklightTime.Value);
AppConfig.Set("keyboard_ac_timeout", (int)numericBacklightPluggedTime.Value);
Program.inputDispatcher.InitBacklightTimer();
}
private void CheckXMG_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("xmg_light", (checkXMG.Checked ? 1 : 0));
AppConfig.Set("xmg_light", (checkXMG.Checked ? 1 : 0));
AsusUSB.ApplyXGMLight(checkXMG.Checked);
}
private void CheckUSBC_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("optimized_usbc", (checkUSBC.Checked ? 1 : 0));
AppConfig.Set("optimized_usbc", (checkUSBC.Checked ? 1 : 0));
}
private void TrackBrightness_Scroll(object? sender, EventArgs e)
{
AppConfig.setConfig("keyboard_brightness", trackBrightness.Value);
AppConfig.setConfig("keyboard_brightness_ac", trackBrightness.Value);
AppConfig.Set("keyboard_brightness", trackBrightness.Value);
AppConfig.Set("keyboard_brightness_ac", trackBrightness.Value);
AsusUSB.ApplyBrightness(trackBrightness.Value, "Slider");
}
@@ -314,38 +368,38 @@ namespace GHelper
private void CheckNoOverdrive_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("no_overdrive", (checkNoOverdrive.Checked ? 1 : 0));
AppConfig.Set("no_overdrive", (checkNoOverdrive.Checked ? 1 : 0));
Program.settingsForm.AutoScreen(true);
}
private void CheckTopmost_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("topmost", (checkTopmost.Checked ? 1 : 0));
AppConfig.Set("topmost", (checkTopmost.Checked ? 1 : 0));
Program.settingsForm.TopMost = checkTopmost.Checked;
}
private void CheckPower_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("keyboard_awake", (checkAwake.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_boot", (checkBoot.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_sleep", (checkSleep.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_shutdown", (checkShutdown.Checked ? 1 : 0));
AppConfig.Set("keyboard_awake", (checkAwake.Checked ? 1 : 0));
AppConfig.Set("keyboard_boot", (checkBoot.Checked ? 1 : 0));
AppConfig.Set("keyboard_sleep", (checkSleep.Checked ? 1 : 0));
AppConfig.Set("keyboard_shutdown", (checkShutdown.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_awake_bar", (checkAwakeBar.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_boot_bar", (checkBootBar.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_sleep_bar", (checkSleepBar.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_shutdown_bar", (checkShutdownBar.Checked ? 1 : 0));
AppConfig.Set("keyboard_awake_bar", (checkAwakeBar.Checked ? 1 : 0));
AppConfig.Set("keyboard_boot_bar", (checkBootBar.Checked ? 1 : 0));
AppConfig.Set("keyboard_sleep_bar", (checkSleepBar.Checked ? 1 : 0));
AppConfig.Set("keyboard_shutdown_bar", (checkShutdownBar.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_awake_lid", (checkAwakeLid.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_boot_lid", (checkBootLid.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_sleep_lid", (checkSleepLid.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_shutdown_lid", (checkShutdownLid.Checked ? 1 : 0));
AppConfig.Set("keyboard_awake_lid", (checkAwakeLid.Checked ? 1 : 0));
AppConfig.Set("keyboard_boot_lid", (checkBootLid.Checked ? 1 : 0));
AppConfig.Set("keyboard_sleep_lid", (checkSleepLid.Checked ? 1 : 0));
AppConfig.Set("keyboard_shutdown_lid", (checkShutdownLid.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_awake_logo", (checkAwakeLogo.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_boot_logo", (checkBootLogo.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_sleep_logo", (checkSleepLogo.Checked ? 1 : 0));
AppConfig.setConfig("keyboard_shutdown_logo", (checkShutdownLogo.Checked ? 1 : 0));
AppConfig.Set("keyboard_awake_logo", (checkAwakeLogo.Checked ? 1 : 0));
AppConfig.Set("keyboard_boot_logo", (checkBootLogo.Checked ? 1 : 0));
AppConfig.Set("keyboard_sleep_logo", (checkSleepLogo.Checked ? 1 : 0));
AppConfig.Set("keyboard_shutdown_logo", (checkShutdownLogo.Checked ? 1 : 0));
List<AuraDev19b6> flags = new List<AuraDev19b6>();
@@ -375,7 +429,7 @@ namespace GHelper
private void ComboKeyboardSpeed_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("aura_speed", (int)comboKeyboardSpeed.SelectedValue);
AppConfig.Set("aura_speed", (int)comboKeyboardSpeed.SelectedValue);
Program.settingsForm.SetAura();
}
@@ -396,7 +450,7 @@ namespace GHelper
private void checkAutoApplyWindowsPowerMode_CheckedChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("auto_apply_power_plan", checkAutoApplyWindowsPowerMode.Checked ? 1 : 0);
AppConfig.Set("auto_apply_power_plan", checkAutoApplyWindowsPowerMode.Checked ? 1 : 0);
}
}
}

487
app/Fans.Designer.cs generated
View File

@@ -47,14 +47,18 @@ namespace GHelper
chartXGM = new Chart();
chartMid = new Chart();
panelTitleFans = new Panel();
labelBoost = new Label();
comboBoost = new RComboBox();
buttonRename = new RButton();
buttonRemove = new RButton();
buttonAdd = new RButton();
comboModes = new RComboBox();
picturePerf = new PictureBox();
labelFans = new Label();
panelApplyFans = new Panel();
labelFansResult = new Label();
checkApplyFans = new RCheckBox();
buttonReset = new RButton();
labelBoost = new Label();
comboBoost = new RComboBox();
panelSliders = new Panel();
panelPower = new Panel();
panelApplyPower = new Panel();
@@ -72,6 +76,7 @@ namespace GHelper
labelA0 = new Label();
labelLeftA0 = new Label();
trackA0 = new TrackBar();
panelBoost = new Panel();
panelTitleCPU = new Panel();
pictureBox1 = new PictureBox();
labelPowerLimits = new Label();
@@ -113,6 +118,7 @@ namespace GHelper
((System.ComponentModel.ISupportInitialize)trackC1).BeginInit();
panelA0.SuspendLayout();
((System.ComponentModel.ISupportInitialize)trackA0).BeginInit();
panelBoost.SuspendLayout();
panelTitleCPU.SuspendLayout();
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
panelGPU.SuspendLayout();
@@ -137,23 +143,24 @@ namespace GHelper
panelFans.Controls.Add(panelTitleFans);
panelFans.Controls.Add(panelApplyFans);
panelFans.Dock = DockStyle.Left;
panelFans.Location = new Point(533, 0);
panelFans.Location = new Point(266, 0);
panelFans.Margin = new Padding(0);
panelFans.MaximumSize = new Size(815, 0);
panelFans.MinimumSize = new Size(815, 0);
panelFans.MaximumSize = new Size(408, 0);
panelFans.MinimumSize = new Size(408, 0);
panelFans.Name = "panelFans";
panelFans.Padding = new Padding(0, 0, 10, 0);
panelFans.Size = new Size(815, 1310);
panelFans.Padding = new Padding(0, 0, 5, 0);
panelFans.Size = new Size(408, 655);
panelFans.TabIndex = 12;
//
// labelTip
//
labelTip.AutoSize = true;
labelTip.BackColor = SystemColors.ControlLightLight;
labelTip.Location = new Point(684, 91);
labelTip.Location = new Point(342, 46);
labelTip.Margin = new Padding(2, 0, 2, 0);
labelTip.Name = "labelTip";
labelTip.Padding = new Padding(5);
labelTip.Size = new Size(107, 42);
labelTip.Padding = new Padding(2, 2, 2, 2);
labelTip.Size = new Size(50, 19);
labelTip.TabIndex = 40;
labelTip.Text = "500,300";
//
@@ -167,16 +174,16 @@ namespace GHelper
tableFanCharts.Controls.Add(chartXGM, 0, 2);
tableFanCharts.Controls.Add(chartMid, 0, 2);
tableFanCharts.Dock = DockStyle.Fill;
tableFanCharts.Location = new Point(0, 66);
tableFanCharts.Margin = new Padding(4);
tableFanCharts.Location = new Point(0, 33);
tableFanCharts.Margin = new Padding(2, 2, 2, 2);
tableFanCharts.Name = "tableFanCharts";
tableFanCharts.Padding = new Padding(10, 0, 10, 10);
tableFanCharts.Padding = new Padding(5, 0, 5, 5);
tableFanCharts.RowCount = 2;
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.RowStyles.Add(new RowStyle(SizeType.Percent, 25F));
tableFanCharts.Size = new Size(805, 1128);
tableFanCharts.Size = new Size(403, 564);
tableFanCharts.TabIndex = 36;
//
// chartGPU
@@ -184,10 +191,10 @@ namespace GHelper
chartArea1.Name = "ChartArea1";
chartGPU.ChartAreas.Add(chartArea1);
chartGPU.Dock = DockStyle.Fill;
chartGPU.Location = new Point(12, 289);
chartGPU.Margin = new Padding(2, 10, 2, 10);
chartGPU.Location = new Point(6, 144);
chartGPU.Margin = new Padding(1, 5, 1, 5);
chartGPU.Name = "chartGPU";
chartGPU.Size = new Size(781, 259);
chartGPU.Size = new Size(391, 129);
chartGPU.TabIndex = 17;
chartGPU.Text = "chartGPU";
title1.Name = "Title1";
@@ -198,10 +205,10 @@ namespace GHelper
chartArea2.Name = "ChartArea1";
chartCPU.ChartAreas.Add(chartArea2);
chartCPU.Dock = DockStyle.Fill;
chartCPU.Location = new Point(12, 10);
chartCPU.Margin = new Padding(2, 10, 2, 10);
chartCPU.Location = new Point(6, 5);
chartCPU.Margin = new Padding(1, 5, 1, 5);
chartCPU.Name = "chartCPU";
chartCPU.Size = new Size(781, 259);
chartCPU.Size = new Size(391, 129);
chartCPU.TabIndex = 14;
chartCPU.Text = "chartCPU";
title2.Name = "Title1";
@@ -212,10 +219,10 @@ namespace GHelper
chartArea3.Name = "ChartAreaXGM";
chartXGM.ChartAreas.Add(chartArea3);
chartXGM.Dock = DockStyle.Fill;
chartXGM.Location = new Point(12, 847);
chartXGM.Margin = new Padding(2, 10, 2, 10);
chartXGM.Location = new Point(6, 422);
chartXGM.Margin = new Padding(1, 5, 1, 5);
chartXGM.Name = "chartXGM";
chartXGM.Size = new Size(781, 261);
chartXGM.Size = new Size(391, 132);
chartXGM.TabIndex = 14;
chartXGM.Text = "chartXGM";
title3.Name = "Title4";
@@ -227,10 +234,10 @@ namespace GHelper
chartArea4.Name = "ChartArea3";
chartMid.ChartAreas.Add(chartArea4);
chartMid.Dock = DockStyle.Fill;
chartMid.Location = new Point(12, 568);
chartMid.Margin = new Padding(2, 10, 2, 10);
chartMid.Location = new Point(6, 283);
chartMid.Margin = new Padding(1, 5, 1, 5);
chartMid.Name = "chartMid";
chartMid.Size = new Size(781, 259);
chartMid.Size = new Size(391, 129);
chartMid.TabIndex = 14;
chartMid.Text = "chartMid";
title4.Name = "Title3";
@@ -239,48 +246,92 @@ namespace GHelper
//
// panelTitleFans
//
panelTitleFans.Controls.Add(labelBoost);
panelTitleFans.Controls.Add(comboBoost);
panelTitleFans.Controls.Add(buttonRename);
panelTitleFans.Controls.Add(buttonRemove);
panelTitleFans.Controls.Add(buttonAdd);
panelTitleFans.Controls.Add(comboModes);
panelTitleFans.Controls.Add(picturePerf);
panelTitleFans.Controls.Add(labelFans);
panelTitleFans.Dock = DockStyle.Top;
panelTitleFans.Location = new Point(0, 0);
panelTitleFans.Margin = new Padding(2, 2, 2, 2);
panelTitleFans.Name = "panelTitleFans";
panelTitleFans.Size = new Size(805, 66);
panelTitleFans.Size = new Size(403, 33);
panelTitleFans.TabIndex = 42;
//
// labelBoost
// buttonRename
//
labelBoost.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelBoost.Location = new Point(356, 20);
labelBoost.Name = "labelBoost";
labelBoost.Size = new Size(140, 32);
labelBoost.TabIndex = 43;
labelBoost.Text = "CPU Boost";
labelBoost.TextAlign = ContentAlignment.MiddleRight;
buttonRename.Activated = false;
buttonRename.Anchor = AnchorStyles.Top | AnchorStyles.Right;
buttonRename.BackColor = SystemColors.ControlLight;
buttonRename.BorderColor = Color.Transparent;
buttonRename.BorderRadius = 2;
buttonRename.FlatStyle = FlatStyle.Flat;
buttonRename.Image = Properties.Resources.icons8_edit_32;
buttonRename.Location = new Point(188, 5);
buttonRename.Margin = new Padding(2, 1, 2, 1);
buttonRename.Name = "buttonRename";
buttonRename.Secondary = true;
buttonRename.Size = new Size(26, 23);
buttonRename.TabIndex = 45;
buttonRename.UseVisualStyleBackColor = false;
//
// comboBoost
// buttonRemove
//
comboBoost.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
comboBoost.BorderColor = Color.White;
comboBoost.ButtonColor = Color.FromArgb(255, 255, 255);
comboBoost.DropDownStyle = ComboBoxStyle.DropDownList;
comboBoost.FormattingEnabled = true;
comboBoost.Items.AddRange(new object[] { "Disabled", "Enabled", "Aggressive", "Efficient Enabled", "Efficient Aggressive" });
comboBoost.Location = new Point(506, 16);
comboBoost.Name = "comboBoost";
comboBoost.Size = new Size(287, 40);
comboBoost.TabIndex = 42;
buttonRemove.Activated = false;
buttonRemove.Anchor = AnchorStyles.Top | AnchorStyles.Right;
buttonRemove.BackColor = SystemColors.ControlLight;
buttonRemove.BorderColor = Color.Transparent;
buttonRemove.BorderRadius = 2;
buttonRemove.FlatStyle = FlatStyle.Flat;
buttonRemove.Image = Properties.Resources.icons8_remove_64;
buttonRemove.Location = new Point(161, 5);
buttonRemove.Margin = new Padding(2, 1, 2, 1);
buttonRemove.Name = "buttonRemove";
buttonRemove.Secondary = true;
buttonRemove.Size = new Size(26, 23);
buttonRemove.TabIndex = 44;
buttonRemove.UseVisualStyleBackColor = false;
//
// buttonAdd
//
buttonAdd.Activated = false;
buttonAdd.Anchor = AnchorStyles.Top | AnchorStyles.Right;
buttonAdd.BackColor = SystemColors.ControlLight;
buttonAdd.BorderColor = Color.Transparent;
buttonAdd.BorderRadius = 2;
buttonAdd.FlatStyle = FlatStyle.Flat;
buttonAdd.Image = Properties.Resources.icons8_add_64;
buttonAdd.Location = new Point(372, 5);
buttonAdd.Margin = new Padding(2, 1, 2, 1);
buttonAdd.Name = "buttonAdd";
buttonAdd.Secondary = true;
buttonAdd.Size = new Size(26, 23);
buttonAdd.TabIndex = 43;
buttonAdd.UseVisualStyleBackColor = false;
//
// comboModes
//
comboModes.Anchor = AnchorStyles.Top | AnchorStyles.Right;
comboModes.BorderColor = Color.White;
comboModes.ButtonColor = Color.FromArgb(255, 255, 255);
comboModes.FlatStyle = FlatStyle.Flat;
comboModes.FormattingEnabled = true;
comboModes.Location = new Point(218, 7);
comboModes.Margin = new Padding(0);
comboModes.Name = "comboModes";
comboModes.Size = new Size(153, 23);
comboModes.TabIndex = 42;
//
// picturePerf
//
picturePerf.BackgroundImage = Properties.Resources.icons8_fan_head_96;
picturePerf.BackgroundImageLayout = ImageLayout.Zoom;
picturePerf.InitialImage = null;
picturePerf.Location = new Point(20, 18);
picturePerf.Margin = new Padding(4, 2, 4, 2);
picturePerf.Location = new Point(9, 9);
picturePerf.Margin = new Padding(2, 1, 2, 1);
picturePerf.Name = "picturePerf";
picturePerf.Size = new Size(36, 38);
picturePerf.Size = new Size(18, 19);
picturePerf.TabIndex = 41;
picturePerf.TabStop = false;
//
@@ -288,12 +339,12 @@ namespace GHelper
//
labelFans.AutoSize = true;
labelFans.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelFans.Location = new Point(62, 20);
labelFans.Margin = new Padding(4, 0, 4, 0);
labelFans.Location = new Point(26, 10);
labelFans.Margin = new Padding(2, 0, 2, 0);
labelFans.Name = "labelFans";
labelFans.Size = new Size(138, 32);
labelFans.Size = new Size(44, 15);
labelFans.TabIndex = 40;
labelFans.Text = "Fan Curves";
labelFans.Text = "Profile";
//
// panelApplyFans
//
@@ -301,18 +352,20 @@ namespace GHelper
panelApplyFans.Controls.Add(checkApplyFans);
panelApplyFans.Controls.Add(buttonReset);
panelApplyFans.Dock = DockStyle.Bottom;
panelApplyFans.Location = new Point(0, 1194);
panelApplyFans.Location = new Point(0, 597);
panelApplyFans.Margin = new Padding(2, 2, 2, 2);
panelApplyFans.Name = "panelApplyFans";
panelApplyFans.Size = new Size(805, 116);
panelApplyFans.Size = new Size(403, 58);
panelApplyFans.TabIndex = 43;
//
// labelFansResult
//
labelFansResult.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
labelFansResult.ForeColor = Color.Red;
labelFansResult.Location = new Point(25, 3);
labelFansResult.Location = new Point(12, 2);
labelFansResult.Margin = new Padding(2, 0, 2, 0);
labelFansResult.Name = "labelFansResult";
labelFansResult.Size = new Size(760, 32);
labelFansResult.Size = new Size(381, 16);
labelFansResult.TabIndex = 42;
labelFansResult.TextAlign = ContentAlignment.TopRight;
labelFansResult.Visible = false;
@@ -322,11 +375,11 @@ namespace GHelper
checkApplyFans.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
checkApplyFans.AutoSize = true;
checkApplyFans.BackColor = SystemColors.ControlLight;
checkApplyFans.Location = new Point(453, 45);
checkApplyFans.Margin = new Padding(4, 2, 4, 2);
checkApplyFans.Location = new Point(223, 23);
checkApplyFans.Margin = new Padding(2, 1, 2, 1);
checkApplyFans.Name = "checkApplyFans";
checkApplyFans.Padding = new Padding(15, 5, 15, 5);
checkApplyFans.Size = new Size(339, 46);
checkApplyFans.Padding = new Padding(8, 2, 8, 2);
checkApplyFans.Size = new Size(174, 23);
checkApplyFans.TabIndex = 19;
checkApplyFans.Text = Properties.Strings.ApplyFanCurve;
checkApplyFans.UseVisualStyleBackColor = false;
@@ -339,15 +392,39 @@ namespace GHelper
buttonReset.BorderColor = Color.Transparent;
buttonReset.BorderRadius = 2;
buttonReset.FlatStyle = FlatStyle.Flat;
buttonReset.Location = new Point(12, 38);
buttonReset.Margin = new Padding(4, 2, 4, 2);
buttonReset.Location = new Point(6, 19);
buttonReset.Margin = new Padding(2, 1, 2, 1);
buttonReset.Name = "buttonReset";
buttonReset.Secondary = true;
buttonReset.Size = new Size(274, 54);
buttonReset.Size = new Size(137, 27);
buttonReset.TabIndex = 18;
buttonReset.Text = Properties.Strings.FactoryDefaults;
buttonReset.UseVisualStyleBackColor = false;
//
// labelBoost
//
labelBoost.Location = new Point(5, 5);
labelBoost.Margin = new Padding(2, 0, 2, 0);
labelBoost.Name = "labelBoost";
labelBoost.Size = new Size(100, 20);
labelBoost.TabIndex = 43;
labelBoost.Text = "CPU Boost";
labelBoost.TextAlign = ContentAlignment.MiddleLeft;
//
// comboBoost
//
comboBoost.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
comboBoost.BorderColor = Color.White;
comboBoost.ButtonColor = Color.FromArgb(255, 255, 255);
comboBoost.DropDownStyle = ComboBoxStyle.DropDownList;
comboBoost.FormattingEnabled = true;
comboBoost.Items.AddRange(new object[] { "Disabled", "Enabled", "Aggressive", "Efficient Enabled", "Efficient Aggressive", "Aggressive at Guaranteed", "Efficient at Guaranteed" });
comboBoost.Location = new Point(113, 5);
comboBoost.Margin = new Padding(2, 2, 2, 2);
comboBoost.Name = "comboBoost";
comboBoost.Size = new Size(145, 23);
comboBoost.TabIndex = 42;
//
// panelSliders
//
panelSliders.Controls.Add(panelPower);
@@ -356,8 +433,8 @@ namespace GHelper
panelSliders.Location = new Point(0, 0);
panelSliders.Margin = new Padding(0);
panelSliders.Name = "panelSliders";
panelSliders.Padding = new Padding(10, 0, 0, 0);
panelSliders.Size = new Size(533, 1310);
panelSliders.Padding = new Padding(5, 0, 0, 0);
panelSliders.Size = new Size(266, 655);
panelSliders.TabIndex = 13;
//
// panelPower
@@ -369,21 +446,24 @@ namespace GHelper
panelPower.Controls.Add(panelB0);
panelPower.Controls.Add(panelC1);
panelPower.Controls.Add(panelA0);
panelPower.Controls.Add(panelBoost);
panelPower.Controls.Add(panelTitleCPU);
panelPower.Dock = DockStyle.Fill;
panelPower.Location = new Point(10, 652);
panelPower.Location = new Point(5, 290);
panelPower.Margin = new Padding(2, 2, 2, 2);
panelPower.Name = "panelPower";
panelPower.Size = new Size(523, 658);
panelPower.Size = new Size(261, 365);
panelPower.TabIndex = 43;
//
// panelApplyPower
//
panelApplyPower.Controls.Add(checkApplyPower);
panelApplyPower.Dock = DockStyle.Bottom;
panelApplyPower.Location = new Point(0, 568);
panelApplyPower.Location = new Point(0, 320);
panelApplyPower.Margin = new Padding(2, 2, 2, 2);
panelApplyPower.Name = "panelApplyPower";
panelApplyPower.Padding = new Padding(10);
panelApplyPower.Size = new Size(523, 90);
panelApplyPower.Padding = new Padding(5, 5, 5, 5);
panelApplyPower.Size = new Size(261, 45);
panelApplyPower.TabIndex = 44;
//
// checkApplyPower
@@ -391,11 +471,11 @@ namespace GHelper
checkApplyPower.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
checkApplyPower.AutoSize = true;
checkApplyPower.BackColor = SystemColors.ControlLight;
checkApplyPower.Location = new Point(18, 20);
checkApplyPower.Margin = new Padding(10);
checkApplyPower.Location = new Point(9, 9);
checkApplyPower.Margin = new Padding(5, 5, 5, 5);
checkApplyPower.Name = "checkApplyPower";
checkApplyPower.Padding = new Padding(15, 5, 15, 5);
checkApplyPower.Size = new Size(277, 46);
checkApplyPower.Padding = new Padding(8, 2, 8, 2);
checkApplyPower.Size = new Size(144, 23);
checkApplyPower.TabIndex = 45;
checkApplyPower.Text = Properties.Strings.ApplyPowerLimits;
checkApplyPower.UseVisualStyleBackColor = false;
@@ -403,11 +483,11 @@ namespace GHelper
// labelInfo
//
labelInfo.Dock = DockStyle.Top;
labelInfo.Location = new Point(0, 482);
labelInfo.Margin = new Padding(4, 0, 4, 0);
labelInfo.Location = new Point(0, 251);
labelInfo.Margin = new Padding(2, 0, 2, 0);
labelInfo.Name = "labelInfo";
labelInfo.Padding = new Padding(5);
labelInfo.Size = new Size(523, 149);
labelInfo.Padding = new Padding(2, 2, 2, 2);
labelInfo.Size = new Size(261, 50);
labelInfo.TabIndex = 43;
labelInfo.Text = "Experimental Feature";
//
@@ -419,20 +499,20 @@ namespace GHelper
panelB0.Controls.Add(labelLeftB0);
panelB0.Controls.Add(trackB0);
panelB0.Dock = DockStyle.Top;
panelB0.Location = new Point(0, 346);
panelB0.Margin = new Padding(4);
panelB0.Location = new Point(0, 189);
panelB0.Margin = new Padding(2, 2, 2, 2);
panelB0.MaximumSize = new Size(0, 62);
panelB0.Name = "panelB0";
panelB0.Size = new Size(523, 136);
panelB0.Size = new Size(261, 62);
panelB0.TabIndex = 41;
//
// labelB0
//
labelB0.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelB0.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelB0.Location = new Point(398, 8);
labelB0.Margin = new Padding(4, 0, 4, 0);
labelB0.Location = new Point(199, 4);
labelB0.Margin = new Padding(2, 0, 2, 0);
labelB0.Name = "labelB0";
labelB0.Size = new Size(120, 32);
labelB0.Size = new Size(58, 16);
labelB0.TabIndex = 13;
labelB0.Text = "CPU";
labelB0.TextAlign = ContentAlignment.TopRight;
@@ -440,22 +520,21 @@ namespace GHelper
// labelLeftB0
//
labelLeftB0.AutoSize = true;
labelLeftB0.Location = new Point(10, 8);
labelLeftB0.Margin = new Padding(4, 0, 4, 0);
labelLeftB0.Location = new Point(5, 4);
labelLeftB0.Margin = new Padding(2, 0, 2, 0);
labelLeftB0.Name = "labelLeftB0";
labelLeftB0.Size = new Size(58, 32);
labelLeftB0.Size = new Size(30, 15);
labelLeftB0.TabIndex = 12;
labelLeftB0.Text = "CPU";
//
// trackB0
//
trackB0.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackB0.Location = new Point(6, 44);
trackB0.Margin = new Padding(4, 2, 4, 2);
trackB0.Location = new Point(3, 22);
trackB0.Margin = new Padding(2, 1, 2, 1);
trackB0.Maximum = 85;
trackB0.Minimum = 5;
trackB0.Name = "trackB0";
trackB0.Size = new Size(513, 90);
trackB0.Size = new Size(254, 45);
trackB0.TabIndex = 11;
trackB0.TickFrequency = 5;
trackB0.TickStyle = TickStyle.TopLeft;
@@ -469,43 +548,42 @@ namespace GHelper
panelC1.Controls.Add(labelLeftC1);
panelC1.Controls.Add(trackC1);
panelC1.Dock = DockStyle.Top;
panelC1.Location = new Point(0, 206);
panelC1.Margin = new Padding(4);
panelC1.Location = new Point(0, 127);
panelC1.Margin = new Padding(2, 2, 2, 2);
panelC1.MaximumSize = new Size(0, 62);
panelC1.Name = "panelC1";
panelC1.Size = new Size(523, 140);
panelC1.Size = new Size(261, 62);
panelC1.TabIndex = 45;
//
// labelC1
//
labelC1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelC1.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelC1.Location = new Point(396, 8);
labelC1.Margin = new Padding(4, 0, 4, 0);
labelC1.Location = new Point(198, 4);
labelC1.Margin = new Padding(2, 0, 2, 0);
labelC1.Name = "labelC1";
labelC1.Size = new Size(119, 32);
labelC1.Size = new Size(57, 16);
labelC1.TabIndex = 13;
labelC1.Text = "APU";
labelC1.Text = "C1";
labelC1.TextAlign = ContentAlignment.TopRight;
//
// labelLeftC1
//
labelLeftC1.AutoSize = true;
labelLeftC1.Location = new Point(10, 8);
labelLeftC1.Margin = new Padding(4, 0, 4, 0);
labelLeftC1.Location = new Point(5, 4);
labelLeftC1.Margin = new Padding(2, 0, 2, 0);
labelLeftC1.Name = "labelLeftC1";
labelLeftC1.Size = new Size(58, 32);
labelLeftC1.Size = new Size(21, 15);
labelLeftC1.TabIndex = 12;
labelLeftC1.Text = "APU";
labelLeftC1.Text = "C1";
//
// trackC1
//
trackC1.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackC1.Location = new Point(6, 48);
trackC1.Margin = new Padding(4, 2, 4, 2);
trackC1.Location = new Point(3, 24);
trackC1.Margin = new Padding(2, 1, 2, 1);
trackC1.Maximum = 85;
trackC1.Minimum = 5;
trackC1.Name = "trackC1";
trackC1.Size = new Size(513, 90);
trackC1.Size = new Size(254, 45);
trackC1.TabIndex = 11;
trackC1.TickFrequency = 5;
trackC1.TickStyle = TickStyle.TopLeft;
@@ -519,20 +597,20 @@ namespace GHelper
panelA0.Controls.Add(labelLeftA0);
panelA0.Controls.Add(trackA0);
panelA0.Dock = DockStyle.Top;
panelA0.Location = new Point(0, 66);
panelA0.Margin = new Padding(4);
panelA0.Location = new Point(0, 65);
panelA0.Margin = new Padding(2, 2, 2, 2);
panelA0.MaximumSize = new Size(0, 62);
panelA0.Name = "panelA0";
panelA0.Size = new Size(523, 140);
panelA0.Size = new Size(261, 62);
panelA0.TabIndex = 40;
//
// labelA0
//
labelA0.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelA0.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelA0.Location = new Point(396, 10);
labelA0.Margin = new Padding(4, 0, 4, 0);
labelA0.Location = new Point(198, 5);
labelA0.Margin = new Padding(2, 0, 2, 0);
labelA0.Name = "labelA0";
labelA0.Size = new Size(122, 32);
labelA0.Size = new Size(58, 16);
labelA0.TabIndex = 12;
labelA0.Text = "Platform";
labelA0.TextAlign = ContentAlignment.TopRight;
@@ -540,27 +618,37 @@ namespace GHelper
// labelLeftA0
//
labelLeftA0.AutoSize = true;
labelLeftA0.Location = new Point(10, 10);
labelLeftA0.Margin = new Padding(4, 0, 4, 0);
labelLeftA0.Location = new Point(5, 5);
labelLeftA0.Margin = new Padding(2, 0, 2, 0);
labelLeftA0.Name = "labelLeftA0";
labelLeftA0.Size = new Size(104, 32);
labelLeftA0.Size = new Size(53, 15);
labelLeftA0.TabIndex = 11;
labelLeftA0.Text = "Platform";
//
// trackA0
//
trackA0.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackA0.Location = new Point(6, 48);
trackA0.Margin = new Padding(4, 2, 4, 2);
trackA0.Location = new Point(3, 24);
trackA0.Margin = new Padding(2, 1, 2, 1);
trackA0.Maximum = 180;
trackA0.Minimum = 10;
trackA0.Name = "trackA0";
trackA0.Size = new Size(513, 90);
trackA0.Size = new Size(254, 45);
trackA0.TabIndex = 10;
trackA0.TickFrequency = 5;
trackA0.TickStyle = TickStyle.TopLeft;
trackA0.Value = 125;
//
// panelBoost
//
panelBoost.Controls.Add(comboBoost);
panelBoost.Controls.Add(labelBoost);
panelBoost.Dock = DockStyle.Top;
panelBoost.Location = new Point(0, 33);
panelBoost.Margin = new Padding(2, 2, 2, 2);
panelBoost.Name = "panelBoost";
panelBoost.Size = new Size(261, 32);
panelBoost.TabIndex = 13;
//
// panelTitleCPU
//
panelTitleCPU.AutoSize = true;
@@ -569,8 +657,9 @@ namespace GHelper
panelTitleCPU.Controls.Add(labelPowerLimits);
panelTitleCPU.Dock = DockStyle.Top;
panelTitleCPU.Location = new Point(0, 0);
panelTitleCPU.Margin = new Padding(2, 2, 2, 2);
panelTitleCPU.Name = "panelTitleCPU";
panelTitleCPU.Size = new Size(523, 66);
panelTitleCPU.Size = new Size(261, 33);
panelTitleCPU.TabIndex = 42;
//
// pictureBox1
@@ -578,10 +667,10 @@ namespace GHelper
pictureBox1.BackgroundImage = Properties.Resources.icons8_processor_96;
pictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
pictureBox1.InitialImage = null;
pictureBox1.Location = new Point(18, 18);
pictureBox1.Margin = new Padding(4, 2, 4, 10);
pictureBox1.Location = new Point(5, 9);
pictureBox1.Margin = new Padding(2, 1, 2, 5);
pictureBox1.Name = "pictureBox1";
pictureBox1.Size = new Size(36, 38);
pictureBox1.Size = new Size(18, 19);
pictureBox1.TabIndex = 40;
pictureBox1.TabStop = false;
//
@@ -589,12 +678,12 @@ namespace GHelper
//
labelPowerLimits.AutoSize = true;
labelPowerLimits.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelPowerLimits.Location = new Point(62, 20);
labelPowerLimits.Margin = new Padding(4, 0, 4, 0);
labelPowerLimits.Location = new Point(24, 10);
labelPowerLimits.Margin = new Padding(2, 0, 2, 0);
labelPowerLimits.Name = "labelPowerLimits";
labelPowerLimits.Size = new Size(229, 32);
labelPowerLimits.Size = new Size(79, 15);
labelPowerLimits.TabIndex = 39;
labelPowerLimits.Text = "Power Limits (PPT)";
labelPowerLimits.Text = "Power Limits";
//
// panelGPU
//
@@ -605,10 +694,11 @@ namespace GHelper
panelGPU.Controls.Add(panelGPUCore);
panelGPU.Controls.Add(panelTitleGPU);
panelGPU.Dock = DockStyle.Top;
panelGPU.Location = new Point(10, 0);
panelGPU.Location = new Point(5, 0);
panelGPU.Margin = new Padding(2, 2, 2, 2);
panelGPU.Name = "panelGPU";
panelGPU.Padding = new Padding(0, 0, 0, 18);
panelGPU.Size = new Size(523, 652);
panelGPU.Padding = new Padding(0, 0, 0, 9);
panelGPU.Size = new Size(261, 290);
panelGPU.TabIndex = 44;
//
// panelGPUTemp
@@ -619,18 +709,20 @@ namespace GHelper
panelGPUTemp.Controls.Add(labelGPUTempTitle);
panelGPUTemp.Controls.Add(trackGPUTemp);
panelGPUTemp.Dock = DockStyle.Top;
panelGPUTemp.Location = new Point(0, 485);
panelGPUTemp.Location = new Point(0, 219);
panelGPUTemp.Margin = new Padding(2, 2, 2, 2);
panelGPUTemp.MaximumSize = new Size(0, 62);
panelGPUTemp.Name = "panelGPUTemp";
panelGPUTemp.Size = new Size(523, 149);
panelGPUTemp.Size = new Size(261, 62);
panelGPUTemp.TabIndex = 47;
//
// labelGPUTemp
//
labelGPUTemp.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelGPUTemp.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUTemp.Location = new Point(378, 14);
labelGPUTemp.Location = new Point(189, 7);
labelGPUTemp.Margin = new Padding(2, 0, 2, 0);
labelGPUTemp.Name = "labelGPUTemp";
labelGPUTemp.Size = new Size(130, 32);
labelGPUTemp.Size = new Size(62, 16);
labelGPUTemp.TabIndex = 44;
labelGPUTemp.Text = "87C";
labelGPUTemp.TextAlign = ContentAlignment.TopRight;
@@ -638,21 +730,21 @@ namespace GHelper
// labelGPUTempTitle
//
labelGPUTempTitle.AutoSize = true;
labelGPUTempTitle.Location = new Point(10, 14);
labelGPUTempTitle.Location = new Point(5, 7);
labelGPUTempTitle.Margin = new Padding(2, 0, 2, 0);
labelGPUTempTitle.Name = "labelGPUTempTitle";
labelGPUTempTitle.Size = new Size(173, 32);
labelGPUTempTitle.Size = new Size(85, 15);
labelGPUTempTitle.TabIndex = 43;
labelGPUTempTitle.Text = "Thermal Target";
//
// trackGPUTemp
//
trackGPUTemp.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackGPUTemp.Location = new Point(6, 57);
trackGPUTemp.Margin = new Padding(4, 2, 4, 2);
trackGPUTemp.Location = new Point(3, 28);
trackGPUTemp.Margin = new Padding(2, 1, 2, 1);
trackGPUTemp.Maximum = 87;
trackGPUTemp.Minimum = 75;
trackGPUTemp.Name = "trackGPUTemp";
trackGPUTemp.Size = new Size(502, 90);
trackGPUTemp.Size = new Size(248, 45);
trackGPUTemp.TabIndex = 42;
trackGPUTemp.TickFrequency = 5;
trackGPUTemp.TickStyle = TickStyle.TopLeft;
@@ -666,18 +758,20 @@ namespace GHelper
panelGPUBoost.Controls.Add(labelGPUBoostTitle);
panelGPUBoost.Controls.Add(trackGPUBoost);
panelGPUBoost.Dock = DockStyle.Top;
panelGPUBoost.Location = new Point(0, 345);
panelGPUBoost.Location = new Point(0, 157);
panelGPUBoost.Margin = new Padding(2, 2, 2, 2);
panelGPUBoost.MaximumSize = new Size(0, 62);
panelGPUBoost.Name = "panelGPUBoost";
panelGPUBoost.Size = new Size(523, 140);
panelGPUBoost.Size = new Size(261, 62);
panelGPUBoost.TabIndex = 46;
//
// labelGPUBoost
//
labelGPUBoost.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelGPUBoost.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUBoost.Location = new Point(374, 14);
labelGPUBoost.Location = new Point(187, 7);
labelGPUBoost.Margin = new Padding(2, 0, 2, 0);
labelGPUBoost.Name = "labelGPUBoost";
labelGPUBoost.Size = new Size(130, 32);
labelGPUBoost.Size = new Size(62, 16);
labelGPUBoost.TabIndex = 44;
labelGPUBoost.Text = "25W";
labelGPUBoost.TextAlign = ContentAlignment.TopRight;
@@ -685,21 +779,21 @@ namespace GHelper
// labelGPUBoostTitle
//
labelGPUBoostTitle.AutoSize = true;
labelGPUBoostTitle.Location = new Point(10, 14);
labelGPUBoostTitle.Location = new Point(5, 7);
labelGPUBoostTitle.Margin = new Padding(2, 0, 2, 0);
labelGPUBoostTitle.Name = "labelGPUBoostTitle";
labelGPUBoostTitle.Size = new Size(174, 32);
labelGPUBoostTitle.Size = new Size(87, 15);
labelGPUBoostTitle.TabIndex = 43;
labelGPUBoostTitle.Text = "Dynamic Boost";
//
// trackGPUBoost
//
trackGPUBoost.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackGPUBoost.Location = new Point(6, 48);
trackGPUBoost.Margin = new Padding(4, 2, 4, 2);
trackGPUBoost.Location = new Point(3, 24);
trackGPUBoost.Margin = new Padding(2, 1, 2, 1);
trackGPUBoost.Maximum = 25;
trackGPUBoost.Minimum = 5;
trackGPUBoost.Name = "trackGPUBoost";
trackGPUBoost.Size = new Size(502, 90);
trackGPUBoost.Size = new Size(248, 45);
trackGPUBoost.TabIndex = 42;
trackGPUBoost.TickFrequency = 5;
trackGPUBoost.TickStyle = TickStyle.TopLeft;
@@ -713,18 +807,20 @@ namespace GHelper
panelGPUMemory.Controls.Add(labelGPUMemoryTitle);
panelGPUMemory.Controls.Add(trackGPUMemory);
panelGPUMemory.Dock = DockStyle.Top;
panelGPUMemory.Location = new Point(0, 205);
panelGPUMemory.Location = new Point(0, 95);
panelGPUMemory.Margin = new Padding(2, 2, 2, 2);
panelGPUMemory.MaximumSize = new Size(0, 62);
panelGPUMemory.Name = "panelGPUMemory";
panelGPUMemory.Size = new Size(523, 140);
panelGPUMemory.Size = new Size(261, 62);
panelGPUMemory.TabIndex = 45;
//
// labelGPUMemory
//
labelGPUMemory.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelGPUMemory.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUMemory.Location = new Point(378, 14);
labelGPUMemory.Location = new Point(172, 7);
labelGPUMemory.Margin = new Padding(2, 0, 2, 0);
labelGPUMemory.Name = "labelGPUMemory";
labelGPUMemory.Size = new Size(130, 32);
labelGPUMemory.Size = new Size(80, 16);
labelGPUMemory.TabIndex = 44;
labelGPUMemory.Text = "2000 MHz";
labelGPUMemory.TextAlign = ContentAlignment.TopRight;
@@ -732,21 +828,21 @@ namespace GHelper
// labelGPUMemoryTitle
//
labelGPUMemoryTitle.AutoSize = true;
labelGPUMemoryTitle.Location = new Point(10, 14);
labelGPUMemoryTitle.Location = new Point(5, 7);
labelGPUMemoryTitle.Margin = new Padding(2, 0, 2, 0);
labelGPUMemoryTitle.Name = "labelGPUMemoryTitle";
labelGPUMemoryTitle.Size = new Size(241, 32);
labelGPUMemoryTitle.Size = new Size(120, 15);
labelGPUMemoryTitle.TabIndex = 43;
labelGPUMemoryTitle.Text = "Memory Clock Offset";
//
// trackGPUMemory
//
trackGPUMemory.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackGPUMemory.LargeChange = 100;
trackGPUMemory.Location = new Point(6, 48);
trackGPUMemory.Margin = new Padding(4, 2, 4, 2);
trackGPUMemory.Location = new Point(3, 24);
trackGPUMemory.Margin = new Padding(2, 1, 2, 1);
trackGPUMemory.Maximum = 300;
trackGPUMemory.Name = "trackGPUMemory";
trackGPUMemory.Size = new Size(502, 90);
trackGPUMemory.Size = new Size(248, 45);
trackGPUMemory.SmallChange = 10;
trackGPUMemory.TabIndex = 42;
trackGPUMemory.TickFrequency = 50;
@@ -760,32 +856,33 @@ namespace GHelper
panelGPUCore.Controls.Add(trackGPUCore);
panelGPUCore.Controls.Add(labelGPUCoreTitle);
panelGPUCore.Dock = DockStyle.Top;
panelGPUCore.Location = new Point(0, 66);
panelGPUCore.Location = new Point(0, 33);
panelGPUCore.Margin = new Padding(2, 2, 2, 2);
panelGPUCore.MaximumSize = new Size(0, 62);
panelGPUCore.Name = "panelGPUCore";
panelGPUCore.Size = new Size(523, 139);
panelGPUCore.Size = new Size(261, 62);
panelGPUCore.TabIndex = 44;
//
// labelGPUCore
//
labelGPUCore.Anchor = AnchorStyles.Top | AnchorStyles.Right;
labelGPUCore.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPUCore.Location = new Point(378, 15);
labelGPUCore.Location = new Point(163, 8);
labelGPUCore.Margin = new Padding(2, 0, 2, 0);
labelGPUCore.Name = "labelGPUCore";
labelGPUCore.Size = new Size(130, 32);
labelGPUCore.Size = new Size(88, 16);
labelGPUCore.TabIndex = 29;
labelGPUCore.Text = "1500 MHz";
labelGPUCore.TextAlign = ContentAlignment.TopRight;
//
// trackGPUCore
//
trackGPUCore.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
trackGPUCore.LargeChange = 100;
trackGPUCore.Location = new Point(6, 47);
trackGPUCore.Margin = new Padding(4, 2, 4, 2);
trackGPUCore.Location = new Point(3, 24);
trackGPUCore.Margin = new Padding(2, 1, 2, 1);
trackGPUCore.Maximum = 300;
trackGPUCore.Name = "trackGPUCore";
trackGPUCore.RightToLeft = RightToLeft.No;
trackGPUCore.Size = new Size(502, 90);
trackGPUCore.Size = new Size(248, 45);
trackGPUCore.SmallChange = 10;
trackGPUCore.TabIndex = 18;
trackGPUCore.TickFrequency = 50;
@@ -794,9 +891,10 @@ namespace GHelper
// labelGPUCoreTitle
//
labelGPUCoreTitle.AutoSize = true;
labelGPUCoreTitle.Location = new Point(10, 15);
labelGPUCoreTitle.Location = new Point(5, 8);
labelGPUCoreTitle.Margin = new Padding(2, 0, 2, 0);
labelGPUCoreTitle.Name = "labelGPUCoreTitle";
labelGPUCoreTitle.Size = new Size(201, 32);
labelGPUCoreTitle.Size = new Size(100, 15);
labelGPUCoreTitle.TabIndex = 17;
labelGPUCoreTitle.Text = "Core Clock Offset";
//
@@ -808,8 +906,9 @@ namespace GHelper
panelTitleGPU.Controls.Add(labelGPU);
panelTitleGPU.Dock = DockStyle.Top;
panelTitleGPU.Location = new Point(0, 0);
panelTitleGPU.Margin = new Padding(2, 2, 2, 2);
panelTitleGPU.Name = "panelTitleGPU";
panelTitleGPU.Size = new Size(523, 66);
panelTitleGPU.Size = new Size(261, 33);
panelTitleGPU.TabIndex = 43;
//
// pictureGPU
@@ -818,10 +917,10 @@ namespace GHelper
pictureGPU.BackgroundImageLayout = ImageLayout.Zoom;
pictureGPU.ErrorImage = null;
pictureGPU.InitialImage = null;
pictureGPU.Location = new Point(18, 18);
pictureGPU.Margin = new Padding(4, 2, 4, 10);
pictureGPU.Location = new Point(5, 9);
pictureGPU.Margin = new Padding(2, 1, 2, 5);
pictureGPU.Name = "pictureGPU";
pictureGPU.Size = new Size(36, 38);
pictureGPU.Size = new Size(18, 19);
pictureGPU.TabIndex = 41;
pictureGPU.TabStop = false;
//
@@ -829,26 +928,26 @@ namespace GHelper
//
labelGPU.AutoSize = true;
labelGPU.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelGPU.Location = new Point(62, 20);
labelGPU.Margin = new Padding(4, 0, 4, 0);
labelGPU.Location = new Point(24, 10);
labelGPU.Margin = new Padding(2, 0, 2, 0);
labelGPU.Name = "labelGPU";
labelGPU.Size = new Size(162, 32);
labelGPU.Size = new Size(81, 15);
labelGPU.TabIndex = 40;
labelGPU.Text = "GPU Settings";
//
// Fans
//
AutoScaleDimensions = new SizeF(192F, 192F);
AutoScaleDimensions = new SizeF(96F, 96F);
AutoScaleMode = AutoScaleMode.Dpi;
AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
ClientSize = new Size(1340, 1310);
ClientSize = new Size(670, 655);
Controls.Add(panelFans);
Controls.Add(panelSliders);
Margin = new Padding(4, 2, 4, 2);
Margin = new Padding(2, 1, 2, 1);
MaximizeBox = false;
MinimizeBox = false;
MinimumSize = new Size(0, 1200);
MinimumSize = new Size(22, 606);
Name = "Fans";
ShowIcon = false;
ShowInTaskbar = false;
@@ -881,6 +980,7 @@ namespace GHelper
panelA0.ResumeLayout(false);
panelA0.PerformLayout();
((System.ComponentModel.ISupportInitialize)trackA0).EndInit();
panelBoost.ResumeLayout(false);
panelTitleCPU.ResumeLayout(false);
panelTitleCPU.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
@@ -962,5 +1062,10 @@ namespace GHelper
private Label labelC1;
private Label labelLeftC1;
private TrackBar trackC1;
private Panel panelBoost;
private RComboBox comboModes;
private RButton buttonAdd;
private RButton buttonRemove;
private RButton buttonRename;
}
}

View File

@@ -2,6 +2,7 @@
using GHelper.Gpu;
using System;
using System.Diagnostics;
using System.Net.Sockets;
using System.Windows.Forms.DataVisualization.Charting;
namespace GHelper
@@ -19,7 +20,7 @@ namespace GHelper
static int MinRPM, MaxRPM;
static bool powerVisible = true, gpuVisible = true;
static bool gpuVisible = true;
const int fansMax = 100;
@@ -30,6 +31,10 @@ namespace GHelper
InitializeComponent();
float dpi = ControlHelper.GetDpiScale(this).Value;
comboModes.Size = new Size((int)dpi*150, (int)dpi * 18);
comboModes.ClientSize = new Size((int)dpi * 150, (int)dpi * 18);
Text = Properties.Strings.FansAndPower;
labelPowerLimits.Text = Properties.Strings.PowerLimits;
labelInfo.Text = Properties.Strings.PPTExperimental;
@@ -47,7 +52,7 @@ namespace GHelper
labelGPUBoostTitle.Text = Properties.Strings.GPUBoost;
labelGPUTempTitle.Text = Properties.Strings.GPUTempTarget;
InitTheme();
InitTheme(true);
MinRPM = 18;
MaxRPM = HardwareControl.GetFanMax();
@@ -127,6 +132,9 @@ namespace GHelper
labelInfo.Text = Properties.Strings.PPTExperimental;
labelFansResult.Visible = false;
FillModes();
InitMode();
InitFans();
InitPower();
InitBoost();
@@ -134,11 +142,92 @@ namespace GHelper
comboBoost.SelectedValueChanged += ComboBoost_Changed;
comboModes.SelectionChangeCommitted += ComboModes_SelectedValueChanged;
comboModes.TextChanged += ComboModes_TextChanged;
comboModes.KeyPress += ComboModes_KeyPress;
Shown += Fans_Shown;
buttonAdd.Click += ButtonAdd_Click;
buttonRemove.Click += ButtonRemove_Click;
buttonRename.Click += ButtonRename_Click;
}
private void ComboModes_KeyPress(object? sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13) RenameToggle();
}
private void ComboModes_TextChanged(object? sender, EventArgs e)
{
if (comboModes.DropDownStyle == ComboBoxStyle.DropDownList) return;
if (!Modes.IsCurrentCustom()) return;
AppConfig.SetMode("mode_name", comboModes.Text);
}
private void RenameToggle()
{
if (comboModes.DropDownStyle == ComboBoxStyle.DropDownList)
comboModes.DropDownStyle = ComboBoxStyle.Simple;
else
{
var mode = Modes.GetCurrent();
FillModes();
comboModes.SelectedValue = mode;
}
}
private void ButtonRename_Click(object? sender, EventArgs e)
{
RenameToggle();
}
private void ButtonRemove_Click(object? sender, EventArgs e)
{
int mode = Modes.GetCurrent();
if (!Modes.IsCurrentCustom()) return;
Modes.Remove(mode);
FillModes();
Program.settingsForm.SetPerformanceMode(AsusACPI.PerformanceBalanced);
}
private void FillModes()
{
comboModes.DropDownStyle = ComboBoxStyle.DropDownList;
comboModes.DataSource = new BindingSource(Modes.GetDictonary(), null);
comboModes.DisplayMember = "Value";
comboModes.ValueMember = "Key";
}
private void ButtonAdd_Click(object? sender, EventArgs e)
{
int mode = Modes.Add();
FillModes();
Program.settingsForm.SetPerformanceMode(mode);
}
public void InitMode()
{
int mode = Modes.GetCurrent();
comboModes.SelectedValue = mode;
buttonRename.Visible = buttonRemove.Visible = Modes.IsCurrentCustom();
}
private void ComboModes_SelectedValueChanged(object? sender, EventArgs e)
{
var selectedMode = comboModes.SelectedValue;
if (selectedMode == null) return;
if ((int)selectedMode == Modes.GetCurrent()) return;
Debug.WriteLine(selectedMode);
Program.settingsForm.SetPerformanceMode((int)selectedMode);
}
private void TrackGPU_MouseUp(object? sender, MouseEventArgs e)
{
@@ -171,10 +260,10 @@ namespace GHelper
{
gpuVisible = panelGPU.Visible = true;
int gpu_boost = AppConfig.getConfigPerf("gpu_boost");
int gpu_temp = AppConfig.getConfigPerf("gpu_temp");
int core = AppConfig.getConfigPerf("gpu_core");
int memory = AppConfig.getConfigPerf("gpu_memory");
int gpu_boost = AppConfig.GetMode("gpu_boost");
int gpu_temp = AppConfig.GetMode("gpu_temp");
int core = AppConfig.GetMode("gpu_core");
int memory = AppConfig.GetMode("gpu_memory");
if (gpu_boost < 0) gpu_boost = AsusACPI.MaxGPUBoost;
if (gpu_temp < 0) gpu_temp = AsusACPI.MaxGPUTemp;
@@ -236,8 +325,8 @@ namespace GHelper
TrackBar track = (TrackBar)sender;
track.Value = (int)Math.Round((float)track.Value / 5) * 5;
AppConfig.setConfigPerf("gpu_core", trackGPUCore.Value);
AppConfig.setConfigPerf("gpu_memory", trackGPUMemory.Value);
AppConfig.SetMode("gpu_core", trackGPUCore.Value);
AppConfig.SetMode("gpu_memory", trackGPUMemory.Value);
VisualiseGPUSettings();
@@ -245,8 +334,8 @@ namespace GHelper
private void trackGPUPower_Scroll(object? sender, EventArgs e)
{
AppConfig.setConfigPerf("gpu_boost", trackGPUBoost.Value);
AppConfig.setConfigPerf("gpu_temp", trackGPUTemp.Value);
AppConfig.SetMode("gpu_boost", trackGPUBoost.Value);
AppConfig.SetMode("gpu_temp", trackGPUTemp.Value);
VisualiseGPUSettings();
}
@@ -279,9 +368,6 @@ namespace GHelper
break;
}
if (Program.settingsForm.perfName.Length > 0)
labelFans.Text = Properties.Strings.FanProfiles + ": " + Program.settingsForm.perfName;
chart.Titles[0].Text = title;
chart.ChartAreas[0].AxisX.Minimum = 10;
@@ -312,8 +398,6 @@ namespace GHelper
public void FormPosition()
{
panelSliders.Visible = gpuVisible || powerVisible;
if (Height > Program.settingsForm.Height)
{
Top = Program.settingsForm.Top + Program.settingsForm.Height - Height;
@@ -349,11 +433,11 @@ namespace GHelper
private void ComboBoost_Changed(object? sender, EventArgs e)
{
if (AppConfig.getConfigPerf("auto_boost") != comboBoost.SelectedIndex)
if (AppConfig.GetMode("auto_boost") != comboBoost.SelectedIndex)
{
NativeMethods.SetCPUBoost(comboBoost.SelectedIndex);
AppConfig.setConfigPerf("auto_boost", comboBoost.SelectedIndex);
}
AppConfig.SetMode("auto_boost", comboBoost.SelectedIndex);
}
private void CheckApplyPower_Click(object? sender, EventArgs e)
@@ -361,7 +445,7 @@ namespace GHelper
if (sender is null) return;
CheckBox chk = (CheckBox)sender;
AppConfig.setConfigPerf("auto_apply_power", chk.Checked ? 1 : 0);
AppConfig.SetMode("auto_apply_power", chk.Checked ? 1 : 0);
Program.settingsForm.SetPerformanceMode();
}
@@ -371,7 +455,7 @@ namespace GHelper
if (sender is null) return;
CheckBox chk = (CheckBox)sender;
AppConfig.setConfigPerf("auto_apply", chk.Checked ? 1 : 0);
AppConfig.SetMode("auto_apply", chk.Checked ? 1 : 0);
Program.settingsForm.SetPerformanceMode();
}
@@ -402,7 +486,7 @@ namespace GHelper
bool modeB0 = Program.acpi.IsAllAmdPPT();
bool modeC1 = Program.acpi.DeviceGet(AsusACPI.PPT_APUC1) >= 0;
powerVisible = panelPower.Visible = modeA0;
panelA0.Visible = modeA0;
panelB0.Visible = modeB0;
@@ -424,7 +508,7 @@ namespace GHelper
int limit_cpu;
int limit_fast;
bool apply = AppConfig.isConfigPerf("auto_apply_power");
bool apply = AppConfig.IsMode("auto_apply_power");
if (changed)
{
@@ -434,9 +518,9 @@ namespace GHelper
}
else
{
limit_total = AppConfig.getConfigPerf("limit_total");
limit_cpu = AppConfig.getConfigPerf("limit_cpu");
limit_fast = AppConfig.getConfigPerf("limit_fast");
limit_total = AppConfig.GetMode("limit_total");
limit_cpu = AppConfig.GetMode("limit_cpu");
limit_fast = AppConfig.GetMode("limit_fast");
}
if (limit_total < 0) limit_total = AsusACPI.DefaultTotal;
@@ -462,9 +546,9 @@ namespace GHelper
labelB0.Text = trackB0.Value.ToString() + "W";
labelC1.Text = trackC1.Value.ToString() + "W";
AppConfig.setConfigPerf("limit_total", limit_total);
AppConfig.setConfigPerf("limit_cpu", limit_cpu);
AppConfig.setConfigPerf("limit_fast", limit_fast);
AppConfig.SetMode("limit_total", limit_total);
AppConfig.SetMode("limit_cpu", limit_cpu);
AppConfig.SetMode("limit_fast", limit_fast);
}
@@ -484,7 +568,7 @@ namespace GHelper
// Middle / system fan check
if (!AsusACPI.IsEmptyCurve(Program.acpi.GetFanCurve(AsusFan.Mid)))
{
AppConfig.setConfig("mid_fan", 1);
AppConfig.Set("mid_fan", 1);
chartCount++;
chartMid.Visible = true;
SetChart(chartMid, AsusFan.Mid);
@@ -492,13 +576,13 @@ namespace GHelper
}
else
{
AppConfig.setConfig("mid_fan", 0);
AppConfig.Set("mid_fan", 0);
}
// XG Mobile Fan check
if (Program.acpi.IsXGConnected())
{
AppConfig.setConfig("xgm_fan", 1);
AppConfig.Set("xgm_fan", 1);
chartCount++;
chartXGM.Visible = true;
SetChart(chartXGM, AsusFan.XGM);
@@ -506,7 +590,7 @@ namespace GHelper
}
else
{
AppConfig.setConfig("xgm_fan", 0);
AppConfig.Set("xgm_fan", 0);
}
try
@@ -526,9 +610,7 @@ namespace GHelper
LoadProfile(seriesCPU, AsusFan.CPU);
LoadProfile(seriesGPU, AsusFan.GPU);
int auto_apply = AppConfig.getConfigPerf("auto_apply");
checkApplyFans.Checked = (auto_apply == 1);
checkApplyFans.Checked = AppConfig.IsMode("auto_apply");
}
@@ -542,15 +624,14 @@ namespace GHelper
series.Points.Clear();
int mode = AppConfig.getConfig("performance_mode");
byte[] curve = AppConfig.getFanConfig(device);
byte[] curve = AppConfig.GetFanConfig(device);
if (reset || AsusACPI.IsInvalidCurve(curve))
{
curve = Program.acpi.GetFanCurve(device, mode);
curve = Program.acpi.GetFanCurve(device, Modes.GetCurrentBase());
if (AsusACPI.IsInvalidCurve(curve))
curve = AppConfig.getDefaultCurve(device);
curve = AppConfig.GetDefaultCurve(device);
curve = AsusACPI.FixFanCurve(curve);
@@ -581,7 +662,7 @@ namespace GHelper
i++;
}
AppConfig.setFanConfig(device, curve);
AppConfig.SetFanConfig(device, curve);
//Program.wmi.SetFanCurve(device, curve);
}
@@ -593,21 +674,21 @@ namespace GHelper
LoadProfile(seriesCPU, AsusFan.CPU, true);
LoadProfile(seriesGPU, AsusFan.GPU, true);
if (AppConfig.isConfig("mid_fan"))
if (AppConfig.Is("mid_fan"))
LoadProfile(seriesMid, AsusFan.Mid, true);
if (AppConfig.isConfig("xgm_fan"))
if (AppConfig.Is("xgm_fan"))
LoadProfile(seriesXGM, AsusFan.XGM, true);
checkApplyFans.Checked = false;
checkApplyPower.Checked = false;
AppConfig.setConfigPerf("auto_apply", 0);
AppConfig.setConfigPerf("auto_apply_power", 0);
AppConfig.SetMode("auto_apply", 0);
AppConfig.SetMode("auto_apply_power", 0);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "Mode");
if (Program.acpi.IsXGConnected())
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, Modes.GetCurrentBase(), "Mode");
if (Program.acpi.IsXGConnected())
AsusUSB.ResetXGM();
if (gpuVisible)
@@ -617,10 +698,10 @@ namespace GHelper
trackGPUBoost.Value = AsusACPI.MaxGPUBoost;
trackGPUTemp.Value = AsusACPI.MaxGPUTemp;
AppConfig.setConfigPerf("gpu_boost", trackGPUBoost.Value);
AppConfig.setConfigPerf("gpu_temp", trackGPUTemp.Value);
AppConfig.setConfigPerf("gpu_core", trackGPUCore.Value);
AppConfig.setConfigPerf("gpu_memory", trackGPUMemory.Value);
AppConfig.SetMode("gpu_boost", trackGPUBoost.Value);
AppConfig.SetMode("gpu_temp", trackGPUTemp.Value);
AppConfig.SetMode("gpu_core", trackGPUCore.Value);
AppConfig.SetMode("gpu_memory", trackGPUMemory.Value);
VisualiseGPUSettings();
Program.settingsForm.SetGPUClocks(true);
@@ -639,10 +720,10 @@ namespace GHelper
SaveProfile(seriesCPU, AsusFan.CPU);
SaveProfile(seriesGPU, AsusFan.GPU);
if (AppConfig.isConfig("mid_fan"))
if (AppConfig.Is("mid_fan"))
SaveProfile(seriesMid, AsusFan.Mid);
if (AppConfig.isConfig("xgm_fan"))
if (AppConfig.Is("xgm_fan"))
SaveProfile(seriesXGM, AsusFan.XGM);
Program.settingsForm.AutoFans();
@@ -734,7 +815,7 @@ namespace GHelper
for (int i = 0; i < series.Points.Count; i++)
{
series.Points[i].XValue = Math.Max(20, Math.Min(100, series.Points[i].XValue + deltaX));
series.Points[i].YValues[0] = Math.Max(0, Math.Min(100, series.Points[i].YValues[0]+deltaY));
series.Points[i].YValues[0] = Math.Max(0, Math.Min(100, series.Points[i].YValues[0] + deltaY));
}
}

View File

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

View File

@@ -91,43 +91,6 @@ public class NvidiaGpuControl : IGpuControl
}
private static void RunCMD(string name, string args)
{
var cmd = new Process();
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.FileName = name;
cmd.StartInfo.Arguments = args;
cmd.Start();
Logger.WriteLine(cmd.StandardOutput.ReadToEnd());
cmd.WaitForExit();
}
public bool RestartGPUPnP()
{
if (!IsValid) return false;
try
{
PhysicalGPU internalGpu = _internalGpu!;
var pnpDeviceId = internalGpu.BusInformation.PCIIdentifiers.ToString();
Logger.WriteLine("Device ID:" + pnpDeviceId);
RunCMD("pnputil", $"/disable-device /deviceid \"{pnpDeviceId}\"");
Thread.Sleep(3000);
RunCMD("pnputil", $"/enable-device /deviceid \"{pnpDeviceId}\"");
Thread.Sleep(2000);
return true;
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
return false;
}
}
public bool RestartGPU()
{
@@ -135,7 +98,7 @@ public class NvidiaGpuControl : IGpuControl
{
string script = @"$device = Get-PnpDevice | Where-Object { $_.FriendlyName -imatch 'NVIDIA' -and $_.Class -eq 'Display' }; Disable-PnpDevice $device.InstanceId -Confirm:$false; Start-Sleep -Seconds 3; Enable-PnpDevice $device.InstanceId -Confirm:$false";
Logger.WriteLine(script);
RunCMD("powershell", script);
ProcessHelper.RunCMD("powershell", script);
//Thread.Sleep(2000);
return true;
}
@@ -148,8 +111,8 @@ public class NvidiaGpuControl : IGpuControl
public int SetClocksFromConfig()
{
int core = AppConfig.getConfig("gpu_core");
int memory = AppConfig.getConfig("gpu_memory");
int core = AppConfig.Get("gpu_core",0);
int memory = AppConfig.Get("gpu_memory",0);
int status = SetClocks(core, memory);
return status;
}

View File

@@ -19,7 +19,7 @@ public static class HardwareControl
public static int GetFanMax()
{
int max = 58;
int configMax = AppConfig.getConfig("fan_max");
int configMax = AppConfig.Get("fan_max");
if (configMax > 100) configMax = 0; // skipping inadvequate settings
if (AppConfig.ContainsModel("401")) max = 72;
@@ -29,7 +29,7 @@ public static class HardwareControl
public static void SetFanMax(int fan)
{
AppConfig.setConfig("fan_max", fan);
AppConfig.Set("fan_max", fan);
}
public static string FormatFan(int fan)
{
@@ -43,7 +43,7 @@ public static class HardwareControl
int fanMax = GetFanMax();
if (fan > fanMax && fan < 110) SetFanMax(fan);
if (AppConfig.getConfig("fan_rpm") == 1)
if (AppConfig.Is("fan_rpm"))
return GHelper.Properties.Strings.FanSpeed + (fan * 100).ToString() + "RPM";
else
return GHelper.Properties.Strings.FanSpeed + Math.Min(Math.Round((float)fan / fanMax * 100), 100).ToString() + "%"; // relatively to 6000 rpm
@@ -189,7 +189,7 @@ public static class HardwareControl
List<string> tokill = new() { "EADesktop", "RadeonSoftware", "epicgameslauncher", "ASUSSmartDisplayControl" };
if (AppConfig.isConfig("kill_gpu_apps"))
if (AppConfig.Is("kill_gpu_apps"))
{
tokill.Add("nvdisplay.container");
tokill.Add("nvcontainer");
@@ -198,7 +198,7 @@ public static class HardwareControl
foreach (string kill in tokill) ProcessHelper.KillByName(kill);
if (AppConfig.isConfig("kill_gpu_apps") && GpuControl is not null)
if (AppConfig.Is("kill_gpu_apps") && GpuControl is not null)
{
GpuControl.KillGPUApps();
}

View File

@@ -86,9 +86,9 @@ namespace GHelper
int kb_timeout;
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
kb_timeout = AppConfig.getConfig("keyboard_ac_timeout", 0);
kb_timeout = AppConfig.Get("keyboard_ac_timeout", 0);
else
kb_timeout = AppConfig.getConfig("keyboard_timeout", 60);
kb_timeout = AppConfig.Get("keyboard_timeout", 60);
if (kb_timeout == 0) return;
@@ -115,14 +115,16 @@ namespace GHelper
if (!OptimizationService.IsRunning())
listener = new KeyboardListener(HandleEvent);
else
Logger.WriteLine("Optimization service is running");
InitBacklightTimer();
}
public void InitBacklightTimer()
{
timer.Enabled = (AppConfig.getConfig("keyboard_timeout") > 0 && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) ||
(AppConfig.getConfig("keyboard_ac_timeout") > 0 && SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online);
timer.Enabled = (AppConfig.Get("keyboard_timeout") > 0 && SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online) ||
(AppConfig.Get("keyboard_ac_timeout") > 0 && SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online);
}
@@ -132,11 +134,11 @@ namespace GHelper
hook.UnregisterAll();
// CTRL + SHIFT + F5 to cycle profiles
if (AppConfig.getConfig("keybind_profile") != -1) keyProfile = (Keys)AppConfig.getConfig("keybind_profile");
if (AppConfig.getConfig("keybind_app") != -1) keyApp = (Keys)AppConfig.getConfig("keybind_app");
if (AppConfig.Get("keybind_profile") != -1) keyProfile = (Keys)AppConfig.Get("keybind_profile");
if (AppConfig.Get("keybind_app") != -1) keyApp = (Keys)AppConfig.Get("keybind_app");
string actionM1 = AppConfig.getConfigString("m1");
string actionM2 = AppConfig.getConfigString("m2");
string actionM1 = AppConfig.GetString("m1");
string actionM2 = AppConfig.GetString("m2");
if (keyProfile != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyProfile);
if (keyApp != Keys.None) hook.RegisterHotKey(ModifierKeys.Shift | ModifierKeys.Control, keyApp);
@@ -147,14 +149,14 @@ namespace GHelper
// FN-Lock group
if (AppConfig.isConfig("fn_lock") && !AppConfig.ContainsModel("VivoBook"))
if (AppConfig.Is("fn_lock") && !AppConfig.ContainsModel("VivoBook"))
for (Keys i = Keys.F1; i <= Keys.F11; i++) hook.RegisterHotKey(ModifierKeys.None, i);
}
static void CustomKey(string configKey = "m3")
{
string command = AppConfig.getConfigString(configKey + "_custom");
string command = AppConfig.GetString(configKey + "_custom");
int intKey;
try
@@ -195,12 +197,12 @@ namespace GHelper
KeyProcess("m3");
return;
case Keys.F11:
OptimizationEvent(199);
HandleEvent(199);
return;
}
}
if (AppConfig.ContainsModel("GA401I"))
if (AppConfig.ContainsModel("GA401I") && !AppConfig.ContainsModel("GA401IHR"))
{
switch (e.Key)
{
@@ -223,10 +225,10 @@ namespace GHelper
KeyboardHook.KeyPress(Keys.VolumeMute);
break;
case Keys.F2:
OptimizationEvent(197);
HandleEvent(197);
break;
case Keys.F3:
OptimizationEvent(196);
HandleEvent(196);
break;
case Keys.F4:
KeyProcess("fnf4");
@@ -240,21 +242,21 @@ namespace GHelper
case Keys.F7:
if (AppConfig.ContainsModel("TUF"))
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, ScreenBrightness.Adjust(-10) + "%", ToastIcon.BrightnessDown);
OptimizationEvent(16);
HandleOptimizationEvent(16);
break;
case Keys.F8:
if (AppConfig.ContainsModel("TUF"))
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, ScreenBrightness.Adjust(+10) + "%", ToastIcon.BrightnessUp);
OptimizationEvent(32);
HandleOptimizationEvent(32);
break;
case Keys.F9:
KeyboardHook.KeyWinPress(Keys.P);
break;
case Keys.F10:
OptimizationEvent(107);
HandleOptimizationEvent(107);
break;
case Keys.F11:
OptimizationEvent(108);
HandleOptimizationEvent(108);
break;
case Keys.F12:
KeyboardHook.KeyWinPress(Keys.A);
@@ -282,7 +284,7 @@ namespace GHelper
public static void KeyProcess(string name = "m3")
{
string action = AppConfig.getConfigString(name);
string action = AppConfig.GetString(name);
if (action is null || action.Length <= 1)
{
@@ -310,6 +312,7 @@ namespace GHelper
KeyboardHook.KeyPress(Keys.Snapshot);
break;
case "screen":
Logger.WriteLine("Screen off toggle");
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
break;
case "miniled":
@@ -339,6 +342,12 @@ namespace GHelper
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
}
break;
case "brightness_up":
HandleOptimizationEvent(32);
break;
case "brightness_down":
HandleOptimizationEvent(16);
break;
case "custom":
CustomKey(name);
break;
@@ -358,8 +367,8 @@ namespace GHelper
static void ToggleFnLock()
{
int fnLock = AppConfig.isConfig("fn_lock") ? 0 : 1;
AppConfig.setConfig("fn_lock", fnLock);
int fnLock = AppConfig.Is("fn_lock") ? 0 : 1;
AppConfig.Set("fn_lock", fnLock);
if (AppConfig.ContainsModel("VivoBook"))
Program.acpi.DeviceSet(AsusACPI.FnLock, (fnLock == 1) ? 0 : 1, "FnLock");
@@ -406,16 +415,55 @@ namespace GHelper
case 189: // Tablet mode
TabletMode();
return;
case 197: // FN+F2
SetBacklight(-1);
return;
case 196: // FN+F3
SetBacklight(1);
return;
case 199: // ON Z13 - FN+F11 - cycles backlight
SetBacklight(4);
return;
case 53: // FN+F6 on GA-502DU model
NativeMethods.TurnOffScreen(Program.settingsForm.Handle);
return;
}
if (!OptimizationService.IsRunning()) OptimizationEvent(EventID);
if (!OptimizationService.IsRunning())
HandleOptimizationEvent(EventID);
// Asus Optimization service Events
}
static void HandleOptimizationEvent(int EventID)
{
switch (EventID)
{
case 16: // FN+F7
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Down, "Brightness");
break;
case 32: // FN+F8
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.Brightness_Up, "Brightness");
break;
case 107: // FN+F10
bool touchpadState = GetTouchpadState();
AsusUSB.TouchpadToggle();
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, touchpadState ? "Off" : "On", ToastIcon.Touchpad);
break;
case 108: // FN+F11
Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.KB_Sleep, "Sleep");
break;
}
}
public static int GetBacklight()
{
int backlight_power = AppConfig.getConfig("keyboard_brightness", 1);
int backlight_battery = AppConfig.getConfig("keyboard_brightness_ac", 1);
int backlight_power = AppConfig.Get("keyboard_brightness", 1);
int backlight_battery = AppConfig.Get("keyboard_brightness_ac", 1);
bool onBattery = SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online;
int backlight;
@@ -430,13 +478,14 @@ namespace GHelper
{
if (init) AsusUSB.Init();
if (!OptimizationService.IsRunning()) AsusUSB.ApplyBrightness(GetBacklight(), "Auto");
//if (!OptimizationService.IsRunning())
AsusUSB.ApplyBrightness(GetBacklight(), "Auto");
}
public static void SetBacklight(int delta)
{
int backlight_power = AppConfig.getConfig("keyboard_brightness", 1);
int backlight_battery = AppConfig.getConfig("keyboard_brightness_ac", 1);
int backlight_power = AppConfig.Get("keyboard_brightness", 1);
int backlight_battery = AppConfig.Get("keyboard_brightness_ac", 1);
bool onBattery = SystemInformation.PowerStatus.PowerLineStatus != PowerLineStatus.Online;
int backlight = onBattery ? backlight_battery : backlight_power;
@@ -447,51 +496,18 @@ namespace GHelper
backlight = Math.Max(Math.Min(3, backlight + delta), 0);
if (onBattery)
AppConfig.setConfig("keyboard_brightness_ac", backlight);
AppConfig.Set("keyboard_brightness_ac", backlight);
else
AppConfig.setConfig("keyboard_brightness", backlight);
AppConfig.Set("keyboard_brightness", backlight);
AsusUSB.ApplyBrightness(backlight, "HotKey");
string[] backlightNames = new string[] { "Off", "Low", "Mid", "Max" };
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, backlightNames[backlight], delta > 0 ? ToastIcon.BacklightUp : ToastIcon.BacklightDown);
}
static void OptimizationEvent(int EventID)
{
// Asus Optimization service Events
switch (EventID)
if (!OptimizationService.IsRunning())
{
case 197: // FN+F2
SetBacklight(-1);
break;
case 196: // FN+F3
SetBacklight(1);
break;
case 199: // ON Z13 - FN+F11 - cycles backlight
SetBacklight(4);
break;
case 16: // FN+F7
Program.acpi.DeviceSet(AsusACPI.UniversalControl, 0x10, "Brightness");
break;
case 32: // FN+F8
Program.acpi.DeviceSet(AsusACPI.UniversalControl, 0x20, "Brightness");
break;
case 107: // FN+F10
bool touchpadState = GetTouchpadState();
AsusUSB.TouchpadToggle();
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, touchpadState ? "Off" : "On", ToastIcon.Touchpad);
break;
case 108: // FN+F11
Program.acpi.DeviceSet(AsusACPI.UniversalControl, 0x6c, "Sleep");
//NativeMethods.SetSuspendState(false, true, true);
break;
AsusUSB.ApplyBrightness(backlight, "HotKey");
string[] backlightNames = new string[] { "Off", "Low", "Mid", "Max" };
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, backlightNames[backlight], delta > 0 ? ToastIcon.BacklightUp : ToastIcon.BacklightDown);
}
}
}
static void LaunchProcess(string command = "")
{

156
app/Modes.cs Normal file
View File

@@ -0,0 +1,156 @@
using Microsoft.VisualBasic.Devices;
namespace GHelper
{
internal class Modes
{
const int maxModes = 20;
public static Dictionary<int, string> GetDictonary()
{
Dictionary<int, string> modes = new Dictionary<int, string>
{
{2, Properties.Strings.Silent},
{0, Properties.Strings.Balanced},
{1, Properties.Strings.Turbo}
};
for (int i = 3; i < maxModes; i++)
{
if (Exists(i)) modes.Add(i, GetName(i));
}
return modes;
}
public static List<int> GetList()
{
List<int> modes = new() { 2, 0, 1 };
for (int i = 3; i < maxModes; i++)
{
if (Exists(i)) modes.Add(i);
}
return modes;
}
public static void Remove(int mode)
{
List<string> cleanup = new() {
"mode_base",
"mode_name",
"limit_total",
"limit_fast",
"limit_cpu",
"limit_total",
"fan_profile_cpu",
"fan_profile_gpu",
"fan_profile_mid",
"gpu_boost",
"gpu_temp",
"gpu_core",
"gpu_memory",
"auto_boost",
"auto_apply",
"auto_apply_power"
};
foreach (string clean in cleanup)
{
AppConfig.Remove(clean + "_" + mode);
}
}
public static int Add()
{
for (int i = 3; i < maxModes; i++)
{
if (!Exists(i))
{
int modeBase = GetCurrentBase();
string nameName = "Custom " + (i - 2);
AppConfig.Set("mode_base_" + i, modeBase);
AppConfig.Set("mode_name_" + i, nameName);
return i;
}
}
return -1;
}
public static int GetCurrent()
{
return AppConfig.Get("performance_mode");
}
public static bool IsCurrentCustom()
{
return GetCurrent() > 2;
}
public static void SetCurrent(int mode)
{
AppConfig.Set("performance_" + (int)SystemInformation.PowerStatus.PowerLineStatus, mode);
AppConfig.Set("performance_mode", mode);
}
public static int GetCurrentBase()
{
return GetBase(GetCurrent());
}
public static string GetCurrentName()
{
return GetName(GetCurrent());
}
public static bool Exists(int mode)
{
return GetBase(mode) >= 0;
}
public static int GetBase(int mode)
{
if (mode >= 0 && mode <= 2)
return mode;
else
return AppConfig.Get("mode_base_" + mode);
}
public static string GetName(int mode)
{
switch (mode)
{
case 0:
return Properties.Strings.Balanced;
case 1:
return Properties.Strings.Turbo;
case 2:
return Properties.Strings.Silent;
default:
return AppConfig.GetString("mode_name_" + mode);
}
}
public static int GetNext(bool back = false)
{
var modes = GetList();
int index = modes.IndexOf(GetCurrent());
if (back)
{
index--;
if (index < 0) index = modes.Count - 1;
return modes[index];
}
else
{
index++;
if (index > modes.Count - 1) index = 0;
return modes[index];
}
}
}
}

View File

@@ -636,7 +636,7 @@ public class NativeMethods
var devices = GetAllDevices().ToArray();
int count = 0, displayNum = -1;
string internalName = AppConfig.getConfigString("internal_display");
string internalName = AppConfig.GetString("internal_display");
foreach (var device in devices)
{
@@ -645,7 +645,7 @@ public class NativeMethods
device.monitorFriendlyDeviceName == internalName)
{
displayNum = count;
AppConfig.setConfig("internal_display", device.monitorFriendlyDeviceName);
AppConfig.Set("internal_display", device.monitorFriendlyDeviceName);
}
count++;
//Logger.WriteLine(device.monitorFriendlyDeviceName + ":" + device.outputTechnology.ToString());
@@ -724,6 +724,14 @@ public class NativeMethods
int iRet = NativeMethods.ChangeDisplaySettingsEx(laptopScreen, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
Logger.WriteLine("Screen = " + frequency.ToString() + "Hz : " + (iRet == 0 ? "OK" : iRet));
//Fallback scenario
if (iRet != 0)
{
Thread.Sleep(300);
iRet = NativeMethods.ChangeDisplaySettingsEx(laptopScreen, ref dm, IntPtr.Zero, DisplaySettingsFlags.CDS_UPDATEREGISTRY, IntPtr.Zero);
Logger.WriteLine("Screen = " + frequency.ToString() + "Hz : " + (iRet == 0 ? "OK" : iRet));
}
return iRet;
}
@@ -796,9 +804,25 @@ public class NativeMethods
public static void SetPowerScheme(string scheme)
{
PowerSetActiveScheme(IntPtr.Zero, new Guid(scheme));
PowerSetActiveOverlayScheme(new Guid(scheme));
Logger.WriteLine(scheme);
List<string> overlays = new() {
"00000000-0000-0000-0000-000000000000",
"ded574b5-45a0-4f42-8737-46345c09c238",
"961cc777-2547-4f9d-8174-7d86181b8a7a",
"3af9B8d9-7c97-431d-ad78-34a8bfea439f"
};
if (overlays.Contains(scheme))
{
PowerSetActiveOverlayScheme(new Guid(scheme));
Logger.WriteLine("Power mode:" + scheme);
}
else
{
PowerSetActiveScheme(IntPtr.Zero, new Guid(scheme));
Logger.WriteLine("Power plan:" + scheme);
}
}
public static void SetPowerScheme(int mode)

View File

@@ -1,13 +1,27 @@
using System.Text.RegularExpressions;
using System.Text;
using Microsoft.Win32;
using System.Diagnostics;
using Microsoft.Win32;
using System.Text;
using System.Text.RegularExpressions;
namespace GHelper
{
public static class OptimizationService
{
public static void SetChargeLimit (int newValue)
static List<string> services = new() {
"AsusAppService",
"ASUSLinkNear",
"ASUSLinkRemote",
"ASUSSoftwareManager",
"ASUSSwitch",
"ASUSSystemAnalysis",
"ASUSSystemDiagnosis",
"ArmouryCrateControlInterface",
"AsusCertService",
"ASUSOptimization"
};
public static void SetChargeLimit(int newValue)
{
// Set the path to the .ini file
string path = @"C:\ProgramData\ASUS\ASUS System Control Interface\ASUSOptimization\Customization.ini";
@@ -41,8 +55,18 @@ namespace GHelper
return (Process.GetProcessesByName("AsusOptimization").Count() > 0);
}
public static int GetRunningCount()
{
int count = 0;
foreach (string service in services)
{
if (Process.GetProcessesByName(service).Count() > 0) count++;
}
return count;
}
public static void SetBacklightOffDelay(int value = 60)
public static void SetBacklightOffDelay(int value = 60)
{
try
{
@@ -60,6 +84,23 @@ namespace GHelper
}
public static void StopAsusServices()
{
foreach (string service in services)
{
ProcessHelper.StopDisableService(service);
}
}
public static void StartAsusServices()
{
foreach (string service in services)
{
ProcessHelper.StartEnableService(service);
}
}
}
}

View File

@@ -57,8 +57,14 @@ namespace GHelper
startInfo.FileName = Application.ExecutablePath;
startInfo.Arguments = param;
startInfo.Verb = "runas";
Process.Start(startInfo);
Application.Exit();
try
{
Process.Start(startInfo);
Application.Exit();
} catch (Exception ex)
{
Logger.WriteLine(ex.Message);
}
}
}
@@ -92,6 +98,48 @@ namespace GHelper
}
}
public static void StopDisableService(string serviceName)
{
try
{
string script = $"Set-Service -Name \"{serviceName}\" -Status stopped -StartupType disabled";
Logger.WriteLine(script);
RunCMD("powershell", script);
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
}
public static void StartEnableService(string serviceName)
{
try
{
string script = $"Set-Service -Name \"{serviceName}\" -Status running -StartupType Automatic";
Logger.WriteLine(script);
RunCMD("powershell", script);
}
catch (Exception ex)
{
Logger.WriteLine(ex.ToString());
}
}
public static void RunCMD(string name, string args)
{
var cmd = new Process();
cmd.StartInfo.UseShellExecute = false;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.FileName = name;
cmd.StartInfo.Arguments = args;
cmd.Start();
Logger.WriteLine(cmd.StandardOutput.ReadToEnd());
cmd.WaitForExit();
}
}
}

View File

@@ -2,7 +2,6 @@ using Microsoft.Win32;
using System.Diagnostics;
using System.Globalization;
using System.Reflection;
using System.Security.Principal;
using static NativeMethods;
namespace GHelper
@@ -37,15 +36,18 @@ namespace GHelper
string action = "";
if (args.Length > 0) action = args[0];
string language = AppConfig.getConfigString("language");
string language = AppConfig.GetString("language");
if (language != null && language.Length > 0)
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(language);
else
Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentUICulture;
{
var culture = CultureInfo.CurrentUICulture;
if (culture.ToString() == "kr") culture = CultureInfo.GetCultureInfo("ko");
Thread.CurrentThread.CurrentUICulture = culture;
}
Debug.WriteLine(CultureInfo.CurrentUICulture);
//Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture("fr");
ProcessHelper.CheckAlreadyRunning();
@@ -135,7 +137,7 @@ namespace GHelper
public static void SetAutoModes()
public static void SetAutoModes(bool powerChanged = false)
{
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 3000) return;
@@ -146,8 +148,8 @@ namespace GHelper
inputDispatcher.Init();
settingsForm.SetBatteryChargeLimit(AppConfig.getConfig("charge_limit"));
settingsForm.AutoPerformance();
settingsForm.SetBatteryChargeLimit(AppConfig.Get("charge_limit"));
settingsForm.AutoPerformance(powerChanged);
bool switched = settingsForm.AutoGPUMode();
@@ -163,11 +165,9 @@ namespace GHelper
private static void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
if (SystemInformation.PowerStatus.PowerLineStatus == isPlugged) return;
Logger.WriteLine("Power Mode Changed");
SetAutoModes();
SetAutoModes(true);
}
@@ -177,8 +177,16 @@ namespace GHelper
if (settingsForm.Visible) settingsForm.HideAll();
else
{
settingsForm.Left = Screen.FromControl(settingsForm).WorkingArea.Width - 10 - settingsForm.Width;
settingsForm.Top = Screen.FromControl(settingsForm).WorkingArea.Height - 10 - settingsForm.Height;
settingsForm.Show();
settingsForm.Activate();
settingsForm.Left = Screen.FromControl(settingsForm).WorkingArea.Width - 10 - settingsForm.Width;
settingsForm.Top = Screen.FromControl(settingsForm).WorkingArea.Height - 10 - settingsForm.Height;
settingsForm.VisualiseGPUMode();
switch (action)
@@ -190,6 +198,11 @@ namespace GHelper
case "gpurestart":
settingsForm.RestartGPU(false);
break;
case "services":
settingsForm.keyb = new Extra();
settingsForm.keyb.Show();
settingsForm.keyb.ServiesToggle();
break;
}
}
}

View File

@@ -110,6 +110,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_add_64 {
get {
object obj = ResourceManager.GetObject("icons8_add_64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -130,6 +140,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_charged_battery_96 {
get {
object obj = ResourceManager.GetObject("icons8_charged_battery_96", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -140,6 +160,26 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_charging_battery_96 {
get {
object obj = ResourceManager.GetObject("icons8_charging_battery_96", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_edit_32 {
get {
object obj = ResourceManager.GetObject("icons8_edit_32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -340,6 +380,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_remove_64 {
get {
object obj = ResourceManager.GetObject("icons8_remove_64", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
@@ -350,6 +400,16 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_share_32 {
get {
object obj = ResourceManager.GetObject("icons8_share_32", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View File

@@ -238,4 +238,22 @@
<data name="icons8-software-48" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-software-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_charged_battery_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-charged-battery-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_charging_battery_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-charging-battery-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_add_64" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-add-64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_edit_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-edit-32.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>
<data name="icons8_share_32" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8-share-32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -177,6 +177,15 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Asus Services Running.
/// </summary>
internal static string AsusServicesRunning {
get {
return ResourceManager.GetString("AsusServicesRunning", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Breathe.
/// </summary>
@@ -339,6 +348,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Brightness Down.
/// </summary>
internal static string BrightnessDown {
get {
return ResourceManager.GetString("BrightnessDown", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Brightness Up.
/// </summary>
internal static string BrightnessUp {
get {
return ResourceManager.GetString("BrightnessUp", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Color.
/// </summary>
@@ -889,7 +916,7 @@ namespace GHelper.Properties {
}
/// <summary>
/// Looks up a localized string similar to Performance Mode.
/// Looks up a localized string similar to Mode.
/// </summary>
internal static string PerformanceMode {
get {
@@ -916,7 +943,7 @@ namespace GHelper.Properties {
}
/// <summary>
/// Looks up a localized string similar to Power Limits (PPT).
/// Looks up a localized string similar to Power Limits.
/// </summary>
internal static string PowerLimits {
get {
@@ -925,7 +952,7 @@ namespace GHelper.Properties {
}
/// <summary>
/// Looks up a localized string similar to Power Limits (PPT) is experimental feature. Use carefully and on your own risk!.
/// Looks up a localized string similar to Power Limits is experimental feature. Use carefully and on your own risk!.
/// </summary>
internal static string PPTExperimental {
get {
@@ -1023,6 +1050,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Start.
/// </summary>
internal static string Start {
get {
return ResourceManager.GetString("Start", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Starting Services.
/// </summary>
internal static string StartingServices {
get {
return ResourceManager.GetString("StartingServices", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Startup Error.
/// </summary>
@@ -1032,6 +1077,24 @@ namespace GHelper.Properties {
}
}
/// <summary>
/// Looks up a localized string similar to Stop.
/// </summary>
internal static string Stop {
get {
return ResourceManager.GetString("Stop", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Stopping Services.
/// </summary>
internal static string StoppingServices {
get {
return ResourceManager.GetString("StoppingServices", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Toggle Aura.
/// </summary>

View File

@@ -1,5 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
@@ -314,10 +373,10 @@
<value>Wiedergabe / Pause</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Leistungsbegrenzung (PPT)</value>
<value>Leistungsbegrenzung</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Leistungsbegrenzung (PPT) ist experimentell. Nutzung erfolgt auf eigene Gefahr!</value>
<value>Leistungsbegrenzung ist experimentell. Nutzung erfolgt auf eigene Gefahr!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Druck</value>

View File

@@ -156,6 +156,9 @@
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Auto-ajustar plan de energía Windows</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Servicios de Asus en ejecución</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Respiración</value>
</data>
@@ -201,12 +204,21 @@
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Límite de carga</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>Actualizaciones de BIOS y Drivers</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Al arrancar</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Brillo</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Bajar brillo</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Subir brillo</value>
</data>
<data name="Color" xml:space="preserve">
<value>Color</value>
</data>
@@ -228,6 +240,9 @@
<data name="DownloadUpdate" xml:space="preserve">
<value>Descargar actualización</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>Drivers y Software</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Deshabilita la dGPU para ahorrar batería</value>
</data>
@@ -276,7 +291,7 @@
<data name="GPUChanging" xml:space="preserve">
<value>Cargando</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Core Clock Offset</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
@@ -297,7 +312,7 @@
<data name="GPUSettings" xml:space="preserve">
<value>Ajustes de GPU</value>
</data>
<data name="GPUTempTarget" xml:space="preserve">
<data name="GPUTempTarget" xml:space="preserve">
<value>Temperatura objetivo</value>
</data>
<data name="KeyBindings" xml:space="preserve">
@@ -330,7 +345,7 @@
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<data name="MatrixAudio" xml:space="preserve">
<value>Visualizador de audio</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
@@ -397,10 +412,10 @@
<value>Reproducir / Pausar</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Límites de energía (PPT)</value>
<value>Límites de energía</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Los límites de energía (PPT) son una característica experimental. ¡Úselo con cuidado y bajo su propio riesgo!</value>
<value>Los límites de energía son una característica experimental. ¡Úselo con cuidado y bajo su propio riesgo!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Capturar pantalla</value>
@@ -409,7 +424,7 @@
<value>Quitar</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Algo está usando la dGPU e impide usar Modo Eco. ¿Reiniciar dGPU en administrador de dispositivos? * Proceda bajo su propio riesgo.</value>
<value>Algo está usando la dGPU e impide usar Modo Eco. ¿Reiniciar dGPU en administrador de dispositivos? * Proceda bajo su propio riesgo.</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>
@@ -432,9 +447,21 @@
<data name="StandardMode" xml:space="preserve">
<value>Estándar</value>
</data>
<data name="Start" xml:space="preserve">
<value>Iniciar</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Iniciando servicios</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Error de inicio</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Detener</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Deteniendo servicios</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Alternar Aura</value>
</data>
@@ -462,6 +489,9 @@
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Actualización</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Versión</value>
</data>

View File

@@ -388,10 +388,10 @@
<value>Lecture / Pause</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Limites de puissance (PPT)</value>
<value>Limites de puissance</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Limites de puissance (PPT) est une fonctionnalité expérimentale. Faire attention, à utiliser à vos risques !</value>
<value>Limites de puissance est une fonctionnalité expérimentale. Faire attention, à utiliser à vos risques !</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Capture d'écran</value>

View File

@@ -1,5 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
@@ -287,10 +346,10 @@
<value>Play / Pause</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Power Limits (PPT)</value>
<value>Power Limits</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Power Limits (PPT) is experimental feature. Use carefully and on your own risk!</value>
<value>Power Limits is experimental feature. Use carefully and on your own risk!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>

View File

@@ -0,0 +1,510 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ACPIError" xml:space="preserve">
<value>ASUS ACPI에 연결할 수 없어 응용 프로그램이 작동하지 않습니다. Asus System Control Interface를 먼저 설치하십시오.</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>GPU 사용량이 높습니다. 비활성화 하시겠습니까?</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Eco 모드</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Ultimate 모드를 끄기 위해서는 다시 시작해야 합니다.</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Ultimate 모드를 켜기 위해서는 다시 시작해야 합니다.</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>다시 시작하시겠습니까?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>애니메이션 속도</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Anime Matrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>프로그램이 이미 실행중입니다.</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper가 이미 실행중입니다. 시스템 트레이에서 아이콘을 확인하십시오.</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>사용자 설정 팬 커브 적용</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>전력 제한 적용</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>윈도우 전원 모드 자동조절</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>실행중인 Asus 서비스</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Breathe</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Color Cycle</value>
</data>
<data name="AuraFast" xml:space="preserve">
<value>빠르게</value>
</data>
<data name="AuraNormal" xml:space="preserve">
<value>보통</value>
</data>
<data name="AuraRainbow" xml:space="preserve">
<value>Rainbow</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>느리게</value>
</data>
<data name="AuraStatic" xml:space="preserve">
<value>Static</value>
</data>
<data name="AuraStrobe" xml:space="preserve">
<value>Strobe</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>자동</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>배터리 사용 중에만 60Hz 설정</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Awake</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>배터리 사용 중 백라이트 자동 꺼짐</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>전원 연결 시 백라이트 자동 꺼짐 (0 - 항상 켜짐)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>균형</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<value>배터리 충전 제한</value>
</data>
<data name="BiosAndDriverUpdates" xml:space="preserve">
<value>바이오스/드라이버 업데이트</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Boot</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>밝기</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>밝기 감소</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>밝기 증가</value>
</data>
<data name="Color" xml:space="preserve">
<value>색상</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU 부스트</value>
</data>
<data name="Custom" xml:space="preserve">
<value>사용자 설정</value>
</data>
<data name="Default" xml:space="preserve">
<value>기본</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>화면 OD 끄기</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>방전 중</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>업데이트 다운로드</value>
</data>
<data name="DriverAndSoftware" xml:space="preserve">
<value>드라이버와 소프트웨어</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>배터리 절약을 위해 dGPU 비활성화</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Eco</value>
</data>
<data name="Extra" xml:space="preserve">
<value>추가 설정</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>추가 설정</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>공장 설정</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>팬 커브</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>CPU 팬 프로필</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>GPU 팬 프로필</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>중간 팬 프로필</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>팬 프로필</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>팬 속도/전력</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>팬: </value>
</data>
<data name="FansPower" xml:space="preserve">
<value>팬 + 전력</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Fn 키를 누르지 않고 Fn+F 핫키 작동</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>다이나믹 부스트</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>충전 중</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>코어 클럭 오프셋</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>메모리 클럭 오프셋</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>GPU 모드</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>iGPU만 사용</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>dGPU만 사용</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>GPU 설정</value>
</data>
<data name="GPUTempTarget" xml:space="preserve">
<value>목표 온도</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>키 설정</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>키보드</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>배터리 사용 중에만 백라이트 밝기 낮추기</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Eco 모드로 전환 시 GPU를 사용하는 모든 앱 중지</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>백라이트</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>키보드</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>화면</value>
</data>
<data name="Lid" xml:space="preserve">
<value>덮개</value>
</data>
<data name="Lightbar" xml:space="preserve">
<value>라이트바</value>
</data>
<data name="Logo" xml:space="preserve">
<value>로고</value>
</data>
<data name="MatrixAudio" xml:space="preserve">
<value>오디오 비주얼라이저</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Binary Banner</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>밝게</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>시계</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>어둡게</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Rog 로고</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<value>중간</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<value>끄기</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<value>사진</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>최대 주사율 설정</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>60Hz 주사율 설정</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>멀티존</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>마이크 음소거</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>G-Helper 열기</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>최적화</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>배터리 사용 중에만 Eco 모드 설정</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>최적화 모드에서 PD 충전 시 GPU 비활성화</value>
</data>
<data name="Other" xml:space="preserve">
<value>기타 설정</value>
</data>
<data name="Overdrive" xml:space="preserve">
<value>오버드라이브</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>성능 모드</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>사진 / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>재생 / 정지</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>전력 제한</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>전력 제한 은 실험적인 기능입니다. 주의하여 사용하세요!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
</data>
<data name="Quit" xml:space="preserve">
<value>종료</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>dGPU가 사용중이기 때문에 Eco 모드로 전환할 수 없습니다. 장치 관리자에서 dGPU를 재시작하시겠습니까?</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>시스템 시작 시 실행</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>꺼짐</value>
</data>
<data name="Silent" xml:space="preserve">
<value>조용</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>Sleep</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Standard 모드에서 dGPU 켜기</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Standard</value>
</data>
<data name="Start" xml:space="preserve">
<value>시작</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>서비스 시작 중</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>시작 오류</value>
</data>
<data name="Stop" xml:space="preserve">
<value>중지</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>서비스 중지 중</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Aura 토글 키</value>
</data>
<data name="ToggleFnLock" xml:space="preserve">
<value>Fn-Lock 토글 키</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Miniled 토글 키 (지원하는 기기만)</value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>화면 토글 키</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>터보</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>꺼짐</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>배터리 사용 중에는 끄기</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>노트북 화면을 dGPU와 연결, FPS 최대화</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="Updates" xml:space="preserve">
<value>업데이트</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>버전</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>볼륨 작게</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>음소거</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>볼륨 크게</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>창을 항상 맨 위로 유지</value>
</data>
</root>

View File

@@ -391,10 +391,10 @@
<value>Odtwórz / Pauza</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Limit mocy (PPT)</value>
<value>Limit mocy</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Ustawienie limitu mocy (PPT) jest funkcją eksperymentalną. Używaj ostrożnie, na własną odpowiedzialność!</value>
<value>Ustawienie limitu mocy jest funkcją eksperymentalną. Używaj ostrożnie, na własną odpowiedzialność!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Zrzut ekranu</value>
@@ -468,4 +468,4 @@
<data name="WindowTop" xml:space="preserve">
<value>Zachowaj okno aplikacji zawsze na wierzchu</value>
</data>
</root>
</root>

View File

@@ -1,350 +1,492 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>1.3</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ACPIError" xml:space="preserve">
<value>Não foi possível conectar ao ASUS ACPI. O applicativo não pode funcionar sem isso. Tente instalar Asus System Controle Interface</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Parece que o GPU está em uso pesado.</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Modo econômico</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Passar ao Modo Final implica na reinicialização do sistema</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Modo Ultimado necessita de reinicialização.</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Reiniciar agora ?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>Velocidade da Animação</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Anime Matrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>O applicativo já está em execução</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper já está em execução. Verifique a barra de sistema</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Aplicar a curva de ventilador personalizada</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Aplicar as limitações de energia</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Automaticamente ajustar os Modos de Energia Windows</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Repiração</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Ciclo de cores</value>
</data>
<data name="AuraFast" xml:space="preserve">
<value>Rápido</value>
</data>
<data name="AuraNormal" xml:space="preserve">
<value>Normal</value>
</data>
<data name="AuraRainbow" xml:space="preserve">
<value>Arco-íris</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Lento</value>
</data>
<data name="AuraStatic" xml:space="preserve">
<value>Estático</value>
</data>
<data name="AuraStrobe" xml:space="preserve">
<value>Estroboscópio</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>Automático</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>Estabelece 60Hz para economizar energia</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Acordado</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Números de segundos para desligar a luz de fundo</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>Equilibrado</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Limite de carga da bateria</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Durante o lançamento</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Luminosidade</value>
</data>
<data name="Color" xml:space="preserve">
<value>Cor</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Boost</value>
</data>
<data name="Custom" xml:space="preserve">
<value>Personalizado</value>
</data>
<data name="Default" xml:space="preserve">
<value>Padrão</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Desativar o overdrive da tela</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Descarregando</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Baixar a atualização</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Desativar o dGPU para economisar a energía</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Econômico</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Adicional</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>Configurações adicionais</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Padrão de fábrica</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Curvas de ventilador</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>Perfil de ventilador CPU</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>Perfil de ventilador GPU</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>Perfil de ventilador central</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>Perfis de ventilador</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>Ventiladores e Energía</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Ventilador</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Ventiladores + Energía</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Boost dinâmico</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Carregando</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>Modo de GPU</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>Só iGPU</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>Exclusivamente dGPU</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>Parâmetros de GPU</value>
</data>
<data name="GPUTempTarget" xml:space="preserve">
<value>Alvo de temperatura</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Teclado</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Abaixar a luz de fundo na bateria e voltar quando carregando</value>
</data>
<data name="KeyboardBacklight" xml:space="preserve">
<value>Luz de fundo do teclado</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Luz de fundo do computador</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Teclado do computador</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>Tela do computador</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Tampa</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Bandeira Binária</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Brilho</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>Relógio</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>Escuro</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Logo ROG</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<value>Médio</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<value>Desligado</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<value>Imagem</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>Taxa de atualização maxíma para abaixar a latência</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>Taxa de atualização à 60Hz para salvar energía</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multizona</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Abrir G-Helper</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>Otimizado</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Passar ao Ecônomico em bateria e voltar quando carregando</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Manter o GPU desligado com um carregador USB-C no Modo Otimizado</value>
</data>
<data name="Other" xml:space="preserve">
<value>Outro</value>
</data>
<data name="Overdrive" xml:space="preserve">
<value>Overdrive</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Modo Desempenho</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Imagem / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Reproduzir / Pausar</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Limitações de Energia (PPT)</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Limitações de Energia (PPT) é uma funcionalidade experimental. Usar isso com cuidado </value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Captura de tela</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Sair</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Aumento da frequência básica</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Aumento da frequência da memória</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Combinações de teclas</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Algum processo está usando o dGPU e impedindo o modo Econômico. Reinicialize o dGPU no gerenciador de dispositivos. Por favor, proceda por sua conta e risco. </value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Executar ao iniciar</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Desligar</value>
</data>
<data name="Silent" xml:space="preserve">
<value>Silencioso</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>Hibernação</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Liga o dGPU para uso padrão</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Padrão</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Erro ao iniciar</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Alternar Aura</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Alternar Miniled (se suportado) </value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>Alternar Tela</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>Desligado</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Desligar em bateria</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Direciona a tela do computador ao dGPU</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Versão</value>
</data>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="ACPIError" xml:space="preserve">
<value>Não foi possível conectar ao ASUS ACPI. O applicativo não pode funcionar sem isso. Tente instalar Asus System Controle Interface</value>
</data>
<data name="AlertDGPU" xml:space="preserve">
<value>Parece que o GPU está em uso pesado.</value>
</data>
<data name="AlertDGPUTitle" xml:space="preserve">
<value>Modo econômico</value>
</data>
<data name="AlertUltimateOff" xml:space="preserve">
<value>Passar ao Modo Final implica na reinicialização do sistema</value>
</data>
<data name="AlertUltimateOn" xml:space="preserve">
<value>Modo Ultimado necessita de reinicialização.</value>
</data>
<data name="AlertUltimateTitle" xml:space="preserve">
<value>Reiniciar agora ?</value>
</data>
<data name="AnimationSpeed" xml:space="preserve">
<value>Velocidade da Animação</value>
</data>
<data name="AnimeMatrix" xml:space="preserve">
<value>Anime Matrix</value>
</data>
<data name="AppAlreadyRunning" xml:space="preserve">
<value>O applicativo já está em execução</value>
</data>
<data name="AppAlreadyRunningText" xml:space="preserve">
<value>G-Helper já está em execução. Verifique a barra de sistema</value>
</data>
<data name="ApplyFanCurve" xml:space="preserve">
<value>Aplicar a curva personalizada</value>
</data>
<data name="ApplyPowerLimits" xml:space="preserve">
<value>Aplicar as limitações de energia</value>
</data>
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Ajuste automático dos modos de energia do Windows</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Serviços da Asus em execução</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Repiração</value>
</data>
<data name="AuraColorCycle" xml:space="preserve">
<value>Ciclo de cores</value>
</data>
<data name="AuraFast" xml:space="preserve">
<value>Rápido</value>
</data>
<data name="AuraNormal" xml:space="preserve">
<value>Normal</value>
</data>
<data name="AuraRainbow" xml:space="preserve">
<value>Arco-íris</value>
</data>
<data name="AuraSlow" xml:space="preserve">
<value>Lento</value>
</data>
<data name="AuraStatic" xml:space="preserve">
<value>Estático</value>
</data>
<data name="AuraStrobe" xml:space="preserve">
<value>Estroboscópio</value>
</data>
<data name="AutoMode" xml:space="preserve">
<value>Automático</value>
</data>
<data name="AutoRefreshTooltip" xml:space="preserve">
<value>Menor taxa de atualização quando estiver na bateria</value>
</data>
<data name="Awake" xml:space="preserve">
<value>Acordado</value>
</data>
<data name="BacklightTimeout" xml:space="preserve">
<value>Tempo limite da iluminação na bateria (em segundos)</value>
</data>
<data name="BacklightTimeoutPlugged" xml:space="preserve">
<value>Tempo limite da iluminação carregando (0 - sempre ligado)</value>
</data>
<data name="Balanced" xml:space="preserve">
<value>Equilibrado</value>
</data>
<data name="BatteryChargeLimit" xml:space="preserve">
<value>Limite de carga</value>
</data>
<data name="Boot" xml:space="preserve">
<value>Ao ligar</value>
</data>
<data name="Brightness" xml:space="preserve">
<value>Nível do brilho</value>
</data>
<data name="Color" xml:space="preserve">
<value>Cor</value>
</data>
<data name="CPUBoost" xml:space="preserve">
<value>CPU Boost</value>
</data>
<data name="Custom" xml:space="preserve">
<value>Personalizado</value>
</data>
<data name="Default" xml:space="preserve">
<value>Padrão</value>
</data>
<data name="DisableOverdrive" xml:space="preserve">
<value>Desativar o overdrive da tela</value>
</data>
<data name="Discharging" xml:space="preserve">
<value>Descarregando</value>
</data>
<data name="DownloadUpdate" xml:space="preserve">
<value>Baixar a atualização</value>
</data>
<data name="EcoGPUTooltip" xml:space="preserve">
<value>Desativar o dGPU para economisar a energía</value>
</data>
<data name="EcoMode" xml:space="preserve">
<value>Econômico</value>
</data>
<data name="Extra" xml:space="preserve">
<value>Adicional</value>
</data>
<data name="ExtraSettings" xml:space="preserve">
<value>Configurações adicionais</value>
</data>
<data name="FactoryDefaults" xml:space="preserve">
<value>Padrão de fábrica</value>
</data>
<data name="FanCurves" xml:space="preserve">
<value>Curvas de ventilador</value>
</data>
<data name="FanProfileCPU" xml:space="preserve">
<value>Perfil de ventilador CPU</value>
</data>
<data name="FanProfileGPU" xml:space="preserve">
<value>Perfil de ventilador GPU</value>
</data>
<data name="FanProfileMid" xml:space="preserve">
<value>Perfil de ventilador central</value>
</data>
<data name="FanProfiles" xml:space="preserve">
<value>Perfis de ventilador</value>
</data>
<data name="FansAndPower" xml:space="preserve">
<value>Ventiladores e Energía</value>
</data>
<data name="FanSpeed" xml:space="preserve">
<value>Vent</value>
</data>
<data name="FansPower" xml:space="preserve">
<value>Ventiladores + Energía</value>
</data>
<data name="FnLock" xml:space="preserve">
<value>Processar teclas de atalho Fn+F sem pressionar Fn</value>
</data>
<data name="GPUBoost" xml:space="preserve">
<value>Boost dinâmico</value>
</data>
<data name="GPUChanging" xml:space="preserve">
<value>Carregando</value>
</data>
<data name="GPUMode" xml:space="preserve">
<value>Modo de GPU</value>
</data>
<data name="GPUModeEco" xml:space="preserve">
<value>Só iGPU</value>
</data>
<data name="GPUModeStandard" xml:space="preserve">
<value>iGPU + dGPU</value>
</data>
<data name="GPUModeUltimate" xml:space="preserve">
<value>Exclusivamente dGPU</value>
</data>
<data name="GPUSettings" xml:space="preserve">
<value>Parâmetros de GPU</value>
</data>
<data name="GPUTempTarget" xml:space="preserve">
<value>Alvo de temperatura</value>
</data>
<data name="Keyboard" xml:space="preserve">
<value>Teclado</value>
</data>
<data name="KeyboardAuto" xml:space="preserve">
<value>Abaixar a luz de fundo na bateria e voltar quando carregando</value>
</data>
<data name="KeyboardBacklight" xml:space="preserve">
<value>Luz de fundo do teclado</value>
</data>
<data name="KillGpuApps" xml:space="preserve">
<value>Parar todos os aplicativos que usam a GPU ao alternar para o modo Eco</value>
</data>
<data name="LaptopBacklight" xml:space="preserve">
<value>Configurações de iluminação</value>
</data>
<data name="LaptopKeyboard" xml:space="preserve">
<value>Teclado</value>
</data>
<data name="LaptopScreen" xml:space="preserve">
<value>Tela</value>
</data>
<data name="Lid" xml:space="preserve">
<value>Tampa</value>
</data>
<data name="Logo" xml:space="preserve">
<value>Logo</value>
</data>
<data name="MatrixBanner" xml:space="preserve">
<value>Bandeira Binária</value>
</data>
<data name="MatrixBright" xml:space="preserve">
<value>Brilho</value>
</data>
<data name="MatrixClock" xml:space="preserve">
<value>Relógio</value>
</data>
<data name="MatrixDim" xml:space="preserve">
<value>Escuro</value>
</data>
<data name="MatrixLogo" xml:space="preserve">
<value>Logo ROG</value>
</data>
<data name="MatrixMedium" xml:space="preserve">
<value>Médio</value>
</data>
<data name="MatrixOff" xml:space="preserve">
<value>Desligado</value>
</data>
<data name="MatrixPicture" xml:space="preserve">
<value>Imagem</value>
</data>
<data name="MaxRefreshTooltip" xml:space="preserve">
<value>Taxa de atualização máxima e menor latência</value>
</data>
<data name="MinRefreshTooltip" xml:space="preserve">
<value>Taxa de atualização à 60Hz para economizar bateria</value>
</data>
<data name="Multizone" xml:space="preserve">
<value>Multizona</value>
</data>
<data name="MuteMic" xml:space="preserve">
<value>Desligar microfone</value>
</data>
<data name="OpenGHelper" xml:space="preserve">
<value>Abrir G-Helper</value>
</data>
<data name="Optimized" xml:space="preserve">
<value>Otimizado</value>
</data>
<data name="OptimizedGPUTooltip" xml:space="preserve">
<value>Passar ao Ecônomico em bateria e voltar quando carregando</value>
</data>
<data name="OptimizedUSBC" xml:space="preserve">
<value>Manter a GPU desativada ao usar um carregador USB-C no modo Otimizado</value>
</data>
<data name="Other" xml:space="preserve">
<value>Outro</value>
</data>
<data name="Overdrive" xml:space="preserve">
<value>Overdrive</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Modo</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Imagem / Gif</value>
</data>
<data name="PlayPause" xml:space="preserve">
<value>Reproduzir / Pausar</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Limitações de Energia</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Limitações de Energia é uma funcionalidade experimental. Use com cuidado.</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Captura de tela</value>
</data>
<data name="Quit" xml:space="preserve">
<value>Sair</value>
</data>
<data name="GPUCoreClockOffset" xml:space="preserve">
<value>Aumento da frequência básica</value>
</data>
<data name="GPUMemoryClockOffset" xml:space="preserve">
<value>Aumento da frequência da memória</value>
</data>
<data name="KeyBindings" xml:space="preserve">
<value>Combinações de teclas</value>
</data>
<data name="RPM" xml:space="preserve">
<value>RPM</value>
</data>
<data name="RestartGPU" xml:space="preserve">
<value>Algum processo está usando o dGPU e impedindo o modo Econômico. Reinicialize o dGPU no gerenciador de dispositivos. Por favor, proceda por sua conta e risco. </value>
</data>
<data name="RunOnStartup" xml:space="preserve">
<value>Executar ao iniciar</value>
</data>
<data name="Shutdown" xml:space="preserve">
<value>Desligar</value>
</data>
<data name="Silent" xml:space="preserve">
<value>Silencioso</value>
</data>
<data name="Sleep" xml:space="preserve">
<value>Hibernação</value>
</data>
<data name="StandardGPUTooltip" xml:space="preserve">
<value>Liga o dGPU para uso padrão</value>
</data>
<data name="StandardMode" xml:space="preserve">
<value>Padrão</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Erro de inicialização</value>
</data>
<data name="Start" xml:space="preserve">
<value>Iniciar</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Iniciando os serviços</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Parar</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Parando os serviços</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Alternar Aura</value>
</data>
<data name="ToggleMiniled" xml:space="preserve">
<value>Alternar Miniled (se suportado) </value>
</data>
<data name="ToggleScreen" xml:space="preserve">
<value>Alternar Tela</value>
</data>
<data name="Turbo" xml:space="preserve">
<value>Turbo</value>
</data>
<data name="TurnedOff" xml:space="preserve">
<value>Desligado</value>
</data>
<data name="TurnOffOnBattery" xml:space="preserve">
<value>Desligar em bateria</value>
</data>
<data name="UltimateGPUTooltip" xml:space="preserve">
<value>Direciona a tela do computador ao dGPU</value>
</data>
<data name="UltimateMode" xml:space="preserve">
<value>Ultimate</value>
</data>
<data name="Updates" xml:space="preserve">
<value>Atualizações</value>
</data>
<data name="VersionLabel" xml:space="preserve">
<value>Versão</value>
</data>
<data name="VolumeDown" xml:space="preserve">
<value>Abaixar o volume</value>
</data>
<data name="VolumeUp" xml:space="preserve">
<value>Aumentar o volume</value>
</data>
<data name="VolumeMute" xml:space="preserve">
<value>Mudo</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Manter o app em primeiro plano</value>
</data>
<value>Mudo</value>
</data>
<data name="WindowTop" xml:space="preserve">
<value>Manter a janela do aplicativo sempre no topo</value>
</data>
</root>

View File

@@ -156,6 +156,9 @@
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Auto adjust Windows Power Modes</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Asus Services Running</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Breathe</value>
</data>
@@ -210,6 +213,12 @@
<data name="Brightness" xml:space="preserve">
<value>Brightness</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Brightness Down</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Brightness Up</value>
</data>
<data name="Color" xml:space="preserve">
<value>Color</value>
</data>
@@ -394,7 +403,7 @@
<value>Overdrive</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Performance Mode</value>
<value>Mode</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Picture / Gif</value>
@@ -403,10 +412,10 @@
<value>Play / Pause</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Power Limits (PPT)</value>
<value>Power Limits</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Power Limits (PPT) is experimental feature. Use carefully and on your own risk!</value>
<value>Power Limits is experimental feature. Use carefully and on your own risk!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>PrintScreen</value>
@@ -438,9 +447,21 @@
<data name="StandardMode" xml:space="preserve">
<value>Standard</value>
</data>
<data name="Start" xml:space="preserve">
<value>Start</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Starting Services</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Startup Error</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Stopping Services</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Toggle Aura</value>
</data>

View File

@@ -364,10 +364,10 @@
<value>Oynat / Duraklat</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Güç Sınırları (PPT)</value>
<value>Güç Sınırları</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Güç Sınırları (PPT) deneysel bir özelliktir. Riski göze alarak dikkatli kullanın!</value>
<value>Güç Sınırları deneysel bir özelliktir. Riski göze alarak dikkatli kullanın!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Ekran Görüntüsü Al</value>

View File

@@ -156,6 +156,9 @@
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
<value>Автоматично застосовувати Windows Power Modes</value>
</data>
<data name="AsusServicesRunning" xml:space="preserve">
<value>Кількість запущених сервісів Asus</value>
</data>
<data name="AuraBreathe" xml:space="preserve">
<value>Дихання</value>
</data>
@@ -210,6 +213,12 @@
<data name="Brightness" xml:space="preserve">
<value>Яскравість</value>
</data>
<data name="BrightnessDown" xml:space="preserve">
<value>Зменшити яскравість</value>
</data>
<data name="BrightnessUp" xml:space="preserve">
<value>Підвищити яскравість</value>
</data>
<data name="Color" xml:space="preserve">
<value>Колір</value>
</data>
@@ -367,7 +376,7 @@
<value>Овердрайв</value>
</data>
<data name="PerformanceMode" xml:space="preserve">
<value>Режим Роботи</value>
<value>Режим</value>
</data>
<data name="PictureGif" xml:space="preserve">
<value>Картинка / GIF</value>
@@ -376,10 +385,10 @@
<value>Відтворення / Пауза</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Ліміти Потужності (PPT)</value>
<value>Ліміти Потужності</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Налаштування лімітів потужності (PPT) є експериментальною функцією. Використовуйте обережно та на свій страх і ризик!</value>
<value>Налаштування лімітів потужності є експериментальною функцією. Використовуйте обережно та на свій страх і ризик!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Print Screen</value>
@@ -408,9 +417,21 @@
<data name="StandardMode" xml:space="preserve">
<value>Стандартний</value>
</data>
<data name="Start" xml:space="preserve">
<value>Запустити</value>
</data>
<data name="StartingServices" xml:space="preserve">
<value>Запускаються сервіси</value>
</data>
<data name="StartupError" xml:space="preserve">
<value>Помилка запуску</value>
</data>
<data name="Stop" xml:space="preserve">
<value>Зупинити</value>
</data>
<data name="StoppingServices" xml:space="preserve">
<value>Зупиняються сервіси</value>
</data>
<data name="ToggleAura" xml:space="preserve">
<value>Аура</value>
</data>

View File

@@ -388,10 +388,10 @@
<value>Phát / Dừng</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>Giới hạn công suất (PPT)</value>
<value>Giới hạn công suất</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>Giới hạn công suất (PPT) là tính năng thử nghiệm. Sử dụng nó cẩn thận và tự chịu mọi rủi ro!</value>
<value>Giới hạn công suất là tính năng thử nghiệm. Sử dụng nó cẩn thận và tự chịu mọi rủi ro!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>Chụp màn hình</value>

View File

@@ -367,10 +367,10 @@
<value>播放/暂停</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>功率限制 (PPT)</value>
<value>功率限制</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>功率限制 (PPT) 是实验性功能。 谨慎使用,风险自负!</value>
<value>功率限制 是实验性功能。 谨慎使用,风险自负!</value>
</data>
<data name="PrintScreen" xml:space="preserve">
<value>截图</value>

View File

@@ -403,7 +403,7 @@
<value>播放/暫停</value>
</data>
<data name="PowerLimits" xml:space="preserve">
<value>功率限制 (PPT)</value>
<value>功率限制</value>
</data>
<data name="PPTExperimental" xml:space="preserve">
<value>功率限制是實驗性功能。謹慎使用,風險自負!</value>

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 406 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

View File

@@ -135,7 +135,7 @@ namespace GHelper
panelMatrix.Controls.Add(panelMatrixTitle);
panelMatrix.Controls.Add(checkMatrix);
panelMatrix.Dock = DockStyle.Top;
panelMatrix.Location = new Point(10, 783);
panelMatrix.Location = new Point(10, 891);
panelMatrix.Margin = new Padding(0);
panelMatrix.Name = "panelMatrix";
panelMatrix.Padding = new Padding(20, 20, 20, 10);
@@ -264,7 +264,7 @@ namespace GHelper
panelBattery.Controls.Add(sliderBattery);
panelBattery.Controls.Add(panelBatteryTitle);
panelBattery.Dock = DockStyle.Top;
panelBattery.Location = new Point(10, 954);
panelBattery.Location = new Point(10, 1062);
panelBattery.Margin = new Padding(0);
panelBattery.Name = "panelBattery";
panelBattery.Padding = new Padding(20);
@@ -310,7 +310,7 @@ namespace GHelper
//
pictureBattery.BackgroundImage = (Image)resources.GetObject("pictureBattery.BackgroundImage");
pictureBattery.BackgroundImageLayout = ImageLayout.Zoom;
pictureBattery.Location = new Point(6, 0);
pictureBattery.Location = new Point(4, 1);
pictureBattery.Margin = new Padding(4);
pictureBattery.Name = "pictureBattery";
pictureBattery.Size = new Size(32, 32);
@@ -320,7 +320,7 @@ namespace GHelper
// labelBatteryTitle
//
labelBatteryTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point);
labelBatteryTitle.Location = new Point(34, 0);
labelBatteryTitle.Location = new Point(42, 0);
labelBatteryTitle.Margin = new Padding(8, 0, 8, 0);
labelBatteryTitle.Name = "labelBatteryTitle";
labelBatteryTitle.Size = new Size(393, 32);
@@ -335,7 +335,7 @@ namespace GHelper
panelFooter.Controls.Add(buttonQuit);
panelFooter.Controls.Add(checkStartup);
panelFooter.Dock = DockStyle.Top;
panelFooter.Location = new Point(10, 1136);
panelFooter.Location = new Point(10, 1244);
panelFooter.Margin = new Padding(0);
panelFooter.Name = "panelFooter";
panelFooter.Padding = new Padding(20);
@@ -570,14 +570,14 @@ namespace GHelper
panelGPU.Margin = new Padding(0);
panelGPU.Name = "panelGPU";
panelGPU.Padding = new Padding(20, 20, 20, 0);
panelGPU.Size = new Size(810, 243);
panelGPU.Size = new Size(810, 351);
panelGPU.TabIndex = 37;
//
// labelTipGPU
//
labelTipGPU.Dock = DockStyle.Top;
labelTipGPU.ForeColor = SystemColors.GrayText;
labelTipGPU.Location = new Point(20, 207);
labelTipGPU.Location = new Point(20, 315);
labelTipGPU.Margin = new Padding(4, 0, 4, 0);
labelTipGPU.Name = "labelTipGPU";
labelTipGPU.Size = new Size(770, 36);
@@ -603,8 +603,8 @@ namespace GHelper
tableGPU.Name = "tableGPU";
tableGPU.RowCount = 1;
tableGPU.RowStyles.Add(new RowStyle(SizeType.Absolute, 128F));
tableGPU.RowStyles.Add(new RowStyle(SizeType.Absolute, 20F));
tableGPU.Size = new Size(770, 148);
tableGPU.RowStyles.Add(new RowStyle(SizeType.Absolute, 128F));
tableGPU.Size = new Size(770, 256);
tableGPU.TabIndex = 16;
//
// buttonEco
@@ -668,7 +668,7 @@ namespace GHelper
buttonXGM.Margin = new Padding(4);
buttonXGM.Name = "buttonXGM";
buttonXGM.Secondary = false;
buttonXGM.Size = new Size(184, 12);
buttonXGM.Size = new Size(184, 120);
buttonXGM.TabIndex = 2;
buttonXGM.Text = "XG Mobile";
buttonXGM.TextImageRelation = TextImageRelation.ImageAboveText;
@@ -771,7 +771,7 @@ namespace GHelper
panelScreen.Controls.Add(tableScreen);
panelScreen.Controls.Add(panelScreenTitle);
panelScreen.Dock = DockStyle.Top;
panelScreen.Location = new Point(10, 460);
panelScreen.Location = new Point(10, 568);
panelScreen.Margin = new Padding(0);
panelScreen.Name = "panelScreen";
panelScreen.Padding = new Padding(20, 20, 20, 10);
@@ -939,7 +939,7 @@ namespace GHelper
panelKeyboard.Controls.Add(tableLayoutKeyboard);
panelKeyboard.Controls.Add(panelKeyboardTitle);
panelKeyboard.Dock = DockStyle.Top;
panelKeyboard.Location = new Point(10, 645);
panelKeyboard.Location = new Point(10, 753);
panelKeyboard.Margin = new Padding(0);
panelKeyboard.Name = "panelKeyboard";
panelKeyboard.Padding = new Padding(20);
@@ -1113,7 +1113,7 @@ namespace GHelper
panelVersion.Controls.Add(labelVersion);
panelVersion.Controls.Add(labelModel);
panelVersion.Dock = DockStyle.Top;
panelVersion.Location = new Point(10, 1079);
panelVersion.Location = new Point(10, 1187);
panelVersion.Name = "panelVersion";
panelVersion.Size = new Size(810, 57);
panelVersion.TabIndex = 41;

View File

@@ -23,7 +23,7 @@ namespace GHelper
public string versionUrl = "http://github.com/seerge/g-helper/releases";
public string perfName = "Balanced";
public string modeName = "Balanced";
public AniMatrix matrix;
public Fans fans;
@@ -79,6 +79,7 @@ namespace GHelper
buttonSilent.BorderColor = colorEco;
buttonBalanced.BorderColor = colorStandard;
buttonTurbo.BorderColor = colorTurbo;
buttonFans.BorderColor = colorCustom;
buttonEco.BorderColor = colorEco;
buttonStandard.BorderColor = colorStandard;
@@ -176,7 +177,7 @@ namespace GHelper
labelModel.Text = model + (ProcessHelper.IsUserAdministrator() ? "." : "");
TopMost = AppConfig.getConfig("topmost") == 1;
TopMost = AppConfig.Is("topmost");
SetContextMenu();
@@ -188,6 +189,16 @@ namespace GHelper
}
private void SettingsForm_VisibleChanged(object? sender, EventArgs e)
{
aTimer.Enabled = this.Visible;
if (this.Visible)
{
InitScreen();
InitXGM();
}
}
private void ButtonUpdates_Click(object? sender, EventArgs e)
{
if (updates == null || updates.Text == "")
@@ -247,8 +258,9 @@ namespace GHelper
public void SetContextMenu()
{
contextMenuStrip.Items.Clear();
var mode = Modes.GetCurrent();
contextMenuStrip.Items.Clear();
Padding padding = new Padding(15, 5, 5, 5);
var title = new ToolStripMenuItem(Properties.Strings.PerformanceMode);
@@ -259,17 +271,19 @@ namespace GHelper
menuSilent = new ToolStripMenuItem(Properties.Strings.Silent);
menuSilent.Click += ButtonSilent_Click;
menuSilent.Margin = padding;
menuSilent.Checked = (mode == AsusACPI.PerformanceSilent);
contextMenuStrip.Items.Add(menuSilent);
menuBalanced = new ToolStripMenuItem(Properties.Strings.Balanced);
menuBalanced.Click += ButtonBalanced_Click;
menuBalanced.Margin = padding;
menuBalanced.Checked = (mode == AsusACPI.PerformanceBalanced);
contextMenuStrip.Items.Add(menuBalanced);
menuTurbo = new ToolStripMenuItem(Properties.Strings.Turbo);
menuTurbo.Click += ButtonTurbo_Click;
menuTurbo.Checked = true;
menuTurbo.Margin = padding;
menuTurbo.Checked = (mode == AsusACPI.PerformanceTurbo);
contextMenuStrip.Items.Add(menuTurbo);
contextMenuStrip.Items.Add("-");
@@ -351,10 +365,12 @@ namespace GHelper
else
{
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
AsusUSB.ApplyXGMLight(AppConfig.Is("xmg_light"));
await Task.Delay(TimeSpan.FromSeconds(15));
if (AppConfig.isConfigPerf("auto_apply"))
AsusUSB.SetXGMFan(AppConfig.getFanConfig(AsusFan.XGM));
if (AppConfig.IsMode("auto_apply"))
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
}
BeginInvoke(delegate
@@ -405,13 +421,13 @@ namespace GHelper
if (gitVersion.CompareTo(appVersion) > 0)
{
SetVersionLabel(Properties.Strings.DownloadUpdate + ": " + tag, url);
if (AppConfig.getConfigString("skip_version") != tag)
if (AppConfig.GetString("skip_version") != tag)
{
DialogResult dialogResult = MessageBox.Show(Properties.Strings.DownloadUpdate + ": G-Helper " + tag + "?", "Update", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
AutoUpdate(url);
else
AppConfig.setConfig("skip_version", tag);
AppConfig.Set("skip_version", tag);
}
}
@@ -552,14 +568,14 @@ namespace GHelper
private void ButtonOptimized_Click(object? sender, EventArgs e)
{
AppConfig.setConfig("gpu_auto", (AppConfig.getConfig("gpu_auto") == 1) ? 0 : 1);
AppConfig.Set("gpu_auto", (AppConfig.Get("gpu_auto") == 1) ? 0 : 1);
VisualiseGPUMode();
AutoGPUMode();
}
private void ButtonScreenAuto_Click(object? sender, EventArgs e)
{
AppConfig.setConfig("screen_auto", 1);
AppConfig.Set("screen_auto", 1);
InitScreen();
AutoScreen();
}
@@ -584,7 +600,7 @@ namespace GHelper
{
if (sender is null) return;
CheckBox check = (CheckBox)sender;
AppConfig.setConfig("matrix_auto", check.Checked ? 1 : 0);
AppConfig.Set("matrix_auto", check.Checked ? 1 : 0);
matrix?.SetMatrix();
}
@@ -611,8 +627,8 @@ namespace GHelper
if (fileName is not null)
{
AppConfig.setConfig("matrix_picture", fileName);
AppConfig.setConfig("matrix_running", 2);
AppConfig.Set("matrix_picture", fileName);
AppConfig.Set("matrix_running", 2);
matrix?.SetMatrixPicture(fileName);
BeginInvoke(delegate
@@ -626,21 +642,21 @@ namespace GHelper
private void ComboMatrixRunning_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("matrix_running", comboMatrixRunning.SelectedIndex);
AppConfig.Set("matrix_running", comboMatrixRunning.SelectedIndex);
matrix?.SetMatrix();
}
private void ComboMatrix_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("matrix_brightness", comboMatrix.SelectedIndex);
AppConfig.Set("matrix_brightness", comboMatrix.SelectedIndex);
matrix?.SetMatrix();
}
private void LabelCPUFan_Click(object? sender, EventArgs e)
{
AppConfig.setConfig("fan_rpm", (AppConfig.getConfig("fan_rpm") == 1) ? 0 : 1);
AppConfig.Set("fan_rpm", (AppConfig.Get("fan_rpm") == 1) ? 0 : 1);
RefreshSensors(true);
}
@@ -653,7 +669,7 @@ namespace GHelper
if (colorDlg.ShowDialog() == DialogResult.OK)
{
AppConfig.setConfig("aura_color2", colorDlg.Color.ToArgb());
AppConfig.Set("aura_color2", colorDlg.Color.ToArgb());
SetAura();
}
}
@@ -709,17 +725,17 @@ namespace GHelper
if (colorDlg.ShowDialog() == DialogResult.OK)
{
AppConfig.setConfig("aura_color", colorDlg.Color.ToArgb());
AppConfig.Set("aura_color", colorDlg.Color.ToArgb());
SetAura();
}
}
public void InitAura()
{
AsusUSB.Mode = AppConfig.getConfig("aura_mode");
AsusUSB.Speed = AppConfig.getConfig("aura_speed");
AsusUSB.SetColor(AppConfig.getConfig("aura_color"));
AsusUSB.SetColor2(AppConfig.getConfig("aura_color2"));
AsusUSB.Mode = AppConfig.Get("aura_mode");
AsusUSB.Speed = AppConfig.Get("aura_speed");
AsusUSB.SetColor(AppConfig.Get("aura_color"));
AsusUSB.SetColor2(AppConfig.Get("aura_color2"));
comboKeyboard.DropDownStyle = ComboBoxStyle.DropDownList;
comboKeyboard.DataSource = new BindingSource(AsusUSB.GetModes(), null);
@@ -755,13 +771,13 @@ namespace GHelper
return;
}
int brightness = AppConfig.getConfig("matrix_brightness");
int running = AppConfig.getConfig("matrix_running");
int brightness = AppConfig.Get("matrix_brightness");
int running = AppConfig.Get("matrix_running");
comboMatrix.SelectedIndex = (brightness != -1) ? Math.Min(brightness, comboMatrix.Items.Count - 1) : 0;
comboMatrixRunning.SelectedIndex = (running != -1) ? Math.Min(running, comboMatrixRunning.Items.Count - 1) : 0;
checkMatrix.Checked = (AppConfig.getConfig("matrix_auto") == 1);
checkMatrix.Checked = (AppConfig.Get("matrix_auto") == 1);
checkMatrix.CheckedChanged += CheckMatrix_CheckedChanged;
}
@@ -769,10 +785,10 @@ namespace GHelper
public void SetAura()
{
AsusUSB.Mode = AppConfig.getConfig("aura_mode");
AsusUSB.Speed = AppConfig.getConfig("aura_speed");
AsusUSB.SetColor(AppConfig.getConfig("aura_color"));
AsusUSB.SetColor2(AppConfig.getConfig("aura_color2"));
AsusUSB.Mode = AppConfig.Get("aura_mode");
AsusUSB.Speed = AppConfig.Get("aura_speed");
AsusUSB.SetColor(AppConfig.Get("aura_color"));
AsusUSB.SetColor2(AppConfig.Get("aura_color2"));
pictureColor.BackColor = AsusUSB.Color1;
pictureColor2.BackColor = AsusUSB.Color2;
@@ -792,27 +808,27 @@ namespace GHelper
private void ComboKeyboard_SelectedValueChanged(object? sender, EventArgs e)
{
AppConfig.setConfig("aura_mode", (int)comboKeyboard.SelectedValue);
AppConfig.Set("aura_mode", (int)comboKeyboard.SelectedValue);
SetAura();
}
private void Button120Hz_Click(object? sender, EventArgs e)
{
AppConfig.setConfig("screen_auto", 0);
AppConfig.Set("screen_auto", 0);
SetScreen(1000, 1);
}
private void Button60Hz_Click(object? sender, EventArgs e)
{
AppConfig.setConfig("screen_auto", 0);
AppConfig.Set("screen_auto", 0);
SetScreen(60, 0);
}
public void ToogleMiniled()
{
int miniled = (AppConfig.getConfig("miniled") == 1) ? 0 : 1;
AppConfig.setConfig("miniled", miniled);
int miniled = (AppConfig.Get("miniled") == 1) ? 0 : 1;
AppConfig.Set("miniled", miniled);
SetScreen(-1, -1, miniled);
}
@@ -842,7 +858,7 @@ namespace GHelper
if (overdrive >= 0)
{
if (AppConfig.getConfig("no_overdrive") == 1) overdrive = 0;
if (AppConfig.Get("no_overdrive") == 1) overdrive = 0;
Program.acpi.DeviceSet(AsusACPI.ScreenOverdrive, overdrive, "ScreenOverdrive");
}
@@ -862,14 +878,16 @@ namespace GHelper
int frequency = NativeMethods.GetRefreshRate();
int maxFrequency = NativeMethods.GetRefreshRate(true);
bool screenAuto = (AppConfig.getConfig("screen_auto") == 1);
bool overdriveSetting = (AppConfig.getConfig("no_overdrive") != 1);
bool screenAuto = (AppConfig.Get("screen_auto") == 1);
bool overdriveSetting = (AppConfig.Get("no_overdrive") != 1);
int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
int miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled);
bool screenEnabled = (frequency >= 0);
Debug.WriteLine(frequency.ToString());
ButtonEnabled(button60Hz, screenEnabled);
ButtonEnabled(button120Hz, screenEnabled);
ButtonEnabled(buttonScreenAuto, screenEnabled);
@@ -909,15 +927,15 @@ namespace GHelper
if (miniled >= 0)
{
buttonMiniled.Activated = (miniled == 1);
AppConfig.setConfig("miniled", miniled);
AppConfig.Set("miniled", miniled);
}
else
{
buttonMiniled.Visible = false;
}
AppConfig.setConfig("frequency", frequency);
AppConfig.setConfig("overdrive", overdrive);
AppConfig.Set("frequency", frequency);
AppConfig.Set("overdrive", overdrive);
}
private void ButtonQuit_Click(object? sender, EventArgs e)
@@ -1006,38 +1024,17 @@ namespace GHelper
}
private void SettingsForm_VisibleChanged(object? sender, EventArgs e)
{
if (this.Visible)
{
InitScreen();
InitXGM();
this.Left = Screen.FromControl(this).WorkingArea.Width - 10 - this.Width;
this.Top = Screen.FromControl(this).WorkingArea.Height - 10 - this.Height;
this.Activate();
aTimer.Enabled = true;
}
else
{
aTimer.Enabled = false;
}
}
private void SetPerformanceLabel()
{
labelPerf.Text = Properties.Strings.PerformanceMode + (customFans ? "+" : "") + ((customPower > 0) ? " " + customPower + "W" : "");
labelPerf.Text = Properties.Strings.PerformanceMode + ": " + Modes.GetCurrentName() + (customFans ? "+" : "") + ((customPower > 0) ? " " + customPower + "W" : "");
}
public void SetPower()
{
int limit_total = AppConfig.getConfigPerf("limit_total");
int limit_cpu = AppConfig.getConfigPerf("limit_cpu");
int limit_fast = AppConfig.getConfigPerf("limit_fast");
int limit_total = AppConfig.GetMode("limit_total");
int limit_cpu = AppConfig.GetMode("limit_cpu");
int limit_fast = AppConfig.GetMode("limit_fast");
if (limit_total > AsusACPI.MaxTotal) return;
if (limit_total < AsusACPI.MinTotal) return;
@@ -1076,8 +1073,8 @@ namespace GHelper
public void SetGPUClocks(bool launchAsAdmin = true)
{
int gpu_core = AppConfig.getConfigPerf("gpu_core");
int gpu_memory = AppConfig.getConfigPerf("gpu_memory");
int gpu_core = AppConfig.GetMode("gpu_core");
int gpu_memory = AppConfig.GetMode("gpu_memory");
if (gpu_core == -1 && gpu_memory == -1) return;
@@ -1109,8 +1106,8 @@ namespace GHelper
public void SetGPUPower()
{
int gpu_boost = AppConfig.getConfigPerf("gpu_boost");
int gpu_temp = AppConfig.getConfigPerf("gpu_temp");
int gpu_boost = AppConfig.GetMode("gpu_boost");
int gpu_temp = AppConfig.GetMode("gpu_temp");
if (gpu_boost < AsusACPI.MinGPUBoost || gpu_boost > AsusACPI.MaxGPUBoost) return;
@@ -1139,28 +1136,28 @@ namespace GHelper
{
customFans = false;
if (AppConfig.isConfigPerf("auto_apply") || force)
if (AppConfig.IsMode("auto_apply") || force)
{
bool xgmFan = false;
if (AppConfig.isConfig("xgm_fan") && Program.acpi.IsXGConnected())
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected())
{
AsusUSB.SetXGMFan(AppConfig.getFanConfig(AsusFan.XGM));
AsusUSB.SetXGMFan(AppConfig.GetFanConfig(AsusFan.XGM));
xgmFan = true;
}
int cpuResult = Program.acpi.SetFanCurve(AsusFan.CPU, AppConfig.getFanConfig(AsusFan.CPU));
int gpuResult = Program.acpi.SetFanCurve(AsusFan.GPU, AppConfig.getFanConfig(AsusFan.GPU));
int cpuResult = Program.acpi.SetFanCurve(AsusFan.CPU, AppConfig.GetFanConfig(AsusFan.CPU));
int gpuResult = Program.acpi.SetFanCurve(AsusFan.GPU, AppConfig.GetFanConfig(AsusFan.GPU));
if (AppConfig.isConfig("mid_fan"))
Program.acpi.SetFanCurve(AsusFan.Mid, AppConfig.getFanConfig(AsusFan.Mid));
if (AppConfig.Is("mid_fan"))
Program.acpi.SetFanCurve(AsusFan.Mid, AppConfig.GetFanConfig(AsusFan.Mid));
// something went wrong, resetting to default profile
if (cpuResult != 1 || gpuResult != 1)
{
int mode = AppConfig.getConfig("performance_mode");
int mode = Modes.GetCurrentBase();
Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "Reset Mode");
LabelFansResult("ASUS BIOS rejected fan curve");
@@ -1172,7 +1169,7 @@ namespace GHelper
}
// force set PPTs for missbehaving bios on FX507/517 series
if ((AppConfig.ContainsModel("FX507") || AppConfig.ContainsModel("FX517") || xgmFan) && !AppConfig.isConfigPerf("auto_apply_power"))
if ((AppConfig.ContainsModel("FX507") || AppConfig.ContainsModel("FX517") || xgmFan) && !AppConfig.IsMode("auto_apply_power"))
{
Task.Run(async () =>
{
@@ -1190,13 +1187,13 @@ namespace GHelper
private static bool isManualModeRequired()
{
if (!AppConfig.isConfigPerf("auto_apply_power"))
if (!AppConfig.IsMode("auto_apply_power"))
return false;
return
AppConfig.isConfig("manual_mode") ||
AppConfig.ContainsModel("GU604") ||
AppConfig.ContainsModel("FX517") ||
AppConfig.Is("manual_mode") ||
AppConfig.ContainsModel("GU604") ||
AppConfig.ContainsModel("FX517") ||
AppConfig.ContainsModel("G733");
}
@@ -1205,8 +1202,8 @@ namespace GHelper
customPower = 0;
bool applyPower = AppConfig.isConfigPerf("auto_apply_power");
bool applyFans = AppConfig.isConfigPerf("auto_apply");
bool applyPower = AppConfig.IsMode("auto_apply_power");
bool applyFans = AppConfig.IsMode("auto_apply");
//bool applyGPU = true;
if (applyPower)
@@ -1246,52 +1243,78 @@ namespace GHelper
}
public void SetPerformanceMode(int PerformanceMode = -1, bool notify = false)
public void SetPerformanceMode(int mode = -1, bool notify = false)
{
int oldMode = AppConfig.getConfig("performance_mode");
if (PerformanceMode < 0) PerformanceMode = oldMode;
int oldMode = Modes.GetCurrent();
if (mode < 0) mode = oldMode;
buttonSilent.Activated = false;
buttonBalanced.Activated = false;
buttonTurbo.Activated = false;
buttonFans.Activated = false;
switch (PerformanceMode)
menuSilent.Checked = false;
menuBalanced.Checked = false;
menuTurbo.Checked = false;
switch (mode)
{
case AsusACPI.PerformanceSilent:
buttonSilent.Activated = true;
perfName = Properties.Strings.Silent;
menuSilent.Checked = true;
break;
case AsusACPI.PerformanceTurbo:
buttonTurbo.Activated = true;
perfName = Properties.Strings.Turbo;
menuTurbo.Checked = true;
break;
case AsusACPI.PerformanceBalanced:
buttonBalanced.Activated = true;
menuBalanced.Checked = true;
break;
default:
buttonBalanced.Activated = true;
PerformanceMode = AsusACPI.PerformanceBalanced;
perfName = Properties.Strings.Balanced;
if (Modes.Exists(mode))
{
buttonFans.Activated = true;
switch (Modes.GetBase(mode))
{
case AsusACPI.PerformanceSilent:
buttonFans.BorderColor = colorEco;
break;
case AsusACPI.PerformanceTurbo:
buttonFans.BorderColor = colorTurbo;
break;
default:
buttonFans.BorderColor = colorStandard;
break;
}
}
else
{
buttonBalanced.Activated = true;
menuBalanced.Checked = true;
mode = AsusACPI.PerformanceBalanced;
}
break;
}
menuSilent.Checked = buttonSilent.Activated;
menuBalanced.Checked = buttonBalanced.Activated;
menuTurbo.Checked = buttonTurbo.Activated;
AppConfig.setConfig("performance_" + (int)SystemInformation.PowerStatus.PowerLineStatus, PerformanceMode);
AppConfig.setConfig("performance_mode", PerformanceMode);
Modes.SetCurrent(mode);
SetPerformanceLabel();
if (isManualModeRequired())
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AsusACPI.PerformanceManual, "Manual Mode");
else
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, PerformanceMode, "Mode");
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, Modes.GetBase(mode), "Mode");
if (AppConfig.isConfig("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
if (AppConfig.Is("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
if (notify && (oldMode != PerformanceMode))
if (notify)
{
try
{
toast.RunToast(perfName);
toast.RunToast(Modes.GetCurrentName(), SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online ? ToastIcon.Charger : ToastIcon.Battery);
}
catch
{
@@ -1304,17 +1327,17 @@ namespace GHelper
AutoFans();
AutoPower(1000);
if (AppConfig.getConfig("auto_apply_power_plan") != 0)
if (AppConfig.Get("auto_apply_power_plan") != 0)
{
if (AppConfig.getConfigPerfString("scheme") is not null)
NativeMethods.SetPowerScheme(AppConfig.getConfigPerfString("scheme"));
if (AppConfig.GetModeString("scheme") is not null)
NativeMethods.SetPowerScheme(AppConfig.GetModeString("scheme"));
else
NativeMethods.SetPowerScheme(PerformanceMode);
NativeMethods.SetPowerScheme(Modes.GetBase(mode));
}
if (AppConfig.getConfigPerf("auto_boost") != -1)
if (AppConfig.GetMode("auto_boost") != -1)
{
NativeMethods.SetCPUBoost(AppConfig.getConfigPerf("auto_boost"));
NativeMethods.SetCPUBoost(AppConfig.GetMode("auto_boost"));
}
if (NativeMethods.PowerGetEffectiveOverlayScheme(out Guid activeScheme) == 0)
@@ -1324,6 +1347,7 @@ namespace GHelper
if (fans != null && fans.Text != "")
{
fans.InitMode();
fans.InitFans();
fans.InitPower();
fans.InitBoost();
@@ -1334,39 +1358,36 @@ namespace GHelper
public void CyclePerformanceMode()
{
int mode = AppConfig.getConfig("performance_mode");
if (Control.ModifierKeys == Keys.Shift)
mode = (mode == 0) ? 2 : mode - 1;
else
mode++;
SetPerformanceMode(mode, true);
SetPerformanceMode(Modes.GetNext(Control.ModifierKeys == Keys.Shift), true);
}
public void AutoKeyboard()
{
InputDispatcher.SetBacklightAuto(true);
if (Program.acpi.IsXGConnected())
AsusUSB.ApplyXGMLight(AppConfig.Is("xmg_light"));
if (AppConfig.ContainsModel("X16") || AppConfig.ContainsModel("X13")) InputDispatcher.TabletMode();
}
public void AutoPerformance()
public void AutoPerformance(bool powerChanged = false)
{
var Plugged = SystemInformation.PowerStatus.PowerLineStatus;
int mode = AppConfig.getConfig("performance_" + (int)Plugged);
int mode = AppConfig.Get("performance_" + (int)Plugged);
if (mode != -1)
SetPerformanceMode(mode, true);
SetPerformanceMode(mode, powerChanged);
else
SetPerformanceMode(AppConfig.getConfig("performance_mode"));
SetPerformanceMode(Modes.GetCurrent());
}
public void AutoScreen(bool force = false)
{
if (force || AppConfig.getConfig("screen_auto") == 1)
if (force || AppConfig.Is("screen_auto"))
{
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
SetScreen(1000, 1);
@@ -1375,7 +1396,7 @@ namespace GHelper
}
else
{
SetScreen(overdrive: AppConfig.getConfig("overdrive"));
SetScreen(overdrive: AppConfig.Get("overdrive"));
}
@@ -1384,7 +1405,7 @@ namespace GHelper
public static bool IsPlugged()
{
bool optimizedUSBC = AppConfig.getConfig("optimized_usbc") != 1;
bool optimizedUSBC = AppConfig.Get("optimized_usbc") != 1;
return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online &&
(optimizedUSBC || Program.acpi.DeviceGet(AsusACPI.ChargerMode) < AsusACPI.ChargerUSB);
@@ -1394,10 +1415,10 @@ namespace GHelper
public bool AutoGPUMode()
{
bool GpuAuto = AppConfig.getConfig("gpu_auto") == 1;
bool GpuAuto = AppConfig.Is("gpu_auto");
bool ForceGPU = AppConfig.ContainsModel("503");
int GpuMode = AppConfig.getConfig("gpu_mode");
int GpuMode = AppConfig.Get("gpu_mode");
if (!GpuAuto && !ForceGPU) return false;
@@ -1439,7 +1460,7 @@ namespace GHelper
public bool ReEnableGPU()
{
if (AppConfig.getConfig("gpu_reenable") != 1) return false;
if (AppConfig.Get("gpu_reenable") != 1) return false;
if (Screen.AllScreens.Length <= 1) return false;
Logger.WriteLine("Re-enabling gpu for 503 model");
@@ -1467,8 +1488,10 @@ namespace GHelper
public void InitXGM()
{
bool connected = Program.acpi.IsXGConnected();
buttonXGM.Enabled = buttonXGM.Visible = connected;
buttonXGM.Enabled = buttonXGM.Visible = Program.acpi.IsXGConnected();
if (!connected) return;
int activated = Program.acpi.DeviceGet(AsusACPI.GPUXG);
if (activated < 0) return;
@@ -1524,7 +1547,7 @@ namespace GHelper
}
AppConfig.setConfig("gpu_mode", GpuMode);
AppConfig.Set("gpu_mode", GpuMode);
ButtonEnabled(buttonOptimized, true);
ButtonEnabled(buttonEco, true);
@@ -1626,8 +1649,8 @@ namespace GHelper
public void SetGPUMode(int GPUMode)
{
int CurrentGPU = AppConfig.getConfig("gpu_mode");
AppConfig.setConfig("gpu_auto", 0);
int CurrentGPU = AppConfig.Get("gpu_mode");
AppConfig.Set("gpu_auto", 0);
if (CurrentGPU == GPUMode)
{
@@ -1674,7 +1697,7 @@ namespace GHelper
if (changed)
{
AppConfig.setConfig("gpu_mode", GPUMode);
AppConfig.Set("gpu_mode", GPUMode);
}
if (restart)
@@ -1690,9 +1713,9 @@ namespace GHelper
{
if (GPUMode == -1)
GPUMode = AppConfig.getConfig("gpu_mode");
GPUMode = AppConfig.Get("gpu_mode");
bool GPUAuto = (AppConfig.getConfig("gpu_auto") == 1);
bool GPUAuto = AppConfig.Is("gpu_auto");
buttonEco.Activated = false;
buttonStandard.Activated = false;
@@ -1724,10 +1747,13 @@ namespace GHelper
break;
}
menuEco.Checked = buttonEco.Activated;
menuStandard.Checked = buttonStandard.Activated;
menuUltimate.Checked = buttonUltimate.Activated;
menuOptimized.Checked = buttonOptimized.Activated;
if (isGpuSection)
{
menuEco.Checked = buttonEco.Activated;
menuStandard.Checked = buttonStandard.Activated;
menuUltimate.Checked = buttonUltimate.Activated;
menuOptimized.Checked = buttonOptimized.Activated;
}
}
@@ -1785,7 +1811,7 @@ namespace GHelper
Debug.WriteLine(ex);
}
AppConfig.setConfig("charge_limit", limit);
AppConfig.Set("charge_limit", limit);
}

View File

@@ -1,7 +1,6 @@
using System.Diagnostics;
using System.Drawing;
using OSD;
using System.Diagnostics;
using System.Drawing.Drawing2D;
using OSD;
namespace GHelper
@@ -52,10 +51,12 @@ namespace GHelper
Touchpad,
Microphone,
MicrophoneMute,
FnLock
FnLock,
Battery,
Charger
}
public class ToastForm : OSDNativeForm
public class ToastForm : OSDNativeForm
{
protected static string toastText = "Balanced";
@@ -72,7 +73,7 @@ namespace GHelper
protected override void PerformPaint(PaintEventArgs e)
{
Brush brush = new SolidBrush(Color.FromArgb(150,Color.Black));
Brush brush = new SolidBrush(Color.FromArgb(150, Color.Black));
Drawing.FillRoundedRectangle(e.Graphics, brush, this.Bound, 10);
StringFormat format = new StringFormat();
@@ -107,6 +108,12 @@ namespace GHelper
case ToastIcon.FnLock:
icon = Properties.Resources.icons8_function;
break;
case ToastIcon.Battery:
icon = Properties.Resources.icons8_charged_battery_96;
break;
case ToastIcon.Charger:
icon = Properties.Resources.icons8_charging_battery_96;
break;
}
@@ -136,9 +143,9 @@ namespace GHelper
Screen screen1 = Screen.FromHandle(base.Handle);
Width = 300;
Width = Math.Max(300, 100 + toastText.Length * 22);
Height = 100;
X = (screen1.Bounds.Width - this.Width)/2;
X = (screen1.Bounds.Width - this.Width) / 2;
Y = screen1.Bounds.Height - 300 - this.Height;
Show();

View File

@@ -1,21 +1,36 @@
using CustomControls;
using HidSharp;
using System.Diagnostics;
using System.Management;
using System.Net;
using System.Text.Json;
namespace GHelper
{
struct DriverDownload
{
public string categoryName;
public string title;
public string version;
public string downloadUrl;
public JsonElement hardwares;
}
public partial class Updates : RForm
{
//static int rowCount = 0;
static string model = AppConfig.GetModelShort();
static string model;
static string bios;
public Updates()
{
InitializeComponent();
InitTheme();
Text = Properties.Strings.BiosAndDriverUpdates + ": " + model + " " + GetBiosVersion();
InitBiosAndModel();
Text = Properties.Strings.BiosAndDriverUpdates + ": " + model + " " + bios;
labelBIOS.Text = "BIOS";
labelDrivers.Text = Properties.Strings.DriverAndSoftware;
@@ -30,7 +45,7 @@ namespace GHelper
Task.Run(async () =>
{
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&osid=52", 0, tableDrivers);
DriversAsync($"https://rog.asus.com/support/webapi/product/GetPDDrivers?website=global&model={model}&cpu={model}&osid=52", 0, tableDrivers);
});
Shown += Updates_Shown;
@@ -61,7 +76,7 @@ namespace GHelper
}
}
private string GetBiosVersion()
private string InitBiosAndModel()
{
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS"))
{
@@ -70,10 +85,15 @@ namespace GHelper
foreach (ManagementObject obj in objCollection)
if (obj["SMBIOSBIOSVersion"] is not null)
{
var bios = obj["SMBIOSBIOSVersion"].ToString();
int trim = bios.LastIndexOf(".");
if (trim > 0) return bios.Substring(trim + 1);
else return bios;
string[] results = obj["SMBIOSBIOSVersion"].ToString().Split(".");
if (results.Length > 1)
{
model = results[0];
bios = results[1];
} else
{
model = obj["SMBIOSBIOSVersion"].ToString();
}
}
return "";
@@ -86,23 +106,20 @@ namespace GHelper
try
{
Dictionary<string, string> devices = new();
string biosVersion = "";
if (type == 0) devices = GetDeviceVersions();
else biosVersion = GetBiosVersion();
//Debug.WriteLine(biosVersion);
using (var httpClient = new HttpClient())
using (var httpClient = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = DecompressionMethods.All
}))
{
httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate, br");
httpClient.DefaultRequestHeaders.Add("User-Agent", "C# App");
var json = await httpClient.GetStringAsync(url);
var data = JsonSerializer.Deserialize<JsonElement>(json);
var groups = data.GetProperty("Result").GetProperty("Obj");
List<string> skipList = new() { "Armoury Crate & Aura Creator Installer", "MyASUS", "ASUS Smart Display Control", "Aura Wallpaper" };
List<string> skipList = new() { "Armoury Crate & Aura Creator Installer", "MyASUS", "ASUS Smart Display Control", "Aura Wallpaper", "Virtual Pet","ROG Font V1.5" };
List<DriverDownload> drivers = new();
for (int i = 0; i < groups.GetArrayLength(); i++)
{
@@ -116,74 +133,95 @@ namespace GHelper
var file = files[j];
var title = file.GetProperty("Title").ToString();
var version = file.GetProperty("Version").ToString().Replace("V", "");
var downloadUrl = file.GetProperty("DownloadUrl").GetProperty("Global").ToString();
//Debug.WriteLine(" - " + title + " " + version + " " + downloadUrl);
if (oldTitle != title && !skipList.Contains(title))
{
JsonElement hardwares = file.GetProperty("HardwareInfoList");
bool newer = false;
if (type == 0 && hardwares.ToString().Length > 0)
for (int k = 0; k < hardwares.GetArrayLength(); k++)
{
var deviceID = hardwares[k].GetProperty("hardwareid").ToString();
var localVersion = devices.Where(p => p.Key.Contains(deviceID)).Select(p => p.Value).FirstOrDefault();
if (localVersion is not null)
{
newer = (new Version(version).CompareTo(new Version(localVersion)) > 0);
break;
}
}
var driver = new DriverDownload();
driver.categoryName = categoryName;
driver.title = title;
driver.version = file.GetProperty("Version").ToString().Replace("V", "");
driver.downloadUrl = file.GetProperty("DownloadUrl").GetProperty("Global").ToString();
driver.hardwares = file.GetProperty("HardwareInfoList");
drivers.Add(driver);
if (type == 1)
Invoke(delegate
{
newer = Int32.Parse(version) > Int32.Parse(biosVersion);
}
BeginInvoke(delegate
{
string versionText = version.Replace("latest version at the ", "");
Label versionLabel = new Label { Text = versionText, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Height = 50 };
string versionText = driver.version.Replace("latest version at the ", "");
Label versionLabel = new Label { Text = versionText, Anchor = AnchorStyles.Left, AutoSize = true };
versionLabel.Cursor = Cursors.Hand;
versionLabel.Font = new Font(versionLabel.Font, newer ? FontStyle.Underline | FontStyle.Bold : FontStyle.Underline);
versionLabel.ForeColor = newer ? colorTurbo : colorEco;
versionLabel.Font = new Font(versionLabel.Font, FontStyle.Underline);
versionLabel.ForeColor = colorEco;
versionLabel.Padding = new Padding(5, 5, 5, 5);
versionLabel.Click += delegate
{
Process.Start(new ProcessStartInfo(downloadUrl) { UseShellExecute = true });
Process.Start(new ProcessStartInfo(driver.downloadUrl) { UseShellExecute = true });
};
table.RowStyles.Add(new RowStyle(SizeType.AutoSize));
table.Controls.Add(new Label { Text = categoryName, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, table.RowCount);
table.Controls.Add(new Label { Text = title, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 1, table.RowCount);
table.Controls.Add(new Label { Text = driver.categoryName, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 0, table.RowCount);
table.Controls.Add(new Label { Text = driver.title, Anchor = AnchorStyles.Left, Dock = DockStyle.Fill, Padding = new Padding(5, 5, 5, 5) }, 1, table.RowCount);
table.Controls.Add(versionLabel, 2, table.RowCount);
table.RowCount++;
});
}
oldTitle = title;
}
}
BeginInvoke(delegate
Invoke(delegate
{
table.Visible = true;
ResumeLayout(false);
PerformLayout();
});
Dictionary<string, string> devices = new();
if (type == 0) devices = GetDeviceVersions();
//Debug.WriteLine(biosVersion);
int count = 0;
foreach (var driver in drivers)
{
int newer = -2;
if (type == 0 && driver.hardwares.ToString().Length > 0)
for (int k = 0; k < driver.hardwares.GetArrayLength(); k++)
{
var deviceID = driver.hardwares[k].GetProperty("hardwareid").ToString();
var localVersion = devices.Where(p => p.Key.Contains(deviceID)).Select(p => p.Value).FirstOrDefault();
if (localVersion is not null)
{
newer = new Version(driver.version).CompareTo(new Version(localVersion));
break;
}
}
if (type == 1)
newer = Int32.Parse(driver.version) > Int32.Parse(bios) ? 1 : -1;
if (newer > 0)
{
var label = table.GetControlFromPosition(2, count) as Label;
if (label != null)
{
Invoke(delegate
{
label.Font = new Font(label.Font, FontStyle.Underline | FontStyle.Bold);
label.ForeColor = colorTurbo;
});
}
}
count++;
}
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.ToString());
Logger.WriteLine(ex.ToString());
}

View File

@@ -15,12 +15,13 @@ Lightweight Armoury Crate alternative for Asus laptops. A small utility that all
2. All performance modes can be fully customized (with fan curves and PPTs)
3. Very lightweight and consumes almost no resources, doesn't install any services. Just a single exe to run
4. Simple and clean native UI with easy access to all settings
5. Doesn't need administrator privileges to run!
5. FN-Lock
6. Doesn't need administrator privileges to run (*)
## [:floppy_disk: Download App](https://github.com/seerge/g-helper/releases/latest/download/GHelper.zip)
If you like this app, please [star :star: it on Github](https://github.com/seerge/g-helper) and spread a word about it!
### [:euro: Donate EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 Donate USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) | [:credit_card: Donate via Stripe](https://buy.stripe.com/00gaFJ9Lf79v7WobII)
#### Support project in [:euro: EUR](https://www.paypal.com/donate/?hosted_button_id=4HMSHS4EBQWTA) | [💵 USD](https://www.paypal.com/donate/?hosted_button_id=SRM6QUX6ACXDY) | [:credit_card: Stripe](https://buy.stripe.com/00gaFJ9Lf79v7WobII)
_If you post about the app - please include a link. Thanks._
@@ -32,7 +33,7 @@ _If you post about the app - please include a link. Thanks._
2. **GPU modes**: Eco - Standard - Ultimate - Optimized
3. Laptop screen refresh rate 60hz or 120hz (144hz, etc) with display overdrive (OD) and miniled multizone switch
4. Custom fan curve editor, power limits (PPT) and turbo boost selection for every performance mode
5. Anime matrix control thanks to [Starlight](https://github.com/vddCore/Starlight) + some tweaks from my side including animated GIFs, clock and autio visualizer
5. Anime matrix control thanks to [Starlight](https://github.com/vddCore/Starlight) + some tweaks from my side including animated GIFs, clock and audio visualizer
6. Keyboard backlit animation and colors (including sleep animation and support for TUF models)
7. All basic and custom Keyboard hotkeys (M-keys, FN+X keys)
8. Monitor CPU / GPU temperature, fan speeds and battery discharge rate
@@ -73,16 +74,15 @@ _PPTs are shown for G14 2022, for other models PPTs will be different as they ar
#### How do I stop the Armory Crate install popup appearing every time I press the M4 / Rog key?
Delete or move somewhere following file ``C:\Windows\System32\ASUSACCI\ArmouryCrateKeyControl.exe``.
If it still appears - Go to BIOS (F2 on boot), open Advanced Settings and disable "Armory Control Interface".
#### Why is Ultimate GPU mode not available on my laptop?
Ultimate mode is supported (by hardware) only on G14 2022 (and possibly other models from 2022+)
Ultimate mode is supported (by hardware) only on 2022+ models
#### I can't set Eco mode (disable dGPU) on my G14 2020
Unfortunately 2020 model doesn't support that on hardware level
#### I don't see GPU modes section
Some older models (for example G14 2020) don't support disabling GPU on hardware level, therefore GPU section makes no sense for them and will be hidden
#### Should I apply custom PPTs and fan profiles?
#### Should I apply custom power limits (PPT) and fan profiles?
You don't have to, it's purely optional. From my experience built in (in bios) performance modes work well. Limit your power or apply custom fan curves only if you have issues. As soon as you click Apply in the fan + power section bios will be considering the fan profile as "custom"! (no matter if you modified it or not)
#### How does G-helper control my fan speeds?
@@ -97,11 +97,11 @@ Most probably either you are using Eco / Optimized mode and your dGPU is simply
#### It says, that app is already running
Please check system tray for a (G) icon. By default windows is keen to hide all icons, so you may need to click ^ to see them all. I would advise to right click on Task Bar select Task Bar Settings -> Other System Tray icons -> Mark G-Helper to be always ON.
#### App doesn't crash or doesn't work properly what should I do ?
#### App crash or doesn't work properly what should I do ?
Open "Event Viewer" from start menu, go to Windows Logs -> Application and check for recent Errors mentioning G-Helper. If you see one - please post a [new issue](https://github.com/seerge/g-helper/issues) with all details from this error.
#### Battery charge limiter is not working
Open application log.text from ``%AppData%\GHelper`` . If you see something like ``BatteryLimit = 60 : OK`` there (with your selected limit). App has done everything it could to set a limit. It could be that MyASUS or other Asus services are overwriting this limit after. You may want to right click and save this [debloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat) and then right-click Run it As Admin. It will stop not mandatory asus services.
Open application log.text from ``%AppData%\GHelper``. If you see something like ``BatteryLimit = 60 : OK`` there with your selected limit - App has done everything it could to set a limit. It could be that MyASUS or other Asus services are overwriting this limit after. You may want to stop them by clicking "Stop" in Asus Services section (under Extra).
#### Can I use MyASUS app along with G-Helper?
You can, the only problem is that MyASUS may override the battery charge limit that you set before. My advice in such a situation would be to set the same limit (i.e. 80%) in both MyASUS and G-Helper.
@@ -112,15 +112,20 @@ If you have Asus Optimization Service running, it's controlled by that service (
#### How do I set different "Visual styles"?
Personally, i'm not a big fan of them, as they make colors very inaccurate. But if you want so - you can adjust display colors using either Nvidia Control panel or AMD Adrenaline (appropriate display sections). If you really want you can also use [own ASUS utility from MS Store](https://apps.microsoft.com/store/detail/gamevisual/9P4K1LFTXSH8?hl=nl-nl&gl=nl&rtc=1)
#### Can I overclock Nvidia GPU core / memory?
Make sure that your dGPU is enabled (i.e. it's not in Eco mode). Open Fans + Power section and adjust core / memory clock offsets. They work same as in armoury's manual mode. Please keep in mind that (unfortunately) you need admin permissions for that, and app will ask you for them.
#### Can I overclock Nvidia GPU core / memory?
Make sure that your dGPU is enabled (i.e. it's not in Eco mode). Open Fans + Power section and adjust core / memory clock offsets. They work same as in armoury's manual mode. Please keep in mind that (unfortunately) you need admin permissions for that, and app will ask you for them. (*)
#### Windows defender marks app download as malware / virus
False positives from Windows Defender (or any other similar system that uses machine learning for detection) is possible as application is not digitally signed with a certificate. You can always download a version below or compile app by yourself. All application sources are open and can be monitored from A to Z :)
#### Where can I find app settings or logs ?
You can find them under ``%AppData%\GHelper`` folder. Please include them when posting a new bug-report or issue.
#### 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.
#### What is G-helper ?
It's a lightweight Armoury Crate alternative for Asus laptops. A small utility that allows you to do almost everything you could do with Armoury Crate but without extra bloat and unnecessary services.
G-Helper is a lightweight Armoury Crate alternative for Asus laptops. A small utility that allows you to do almost everything you could do with Armoury Crate but without extra bloat and unnecessary services.
-----------------------------
@@ -136,55 +141,54 @@ It's a lightweight Armoury Crate alternative for Asus laptops. A small utility t
### How to install
1. Download latest release from [**Releases Page**](https://github.com/seerge/g-helper/releases)
2. Unzip to a folder of your choice
2. Unzip to a folder of your choice _(don't run exe from zip directly, as windows will put it into temp folder and delete after)_
3. Run **GHelper.exe**
### Requirements (mandatory)
- Microsoft [.NET7](https://dotnet.microsoft.com/en-us/download). Most probably you already have it. Otherwise you can [download it](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-7.0.202-windows-x64-installer) from the official website.
- [Microsoft .NET7](https://dotnet.microsoft.com/en-us/download). Most probably you already have it. Otherwise [download it](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-7.0.202-windows-x64-installer) from the official website.
- [Asus System Control Interface](https://dlcdnets.asus.com/pub/ASUS/nb/Image/CustomComponent/ASUSSystemControlInterfaceV3/ASUSSystemControlInterfaceV3.exe). If you have or had MyASUS app installed this "driver" probably still in place (even after MyASUS uninstalls). Alternatively - you can download and install it
- [Asus System Control Interface v3+](https://dlcdnets.asus.com/pub/ASUS/nb/Image/CustomComponent/ASUSSystemControlInterfaceV3/ASUSSystemControlInterfaceV3.exe). This "driver" from asus should be installed automatically by windows update or along other asus apps. If it's not the case by some reason - you can download and install it manually.
### Recommendations (optional)
- You can disable / remove unnecessary services. Ruight click and save [debloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat). Then right click and Run it as Admin. To restore services - save and run [bloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/bloat.bat) instead.
- It's **not recommended** to use an app in combination with Armoury Crate services, because they adjust the same settings. You can [uninstall it using AC own uninstall tool](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate). Just in case, you can always install it back later.
- It's not recommended to use an app in combination with Armoury Crate services, because they adjust the same settings. You can [uninstall it using it's own uninstall tool](https://dlcdnets.asus.com/pub/ASUS/mb/14Utilities/Armoury_Crate_Uninstall_Tool.zip?model=armoury%20crate). Just in case, you can always install it back later.
- It's **not recommended** to have "ASUS Smart Display Control" app running, as it will try to change refresh rates and fight with g-helper for the same function. You can safely uninstall it.
- Also, it's not recommended to have "ASUS Smart Display Control" app running, as it will try to change refresh rates and fight with g-helper for the same function. You can safely uninstall it.
- You can stop / disable unnecessary services: Go to **Extra** in the app, and press "Stop" in Asus Services section (former **[debloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/debloat.bat)**). To start / enable services back - click "Start" instead (former **[bloat.bat](https://raw.githubusercontent.com/seerge/g-helper/main/bloat.bat)**)
- It is recommended to run app with windows default "balanced" power plan
![Screenshot 2023-05-29 191650](https://github.com/seerge/g-helper/assets/5920850/27719d96-e9ca-4164-ac4a-23b5966fc0ec)
- It is **strongly recommended** to run app with windows default "balanced" power plan
![Screenshot 2023-06-09 153453](https://github.com/seerge/g-helper/assets/5920850/d1d05c53-a0bd-4207-b23a-244653f3e7df)
-------------------------------
Designed and developed for Asus Zephyrus G14 2022 (with AMD Radeon iGPU and dGPU). But could and should potentially work for G14 of 2021 and 2020, G15, X FLOW, and other ROG models for relevant and supported features.
_Designed and developed for Asus Zephyrus G14 2022 (with AMD Radeon iGPU and dGPU). But could and should potentially work for G14 of 2021 and 2020, G15, X FLOW, and other ROG models for relevant and supported features._
I don't have a Microsoft certificate to sign the app yet, so if you get a warning from Windows Defender on launch (Windows Protected your PC), click More Info -> Run anyway. Alternatively you can compile and run project by yourself using Visual Studio :)
Settings file is stored at ``%AppData%\GHelper``
------------------
Debloating helps to save your battery and keep laptop a bit cooler
![Helps to save your battery](https://raw.githubusercontent.com/seerge/g-helper/main/docs/screenshots/screen-5w.png)
---------
## Power user settings
### Custom power plans with each mode
### Manual app language setting
In config.json (under ``%AppData%\GHelper``) you can manually add custom power plan GUID (it can be either "real" power plan that can be switched or "overlay" power plan like the ones g-helper sets by default)
By default app will use your windows language setting. But you can set language manually (if it supported of course)
Add following line to ``%AppData%\GHelper\config.json`` : ``"language" : "en"`` (by replacing "en" with language of your choice)
### Custom windows power plans with each mode
In ``%AppData%\GHelper\config.json`` you can manually add custom power plan (or power mode) GUID. It can be either "real" power plan that can be switched or "overlay" power plan like the ones g-helper sets by default.
Format is following : ``"scheme_<mode>" : "GUID" ``
Where ``mode = 0 (balanced), 1 (turbo), 2 (silent)``
Default behaviour is :
```
"scheme_0": "2ac1d0e0-17a7-44ed-8091-d88ef75a4eb0",
"scheme_1": "381b4222-f694-41f0-9685-ff5bb260df2e"
"scheme_0": "00000000-0000-0000-0000-000000000000",
"scheme_1": "ded574b5-45a0-4f42-8737-46345c09c238",
"scheme_2": "961cc777-2547-4f9d-8174-7d86181b8a7a",
```
Make sure to keep json structure (i.e. not to break it with extra or missing comas, etc) - or app will fail to read it and will just recreate a new config instead.
@@ -213,7 +217,17 @@ To enable this custom workaround you need to add an extra line in config.json (u
By default app will toggle performance modes with Ctr+Shift+F5. You can change this binding by adding ``"keybind_profile": 116`` in config.json (under ``%AppData%\GHelper``), where 116 is [numerical code for desired key](https://www.oreilly.com/library/view/javascript-dhtml/9780596514082/apb.html). Put 0 to completely disable this binding.
### Keybinding to open G-helper from external keyboards
Ctrl + Shift + F12
------------
**Libraries / projects used**
- [Linux Kernel](https://github.com/torvalds/linux/blob/master/drivers/platform/x86/asus-wmi.c) for some basic endpoints in ASUS ACPI/WMI interface
- [NvAPIWrapper](https://github.com/falahati/NvAPIWrapper) for accessing Nvidia API
- [Starlight](https://github.com/vddCore/Starlight) for anime matrix communication protocol
- [UXTU](https://github.com/JamesCJ60/Universal-x86-Tuning-Utility) for undervolting using Ryzen System Management Unit
**Disclaimers**
"ROG", "TUF", and "Armoury Crate" are trademarked by and belong to AsusTek Computer, Inc. I make no claims to these or any assets belonging to AsusTek Computer and use them purely for informational purposes only.