mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b04ffa172 | ||
|
|
15e4310016 | ||
|
|
3abe924525 | ||
|
|
691f187b7d | ||
|
|
8e4c0dada7 | ||
|
|
f535818fb0 | ||
|
|
ce75d2c778 | ||
|
|
c755213472 | ||
|
|
60e8712131 | ||
|
|
2c817b46ef | ||
|
|
e16f612311 | ||
|
|
4ce4b4bbf7 | ||
|
|
f9303ced8a | ||
|
|
f000a03395 | ||
|
|
90205e9231 | ||
|
|
e65270c961 | ||
|
|
306dfe2bd7 | ||
|
|
ca7dfff357 | ||
|
|
59288b9422 | ||
|
|
46ff8deb44 | ||
|
|
e6e8877531 | ||
|
|
b13306b989 | ||
|
|
838dc039ac | ||
|
|
0702f95e0c | ||
|
|
f42fcf2f73 | ||
|
|
6a7e1ddaa3 | ||
|
|
57ffcb8c7f | ||
|
|
5425bd0128 | ||
|
|
328cd8f9f1 | ||
|
|
38739ca8f6 | ||
|
|
a3e235e886 |
@@ -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);
|
||||
|
||||
@@ -63,22 +63,6 @@ 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()
|
||||
{
|
||||
@@ -227,6 +211,12 @@ public static class AppConfig
|
||||
return getConfig(name + "_" + mode);
|
||||
}
|
||||
|
||||
public static bool isConfigPerf(string name)
|
||||
{
|
||||
int mode = getConfig("performance_mode");
|
||||
return getConfig(name + "_" + mode) == 1;
|
||||
}
|
||||
|
||||
public static void setConfigPerf(string name, int value)
|
||||
{
|
||||
int mode = getConfig("performance_mode");
|
||||
|
||||
@@ -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)
|
||||
@@ -420,6 +428,7 @@ public class AsusACPI
|
||||
return DeviceGet(PPT_CPUB0) >= 0 && DeviceGet(PPT_GPUC0) < 0;
|
||||
}
|
||||
|
||||
/*
|
||||
public void ScanRange()
|
||||
{
|
||||
int value;
|
||||
@@ -437,6 +446,7 @@ public class AsusACPI
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
public void TUFKeyboardBrightness(int brightness)
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
});
|
||||
|
||||
|
||||
139
app/Extra.Designer.cs
generated
139
app/Extra.Designer.cs
generated
@@ -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
|
||||
@@ -380,7 +384,7 @@ namespace GHelper
|
||||
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, 880);
|
||||
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, 1176);
|
||||
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;
|
||||
}
|
||||
}
|
||||
56
app/Extra.cs
56
app/Extra.cs
@@ -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}
|
||||
};
|
||||
|
||||
@@ -229,7 +230,60 @@ namespace GHelper
|
||||
|
||||
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()
|
||||
|
||||
56
app/Fans.cs
56
app/Fans.cs
@@ -360,17 +360,9 @@ namespace GHelper
|
||||
{
|
||||
if (sender is null) return;
|
||||
CheckBox chk = (CheckBox)sender;
|
||||
AppConfig.setConfigPerf("auto_apply_power", chk.Checked ? 1 : 0);
|
||||
|
||||
if (chk.Checked)
|
||||
{
|
||||
Program.settingsForm.AutoPower();
|
||||
}
|
||||
else
|
||||
{
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "PerfMode");
|
||||
Program.settingsForm.AutoFans();
|
||||
}
|
||||
AppConfig.setConfigPerf("auto_apply_power", chk.Checked ? 1 : 0);
|
||||
Program.settingsForm.SetPerformanceMode();
|
||||
|
||||
}
|
||||
|
||||
@@ -380,16 +372,8 @@ namespace GHelper
|
||||
CheckBox chk = (CheckBox)sender;
|
||||
|
||||
AppConfig.setConfigPerf("auto_apply", chk.Checked ? 1 : 0);
|
||||
Program.settingsForm.SetPerformanceMode();
|
||||
|
||||
if (chk.Checked)
|
||||
{
|
||||
Program.settingsForm.AutoFans();
|
||||
}
|
||||
else
|
||||
{
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "PerfMode");
|
||||
Program.settingsForm.AutoPower();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -440,7 +424,7 @@ namespace GHelper
|
||||
int limit_cpu;
|
||||
int limit_fast;
|
||||
|
||||
bool apply = AppConfig.getConfigPerf("auto_apply_power") == 1;
|
||||
bool apply = AppConfig.isConfigPerf("auto_apply_power");
|
||||
|
||||
if (changed)
|
||||
{
|
||||
@@ -621,22 +605,28 @@ namespace GHelper
|
||||
AppConfig.setConfigPerf("auto_apply", 0);
|
||||
AppConfig.setConfigPerf("auto_apply_power", 0);
|
||||
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "PerfMode");
|
||||
if (Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AppConfig.getConfig("performance_mode"), "Mode");
|
||||
|
||||
if (Program.acpi.IsXGConnected())
|
||||
AsusUSB.ResetXGM();
|
||||
|
||||
trackGPUCore.Value = 0;
|
||||
trackGPUMemory.Value = 0;
|
||||
trackGPUBoost.Value = AsusACPI.MaxGPUBoost;
|
||||
trackGPUTemp.Value = AsusACPI.MaxGPUTemp;
|
||||
if (gpuVisible)
|
||||
{
|
||||
trackGPUCore.Value = 0;
|
||||
trackGPUMemory.Value = 0;
|
||||
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);
|
||||
VisualiseGPUSettings();
|
||||
AppConfig.setConfigPerf("gpu_boost", trackGPUBoost.Value);
|
||||
AppConfig.setConfigPerf("gpu_temp", trackGPUTemp.Value);
|
||||
AppConfig.setConfigPerf("gpu_core", trackGPUCore.Value);
|
||||
AppConfig.setConfigPerf("gpu_memory", trackGPUMemory.Value);
|
||||
|
||||
VisualiseGPUSettings();
|
||||
Program.settingsForm.SetGPUClocks(true);
|
||||
Program.settingsForm.SetGPUPower();
|
||||
}
|
||||
|
||||
Program.settingsForm.SetGPUClocks(true);
|
||||
Program.settingsForm.SetGPUPower();
|
||||
}
|
||||
|
||||
private void ChartCPU_MouseUp(object? sender, MouseEventArgs e)
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<ProduceReferenceAssembly>False</ProduceReferenceAssembly>
|
||||
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
|
||||
<AssemblyVersion>0.79</AssemblyVersion>
|
||||
<AssemblyVersion>0.82</AssemblyVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -115,6 +115,8 @@ namespace GHelper
|
||||
|
||||
if (!OptimizationService.IsRunning())
|
||||
listener = new KeyboardListener(HandleEvent);
|
||||
else
|
||||
Logger.WriteLine("Optimization service is running");
|
||||
|
||||
InitBacklightTimer();
|
||||
}
|
||||
@@ -195,7 +197,7 @@ namespace GHelper
|
||||
KeyProcess("m3");
|
||||
return;
|
||||
case Keys.F11:
|
||||
OptimizationEvent(199);
|
||||
HandleEvent(199);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
HandleEvent(16);
|
||||
break;
|
||||
case Keys.F8:
|
||||
if (AppConfig.ContainsModel("TUF"))
|
||||
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, ScreenBrightness.Adjust(+10) + "%", ToastIcon.BrightnessUp);
|
||||
OptimizationEvent(32);
|
||||
HandleEvent(32);
|
||||
break;
|
||||
case Keys.F9:
|
||||
KeyboardHook.KeyWinPress(Keys.P);
|
||||
break;
|
||||
case Keys.F10:
|
||||
OptimizationEvent(107);
|
||||
HandleEvent(107);
|
||||
break;
|
||||
case Keys.F11:
|
||||
OptimizationEvent(108);
|
||||
HandleEvent(108);
|
||||
break;
|
||||
case Keys.F12:
|
||||
KeyboardHook.KeyWinPress(Keys.A);
|
||||
@@ -339,6 +341,12 @@ namespace GHelper
|
||||
Program.settingsForm.BeginInvoke(Program.settingsForm.RunToast, muteStatus ? "Muted" : "Unmuted", muteStatus ? ToastIcon.MicrophoneMute : ToastIcon.Microphone);
|
||||
}
|
||||
break;
|
||||
case "brightness_up":
|
||||
HandleEvent(32);
|
||||
break;
|
||||
case "brightness_down":
|
||||
HandleEvent(16);
|
||||
break;
|
||||
case "custom":
|
||||
CustomKey(name);
|
||||
break;
|
||||
@@ -406,9 +414,45 @@ namespace GHelper
|
||||
case 189: // Tablet mode
|
||||
TabletMode();
|
||||
return;
|
||||
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;
|
||||
}
|
||||
|
||||
if (OptimizationService.IsRunning()) return;
|
||||
|
||||
// Asus Optimization service Events
|
||||
|
||||
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;
|
||||
case 106: // Zephyrus DUO special key for turning on/off second display.
|
||||
//Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.KB_DUO_SecondDisplay, "SecondDisplay");
|
||||
break;
|
||||
case 75: // Zephyrus DUO special key for changing between arrows and pgup/pgdn
|
||||
//Program.acpi.DeviceSet(AsusACPI.UniversalControl, AsusACPI.KB_DUO_PgUpDn, "PgUpDown");
|
||||
break;
|
||||
}
|
||||
|
||||
if (!OptimizationService.IsRunning()) OptimizationEvent(EventID);
|
||||
}
|
||||
|
||||
|
||||
@@ -430,7 +474,8 @@ 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)
|
||||
@@ -451,47 +496,14 @@ namespace GHelper
|
||||
else
|
||||
AppConfig.setConfig("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 = "")
|
||||
{
|
||||
|
||||
@@ -588,6 +588,42 @@ public class NativeMethods
|
||||
return dm;
|
||||
}
|
||||
|
||||
public enum COLORPROFILETYPE
|
||||
{
|
||||
CPT_ICC,
|
||||
CPT_DMP,
|
||||
CPT_CAMP,
|
||||
CPT_GMMP
|
||||
}
|
||||
public enum COLORPROFILESUBTYPE
|
||||
{
|
||||
CPST_PERCEPTUAL,
|
||||
CPST_RELATIVE_COLORIMETRIC,
|
||||
CPST_SATURATION,
|
||||
CPST_ABSOLUTE_COLORIMETRIC,
|
||||
CPST_NONE,
|
||||
CPST_RGB_WORKING_SPACE,
|
||||
CPST_CUSTOM_WORKING_SPACE,
|
||||
CPST_STANDARD_DISPLAY_COLOR_MODE,
|
||||
CPST_EXTENDED_DISPLAY_COLOR_MODE
|
||||
}
|
||||
public enum WCS_PROFILE_MANAGEMENT_SCOPE
|
||||
{
|
||||
WCS_PROFILE_MANAGEMENT_SCOPE_SYSTEM_WIDE,
|
||||
WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER
|
||||
}
|
||||
|
||||
[DllImport("mscms.dll", CharSet = CharSet.Unicode)]
|
||||
public static extern bool WcsSetDefaultColorProfile(
|
||||
WCS_PROFILE_MANAGEMENT_SCOPE scope,
|
||||
string pDeviceName,
|
||||
COLORPROFILETYPE cptColorProfileType,
|
||||
COLORPROFILESUBTYPE cpstColorProfileSubType,
|
||||
uint dwProfileID,
|
||||
string pProfileName
|
||||
);
|
||||
|
||||
|
||||
public const int ENUM_CURRENT_SETTINGS = -1;
|
||||
public const string defaultDevice = "\\\\.\\DISPLAY1";
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -92,6 +92,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();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.Diagnostics;
|
||||
using System.Globalization;
|
||||
using System.Reflection;
|
||||
using System.Security.Principal;
|
||||
using System.Windows.Forms;
|
||||
using static NativeMethods;
|
||||
|
||||
namespace GHelper
|
||||
@@ -135,7 +136,7 @@ namespace GHelper
|
||||
|
||||
|
||||
|
||||
public static void SetAutoModes()
|
||||
public static void SetAutoModes(bool powerChanged = false)
|
||||
{
|
||||
|
||||
if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 3000) return;
|
||||
@@ -147,7 +148,7 @@ namespace GHelper
|
||||
inputDispatcher.Init();
|
||||
|
||||
settingsForm.SetBatteryChargeLimit(AppConfig.getConfig("charge_limit"));
|
||||
settingsForm.AutoPerformance();
|
||||
settingsForm.AutoPerformance(powerChanged);
|
||||
|
||||
bool switched = settingsForm.AutoGPUMode();
|
||||
|
||||
@@ -163,11 +164,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);
|
||||
}
|
||||
|
||||
|
||||
@@ -190,6 +189,11 @@ namespace GHelper
|
||||
case "gpurestart":
|
||||
settingsForm.RestartGPU(false);
|
||||
break;
|
||||
case "services":
|
||||
settingsForm.keyb = new Extra();
|
||||
settingsForm.keyb.Show();
|
||||
settingsForm.keyb.ServiesToggle();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
20
app/Properties/Resources.Designer.cs
generated
20
app/Properties/Resources.Designer.cs
generated
@@ -130,6 +130,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 +150,16 @@ namespace GHelper.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap icons8_electrical_96 {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("icons8_electrical_96", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
||||
@@ -238,4 +238,10 @@
|
||||
<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_electrical_96" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\icons8-electrical-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
63
app/Properties/Strings.Designer.cs
generated
63
app/Properties/Strings.Designer.cs
generated
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
510
app/Properties/Strings.ko.resx
Normal file
510
app/Properties/Strings.ko.resx
Normal 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>전력 제한 (PPT)</value>
|
||||
</data>
|
||||
<data name="PPTExperimental" xml:space="preserve">
|
||||
<value>전력 제한 (PPT)은 실험적인 기능입니다. 주의하여 사용하세요!</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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -201,6 +201,9 @@
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>Ліміт заряду батареї</value>
|
||||
</data>
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>Оновлення BIOS та драйверів</value>
|
||||
</data>
|
||||
<data name="Boot" xml:space="preserve">
|
||||
<value>Старт</value>
|
||||
</data>
|
||||
@@ -228,6 +231,9 @@
|
||||
<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>
|
||||
@@ -408,6 +414,9 @@
|
||||
<data name="ToggleAura" xml:space="preserve">
|
||||
<value>Аура</value>
|
||||
</data>
|
||||
<data name="ToggleFnLock" xml:space="preserve">
|
||||
<value>Fn-Lock</value>
|
||||
</data>
|
||||
<data name="ToggleMiniled" xml:space="preserve">
|
||||
<value>Міні-лед (якщо є)</value>
|
||||
</data>
|
||||
@@ -429,6 +438,9 @@
|
||||
<data name="UltimateMode" xml:space="preserve">
|
||||
<value>Ультімейт</value>
|
||||
</data>
|
||||
<data name="Updates" xml:space="preserve">
|
||||
<value>Оновлення</value>
|
||||
</data>
|
||||
<data name="VersionLabel" xml:space="preserve">
|
||||
<value>Версія</value>
|
||||
</data>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
@@ -59,419 +59,431 @@
|
||||
: 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">
|
||||
<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>無法連結到華碩 ACPI。 没有它,應用程式將無法執行。 嘗試安裝Asus System Control Interface</value>
|
||||
</data>
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<data name="AlertDGPU" xml:space="preserve">
|
||||
<value>看起来 GPU 正在大量使用,是否禁用它?</value>
|
||||
</data>
|
||||
<data name="AlertDGPUTitle" xml:space="preserve">
|
||||
<data name="AlertDGPUTitle" xml:space="preserve">
|
||||
<value>節能模式</value>
|
||||
</data>
|
||||
<data name="AlertUltimateOff" xml:space="preserve">
|
||||
<data name="AlertUltimateOff" xml:space="preserve">
|
||||
<value>關閉獨顯需要重新啟動</value>
|
||||
</data>
|
||||
<data name="AlertUltimateOn" xml:space="preserve">
|
||||
<data name="AlertUltimateOn" xml:space="preserve">
|
||||
<value>獨顯直連需要重啟</value>
|
||||
</data>
|
||||
<data name="AlertUltimateTitle" xml:space="preserve">
|
||||
<data name="AlertUltimateTitle" xml:space="preserve">
|
||||
<value>現在重新啟動嗎?</value>
|
||||
</data>
|
||||
<data name="AnimationSpeed" xml:space="preserve">
|
||||
<data name="AnimationSpeed" xml:space="preserve">
|
||||
<value>動畫速度</value>
|
||||
</data>
|
||||
<data name="AnimeMatrix" xml:space="preserve">
|
||||
<data name="AnimeMatrix" xml:space="preserve">
|
||||
<value>AnimeMatrix</value>
|
||||
</data>
|
||||
<data name="AppAlreadyRunning" xml:space="preserve">
|
||||
<data name="AppAlreadyRunning" xml:space="preserve">
|
||||
<value>程式已正在執行</value>
|
||||
</data>
|
||||
<data name="AppAlreadyRunningText" xml:space="preserve">
|
||||
<data name="AppAlreadyRunningText" xml:space="preserve">
|
||||
<value>G-Helper已經在執行。 請確認右下工作列中的圖示。</value>
|
||||
</data>
|
||||
<data name="ApplyFanCurve" xml:space="preserve">
|
||||
<data name="ApplyFanCurve" xml:space="preserve">
|
||||
<value>套用自定義風扇曲線</value>
|
||||
</data>
|
||||
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||
<data name="ApplyPowerLimits" xml:space="preserve">
|
||||
<value>套用功率限制</value>
|
||||
</data>
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<data name="ApplyWindowsPowerPlan" xml:space="preserve">
|
||||
<value>自動調整Windows電源模式</value>
|
||||
</data>
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<data name="AuraBreathe" xml:space="preserve">
|
||||
<value>呼吸</value>
|
||||
</data>
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<data name="AuraColorCycle" xml:space="preserve">
|
||||
<value>循環</value>
|
||||
</data>
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<data name="AuraFast" xml:space="preserve">
|
||||
<value>快速</value>
|
||||
</data>
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<data name="AuraNormal" xml:space="preserve">
|
||||
<value>正常</value>
|
||||
</data>
|
||||
<data name="AuraRainbow" xml:space="preserve">
|
||||
<data name="AuraRainbow" xml:space="preserve">
|
||||
<value>彩虹</value>
|
||||
</data>
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<data name="AuraSlow" xml:space="preserve">
|
||||
<value>慢</value>
|
||||
</data>
|
||||
<data name="AuraStatic" xml:space="preserve">
|
||||
<data name="AuraStatic" xml:space="preserve">
|
||||
<value>靜態</value>
|
||||
</data>
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<data name="AuraStrobe" xml:space="preserve">
|
||||
<value>閃爍</value>
|
||||
</data>
|
||||
<data name="AutoMode" xml:space="preserve">
|
||||
<data name="AutoMode" xml:space="preserve">
|
||||
<value>自動</value>
|
||||
</data>
|
||||
<data name="AutoRefreshTooltip" xml:space="preserve">
|
||||
<data name="AutoRefreshTooltip" xml:space="preserve">
|
||||
<value>電池模式時自動60Hz</value>
|
||||
</data>
|
||||
<data name="Awake" xml:space="preserve">
|
||||
<data name="Awake" xml:space="preserve">
|
||||
<value>喚醒時</value>
|
||||
</data>
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<data name="BacklightTimeout" xml:space="preserve">
|
||||
<value>電池模式下自動關閉鍵盤背光的秒數(0 = 不關閉)</value>
|
||||
</data>
|
||||
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
||||
<data name="BacklightTimeoutPlugged" xml:space="preserve">
|
||||
<value>插電模式下自動關閉鍵盤背光的秒數(0 = 不關閉)</value>
|
||||
</data>
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<data name="Balanced" xml:space="preserve">
|
||||
<value>平衡模式</value>
|
||||
</data>
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<data name="BatteryChargeLimit" xml:space="preserve">
|
||||
<value>電池充電上限</value>
|
||||
</data>
|
||||
<data name="Boot" xml:space="preserve">
|
||||
<data name="BiosAndDriverUpdates" xml:space="preserve">
|
||||
<value>BIOS與驅動程式更新 Updates</value>
|
||||
</data>
|
||||
<data name="Boot" xml:space="preserve">
|
||||
<value>開機時</value>
|
||||
</data>
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<data name="Brightness" xml:space="preserve">
|
||||
<value>亮度</value>
|
||||
</data>
|
||||
<data name="Color" xml:space="preserve">
|
||||
<data name="Color" xml:space="preserve">
|
||||
<value>顏色</value>
|
||||
</data>
|
||||
<data name="CPUBoost" xml:space="preserve">
|
||||
<data name="CPUBoost" xml:space="preserve">
|
||||
<value>CPU 加速</value>
|
||||
</data>
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<data name="Custom" xml:space="preserve">
|
||||
<value>自定義設置</value>
|
||||
</data>
|
||||
<data name="Default" xml:space="preserve">
|
||||
<data name="Default" xml:space="preserve">
|
||||
<value>預設</value>
|
||||
</data>
|
||||
<data name="DisableOverdrive" xml:space="preserve">
|
||||
<data name="DisableOverdrive" xml:space="preserve">
|
||||
<value>禁用螢幕加速OD</value>
|
||||
</data>
|
||||
<data name="Discharging" xml:space="preserve">
|
||||
<data name="Discharging" xml:space="preserve">
|
||||
<value>正在釋放電力</value>
|
||||
</data>
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<data name="DownloadUpdate" xml:space="preserve">
|
||||
<value>下載更新</value>
|
||||
</data>
|
||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||
<data name="DriverAndSoftware" xml:space="preserve">
|
||||
<value>驅動程式與軟體</value>
|
||||
</data>
|
||||
<data name="EcoGPUTooltip" xml:space="preserve">
|
||||
<value>禁用獨顯以節省電池電量</value>
|
||||
</data>
|
||||
<data name="EcoMode" xml:space="preserve">
|
||||
<data name="EcoMode" xml:space="preserve">
|
||||
<value>節能模式</value>
|
||||
</data>
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<data name="Extra" xml:space="preserve">
|
||||
<value>更多</value>
|
||||
</data>
|
||||
<data name="ExtraSettings" xml:space="preserve">
|
||||
<data name="ExtraSettings" xml:space="preserve">
|
||||
<value>更多設定</value>
|
||||
</data>
|
||||
<data name="FactoryDefaults" xml:space="preserve">
|
||||
<data name="FactoryDefaults" xml:space="preserve">
|
||||
<value>恢復原廠設定</value>
|
||||
</data>
|
||||
<data name="FanCurves" xml:space="preserve">
|
||||
<data name="FanCurves" xml:space="preserve">
|
||||
<value>風扇曲線</value>
|
||||
</data>
|
||||
<data name="FanProfileCPU" xml:space="preserve">
|
||||
<value>CPU 風扇設置文件</value>
|
||||
<data name="FanProfileCPU" xml:space="preserve">
|
||||
<value>CPU 風扇設定檔</value>
|
||||
</data>
|
||||
<data name="FanProfileGPU" xml:space="preserve">
|
||||
<value>GPU 風扇設置文件</value>
|
||||
<data name="FanProfileGPU" xml:space="preserve">
|
||||
<value>GPU 風扇設定檔</value>
|
||||
</data>
|
||||
<data name="FanProfileMid" xml:space="preserve">
|
||||
<data name="FanProfileMid" xml:space="preserve">
|
||||
<value>中等風扇設置</value>
|
||||
</data>
|
||||
<data name="FanProfiles" xml:space="preserve">
|
||||
<data name="FanProfiles" xml:space="preserve">
|
||||
<value>風扇設置</value>
|
||||
</data>
|
||||
<data name="FansAndPower" xml:space="preserve">
|
||||
<data name="FansAndPower" xml:space="preserve">
|
||||
<value>風扇和電源</value>
|
||||
</data>
|
||||
<data name="FanSpeed" xml:space="preserve">
|
||||
<data name="FanSpeed" xml:space="preserve">
|
||||
<value> 風扇: </value>
|
||||
</data>
|
||||
<data name="FansPower" xml:space="preserve">
|
||||
<data name="FansPower" xml:space="preserve">
|
||||
<value>自定義設置</value>
|
||||
</data>
|
||||
<data name="FnLock" xml:space="preserve">
|
||||
<value>使用Fn+F1~F12的功能時不須按下Fn鍵</value>
|
||||
<data name="FnLock" xml:space="preserve">
|
||||
<value>使用Fn+F1~F12功能時免按下Fn鍵</value>
|
||||
</data>
|
||||
<data name="GPUBoost" xml:space="preserve">
|
||||
<data name="GPUBoost" xml:space="preserve">
|
||||
<value>Dynamic Boost</value>
|
||||
</data>
|
||||
<data name="GPUChanging" xml:space="preserve">
|
||||
<data name="GPUChanging" xml:space="preserve">
|
||||
<value>切換中...</value>
|
||||
</data>
|
||||
<data name="GPUCoreClockOffset" xml:space="preserve">
|
||||
<data name="GPUCoreClockOffset" xml:space="preserve">
|
||||
<value>核心時脈偏移量(Offset)</value>
|
||||
</data>
|
||||
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
||||
<data name="GPUMemoryClockOffset" xml:space="preserve">
|
||||
<value>顯示卡記憶體偏移量(Offset)</value>
|
||||
</data>
|
||||
<data name="GPUMode" xml:space="preserve">
|
||||
<data name="GPUMode" xml:space="preserve">
|
||||
<value>GPU 模式</value>
|
||||
</data>
|
||||
<data name="GPUModeEco" xml:space="preserve">
|
||||
<data name="GPUModeEco" xml:space="preserve">
|
||||
<value>僅限內顯</value>
|
||||
</data>
|
||||
<data name="GPUModeStandard" xml:space="preserve">
|
||||
<data name="GPUModeStandard" xml:space="preserve">
|
||||
<value>內顯 + 獨顯</value>
|
||||
</data>
|
||||
<data name="GPUModeUltimate" xml:space="preserve">
|
||||
<data name="GPUModeUltimate" xml:space="preserve">
|
||||
<value>獨立顯卡</value>
|
||||
</data>
|
||||
<data name="GPUSettings" xml:space="preserve">
|
||||
<data name="GPUSettings" xml:space="preserve">
|
||||
<value>顯卡設定</value>
|
||||
</data>
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<data name="GPUTempTarget" xml:space="preserve">
|
||||
<value>GPU溫度上限</value>
|
||||
</data>
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<data name="KeyBindings" xml:space="preserve">
|
||||
<value>按鍵綁定</value>
|
||||
</data>
|
||||
<data name="Keyboard" xml:space="preserve">
|
||||
<data name="Keyboard" xml:space="preserve">
|
||||
<value>鍵盤</value>
|
||||
</data>
|
||||
<data name="KeyboardAuto" xml:space="preserve">
|
||||
<data name="KeyboardAuto" xml:space="preserve">
|
||||
<value>電池模式時自動降低鍵盤背光亮度以節省電量</value>
|
||||
</data>
|
||||
<data name="LaptopBacklight" xml:space="preserve">
|
||||
<data name="LaptopBacklight" xml:space="preserve">
|
||||
<value>背光</value>
|
||||
</data>
|
||||
<data name="KillGpuApps" xml:space="preserve">
|
||||
<data name="KillGpuApps" xml:space="preserve">
|
||||
<value>切換至節能模式時,關閉所有正在使用獨顯的程式</value>
|
||||
</data>
|
||||
<data name="LaptopKeyboard" xml:space="preserve">
|
||||
<data name="LaptopKeyboard" xml:space="preserve">
|
||||
<value>鍵盤背光:</value>
|
||||
</data>
|
||||
<data name="LaptopScreen" xml:space="preserve">
|
||||
<data name="LaptopScreen" xml:space="preserve">
|
||||
<value>螢幕顯示</value>
|
||||
</data>
|
||||
<data name="Lid" xml:space="preserve">
|
||||
<data name="Lid" xml:space="preserve">
|
||||
<value>螢幕背蓋</value>
|
||||
</data>
|
||||
<data name="Lightbar" xml:space="preserve">
|
||||
<data name="Lightbar" xml:space="preserve">
|
||||
<value>燈條</value>
|
||||
</data>
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<data name="Logo" xml:space="preserve">
|
||||
<value>Logo</value>
|
||||
</data>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>Audio Visualizer</value>
|
||||
<data name="MatrixAudio" xml:space="preserve">
|
||||
<value>音效視覺化</value>
|
||||
</data>
|
||||
<data name="MatrixBanner" xml:space="preserve">
|
||||
<data name="MatrixBanner" xml:space="preserve">
|
||||
<value>横幅</value>
|
||||
</data>
|
||||
<data name="MatrixBright" xml:space="preserve">
|
||||
<data name="MatrixBright" xml:space="preserve">
|
||||
<value>明亮</value>
|
||||
</data>
|
||||
<data name="MatrixClock" xml:space="preserve">
|
||||
<data name="MatrixClock" xml:space="preserve">
|
||||
<value>時鐘</value>
|
||||
</data>
|
||||
<data name="MatrixDim" xml:space="preserve">
|
||||
<data name="MatrixDim" xml:space="preserve">
|
||||
<value>黯淡</value>
|
||||
</data>
|
||||
<data name="MatrixLogo" xml:space="preserve">
|
||||
<data name="MatrixLogo" xml:space="preserve">
|
||||
<value>ROG logo</value>
|
||||
</data>
|
||||
<data name="MatrixMedium" xml:space="preserve">
|
||||
<data name="MatrixMedium" xml:space="preserve">
|
||||
<value>中</value>
|
||||
</data>
|
||||
<data name="MatrixOff" xml:space="preserve">
|
||||
<data name="MatrixOff" xml:space="preserve">
|
||||
<value>關閉</value>
|
||||
</data>
|
||||
<data name="MatrixPicture" xml:space="preserve">
|
||||
<data name="MatrixPicture" xml:space="preserve">
|
||||
<value>圖片</value>
|
||||
</data>
|
||||
<data name="MaxRefreshTooltip" xml:space="preserve">
|
||||
<data name="MaxRefreshTooltip" xml:space="preserve">
|
||||
<value>更高的更新率和更低延遲</value>
|
||||
</data>
|
||||
<data name="MinRefreshTooltip" xml:space="preserve">
|
||||
<data name="MinRefreshTooltip" xml:space="preserve">
|
||||
<value>維持60Hz以節省電量</value>
|
||||
</data>
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<data name="Multizone" xml:space="preserve">
|
||||
<value>多區域</value>
|
||||
</data>
|
||||
<data name="MuteMic" xml:space="preserve">
|
||||
<data name="MuteMic" xml:space="preserve">
|
||||
<value>麥克風開關</value>
|
||||
</data>
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<data name="OpenGHelper" xml:space="preserve">
|
||||
<value>開啟G-Helper視窗</value>
|
||||
</data>
|
||||
<data name="Optimized" xml:space="preserve">
|
||||
<data name="Optimized" xml:space="preserve">
|
||||
<value>自動模式</value>
|
||||
</data>
|
||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||
<data name="OptimizedGPUTooltip" xml:space="preserve">
|
||||
<value>使用電池切換到節能模式,插入電源時切換到標準模式</value>
|
||||
</data>
|
||||
<data name="OptimizedUSBC" xml:space="preserve">
|
||||
<data name="OptimizedUSBC" xml:space="preserve">
|
||||
<value>自動模式下,使用USB-C充電時持續關閉獨顯</value>
|
||||
</data>
|
||||
<data name="Other" xml:space="preserve">
|
||||
<data name="Other" xml:space="preserve">
|
||||
<value>其他</value>
|
||||
</data>
|
||||
<data name="Overdrive" xml:space="preserve">
|
||||
<data name="Overdrive" xml:space="preserve">
|
||||
<value>OD</value>
|
||||
</data>
|
||||
<data name="PerformanceMode" xml:space="preserve">
|
||||
<data name="PerformanceMode" xml:space="preserve">
|
||||
<value>性能模式:</value>
|
||||
</data>
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<data name="PictureGif" xml:space="preserve">
|
||||
<value>圖片/動圖</value>
|
||||
</data>
|
||||
<data name="PlayPause" xml:space="preserve">
|
||||
<data name="PlayPause" xml:space="preserve">
|
||||
<value>播放/暫停</value>
|
||||
</data>
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<data name="PowerLimits" xml:space="preserve">
|
||||
<value>功率限制 (PPT)</value>
|
||||
</data>
|
||||
<data name="PPTExperimental" xml:space="preserve">
|
||||
<value>功率限制 (PPT) 是實驗性功能。 謹慎使用,風險自負!</value>
|
||||
<data name="PPTExperimental" xml:space="preserve">
|
||||
<value>功率限制是實驗性功能。謹慎使用,風險自負!</value>
|
||||
</data>
|
||||
<data name="PrintScreen" xml:space="preserve">
|
||||
<data name="PrintScreen" xml:space="preserve">
|
||||
<value>截圖</value>
|
||||
</data>
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<data name="Quit" xml:space="preserve">
|
||||
<value>退出</value>
|
||||
</data>
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<data name="RestartGPU" xml:space="preserve">
|
||||
<value>有其他程式正在使用獨顯導致無法切換至節能模式. 是否在裝置管理員中重啟獨顯? * 請自行評估風險</value>
|
||||
</data>
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<data name="RPM" xml:space="preserve">
|
||||
<value>每分鐘轉數</value>
|
||||
</data>
|
||||
<data name="RunOnStartup" xml:space="preserve">
|
||||
<data name="RunOnStartup" xml:space="preserve">
|
||||
<value>開機自動開啟</value>
|
||||
</data>
|
||||
<data name="Shutdown" xml:space="preserve">
|
||||
<data name="Shutdown" xml:space="preserve">
|
||||
<value>關機時</value>
|
||||
</data>
|
||||
<data name="Silent" xml:space="preserve">
|
||||
<data name="Silent" xml:space="preserve">
|
||||
<value>安靜模式</value>
|
||||
</data>
|
||||
<data name="Sleep" xml:space="preserve">
|
||||
<data name="Sleep" xml:space="preserve">
|
||||
<value>睡眠時</value>
|
||||
</data>
|
||||
<data name="StandardGPUTooltip" xml:space="preserve">
|
||||
<data name="StandardGPUTooltip" xml:space="preserve">
|
||||
<value>標準模式會啟用獨顯</value>
|
||||
</data>
|
||||
<data name="StandardMode" xml:space="preserve">
|
||||
<data name="StandardMode" xml:space="preserve">
|
||||
<value>標準模式</value>
|
||||
</data>
|
||||
<data name="StartupError" xml:space="preserve">
|
||||
<data name="StartupError" xml:space="preserve">
|
||||
<value>啟動錯誤</value>
|
||||
</data>
|
||||
<data name="ToggleAura" xml:space="preserve">
|
||||
<data name="ToggleAura" xml:space="preserve">
|
||||
<value>切換Aura</value>
|
||||
</data>
|
||||
<data name="ToggleMiniled" xml:space="preserve">
|
||||
<data name="ToggleFnLock" xml:space="preserve">
|
||||
<value>免按Fn鍵使用Fn+F1~F12功能</value>
|
||||
</data>
|
||||
<data name="ToggleMiniled" xml:space="preserve">
|
||||
<value>切換Miniled(若有支援)</value>
|
||||
</data>
|
||||
<data name="ToggleScreen" xml:space="preserve">
|
||||
<data name="ToggleScreen" xml:space="preserve">
|
||||
<value>切換螢幕</value>
|
||||
</data>
|
||||
<data name="Turbo" xml:space="preserve">
|
||||
<data name="Turbo" xml:space="preserve">
|
||||
<value>極速模式</value>
|
||||
</data>
|
||||
<data name="TurnedOff" xml:space="preserve">
|
||||
<data name="TurnedOff" xml:space="preserve">
|
||||
<value>已關閉</value>
|
||||
</data>
|
||||
<data name="TurnOffOnBattery" xml:space="preserve">
|
||||
<data name="TurnOffOnBattery" xml:space="preserve">
|
||||
<value>電池模式時關閉</value>
|
||||
</data>
|
||||
<data name="UltimateGPUTooltip" xml:space="preserve">
|
||||
<data name="UltimateGPUTooltip" xml:space="preserve">
|
||||
<value>開啟獨顯直連獲得最佳幀數</value>
|
||||
</data>
|
||||
<data name="UltimateMode" xml:space="preserve">
|
||||
<data name="UltimateMode" xml:space="preserve">
|
||||
<value>獨顯直連</value>
|
||||
</data>
|
||||
<data name="VersionLabel" xml:space="preserve">
|
||||
<data name="Updates" xml:space="preserve">
|
||||
<value>更新驅動</value>
|
||||
</data>
|
||||
<data name="VersionLabel" xml:space="preserve">
|
||||
<value>版本</value>
|
||||
</data>
|
||||
<data name="VolumeDown" xml:space="preserve">
|
||||
<data name="VolumeDown" xml:space="preserve">
|
||||
<value>音量降低</value>
|
||||
</data>
|
||||
<data name="VolumeMute" xml:space="preserve">
|
||||
<data name="VolumeMute" xml:space="preserve">
|
||||
<value>靜音</value>
|
||||
</data>
|
||||
<data name="VolumeUp" xml:space="preserve">
|
||||
<data name="VolumeUp" xml:space="preserve">
|
||||
<value>音量增加</value>
|
||||
</data>
|
||||
<data name="WindowTop" xml:space="preserve">
|
||||
<data name="WindowTop" xml:space="preserve">
|
||||
<value>視窗置頂</value>
|
||||
</data>
|
||||
</root>
|
||||
BIN
app/Resources/icons8-charged-battery-96.png
Normal file
BIN
app/Resources/icons8-charged-battery-96.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 406 B |
BIN
app/Resources/icons8-electrical-96.png
Normal file
BIN
app/Resources/icons8-electrical-96.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1000 B |
22
app/Settings.Designer.cs
generated
22
app/Settings.Designer.cs
generated
@@ -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);
|
||||
@@ -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;
|
||||
|
||||
110
app/Settings.cs
110
app/Settings.cs
@@ -176,7 +176,7 @@ namespace GHelper
|
||||
|
||||
labelModel.Text = model + (ProcessHelper.IsUserAdministrator() ? "." : "");
|
||||
|
||||
TopMost = AppConfig.getConfig("topmost") == 1;
|
||||
TopMost = AppConfig.isConfig("topmost");
|
||||
|
||||
SetContextMenu();
|
||||
|
||||
@@ -247,8 +247,9 @@ namespace GHelper
|
||||
public void SetContextMenu()
|
||||
{
|
||||
|
||||
contextMenuStrip.Items.Clear();
|
||||
var mode = AppConfig.getConfig("performance_mode");
|
||||
|
||||
contextMenuStrip.Items.Clear();
|
||||
Padding padding = new Padding(15, 5, 5, 5);
|
||||
|
||||
var title = new ToolStripMenuItem(Properties.Strings.PerformanceMode);
|
||||
@@ -259,17 +260,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,9 +354,11 @@ namespace GHelper
|
||||
else
|
||||
{
|
||||
Program.acpi.DeviceSet(AsusACPI.GPUXG, 1, "GPU XGM");
|
||||
AsusUSB.ApplyXGMLight(AppConfig.isConfig("xmg_light"));
|
||||
|
||||
await Task.Delay(TimeSpan.FromSeconds(15));
|
||||
|
||||
if (AppConfig.getConfigPerf("auto_apply") == 1)
|
||||
if (AppConfig.isConfigPerf("auto_apply"))
|
||||
AsusUSB.SetXGMFan(AppConfig.getFanConfig(AsusFan.XGM));
|
||||
}
|
||||
|
||||
@@ -1139,7 +1144,7 @@ namespace GHelper
|
||||
{
|
||||
customFans = false;
|
||||
|
||||
if (AppConfig.getConfigPerf("auto_apply") == 1 || force)
|
||||
if (AppConfig.isConfigPerf("auto_apply") || force)
|
||||
{
|
||||
|
||||
bool xgmFan = false;
|
||||
@@ -1162,7 +1167,7 @@ namespace GHelper
|
||||
{
|
||||
int mode = AppConfig.getConfig("performance_mode");
|
||||
Logger.WriteLine("ASUS BIOS rejected fan curve, resetting mode to " + mode);
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "PerformanceMode");
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, mode, "Reset Mode");
|
||||
LabelFansResult("ASUS BIOS rejected fan curve");
|
||||
}
|
||||
else
|
||||
@@ -1171,8 +1176,8 @@ namespace GHelper
|
||||
customFans = true;
|
||||
}
|
||||
|
||||
// fix for misbehaving bios on intell based TUF 2022
|
||||
if ((AppConfig.ContainsModel("FX507") || AppConfig.ContainsModel("FX517") || xgmFan) && AppConfig.getConfigPerf("auto_apply_power") != 1)
|
||||
// force set PPTs for missbehaving bios on FX507/517 series
|
||||
if ((AppConfig.ContainsModel("FX507") || AppConfig.ContainsModel("FX517") || xgmFan) && !AppConfig.isConfigPerf("auto_apply_power"))
|
||||
{
|
||||
Task.Run(async () =>
|
||||
{
|
||||
@@ -1188,22 +1193,42 @@ namespace GHelper
|
||||
|
||||
}
|
||||
|
||||
private static bool isManualModeRequired()
|
||||
{
|
||||
if (!AppConfig.isConfigPerf("auto_apply_power"))
|
||||
return false;
|
||||
|
||||
return
|
||||
AppConfig.isConfig("manual_mode") ||
|
||||
AppConfig.ContainsModel("GU604") ||
|
||||
AppConfig.ContainsModel("FX517") ||
|
||||
AppConfig.ContainsModel("G733");
|
||||
}
|
||||
|
||||
public void AutoPower(int delay = 0)
|
||||
{
|
||||
|
||||
// fix for misbehaving bios PPTs on G513
|
||||
if (AppConfig.ContainsModel("G513") && AppConfig.getConfigPerf("auto_apply") != 1)
|
||||
{
|
||||
AutoFans(true);
|
||||
delay = 500;
|
||||
}
|
||||
|
||||
customPower = 0;
|
||||
|
||||
bool applyPower = AppConfig.getConfigPerf("auto_apply_power") == 1;
|
||||
bool applyGPU = true;
|
||||
bool applyPower = AppConfig.isConfigPerf("auto_apply_power");
|
||||
bool applyFans = AppConfig.isConfigPerf("auto_apply");
|
||||
//bool applyGPU = true;
|
||||
|
||||
//if (applyPower) Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AsusACPI.PerformanceManual, "CustomMode");
|
||||
if (applyPower)
|
||||
{
|
||||
// force fan curve for misbehaving bios PPTs on G513
|
||||
if (AppConfig.ContainsModel("G513") && !applyFans)
|
||||
{
|
||||
delay = 500;
|
||||
AutoFans(true);
|
||||
}
|
||||
|
||||
// Fix for models that don't support PPT settings in all modes, setting a "manual" mode for them
|
||||
if (isManualModeRequired() && !applyFans)
|
||||
{
|
||||
AutoFans(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (delay > 0)
|
||||
{
|
||||
@@ -1229,46 +1254,54 @@ namespace GHelper
|
||||
public void SetPerformanceMode(int PerformanceMode = -1, bool notify = false)
|
||||
{
|
||||
|
||||
if (PerformanceMode < 0)
|
||||
PerformanceMode = AppConfig.getConfig("performance_mode");
|
||||
int oldMode = AppConfig.getConfig("performance_mode");
|
||||
if (PerformanceMode < 0) PerformanceMode = oldMode;
|
||||
|
||||
buttonSilent.Activated = false;
|
||||
buttonBalanced.Activated = false;
|
||||
buttonTurbo.Activated = false;
|
||||
|
||||
menuSilent.Checked = false;
|
||||
menuBalanced.Checked = false;
|
||||
menuTurbo.Checked = false;
|
||||
|
||||
switch (PerformanceMode)
|
||||
{
|
||||
case AsusACPI.PerformanceSilent:
|
||||
buttonSilent.Activated = true;
|
||||
menuSilent.Checked = true;
|
||||
perfName = Properties.Strings.Silent;
|
||||
break;
|
||||
case AsusACPI.PerformanceTurbo:
|
||||
buttonTurbo.Activated = true;
|
||||
menuTurbo.Checked = true;
|
||||
perfName = Properties.Strings.Turbo;
|
||||
break;
|
||||
default:
|
||||
buttonBalanced.Activated = true;
|
||||
PerformanceMode = AsusACPI.PerformanceBalanced;
|
||||
menuBalanced.Checked = true;
|
||||
perfName = Properties.Strings.Balanced;
|
||||
PerformanceMode = AsusACPI.PerformanceBalanced;
|
||||
break;
|
||||
}
|
||||
|
||||
menuSilent.Checked = buttonSilent.Activated;
|
||||
menuBalanced.Checked = buttonBalanced.Activated;
|
||||
menuTurbo.Checked = buttonTurbo.Activated;
|
||||
var powerStatus = SystemInformation.PowerStatus.PowerLineStatus;
|
||||
|
||||
int oldMode = AppConfig.getConfig("performance_mode");
|
||||
AppConfig.setConfig("performance_" + (int)SystemInformation.PowerStatus.PowerLineStatus, PerformanceMode);
|
||||
AppConfig.setConfig("performance_" + (int)powerStatus, PerformanceMode);
|
||||
AppConfig.setConfig("performance_mode", PerformanceMode);
|
||||
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, PerformanceMode, "PerformanceMode");
|
||||
if (isManualModeRequired())
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, AsusACPI.PerformanceManual, "Manual Mode");
|
||||
else
|
||||
Program.acpi.DeviceSet(AsusACPI.PerformanceMode, PerformanceMode, "Mode");
|
||||
|
||||
if (AppConfig.isConfig("xgm_fan") && Program.acpi.IsXGConnected()) AsusUSB.ResetXGM();
|
||||
|
||||
if (notify && (oldMode != PerformanceMode))
|
||||
if (notify)
|
||||
{
|
||||
try
|
||||
{
|
||||
toast.RunToast(perfName);
|
||||
toast.RunToast(perfName, powerStatus == PowerLineStatus.Online ? ToastIcon.Charger : ToastIcon.Battery);
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -1325,17 +1358,21 @@ namespace GHelper
|
||||
public void AutoKeyboard()
|
||||
{
|
||||
InputDispatcher.SetBacklightAuto(true);
|
||||
|
||||
if (Program.acpi.IsXGConnected())
|
||||
AsusUSB.ApplyXGMLight(AppConfig.isConfig("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);
|
||||
if (mode != -1)
|
||||
SetPerformanceMode(mode, true);
|
||||
SetPerformanceMode(mode, powerChanged);
|
||||
else
|
||||
SetPerformanceMode(AppConfig.getConfig("performance_mode"));
|
||||
}
|
||||
@@ -1701,10 +1738,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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ namespace WinFormsSliderBar
|
||||
private void RecalculateParameters()
|
||||
{
|
||||
_radius = 0.4F * ClientSize.Height;
|
||||
_barSize = new SizeF(ClientSize.Width - 4 * _radius, ClientSize.Height * 0.15F);
|
||||
_barSize = new SizeF(ClientSize.Width - 2 * _radius, ClientSize.Height * 0.15F);
|
||||
_barPos = new PointF(_radius, (ClientSize.Height - _barSize.Height) / 2);
|
||||
_thumbPos = new PointF(
|
||||
_barSize.Width / (Max - Min) * (Value - Min) + _barPos.X,
|
||||
|
||||
@@ -52,7 +52,9 @@ namespace GHelper
|
||||
Touchpad,
|
||||
Microphone,
|
||||
MicrophoneMute,
|
||||
FnLock
|
||||
FnLock,
|
||||
Battery,
|
||||
Charger
|
||||
}
|
||||
|
||||
public class ToastForm : OSDNativeForm
|
||||
@@ -107,6 +109,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_electrical_96;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
|
||||
181
app/Updates.cs
181
app/Updates.cs
@@ -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;
|
||||
@@ -44,34 +59,46 @@ namespace GHelper
|
||||
}
|
||||
private Dictionary<string, string> GetDeviceVersions()
|
||||
{
|
||||
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * from Win32_PnPSignedDriver");
|
||||
ManagementObjectCollection objCollection = objSearcher.Get();
|
||||
Dictionary<string, string> list = new();
|
||||
|
||||
foreach (ManagementObject obj in objCollection)
|
||||
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("Select * from Win32_PnPSignedDriver"))
|
||||
{
|
||||
if (obj["DeviceID"] is not null && obj["DriverVersion"] is not null)
|
||||
list[obj["DeviceID"].ToString()] = obj["DriverVersion"].ToString();
|
||||
}
|
||||
using (ManagementObjectCollection objCollection = objSearcher.Get())
|
||||
{
|
||||
Dictionary<string, string> list = new();
|
||||
|
||||
return list;
|
||||
foreach (ManagementObject obj in objCollection)
|
||||
{
|
||||
if (obj["DeviceID"] is not null && obj["DriverVersion"] is not null)
|
||||
list[obj["DeviceID"].ToString()] = obj["DriverVersion"].ToString();
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string GetBiosVersion()
|
||||
private string InitBiosAndModel()
|
||||
{
|
||||
ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS");
|
||||
ManagementObjectCollection objCollection = objSearcher.Get();
|
||||
|
||||
foreach (ManagementObject obj in objCollection)
|
||||
if (obj["SMBIOSBIOSVersion"] is not null)
|
||||
using (ManagementObjectSearcher objSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_BIOS"))
|
||||
{
|
||||
using (ManagementObjectCollection objCollection = objSearcher.Get())
|
||||
{
|
||||
var bios = obj["SMBIOSBIOSVersion"].ToString();
|
||||
int trim = bios.LastIndexOf(".");
|
||||
if (trim > 0) return bios.Substring(trim + 1);
|
||||
else return bios;
|
||||
}
|
||||
foreach (ManagementObject obj in objCollection)
|
||||
if (obj["SMBIOSBIOSVersion"] is not null)
|
||||
{
|
||||
string[] results = obj["SMBIOSBIOSVersion"].ToString().Split(".");
|
||||
if (results.Length > 1)
|
||||
{
|
||||
model = results[0];
|
||||
bios = results[1];
|
||||
} else
|
||||
{
|
||||
model = obj["SMBIOSBIOSVersion"].ToString();
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
return "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public async void DriversAsync(string url, int type, TableLayoutPanel table)
|
||||
@@ -79,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++)
|
||||
{
|
||||
@@ -109,62 +133,43 @@ 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;
|
||||
}
|
||||
}
|
||||
|
||||
if (type == 1)
|
||||
{
|
||||
newer = Int32.Parse(version) > Int32.Parse(biosVersion);
|
||||
}
|
||||
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);
|
||||
|
||||
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
|
||||
{
|
||||
table.Visible = true;
|
||||
@@ -172,11 +177,51 @@ namespace GHelper
|
||||
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)
|
||||
{
|
||||
BeginInvoke(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());
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,8 @@ 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)
|
||||
|
||||
@@ -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,47 +141,45 @@ 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
|
||||

|
||||
- It is **strongly recommended** to run app with windows default "balanced" power plan
|
||||

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

|
||||
|
||||
---------
|
||||
|
||||
## Power user settings
|
||||
|
||||
### Manual app language setting
|
||||
|
||||
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 power plans with each mode
|
||||
|
||||
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)
|
||||
In ``%AppData%\GHelper\config.json`` 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)
|
||||
|
||||
Format is following : ``"scheme_<mode>" : "GUID" ``
|
||||
|
||||
@@ -214,6 +217,7 @@ 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.
|
||||
|
||||
------------
|
||||
|
||||
**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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user